The Flutter plugin is a wrapper for Dynamsoft's Document Normalizer SDK v1.x. It enables you to build document detection and rectification applications for Windows, Linux, web, Android and iOS.
To use the SDK, you need a license key for Dynamsoft Document Normalizer. Make sure to get your trial or commercial license before using the library.
cd example
flutter run # for Android
flutter run -d chrome # for Web
flutter run -d windows # for Windows
- Web
- Windows
- Linux
- Android
- iOS
Add flutter_document_scan_sdk
as a dependency in your pubspec.yaml
file.
dependencies:
...
flutter_document_scan_sdk:
Include the JavaScript library of Dynamsoft Document Normalizer in your index.html
file:
<script src="https://cdn.jsdelivr.net/npm/dynamsoft-document-normalizer@1.0.12/dist/ddn.js"></script>
Methods | Android | iOS | Windows | Linux | Web |
---|---|---|---|---|---|
Future<int?> init(String key) |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Future<List<DocumentResult>?> detectFile(String file) |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Future<NormalizedImage?> normalizeFile(String file, dynamic points) |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Future<int?> setParameters(String params) |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Future<String?> getParameters() |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Future<List<DocumentResult>?> detectBuffer(Uint8List bytes, int width, int height, int stride, int format) |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Future<NormalizedImage?> normalizeBuffer(Uint8List bytes, int width, int height, int stride, int format, dynamic points) |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
-
Initialize the document rectification SDK with a valid license key:
final _flutterDocumentScanSdkPlugin = FlutterDocumentScanSdk(); await _flutterDocumentScanSdkPlugin.init( "LICENSE-KEY"); await _flutterDocumentScanSdkPlugin.setParameters(Template.grayscale);
-
Do document edge detection and return quadrilaterals:
List<DocumentResult>? detectionResults = await _flutterDocumentScanSdkPlugin .detectFile(file);
-
Detect document edges from a buffer:
List<DocumentResult>? detectionResults = await _flutterDocumentScanSdkPlugin .detectBuffer(bytes, width, height, stride, format);
-
Rectify the document based on document corners:
NormalizedImage? normalizedImage = await _flutterDocumentScanSdkPlugin.normalizeFile( file, detectionResults[0].points);
-
Rectify the document based on document corners from a buffer:
NormalizedImage? normalizedImage = await _flutterDocumentScanSdkPlugin.normalizeBuffer( bytes, width, height, stride, format, detectionResults[0].points);
-
Save the rectified document image to a file:
if (normalizedUiImage != null) { const String mimeType = 'image/png'; ByteData? data = await normalizedUiImage! .toByteData(format: ui.ImageByteFormat.png); if (data != null) { final XFile imageFile = XFile.fromData( data.buffer.asUint8List(), mimeType: mimeType, ); await imageFile.saveTo(path); } }