How To
Menggunakan Flutter & Dart
Panduan penggunaan mesin OCR RustO! di aplikasi mobile, desktop Flutter, dan Dart murni via FFI.
RustO! menyediakan binding FFI untuk Dart murni (rusto) serta plugin Flutter (rusto_flutter) dengan integrasi platform bawaan untuk Android dan iOS.
Instalasi
Untuk Proyek Flutter
flutter pub add rusto_flutter
Untuk Proyek Dart Murni / Server
dart pub add rusto
1. Inisialisasi Engine
Inisialisasi engine dengan memberikan konfigurasi jalur model dan kamus:
import 'package:rusto/rusto.dart';
final config = '''
{
"detection": { "model_path": "assets/models/PPOCR_v6/det.rten" },
"recognition": { "model_path": "assets/models/PPOCR_v6/rec.rten", "dict_path": "assets/models/PPOCR_v6/dict.txt" }
}
''';
final engine = RustO.initialize(config);
2. Pengenalan Teks
Pengenalan Terstruktur
// Jalankan pengenalan pada file gambar lokal
final results = engine.detectTextFile('receipt.jpg');
for (final line in results) {
print('[${line.score.toStringAsFixed(2)}] ${line.text}');
print(' Frame: left=${line.frame.left}, top=${line.frame.top}, w=${line.frame.width}, h=${line.frame.height}');
}
// Lepaskan sumber daya native setelah selesai
engine.close();
Dari Byte Gambar Uint8List
import 'dart:io';
final bytes = File('document.png').readAsBytesSync();
final results = engine.detectTextData(bytes);
3. Rekonstruksi Tata Letak Spasial
final spatialText = engine.detectTextFileSpatial('invoice.png');
print('--- Tata Letak Dokumen Spasial ---');
print(spatialText);
4. Praktik Terbaik Pengujian di Flutter
Saat menulis testWidgets yang berinteraksi dengan loop FFI native, selalu muat file pengujian menggunakan operasi berkas sinkron (File(path).readAsBytesSync()) dan hindari pembacaan asinkron await File(path).readAsBytes(). Hal ini mencegah kemacetan penjadwalan antrean event pada zona pengujian FakeAsync milik Flutter.