Implementing the new Document Scanner ML kit to your Flutter App.

Benson Arafat
3 min readApr 17, 2024

--

If you are here that means, you must have seen my PR from the Google MLKit Flutter package which was merge recently, if you have not you can check it out here #605.

Google ML Kit for Flutter

The Google Machine Language Kit for flutter is a set of Flutter plugins that enable Flutter apps to use the Google’s standalone ML Kit. Presently, they are 13 plugins available right now, most commonly are the face detection, text recognition, barcode scanning, selfie segmentation and so on.

So, let’s talk about the new plugin Document Scanner.

Digitising physical documents, which allows users to convert physical documents into digital formats has become a very common user journey in mobile apps. The Document Scanner provides a solutions with high quality, orderly UI flow across Android Apps. You can apply filter, remove stains and shadows and crop documents.

Read more #here.

Some of the key capabilities are:

  • High-quality and consistent user interface for digitising physical documents.
  • Automatic capture with document detection.
  • No camera permission is needed from your app.

Note: Document Scanner is not yet support for iOS and is currently on Beta mode

Using the package on your flutter app is much easy as you think. you just have to add the plugin yo your pubspec.yaml as followed:

dependencies:
google_mlkit_document_scanner: ^0.2.0

Or you can run this command on your terminal to add the package

flutter pub add google_mlkit_document_scanner

We can no go ahead in using the package in our app.

Create an instance of the DocumentOption class

DocumentScannerOptions options = DocumentScannerOptions(
mode: ScannerMode.filter, // to control the feature sets in the flow
isGalleryImport: false, // importing from the photo gallery
pageLimit: 1, // setting a limit to the number of pages scanned
);
  1. Mode is to change the scanner mode which can be ScannerMode.full, ScannerMode.filter or ScannerMode.base
  2. IsGalleryImport if you want to allow gallery import set to true
  3. pageLimit to set the number of pages scanned
  4. DocumentFormat to be retrieved after the scanned which can be in jpeg or pdf

Create an instance of the DocumentScanner class and pass the options

 DocumentScanner documentScanner = DocumentScanner(
options: options
);

Create a List, to store the path of the scanned documents

List<String>? documents;

Don’t forget to dispose

  @override
void dispose() {
documentScanner.close();
super.dispose();
}

To start the scan, all you have to do is call the scanDocument method like so.

  documents = await documentScanner.scanDocument();

Easy-peasy, now the documents list contain the paths to the document scanned.

You can get all code source from below

If you have any question or issue, please add them on the comment section.

I’m open to discussing any Flutter project opportunities, big or small. Also feel free to follow me on Twitter @bensonarafat for updates and stay connected.

Adios! 👋

--

--