flutter_document_scan_sdk

The Flutter plugin is a wrapper for Dynamsoft's Document Normalizer SDK. 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

Flutter windows document edge detection and normalization

Linux

cd example
flutter run -d linux

Flutter Linux document edge detection and normalization

Web

cd example
flutter run -d chrome

Flutter web document edge detection and normalization

Mobile: Android & iOS

cd example
flutter run 

Flutter document rectification for Android and iOS

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 path, 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?> save(String filename) :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) :x: :x: :heavy_check_mark: :x: :x:
Future<NormalizedImage?> normalizeBuffer(Uint8List bytes, int width, int height, int stride, int format, dynamic points) :x: :x: :heavy_check_mark: :x: :x:

Usage

  • Initialize the document rectification SDK with resource path and license key. The resource path is only required for web apps:

    final _flutterDocumentScanSdkPlugin = FlutterDocumentScanSdk();
    await _flutterDocumentScanSdkPlugin.init(
       "https://cdn.jsdelivr.net/npm/dynamsoft-document-normalizer@1.0.12/dist/",
       "DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAxLTE2NDk4Mjk3OTI2MzUiLCJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSIsInNlc3Npb25QYXNzd29yZCI6IndTcGR6Vm05WDJrcEQ5YUoifQ==");
    
    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 document to the local disk:

    await _flutterDocumentScanSdkPlugin
                                .save('normalized.png');