Documentation / Cross-platform apps
Package: mrzscanner on pub.dev. It replaces the 1.x plugin mrzscanner_flutter, which had a different API.
Needs: Flutter 3.24 or later (Dart 3.5), Android 7.0 (API 24) or later, iOS 15 or later (Swift Package Manager or CocoaPods).
Install
flutter pub add mrzscanner
Android: minSdk = 24 in android/app/build.gradle(.kts). iOS: a camera usage text in ios/Runner/Info.plist:
<key>NSCameraUsageDescription</key>
<string>Scans the MRZ of passports and ID cards.</string>
Use
import 'package:mrzscanner/mrzscanner.dart';
await MRZScanner.registerLicense('MRZ2...'); // once; without it some fields are masked
final result = await MRZScanner.scan(const ScanSettings(documentTypes: {DocumentType.passport, DocumentType.id}));
if (result.status == ScanStatus.read) {
final read = result.reads.first;
print('${read.text} ${read.field('document_number')} ${read.checkDigitsValid}');
}
final fromPhoto = await MRZScanner.scanImage(path: photoPath); // or bytes: jpegBytes
scan(settings) returns a ScanResult: status (read, stopped, timeout, permissionDenied, licenseInactive, error), reads and elapsed. ScanSettings has the settings in Scan settings: continuous, duplicateTimeout, confirmation, timeout, torch, zoom, vibrateOnRead, arOverlay, documentTypes, regionOfInterest, isolateMrz, isolatedHeight, title.
Each MrzRead has text, checkDigitsValid, kind, fields (field(name) gives one as text), corners, and isolatedMrz / isolatedMrzBytes.
Updated Oct 24, 2026 ยท Questions? Ask us