Turning document scans into searchable PDF files with the Android OCR Module
You can use the SDK's built-in PDF generator together with the OCR Module to create searchable PDF files, using either an existing Document object or an image file.
Integration
Adding the feature as a dependency
The OCR feature is included in Scanbot SDK package 2. Therefore, add the dependency io.scanbot:sdk-package-2 or higher in your build.gradle along with the necessary assets:
implementation("io.scanbot:sdk-package-2:$scanbotSdkVersion")
implementation("io.scanbot:sdk-common-ocr-assets:$scanbotSdkVersion") // <<-- please also add this dependency
Get the latest $scanbotSdkVersion from the changelog.
(Only for 'EngineMode.TESSERACT': Downloading and providing the OCR language files)
You can find a list of all supported OCR languages and corresponding download links in the Tesseract documentation.
Please download the proper version of the language data files:
- For Scanbot SDK versions 1.50.0 or higher:
- For Scanbot SDK versions 1.41.0 or lower:
Download the files and place them in the assets sub-folder assets/ocr_blobs/ of your app.
Example:
assets/ocr_blobs/osd.traineddata(required special data file)assets/ocr_blobs/eng.traineddata(English language file)assets/ocr_blobs/deu.traineddata(German language file)
Initialization
To initialize the Scanbot SDK, call the ScanbotSDKInitializer#initialize(context: Context) method.
In your Application class:
loading...
For EngineMode.TESSERACT, call ScanbotSDKInitializer#prepareOCRLanguagesBlobs(true) before the first usage of the OCR feature.
Then get an instance of the OcrEngine from ScanbotSDK.
In your Activity or Service class:
loading...
For EngineMode.TESSERACT, to achieve better OCR results, you can enable image binarization in OcrSettings:
loading...
Define the list of languages and set the engine mode to EngineMode.TESSERACT:
loading...
Example code for creating a PDF with an OCR layer from a 'Document' object
If you're working with an image that's already part of a Document object:
loading...
Example code for creating a PDF with an OCR layer from images
If you're working with an image imported from the gallery as a bitmap:
loading...
You can omit the PdfConfiguration parameter to use the default PDF settings. In this case, PdfConfiguration.default() will be used. It has an empty PdfAttributes, PageSize.CUSTOM as the page size, and PageDirection.AUTO as the default page orientation.
The details of PdfConfiguration can be found in the SDK's API documentation. Please refer to the API references for the OcrResult class for more details.
Want to scan longer than one minute?
Generate a free trial license to test the Scanbot SDK thoroughly.
Get free trial license