flutter_document_scan_sdk
The Flutter plugin is a wrapper for Dynamsoft's Document Normalizer SDK v1.x. It enables you to build document rectification applications for Windows, Linux, web, Android and iOS.
Try Document Rectification Example
Desktop: Windows & Linux
Windows
cd example
flutter run -d windows
Linux
cd example
flutter run -d linux
Web
cd example
flutter run -d chrome
Mobile: Android & iOS
cd example
flutter run
Getting a License Key for Dynamsoft Document Normalizer
Supported Platforms
- Web
- Windows
- Linux
- Android
- iOS
Installation
Add flutter_document_scan_sdk
as a dependency in your pubspec.yaml
file.
dependencies:
...
flutter_document_scan_sdk:
One More Step for Web
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>
API Compatibility
Methods | Android | iOS | Windows | Linux | Web |
---|---|---|---|---|---|
Future<int?> init(String key) |
:heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
Future<List<DocumentResult>?> detectFile(String file) |
:heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
Future<NormalizedImage?> normalizeFile(String file, dynamic points) |
:heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
Future<int?> setParameters(String params) |
:heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
Future<String?> getParameters() |
:heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
Future<List<DocumentResult>?> detectBuffer(Uint8List bytes, int width, int height, int stride, int format) |
:heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
Future<NormalizedImage?> normalizeBuffer(Uint8List bytes, int width, int height, int stride, int format, dynamic points) |
:heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
Usage
-
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); } }
Libraries
- document_result
- flutter_document_scan_sdk
- flutter_document_scan_sdk_method_channel
- flutter_document_scan_sdk_platform_interface
- flutter_document_scan_sdk_web
- normalized_image
- shims/dart_js_util
- shims/dart_ui
- This file shims dart:ui in web-only scenarios, getting rid of the need to suppress analyzer warnings.
- shims/dart_ui_fake
- shims/dart_ui_real
- template
- utils
- web_ddn_manager