Skip to main content

Changelog | Android Document Scanner

Version 6.1.2 (4 Dec 2024)

  • 🐞 Bug fixes:
    • Fixed the height of the bottom sheet component for the Barcode Scanner RTU UI v2 screen.

Version 6.1.1 (28 Nov 2024)

  • 🎉 New:
    • Added Cleaner.cleanUpSnappedDocumentsData() method to delete all PDF and TIFF files generated with the legacy Page API.
    • Added deleteAllDocuments() and deleteDocument(uuid) function to documentApi.
  • 🚀 Improvements:
    • After calling documentApi.createDocument(), saveSync() is now also called so that the new empty document will be created in the file storage.
  • 🐞 Bug fixes:
    • Fixed the document migration function enabling the migration of encrypted pages.

Version 6.1.0 (8 Nov 2024)

  • 🎉 New:
    • Added support for 16KB page size (Android 15).
    • RTU UI v2.0 Document Scanner:
      • Added NoFeedbackMode to disable the animation when a page is captured and the document quality check is disabled.
      • Added a new property hardwareButtonsEnabled that enables snapping from the hardware volume buttons and the new hardware camera control button (enabled by default).
    • Added option MultipleScanningMode.allowEmptySubmission to allow submission of an empty barcode list in the Multiple Barcodes use case in RTU-UI v2.
  • 🚀 Improvements:
    • Document detector:
      • Improved detection speed and robustness against orientation changes.
      • Improved robustness against picking up random contours.
      • Improved robustness against documents with colored corners, booklets, handheld documents and cards, documents near edges of tables and overlapping documents.
  • 🐞 Bug fixes:
    • RTU UI v2.0 Document Scanner:
      • Fixed a rare crash on the review screen when encryption is enabled.
      • Fixed a crash on some devices (e.g., Samsung S21, S22) with encryption enabled.
      • Fixed an issue that could cause a crash in the Document RTU v2 scanner after scanning a very large number of pages in one session.
    • Fixed KANJI mode for QR codes.
    • Fixed a bug with incorrect raw bytes returned for some 2D barcode types.
    • Fixed an issue with AR Overlay and barcode mapping in BarcodeScannerActivity RTU UI v2.0, where the mapped image wasn't shown on the AR Overlay until the same barcode appeared in the list below.
  • ⚠️ Breaking changes:
    • Changed the type of the rotation field in the Page class to the io.scanbot.sdk.core.ImageProcessor enum.

Version 6.0.0 (15 Oct 2024)

  • 🎉 New:
    • Implemented new Document API to perform document creation and editing.
    • Implemented new Ready-To-Use Document Scanner screen with extended scanning and reviewing capabilities.
    • Added render() methods which take document: Document as an input parameter in PDFRenderer interface.
    • Added render() methods which take optional outputFile: File as an input parameter in PDFRenderer interface.
    • Added recognizeTextWithPdfFrom*() methods which take document: Document as an input parameter in OpticalCharacterRecognizer interface.
    • Added recognizeTextWithPdfFrom*() methods which take optional outputFile: File as an input parameter in OpticalCharacterRecognizer interface.
    • Added writeTIFF() methods which take document: Document as an input parameter in TIFFWriter.
    • Added writeTIFF() methods which take optional outputFile: File as an input parameter in TIFFWriter.
    • Added new property addAdditionalQuietZone to BarcodeScannerAdditionalConfig.
    • Added a new predefined collection of barcodes, BarcodeFormat.POSTAL, which includes barcodes used in the postal industry.
  • 🚀 Improvements:
    • Improved MagnifierView.
    • AR overlay is enabled by default for FindAndPickScanningMode in Barcode Scanner RTU UI v2 screen.
    • For CODE_128 and ITF, we improved the recognition of barcodes generated by defective thermal printers that do not print certain black bars correctly.
  • 🐞 Bug fixes:
    • Minor fixes for BarcodeScanner appearance in RTU UI v2 to make it consistent with iOS counterpart.
    • Fix point sorting in ContourDetector.
  • ⚠️ Breaking changes:
    • All classes from the old Page API were marked as deprecated and moved to io.scanbot.sdk.persistence.page.legacy package.
    • Renamed methods to render() in PDFRenderer interface.
    • Changed render() method signature in PDFRenderer interface. Now it takes an array of Uris instead of the List of Uris.
    • Renamed writeTIFFFromImages() and writeTIFFFromFiles() methods to writeTIFF() in TIFFWriter.
    • Renamed writeTIFFFromImages(): ByteArray methods to tiffByteArray(): ByteArray in TIFFWriter.
    • Document scanner asset dependency io.scanbot:sdk-ml-docdetector was renamed to io.scanbot:sdk-ml-docdetector-assets.
    • Renamed io.scanbot.sdk.process.model.DocumentQualityResult to io.scanbot.sdk.process.model.DocumentQuality
    • Renamed io.scanbot.sdk.core.contourdetector.DetectionStatus to io.scanbot.sdk.core.contourdetector.DocumentDetectionStatus
    • The usage of asset dependency io.scanbot:sdk-mc-assets and also the usage of OCR from io.scanbot:sdk-package-2 now require an additional dependency to be specified: implementation("io.scanbot:sdk-common-ocr-assets:$scanbotSdkVersion").

Version 5.2.3 (5 Aug 2024)

  • 🐞 Bug fixes:
    • Fixed the false positive document detection (introduced in v5.2.0).
    • Fixed fallback in the "Background Clean" filter when the ML model is unavailable.

Version 5.2.2 (22 Jul 2024)

  • 🎉 New:
    • Added support for Canadian and UAE Check standards.

Version 5.2.1 (12 Jul 2024)

  • 🚀 Improvements:
    • Improved false positive rate of UPC/EAN extensions in live mode.
  • 🐞 Bug fixes:
    • Fixed image preprocessing for Document Quality Analyzer.

Version 5.2.0 (28 Jun 2024)

  • 🎉 New:
    • Added support for German health insurance cards (front and back) and European health insurance cards (back only) to GenericDocumentRecognizer, GenericDocumentRecognizerFrameHandler and GenericDocumentRecognizerActivity RTU UI screen.
    • HealthInsuranceCardScanner, HealthInsuranceCardScannerFrameHandler, and HealthInsuranceCardScannerActivity were deprecated. Please use GenericDocumentRecognizer, GenericDocumentRecognizerFrameHandler and GenericDocumentRecognizerActivity instead.
    • Added ResultAccumulationConfig for the generic document recognition API.
    • Added support for new barcode types Maxicode, rMQR code, Code 11 and Code 32.
    • Added properties australiaPostCustomerFormat, useIATA2OF5Checksum and useCode11Checksum to BarcodeAdditionalParameters, BarcodeScannerAdditionalConfiguration for RTU UI screen and BarcodeRecognizerConfiguration for RTU UI v2 screen.
    • Added AustraliaPostCustomerFormat enum to represent formats of the barcode data for the Australian Post customer barcode.
    • Added resetPolygonState() in BarcodePolygonView to properly clean its state when disabling it after scanning.
  • 🚀 Improvements:
    • Changed resample flag to resamplingMethod: io.scanbot.pdf.model.ResamplingMethod in PdfConfig class.
    • The Generic Document Recognizer and its UI components now use the new Scanbot OCR engine under the hood. In order to scan for generic documents the additional OCR language data bundle is no longer required.
    • Improved generic document recognition on static images.
    • Improved document detection on booklet documents.
    • Improved performance of DocumentQualityAnalyzer.
    • Added support for Extended Channel Interpretation (ECI) for Data Matrix and Aztec.
    • Improved GS1 string handling with new modes for decoding and validation. See Gs1Handling.
    • ScanbotCameraXView now logs more information throughout its lifecycle (use filter by ScanbotCameraXView tag). Logging is enabled only in the 'debug' builds.
    • Improved detection of UPC/EAN barcode extensions in live mode.
    • The barcode scanner now supports transposed (mirrored/flipped) Aztec barcodes.
  • 🐞 Bug fixes:
    • Removed redundant dependency on io.scanbot:sdk-licenseplate-assets inside io.scanbot:sdk-generictext-assets.
    • Fixed R8 obfuscation config for SDK logging classes.
    • Fixed a bug in ScanbotColor where setting isArgb to true, resulted in a wrong color.
  • ⚠️ Breaking Changes:
    • Removed ML assets library for Document Quality Analyzer - io.scanbot:sdk-docqualityanalyzer-assets:X.X.X. Please use io.scanbot:sdk-multitasktext-assets:X.X.X instead.
    • Removed enum BarcodeDensity.
    • Removed property codeDensity from BarcodeAdditionalParameters.
    • Removed enum values VALIDATE and DECODE from Gs1Handling and replaced them by DECODE_STRUCTURE, DECODE_FULL, VALIDATE_STRUCTURE and VALIDATE_FULL.
    • Removed property sharpnessAcceptanceFactor from GenericDocumentRecognizer and GenericDocumentRecognizerConfiguration for RTU UI screen.
    • Removed redundant fields barcodeImagePath and barcodePreviewFramePath from Result class in Barcode Scanner RTU UI v2.
    • Changed barcodesRegexFilter config behavior for Barcode Scanner RTU UI v2. Barcodes are accepted if the barcode data contains the part that matches the regex.
    • Replaced standard and validationStatus fields with validationErrors in the GS1.Element class.
  • 🚙 Under the hood:
  • Updated 3rd-party libraries:
    • added gs1-syntax-dictionary lib

Version 5.1.2 (27 Jun 2024)

  • 🚀 Improvements:
    • Improved detection of UPC/EAN barcode extensions in live mode.
    • The barcode scanner now supports transposed (mirrored/flipped) Aztec barcodes.
  • 🐞 Bug fixes:
    • Fixes a bug in ScanbotColor where setting isArgb to true, resulted in a wrong color.

Version 5.1.1 (28 May 2024)

  • 🎉 New:
    • Added new property barcodesRegexFilter to BarcodeRecognizerConfiguration for Barcode Scanner RTU UI v2 screen.
    • Added support of the new 'Find and Pick' barcode scanning mode, see FindAndPickScanningMode.
    • Added support for continuous scanning in the BarcodeScannerView composable.
    • Added new setter setLiveDetectionParameters(parameters: EhicRecognizerParameters) in HealthInsuranceCardScanner to adjust the scanning process.
    • Added new setter setRecognizerParameters(recognizerParameters: EhicRecognizerParameters) in HealthInsuranceCardScannerConfiguration to adjust the scanning process in EHIC scanner RTU UI screen.
    • Added support for new barcode format BarcodeFormat.MICRO_PDF_417.
    • Added support for parsing of AAMVA Certificate of Title for motor vehicle barcodes.
    • Added property acceptedBrightnessThreshold to ContourDetector to control the accepted brightness level for contour detection (same property added to DocumentScannerConfiguration and FinderDocumentScannerConfiguration in RTU UI and ContourDetectorFrameHandler).
    • Added new class BarcodeTextLocalization and new property localization to BarcodeScannerConfiguration to support localized strings.
  • 🚀 Improvements:
    • The Health Insurance Card Recognizer now implements the new Scanbot OCR engine. The recognition is faster and more accurate than before.
  • 🐞 Bug fixes:
    • Fixed SoundController crash on Android API <= 23.
    • Fixed VinScannerConfiguration.setFinderTextHintColor(color) not being applied to the text hint.
    • Fixed null pointer exception for PageFileStorage operations.
    • Fixed behavior of 'Update' Button in Manual Count Edit Dialog for Barcode Scanner RTU UI v2 screen.
  • ⚠️ Breaking changes:
    • Replaced the class BarCodeFormattedResult by GenericDocuments class for barcode document parser output.
    • Added new classes for all the barcode document formats. See the API documentation for more details.
    • All HealthInsuranceCard prefixes in result model class names were replaced with Ehic (EhicRecognitionResult, EhicDetectionStatus, etc.).
    • Deleted deprecated isLicenseActive and isLicenseValid from ScanbotSDK. Please use licenseInfo.isValid instead.
    • Renamed ScanbotPalette to Palette for consistency with RTU UI v2 configuration classes.
    • BarcodeExtensionsFilter now accepts EAN and UPC barcodes with extensions only and all other formats without extensions.
    • Made the property type: BarcodeFormat? in io.scanbot.sdk.ui_v2.barcode.configuration.BarcodeItem optional.
    • Changed the type of numeric parametric filter parameters from Float to Double.
    • Changed default UI behavior in Barcode Scanner RTU UI v2. If BarcodeMappedData.barcodeImage in BarcodeItemMapper is empty - placeholder image will be shown. If BarcodeMappedData.barcodeImage is set with BarcodeMappedDataExtension.barcodeFormatKey constant - the barcode image will be displayed.
  • 🚙 Under the hood:
    • Updated 3rd-party libraries:
      • libjpeg-turbo to 2.1.5.1
      • libpng to 1.6.40
      • libtiff to 4.6.0
      • added zlib library
    • Extracted parts of ScanbotSDK and ScanbotBarcodeScannerSDK API to the LicensableSdk and BarcodeScanningSdk interfaces.
    • Migrated project to AGP 8.x.
    • Added more rules for R8 shrinker to work adequately with AGP >= 8.
    • Fixed pro-guard rules for DocumentQualityAnalyzer.
    • Added an R8 consumer rule to keep the internals of io.scanbot.core.processor.ImageProcessor from shrinking/obfuscating.
    • Added Theme.AppCompat.NoActionBar theme as default for Barcode Scanner RTU UI v2 activity.
    • Added Consumer Proguard rules for RTU UI v2 modules.

Version 5.0.1 (13 Mar 2024)

  • 🐞 Bug fixes:
    • Fixed a bug in the Generic Document Scanner which prevented the extraction of the given names as well as the valid from date from a residence permit card.

Version 5.0.0 (1 Mar 2024)

  • 🎉 New:
    • Added new freshly designed RTU-UI version 2 for Barcode scanning with advanced agile configuration. Use io.scanbot:rtu-ui-v2-bundle module dependency to access the new screen.
    • Added new ParametricFilters in ImageProcessor API (ScanbotBinarizationFilter, CustomBinarizationFilter, ColorDocumentFilter, BrightnessFilter, ContrastFilter, GrayscaleFilter, WhiteBlackPointFilter and LegacyFilter).
    • Added support for German residence permits (2011 and 2019 formats) in GenericDocumentRecognizer.
    • PdfConfig in the PDFWriter now allows setting the jpegQuality for images encoding. The parameter is only used when transcoding images (adding an image from a bitmap, or resample is true). The parameter is ignored when directly embedding JPEG files.
    • Added resample parameter in PdfConfig and extended the meaning of the dpi setting.
    • Added new constructor parameters dpi: Int and pageFit: PageFit in PageConfig class for PDFWriter.
    • Added setParametricFilter(parametricFilter: ParametricFilter) method in DocumentScannerConfiguration for DocumentScanner RTU UI screen.
    • Added support of minEstimatedNumberOfSymbolsForNoDocument config parameter in DocumentQualityAnalyzer API.
  • 🚀 Improvements:
    • Optimized speed of the camera preview frames handling for all scanners.
    • Optimized memory consumption for PDF rendering with encryption enabled.
    • Text detection is faster and more accurate.
    • Improved MRZ parser for a stronger rejection of outliers.
    • Improved speed and quality of scanning for GenericDocumentRecognizer.
    • Changed touch to focus square in ScanbotCameraXView to a circle.
  • 🐞 Bug fixes:
    • For BarcodeFormat.PDF_417, a single case to generate clusters was not covered, which led to a crash.
    • Fixed potential crash when trying to embed invalid images in a PDF.
    • Fixed issue with misaligned document polygon and barcode polygons on some devices with horizontal orientation.
    • Fixed drawing of the detected document contour polygon in landscape orientation.
    • Fixed NPE in MRZ scanning with optional fields.
  • ⚠️ Breaking changes:
    • Changes in ImageProcessor API:
      • ImageProcessor is not a singleton anymore.
      • Removed scanbotSDK.imageProcessor() getter. Call one of ImageProcessor constructors to create a new instance.
      • Removed old process*(List<Operation>) methods and Operation classes. They are replaced with applyFilter(), rotate(), crop(), resize() methods in ImageProcessor. Call ImageProcessor#processedBitmap(), ImageProcessor#encodedProcessedImage(), or ImageProcessor#saveProcessedImage(path: String) to get the image result or to write it to a file.
      • ImageFilterType enum is deprecated. Use ParametricFilter API with new filters. Usage of old filters is still available with LegacyFilter wrapper.
      • ImageFilterTuneTypes are no longer supported. The class was deleted.
    • Changes in PageProcessor API:
      • PageProcessor methods are also migrated to the ParametricFilter API.
      • Added parametricFilters: List<ParametricFilter> field in Page class. It will be used in page processing by default. If it's empty, old legacy filter in filter: ImageFilterType deprecated field will be used.
      • Removed tunes and filterOrder fields in Page class.
    • Deprecated setImageFilterType(imageFilterType: ImageFilterType) method in DocumentScannerConfiguration for the DocumentScanner RTU UI screen.
    • Removed imageProcessorType(type: ImageProcessor.Type) in ScanbotSDKInitializer.
    • In TIFFImageWriterParameters constructor replaced binarizationFilter: ImageFilterType? parameter with binarizationFilter: ParametricFilter?.
    • In TIFFImageWriterParameters.defaultParametersForBinaryImages() parameters changed the default filter to ScanbotBinarizationFilter parametric filter.
    • Renamed RSS_14 barcode format to DATABAR and RSS_EXPANDED to DATABAR_EXPANDED.
    • BatchBarcodeScannerActivity class from RTU UI v1 is now marked as 'Deprecated'.
    • Removed BarcodeFormat.CODE_25 from BarcodeFormat.COMMON_CODES list.
    • ZoomRange can be created with any input values but will be limited under the hood by internal MIN_ZOOM (x0.2) and MAX_ZOOM (x100) values.
  • 🚙 Under the hood:
    • Added 3rd-party library "libzueci" to dependencies.
    • Class SoundController was renamed to SoundControllerImpl and interface SoundController was extracted.

Version 4.2.0 (9 Jan 2024)

  • 🎉 New:
    • Added support for new barcode type BarcodeFormat.GS1_COMPOSITE.
    • Added analyzer image size limit property for Document Quality Analyzer. By default, the image will be resized to 2500 px.
    • Added support for the Israelian Check standard.
  • 🚀 Improvements:
    • Added more control over how to handle GS1 messages in barcodes. See BarcodeScannerAdditionalConfig.setGs1HandlingMode.
  • 🐞 Bug fixes:
    • Fixed the Camera Preview blinking after capturing a picture.
  • ⚠️ Breaking Changes:
    • The property enableGS1Decoding has been replaced by the enum Gs1HandlingMode in BarcodeScannerAdditionalConfig.
    • GS1 codes are now handled differently for various barcode types. Using the default option PARSE will give the same result as before for all barcode types, except of RSS_EXPANDED. Previously, for RSS_EXPANDED, the result was inconsistently returned with parentheses. Now, to get results with parentheses for all barcode types, it is needed to choose the option DECODE.

Version 4.1.1 (1 Dec 2023)

  • 🎉 New:
    • Added support for Kuwait ID cards in the MRZ scanner.
  • 🐞 Bug fixes:
    • Fixed an issue with acceptedSizeScore config parameter for DocumentScannerActivity and FinderDocumentScannerActivity RTU screens.
  • ⚠️ Breaking changes:
    • Moved setIgnoreBadAspectRatio() logic from DocumentAutoSnappingController to ContourDetectorFrameHandler.

Version 4.1.0 (23 Nov 2023)

  • 🎉 New:
    • Added new feature - Document Quality Analyzer. It analyzes the text quality (legibility) on images.
    • Added new supported barcode formats - BarcodeFormat.USPS_INTELLIGENT_MAIL, BarcodeFormat.ROYAL_MAIL, BarcodeFormat.JAPAN_POST, BarcodeFormat.ROYAL_TNT_POST, BarcodeFormat.AUSTRALIA_POST and DATABAR_LIMITED.
  • 🚀 Improvements:
    • Improved quality and speed of the Document Contour detector.
    • Decreased size of Document Contour detector ML model.
    • Removed parameter forceCpu: Boolean from ImageProcessor methods.
    • Optimized default and custom preview/picture size selection in the ScanbotCameraXView.
    • Optimized setForceMaxSnappingSize(enabled: Boolean) behavior in the ScanbotCameraXView.
    • Improved pinch-to-zoom gesture in ScanbotCameraXView.
    • Added setLifecycleOwner(lifecycleOwner: LifecycleOwner) method for view controller in DocumentScannerView and BarcodeScannerView to improve compatibility with Compose UI.
  • 🐞 Bug fixes:
    • Added setBarcodeFormatsFilter(barcodeFormat: List<BarcodeFormat>) method in BatchBarcodeScannerConfiguration class.
  • ⚠️ Breaking changes:
    • Renamed OpticalCharacterRecognizer.EngineMode.TLDR to OpticalCharacterRecognizer.EngineMode.SCANBOT_OCR.
    • If you are using setPictureSize(pictureSize: Size), setCameraFrameSize(frameSize: Size) or setPreviewFrameSize(frameSize: Size), make sure input Size has the correct orientation (fits the view or display size).
    • All scanner components have been switched to zoom ratio (values 1x, 2x, etc.) instead of linear zoom (from 0 to 1). Methods renamed: setOpticalZoomRange() -> setPhysicalZoomRange(); setOpticalZoomLevel() -> setPhysicalZoomRatio() in ScanbotCameraXView, DocumentScannerView, BarcodeScanAndCountView and BarcodeScannerView. setPhysicalZoomRange() and setPhysicalZoomRatio() accept possible zoom values from 0.5x up to 100x. NOTE: if the value sent to the camera is out of range for a specific device's capabilities, then the camera will try to set the max or min possible for that specific device. eg. Zoom 100x will only work on some high-end Samsung devices, whereas other devices will only have 12x-30x max. The same goes for minimum supported values, 0.5x is a wide-format camera module that does not exist on many Android devices.
    • IMPORTANT! Removed deprecated BlurEstimator feature. Use DocumentQualityAnalyzer instead.
  • 🚙 Under the hood:
    • Updated version of Nameof C++ library to v0.10.3.
    • Disabled GPU acceleration for Redmi 9 models, Samsung Galaxy Grand Prime and devices with Android older than 6.
      tip

      For additional details about the API, please refer to our API reference documentation.

Version 4.0.0 (26 Oct 2023)

  • 🎉 New:
    • New and improved document detector with better performance and less memory consumption.
    • Added a new Optical Character Recognition engine based on machine learning algorithms that is much faster and less error prone.
    • The new OCR engine currently supports all languages with latin letters, there is no need to specify the languages for it. The legacy engine based on Tesseract can still be used for non latin-based languages.
    • New PDF renderer for simple PDF and "sandwiched" PDF generation.
      • Added support for custom PDF metadata.
      • Added support for portrait, landscape and auto page orientation.
      • Extended list of supported page sizes (A3, A5, B4, B5, etc.)
  • 🚀 Improvements:
    • With the new ML-based OCR engine the speed of text recognition has increased twofold.
  • 🐞 Bug fixes:
    • Fixed some OOM crashes on low to midrange devices.
    • Fixed potential crashes related to native code integration.
    • Fixed bug with invisible back button on Document Scanner RTU UI screens when no 'Camera' permission was granted.
    • Fixed EnableCameraButtonTitle and EnableCameraExplanationText parameters on Batch- and Barcode RTU UI screen configs.
    • Fixed crash in GenericTextRecognizer on ARM v7 devices.
    • Fixed behavior of ocrResolutionLimit configuration in GenericTextRecognizer.
  • ⚠️ Breaking changes:
    • Changed the default OCR engine to the new TLDR OCR engine.
      • Tesseract language traindata is no longer needed by default.
      • ScanbotSDKInitializer#prepareOCRLanguagesBlobs(true) call is not needed for the TLDR OCR engine.
      • Tesseract engine mode can still be used with customization of OCR config OpticalCharacterRecognizer#setOcrConfig(ocrConfig: OcrConfig).
      • Changed signature of OpticalCharacterRecognizer#recognizeTextWithPdfFromUris() and OpticalCharacterRecognizer#recognizeTextWithPdfFromPages() methods - pageSize: PDFPageSize was replaced with more detailed pdfConfig: PdfConfig parameter.
    • Changed signature of PDFRenderer#renderDocumentFromImages() and PDFRenderer#renderDocumentFromPages() methods - pageSize: PDFPageSize was replaced with more detailed pdfConfig: PdfConfig parameter.
    • Removed CameraModule.FRONT_MIRRORED. CameraModule.FRONT now behaves as mirrored mode.
  • 🚙 Under the hood:
    • Added "libharu" library to dependencies.
    • Removed "Android PDF Writer" library from dependencies.
    • Upgraded OpenCV version to 4.8.
    • Added "icu4c" library to dependencies.

Version 3.0.1 (12 Sep 2023)

  • 🚀 Improvements:
    • Fixed false positives for Code 39 and Codabar barcodes.
    • Fixed potential memory leak in all RTU-UI screens.

Version 3.0.0 (23 Aug 2023)

  • 🎉 New:
    • New generation of Text Data Scanner component. The quality and speed of scanning has significantly improved.
    • Added new component - VIN (Vehicle identification number) scanner.
    • MRZ support for td1 long document standard.
  • 🚀 Improvements:
    • Decreased model size and increased speed for Text Data scanner.
    • Fixed contour lines detection with ML Based detection.
    • It is now possible to color each barcode on the barcode AR overlay. Use barcodeScannerView.selectionOverlayController.setBarcodeAppearanceDelegate(delegate: BarcodePolygonsView.BarcodeAppearanceDelegate) to manage polygon appearance.
    • It is now possible to color each barcode on the barcode AR overlay of BarcodeScanAndCountView. Use BarcodeScanAndCountView.counterOverlayController.setBarcodeAppearanceDelegate to manage polygon appearance.
    • OCR quality for the Generic Text Line Scanner should be significantly more reliable.
    • Reduced the number of barcode detector models from 3 to 2. The model used in Fast mode is now ~20% faster, about the same speed as Fastest mode.
  • 🐞 Bug fixes:
    • Removed conflicting "app_name" string resources from library modules.
    • Fixed colors not being applied to fields in RTU UI of Generic Document recognizer.
    • Fixed bug for BarcodePolygonsStaticView where it crashed if barcodeItemViewFactory returned null instead of view.
    • Before, for certain invalid decodings of QR and MicroQR codes, an exception was thrown from ZXing. Now we rigorously treat this as a format error.
    • Before, we have returned CODE_25 results when INDUSTRIAL_2_OF_5 was enabled and CODE_25 was disabled. Now, we do not return the CODE_25 result for such decoding options.
    • Fixed the topBarButtonsColor option for the MrzScannerActivity and HealthInsuranceCardScannerActivity screens.
    • Potential fix for rare crash in ScanbotCameraXView during binding it to lifecycle.
  • ⚠️ Breaking changes:
    • Text Data Scanner no longer requires Tesseract OCR blobs.
    • Text Data Scanner (both RTU UI component and classic) no longer accepts TextFilterStrategy and a set of Language parameters. The code that sets these needs no replacement and can be removed.
    • Changed the structure of MRZGenericDocument. Now it contains a document object for MRZ fields, the same as GenericDocument from GenericDocumentRecogniser. Use MRZGenericDocument.document.wrap() as MRZ to get exact fields instead of a list of generic fields.
    • Removed methods from BarcodePolygonsView and BarcodeScannerView.selectionOverlayController related to polygon and text view appearance. E.g. setStrokeColor etc. Please use BarcodeAppearanceDelegate instead!
    • Removed methods from BarcodePolygonsStaticView and BarcodeScanAndCountView.counterOverlayController which were related to polygon appearance. E.g. setStrokeColor etc. Please use BarcodeAppearanceDelegate instead.
  • 🚙 Under the hood:
    • Removed UNKNOWN barcode type from the API as it is applicable only for internal use.
    • Fixed declaration of attributes polygonStrokeDeclinedColor and polygonFillDeclinedColor.
    • Text Data Scanner only depends on Tesseract for license plate scanning. For other purposes, Tesseract was removed.

Version 2.3.0 (13 Jul 2023)

  • 🎉 New:
    • Added support for MicroQR codes.
    • Added setViewFinderEnabled method to BarcodeScannerConfiguration and BatchBarcodeScannerConfiguration. This toggles the visibility of the viewfinder. Defaults to true.
    • Introduced a scanned barcode confirmation dialog in BarcodeScannerActivity RTU screen, and a configuration class BarcodeConfirmationDialogConfiguration in BarcodeScannerConfiguration for modifying dialog UI.
    • Added Scan and Count of Barcodes feature. Use BarcodeScanAndCountView to integrate it into your app.
    • Introduced a new public interface, PdfImagesExtractor, for extracting images from PDF files.
    • Added a new implementation of PdfImagesExtractor and PdfPagesExtractor based on the Pdfium library. Add the optional 'io.scanbot:bundle-sdk-pdfium:SDK_VERSION' dependency to use it.
  • 🚀 Improvements:
    • Stripped down the Android dynamic symbol table in native libraries. As a result, the size of the native shared libraries has decreased.
    • Improved accuracy and detection speed of QR_CODE, Code39, and Code93 barcode types.
    • Added support for inverted PDF-417 barcodes.
    • Optimized the size of native libraries integrated into the Scanbot SDK.
    • Enhanced error handling behavior when deleting SDK pages.
    • Added a flag, detectFromNv21(..., isLive: Barcode), in ScanbotBarcodeDetector to detect barcodes on NV21 images in the static image mode.
  • 🐞 Bug fixes:
    • Fixed a crash within the barcode detector.
    • Corrected a typo in Libraries.txt.
    • Fixed detection of a few false-positive RSS_EXPANDED in live mode.
    • Fixed a bug causing incorrect (mirrored) preview when CameraModule.FRONT is set up for ScanbotCameraXView.
    • Fixed the logic in setAutoSnapProgressEnabled and setPolygonAutoSnapProgressEnabled methods in FinderDocumentScannerConfiguration and DocumentScannerConfiguration.
    • Fixed TextDataScaner.textDataScannerStep not applying from JSON configuration.
    • Fixed incorrect mapping of iOS-only parameter shutterButtonIndicatorColor in DocumentScanner and FinderDocumentScanner.
    • Corrected mapping of userGuidanceStrings JSON configuration for CheckRecognizerConfiguration.
  • ⚠️ Breaking changes:
    • Corrected a typo in the polygonAutoSnappingProgressStrokeColor attribute name for PolygonView.
    • API breaking changes in the MRZ scanner result interface:
      • Replaced io.scanbot.mrzscanner.model.MRZRecognitionResult MRZ Scanner result model class with io.scanbot.mrzscanner.model.MRZGenericDocument.
      • Removed fields: List<MRZField> list and MRZField class. All detected fields are now stored in the document: GenericDocument field in MRZGenericDocument instance as fields: List<Field> list.
      • Added mrzGenericDocument.document.wrap() utility method, which returns a structured object (io.scanbot.genericdocument.entity.MRZ) with MRZ-specific fields for easier access to the detected fields.
      • Removed validCheckDigitsCount: Int, checkDigitsCount: Int, rawMrz: String, and checkDigits: List<MRZCheckDigit> from the resulting model. All this data can be extracted from the GenericDocument.
      • The travelDocType: MRZDocumentType is now represented by the documentType: MRZDocumentType field in the MRZGenericDocument instance.
    • Date fields in the MRZGenericDocument result model now contain an unformatted date string.
    • Replaced MRZDocumentType class with MRZGenericDocument.MRZDocumentType.
    • Removed deprecated MultipleObjectsDetectorActivity RTU UI screen.
    • Removed deprecated MultipleObjectsDetector and BusinessCardsImageProcessor.
  • 🚙 Under the hood:
    • Libraries.txt is now contained only in package1 and package2 dependencies.
    • Improved attribute handling to support the generation of a single AAR.
    • Blackview and Caterpillar brands are now excluded from GpuAcceleration-supported devices.
    • Improved cross-platform parameter handling from the refactored configurations structure.
    • Added an OPTIONAL 3rd-party open-source dependency: the Pdfium library (licensed under the Apache License Version 2.0). By default, the Pdfium library is NOT added to the Scanbot SDK dependencies.

Version 2.2.0 (27 Apr 2023)

  • 🎉 New:
    • Added type BarcodeFormat.CODE_25 that was previously considered as type INDUSTRIAL_2OF5 without checksum. The INDUSTRIAL_2OF5 checksum option is now removed and thus, depending on a valid checksum, we either return INDUSTRIAL_2OF5 or CODE_25.
    • Added new field settings in DocumentScannerActivity.Result. It contains the state of the screen options (e.g. autoSnapping, flashEnabled, etc). Since this class implements Parcelable, its instance can be saved and restored for the next scanning session.
    • A new machine-learning based machine-readable zone recognizer has been introduced.
    • Portuguese ID cards (old and new format) can now be recognized by the MRZ scanners.
  • 🚀 Improvements:
    • Added BarcodeItemViewPositionHandler that helps to adjust the position of the barcode description view in relation to the polygon contour.
    • Improved preview quality selection logic for ScanbotCameraXView.
    • Improved GenericDocumentRecognizerFrameHandler's Rect cropping logic when working with FinderOverlayView.
    • Patient info box recognition has been improved in the medical certificate scanners.
    • Stacked RSS barcode scanning has seen substantial improvements.
  • 🐞 Bug fixes:
    • Fixed a visual glitch with ScanbotCameraXView on Xiaomi devices, which happened before the preview started.
    • Fixed a bug where ScanbotCameraXView sometimes threw RejectedExecutionException after the camera stopped.
  • ⚠️ Breaking changes:
    • Changed structure of MedicalCertificateRecognizerResult:
      • McInfoBoxSubType renamed to CheckBoxType.
      • MedicalCertificateInfoBox type split into PatientInfoBox and CheckBox.
      • MedicalCertificateInfoBox.patientInfoFields property now available as MedicalCertificateInfoBox.patientInfoBox.patientInfoFields.
      • DateRecord.validationConfidenceValue removed.
    • Removed method ScanbotSDKInitializer.prepareMRZBlobs(). MRZ blobs must now be added as a separate module dependency in Gradle: implementation("io.scanbot:sdk-mrz-assets:<SDK_VERSION>").
    • Removed MRZRecognitionResult.recognizedMRZLines as it was replaced with MRZRecognitionResult.rawMrz.
    • Removed parameter decodeStacks1D. The decoding of stacked barcodes is now handled automatically.
    • FrameHandler interface was converted to an abstract class. If you have custom FrameHandlers, please add constructor invocation to your FrameHandler implementation.
    • Some of the Scanbot SDK artifact IDs have been changed and need to be updated in your build.gradle's dependencies block:
      • for users of io.scanbot:sdk-package-1, -2, -3 or -4 that use barcode scanning, the dependency of io.scanbot:sdk-barcode-assets should be updated to io.scanbot:bundle-sdk-barcode-assets (NOTE: barcode standalone SDK users do not need to adjust anything in this case: io.scanbot:scanbot-barcode-scanner-sdk and -sdk-ui dependencies are to stay as is!)
      • all users of io.scanbot:sdk-crypto-persistence should change this dependency to io.scanbot:bundle-sdk-crypto-persistence (or to io.scanbot:barcode-sdk-crypto-persistence if you are using Scanbot Barcode standalone SDK)
  • 🚙 Under the hood:
    • Enabled -fstack-protector-all on Android
    • Removed usage of backward-cpp library.
    • Removed outdated assets for MRZ detection.
    • FrameHandlers won't return the result if FrameHandler.isEnabled is set to false after actual frame detection.
    • We now append the bundle- or barcode- prefix to almost all of our SDK dependencies' names. The modules that have not been changed are those used by customers: rtu-ui-bundle, scanbot-barcode-scanner-sdk, scanbot-barcode-scanner-sdk-ui, io.scanbot:sdk-package-1, -2, -3 and -4 modules, all *-assets modules. The exception to this are modules scanbot-barcode-assets and scanbot-sdk-crypto-persistence: these will have corresponding prefixes from now on, depending on what SDK they are being used for.

Version 2.1.0 (5 Apr 2023)

  • 🎉 New:
    • Added method setRequiredAspectRatios() to the DocumentScannerConfiguration that allows you to specify the aspect ratios of the documents that will be automatically captured.
  • 🚀 Improvements:
    • Fixed a bug for RTU-UI screens, when using JSON configuration with iOS string formatting patterns.
    • Improved performance and accuracy of machine-readable-zone recognition.
    • Improved FinderOverlayView behavior, when UI container is dynamically resized, e.g. on keyboard events, etc.
    • Added setForceMaxSnappingQuality(enabled: Boolean) in IScanbotCameraView interface (implemented only on ScanbotCameraXView implementation): controls whether the camera should force the maximum possible quality of the snapped picture. As a result, the snapping speed could be significantly slower and the resulting image could be bigger. The default is false.
    • Added setSnappingAutoAdjustment(enabled: Boolean) in IScanbotCameraView (implemented only on ScanbotCameraXView implementation): controls whether the camera should apply the final image post-processing (e.g., switching to a low-light mode or HDR, applying face retouch, etc.). Implementation of post-processing depends on the vendor's implementation of Camera API. The default is false.
  • 🐞 Bug fixes:
    • Fixed EditPolygonImageView bug with the coloring of lines on the polygon change.
    • Fixed Scanbot camera views not resolving Context correctly if used in Activity/Fragment with Hilt's @AndroidEntryPoint annotation.
    • Fixed Scanbot RTU-UI scanners handling when the app is terminated in the background.
    • Fixed a potential memory issue in the check recognizer.
  • ⚠️ Breaking changes:
    • FinderAspectRatio and PageAspectRatio classes are now deprecated and merged into AspectRatio common class. Please use AspectRatio instead.
  • 🚙 Under the hood:
    • Bump Dagger version to 2.44
    • Update Kotlin library to 1.7.10
    • Changed the default JPEG compression quality from 95 to 100 for ScanbotCameraXView. As a result, snapped images will be bigger but with the better quality

Version 2.0.0 (14 Feb 2023)

  • 🎉 New:
    • Added a new automaticSelectionEnabled option to SelectionOverlayConfiguration for BarcodeScannerActivity and BatchBarcodeScannerActivity RTU UI screens
  • 🚀 Improvements:
    • The raw string is returned for RSS Expanded barcodes that don't contain a GS1 string
    • Updated BarcodeScannerAdditionalConfigBuilder with decodeStacks1D and codeDensity parameters
    • Improved autosnapping animation in PolygonView
    • Eliminated the camera preview going black between stopPreview() and startPreview() calls in DocumentScannerActivity RTU UI
  • 🐞 Bug fixes:
    • Fixed the ScanbotCameraXView instantiation error in Layout Editor
    • Fixed the memory leak of CameraManager in ScanbotCameraXView
    • Fixed NPE in the ScanbotCameraXView when the startPreview() function is called while the ScanbotCameraXView was detached
    • Fixed an issue with InitialScanDelayMs and DelayAfterScanMs options not working in BarcodeScannerConfiguration when BarcodeImageGenerationType.CAPTURED_IMAGE and BarcodeImageGenerationType.VIDEO_FRAME output generation types were used
    • Fixed ScanbotCameraXView not working after reattaching to a window
  • ⚠️ Breaking changes:
    • Removed deprecated NfcPassportScanner, PayFormScanner and Workflows classical and RTU components together with all their configurations
  • 🚙 Under the hood:
    • Update TensorFlow Lite to 2.10
    • Improve allocated memory releasing mechanism for:
      • European Health Insurance scanner
      • License plate scanner
      • Generic document scanner
      • Data scanner
      • MRZ scanner
      • TIFF writer
      • Multiple Objects detector
      • Blur estimator
      • TextOrientationScanner

Version 1.98.0 (11 Jan 2023)

  • 🎉 New:
    • Added support for two-sided 21b Medical Certificates with new checkbox types. See McFormType.Form_21a_back and McInfoBoxSubtype.
    • Added new parameter decodeStacks1D in BarcodeScannerAdditionalConfig for Barcode Scanner. For stacked RSS barcodes, this should be set to the number of stacks with which the barcode was printed.
  • 🚀 Improvements:
    • Improved recognition of inverted barcodes
    • Improved performance and reduced false positive rate for stacked RSS barcodes
    • Improved performance of DataMatrix and QR-codes
    • Improved recognition of Medical certificates in general
  • 🐞 Bug fixes:
    • Fixed issues with MRZ on Mexican and US passports
    • Fixed a crash when applying a filter to single channel images
    • Fixed a crash on the detection of Health Insurance cards in some rare cases
  • ⚠️ Breaking changes:
    • Removed intention and insuredPersonType fields from MedicalCertificateRecognizerResultInfo
    • Removed enums MedicalCertificateInsuredPersonType and MedicalCertificateIntention
    • Renamed McBoxAccident to McBoxAccidentYes and McBoxRequiresCare to McBoxRequiresCareYes in McInfoBoxSubtype
    • Removed MrzBlobRuntimeException as it cannot occur anymore
  • 🚙 Under the hood:
    • Added third-party libraries (backward-cpp v1.6 and magic-enum v0.8.1)

Version 1.97.1 (18 Nov 2022)

  • 🐞 Bug fixes:
    • Fixed crashes on devices running Android 5 and 6 in some scenarios
    • Fixed compatibility with 3rd party obfuscated libraries
  • 🚙 Under the hood:
    • Removed CommonsIo, CommonsCodec and CommonsLang dependencies
    • Changed the package name to io.scanbot.sdk.PUBLISH_ARTIFACT_ID for the internal obfuscated classes
    • Improve allocated memory releasing mechanism for Barcode Scanner and Contour Detector

Version 1.97.0 (26 Oct 2022)

  • 🎉 New:
    • Added setVibrationEnabled(enable: Boolean) method to enable/disable the vibration feature in io.scanbot.sdk.util.snap.SoundController class. NOTE: android.permission.VIBRATE permission is required!
    • Added bleepResId: Int and bleepUri: Uri parameters to the SoundController class constructors to customize the bleep sound. By default the SDK specific sound will be played.
    • New barcode types are supported: IATA 2 of 5 and Industrial 2 of 5. Please, note that they are disabled by default. See BarcodeFormat
    • BarcodePolygonsView allows visualization of barcode contours when using classical components
    • Selection overlay layer based on BarcodePolygonsView can be enabled for BarcodeScannerView via BarcodeScannerView.selectionOverlayController.setEnabled
    • Selection overlay can be enabled and configured for ready-to-use UI via BarcodeScannerConfiguration.setSelectionOverlayConfiguration(...)
    • New properties InitialScanDelayMs and DelayAfterScanMs in BarcodeScannerConfiguration allow delaying the initial scan and/or pausing the preview after scanning the barcode
  • 🚀 Improvements:
    • Improved crops and contours for detected barcodes
    • Improved MRZ detection for US passports
  • 🐞 Bug fixes:
    • Fixed a bug with RTU Barcode scanner not being able to produce image of BarcodeImageGenerationType.CAPTURED_IMAGE when an instance of IBarcodeFilter is set.
  • ⚠️ Breaking changes:
    • Moved and renamed io.scanbot.sdk.ui.utils.ScanBeeper class from the RTU-UI module to the package io.scanbot.sdk.util.snap.SoundController in the base scanbot-sdk-1 module.
  • 🚙 Under the hood:
    • For ScanbotCameraXView - when CameraOpenCallback is set - the onCameraOpened method's call was moved later in the lifecycle: now called at the latest point in time when the camera preview is confirmed to be streaming.
    • Updated third-party libraries: Gson to 2.9.1, CommonsIo to 2.11.0 and CommonsCodec to 1.15

Version 1.96.0 (08 Sep 2022)

  • 🚀 Improvements:
    • Improved accuracy and performance of the check recognizer.
  • 🐞 Bug fixes:
    • Fixed ContourDetector crash when assembled release with obfuscation on old AGP version.
  • 🚙 Under the hood:
    • Improve layouts for RTU UI screens

Version 1.95.0 (12 Aug 2022)

  • 🎉 New:
    • Each RTU UI configuration and ScanbotSDKInitializer class now contains fromJson(input: String) and modifyFromJsonConfiguration(<ScreenName>JsonConfiguration) methods allowing to create or edit the configuration classes using JSON input. The format of the JSON string should be compatible with <ScreenName>JsonConfiguration class
    • Added new configuration option codeDensity in BarcodeScannerAdditionalConfig for Barcode Scanner
    • Added codeDensity configuration option for Barcode Scanner RTU UI screen
  • 🚀 Improvements:
    • Added default images for EditPolygonView anchors and for MagnifierView overlay image in classical components.
    • Added new insets API for the finder box:
      • finderInsets allows setting the finder edge padding from the camera preview edges.
      • safeAreaInsets can add additional padding to the finder. This is particularly useful when part of the camera preview is covered by another widget (e.g. a navigation bar), thus preventing the finder from appearing behind this widget.
    • Added configuration methods to MedicalCertificateRecognizerConfiguration that allow configuring the appearance of the medical certificate scanner's finder. Details in MedicalCertificateRecognizerConfiguration API reference.
    • Added an option to force display the user guidance interface when manually snapping documents in DocumentScannerActivity. Use DocumentScannerConfiguration.setForceUserGuidance(true) to enable this option.
  • 🐞 Bug fixes:
    • The polygon's background color now displays correctly at the corners of the PolygonView in document detector screens
    • Fixed snapped page filtering in Document Scanner RTU UI screen
    • Fixed incorrect preview size calculation after granting permission for legacy ScanbotCameraView
    • The system back gesture navigation was fixed on the CroppingActivity and EditPolygonImageView
  • ⚠️ Breaking changes:
    • Changed the default Camera View to ScanbotCameraXView based on CameraX API in all RTU UI screens
    • Removed EngineMode.Legacy support for Barcode Scanner
    • ContourDetector's detect methods are now synchronized and return a new DetectionResult entity. It incorporates all data related to contour recognition. Fields that were previously used to obtain this data have been deleted (polygon, polygonF, detectionScore, verticalLines, horizontalLines)
    • DetectionResult class name changed to DetectionStatus
    • setFinderOffset deleted. Use finderInset values instead
  • 🚙 Under the hood:
    • Updated compileSdk version to 31
    • Updated Android CameraX version to 1.1.0
    • Updated the version of kotlin std library to 1.6.21
    • Updated the version of Dagger library to 2.41
    • Updated Boost C++ version to 1.79.0
    • setFinderMinPadding() works on finderInsets API

Version 1.94.0 (13 Jun 2022)

  • 🎉 New:
    • Added Fragment.registerForActivityResultOk method for calling activity from fragments for subscribing to success result with the new Activity Result API.
    • Check recognizer:
      • Introduced CheckRecognizerActivity RTU UI for the convenient use of our updated Check Recognizer SDK.
      • Added setAcceptedCheckStandards(acceptedCheckStandards: ArrayList<RootDocumentType>) method for Check filtering by standard in CheckRecognizer. By default - empty list (all standards are accepted).
      • Added returnImageOnSuccess: Boolean parameter for recognize(...) and recognizeWithFinderOverlay(...) methods in CheckRecognizer. By default - false.
    • With the new BarcodeScannerView and DocumentScannerView Classical components, the integration of barcode scanning and document scanning with Custom UIs is now even easier!
  • 🚀 Improvements:
    • Added a cancellation interface for PdfPagesExtractor calls. Now you can cancel extracting pages from large PDFs and thus don't need to wait until the end of the process. Look for property cancelCallback: LongOperationCancelCallback inside fun pagesFromPdf(pdfFile, cancelCallback).
    • Beta: An improved Check Recognizer that now supports further bank layouts from different countries (e.g Kuwait, India, Australia). The recognizer is available as Classic and RTU UI components. Please note that this feature is still in beta. Furthermore, due to the renaming of the feature from "Cheque" to "Check", some classes and API methods have been renamed as well as new classes have been introduced. For more details please see the Breaking Changes.
    • Added configuration methods to MedicalCertificateRecognizerConfiguration that allows configuring the medical certificate scanner finder appearance. Details in MedicalCertificateRecognizerConfiguration API reference.
    • Fixed an issue with the NFC scanner not working for some devices, e.g. Xiaomi Mi10.
    • Improved behavior of FinderOverlayView and its child classes. Now any Finder View can inject other layouts inside itself and these parts would be properly positioned with the finder window changes. There are 3 customizable parts:
      • top - is a zone above the finder window. Can be used for inserting some hints.
      • bottom - is a zone below the finder window. Can be used for inserting some hints.
      • center - is a zone inside the finder window. Can be used for showing an overlay inside the finder window.
  • 🐞 Bug fixes:
    • Fixed a crash on specific PDF-417 codes with boarding passes.
    • Fixed an incorrect mapping of guidance strings for MedicalCertificateRecognizerActivity.
    • Fixed a potential crash in ScanbotCameraXView when taking a picture after the screen was paused.
  • ⚠️ Breaking changes:
    • finder_description view id is no longer used to place text views below the finder. Please use new API.
    • Check recognizer:
      • All the Cheque components and packages renamed to Check (chequescanner to check).
      • The ML blobs are now available as a separate library io.scanbot:sdk-check-assets:$latestSdkVersion. Please make sure to add it to your dependencies to be able to use CheckRecognizer.
      • The obsolete method ScanbotSDKInitializer#prepareChequeBlobs(prepareBlobs: Boolean) was removed from the SDK API.
      • CheckRecognizer returns CheckRecognizerResult object with recognized data.

Version 1.93.0 (07 Apr 2022)

  • 🎉 New:
    • New checkbox types are now supported for Medical certificates: McBoxRequiresCare, McBoxRequiresCareNo, McBoxAccident, McBoxAccidentNo, McBoxIntention, McBoxOtherAccident.
  • 🚀 Improvements:
    • Huge improvement on the speed and accuracy of 1D barcodes recognition.
    • Native libraries size decreased by more than 20%
    • If the medical certificate contains a barcode, the information contained in it will be merged with the printed information.
  • 🐞 Bug fixes:
    • PDFRenderer now properly handles content:\\ type uris.
    • By default, GPU acceleration has been enabled (issues with the Samsung S22 series devices are fixed).
    • Fixed crash for calling TIFFWriter in release build variant version.
    • Fixed crash for calling TextOrientationRecognizer in release build variant version.
    • Fixed camera flash state for DocumentScannerActivity after picture is taken in multi-page mode.
    • Fixed cropped images of 1D barcodes.
    • Fixed Multi-Page button state for MultipleObjectsDetectorActivity.
  • ⚠️ Breaking changes:
    • Moved configuration of page for cropping screen from method to constructor CroppingConfiguration(page).
    • Deprecated component FilterPredictor was removed.
    • Deprecated field MRZCheckDigit.validatedString was removed.
  • 🚙 Under the hood:
    • Updated the version of Leptonica library to 1.82.0
    • Updated the version of JSON for Modern C++ library to 3.10.2
    • Updated the version of BOOST C++ library to 1.75.0
    • Updated the version of OpenCV library to 4.5.3
    • Updated the version of Tesseract-ocr library to 4.1.3
    • Updated the version of Nameof C++ library to 0.10.1
    • Updated the version of LibTIFF library to 4.2.0
    • Updated the version of ZXing-C++ library to 1.1.0
    • Updated the version of OpenSSL library to 1.1.0h
    • Updated the version of XNNPACK library to fb8d1f1b2 git commit
    • Updated the version of TensorFlow library to 339ccc2b03 git commit
    • Replaced the OpenJPEG library with libjpeg-turbo library 2.1.2
    • Added the Skia library of 47b4b19 git commit
    • Added the spdlog library of 1.9.2 version
    • Document detector and Cropping functionality extracted to separate module rtu-ui-docdetector

Version 1.92.1 (11 Mar 2022)

  • 🎉 New:
    • Added new property CroppingConfiguration.setSwapTopBottomButtons() which allows swapping the top and bottom buttons.
  • 🐞 Bug fixes:
    • By default, GPU acceleration has been disabled (due to issues on the Samsung S22 series devices). To enable it, use ScanbotSDKInitializer().allowGpuAcceleration(true).
    • Fixed an incorrectly thrown FileAccessException in ScanbotSDKInitializer when cleaning deprecated blob files.

Version 1.92.0 (23 Feb 2022)

  • 🎉 New:
    • Introduced MedicalCertificateRecognizerActivity ready-to-use UI for an easy integration of the Medical Certificate Recognizer.
    • Added a new property DocumentScannerConfiguration.enableHardwareSnapButton that helps to set one hardware button to trigger a manual snap. By default Kotlin uses KeyEvent.KEYCODE_VOLUME_DOWN but any KeyEvent.KEYCODE value can be set.
    • Added the possibility to replace the cancel button in most of the RTU UI top toolbars with an icon. Please check the configuration.setCancelButtonIcon() methods of the RTU configurations.
    • Added new methods DocumentScannerConfiguration.setForceMaxSnappingSize() and ScanbotCameraXView.setForceMaxSnappingSize() that force the maximum available snapping size and apply the same aspect ratio to the preview. Works only with ScanbotCameraXView or with CameraX enabled in the RTU UI. Disabled by default, thus ScanbotCameraXView shows a preview and makes snaps with an aspect ratio closest to the display's dimensions.
    • Added support for the GS1 barcode document format, see Gs1Document.
    • Added a class BarcodeDocumentParser to parse a string into a supported barcode document type.
    • Added a new method GenericDocumentScannerConfiguration.setExcludedFieldTypes() that can be used to set fields that should be excluded from the scanning process altogether, e.g. for security reasons.
  • 🚀 Improvements:
    • Improved the UX of the DocumentScannerActivity screen. Now the SnapFlashView animation and the pausing of the preview happens only after the image was captured. Previously it could result in blurry images.
    • All the date fields returned by GenericDocumentRecognizer now have a ValidationStatus. Fields with ValidationStatus = Invalid will not be shown in the list of fields for GenericDocumentRecognizerActivity.
    • Mark ScanDisabilityCertificateWorkflowStep as deprecated in order to replace it with the Medical Certificate ready-to-use scanner screen.
  • ⚠️ Breaking changes:
    • Fixed applying DocumentScannerConfiguration.setCameraBackgroundColor() for ScanbotCameraXView.
    • Removed unused parameters setShouldSavePhotoImageInStorage and setShouldSaveSignatureImageInStorage from GenericDocumentRecognizerConfiguration.
    • Renamed the feature Disability Certificate Scanner to Medical Certificate Recognizer
      • Renamed all related classes and package names with DC prefix to MedicalCertificate prefix (like io.scanbot.sdk.dcscanner.DCScanner to io.scanbot.sdk.mcrecognizer.MedicalCertificateRecognizer)
      • Renamed Medical Certificate recognizer assets library to sdk-mc-assets
      • Renamed the class DisabilityCertificateDocument in the barcode scanner to MedicalCertificateDocument. All related classes and paths that contain DisabilityCertificate are also renamed to MedicalCertificate.
      • Removed methods detectAndRecognizeMcJpeg(...) and detectAndRecognizeMcBitmap(...) from MedicalCertificateRecognizer. Use recognizeMcJpeg(..., shouldCropDocument: Boolean = true, returnCroppedDocument: Boolean = true, recognizePatientInfo: Boolean = true, recognizeBarcode: Boolean = true) and recognizeMcBitmap(..., shouldCropDocument = true, ...) instead.
      • Removed outdated parameters width: Int and height: Int in MedicalCertificateRecognizer#recognizeMcJpeg(...)
      • Replaced the usage of internal class io.scanbot.mcscanner.model.MedicalCertificateRecognizerResultInfo with publicly available class io.scanbot.sdk.mcrecognizer.entity.MedicalCertificateRecognizerResult in all Medical Certificate classical components
  • 🚙 Under the hood:
    • Removed the usage of Fragments from all RTU UI screens.

Version 1.91.0 (14 Jan 2022)

  • 🎉 New:
    • New layouts of German ID cards are now supported
    • Added fun setMinFocusDistanceLock(lock: Boolean) in BarcodeScannerConfiguration and BatchBarcodeScannerConfiguration for RTU UI screens to lock in the minimum supported camera focus distance (supported only with CameraX)
    • Added fun lockMinFocusDistance(lock: Boolean) in IScanbotCameraView to lock in the minimum supported camera focus distance (supported only with CameraX)
    • New option lowPowerMode: Boolean in BarcodeScannerAdditionalConfiguration for BarcodeScannerConfiguration and BatchBarcodeScannerConfiguration for RTU UI screens and ScanbotBarcodeDetector classical component
  • 🐞 Bug fixes:
    • Fixed a bug that led to incorrect clearing of the scanned documents in GenericDocumentRecognizerActivity
    • Initial flash button state on opening GenericDocumentScanner screen will have the same state as was set through the configuration
    • Fixed an issue when AutoSnapping controllers, that were set up after the camera preview start, were not working
    • Fixed a crash in TextDataScannerActivity on some rare cases while restarting the app from recent apps to this screen
  • 🚀 Improvements:
    • Significantly improved recognition of Aztec barcodes
    • Added method setFinderMinPadding to the FinderOverlayView, making it possible to change this value programmatically rather than only from XML

Version 1.90.1 (22 Dec 2021)

  • 🚀 Improvements:
    • Improved robustness and performance of the MRZ scanner

Version 1.90.0 (15 Dec 2021)

  • 🎉 New:
    • Added Scanbot implementation of AndroidX Activity Result API to every RTU UI activity. See documentation for desired RTU component here.
    • Added properties textWithExtension and metadata to BarcodeItem to support barcode extensions of UPC and EAN barcodes
    • The results screen of the BatchBarcodeScannerActivity now displays textWithExtension instead of text
    • Added new boolean flag enableNativeLogging (by default - false) in ScanbotSDKInitializer#withLogging(useLog: Boolean, enableNativeLogging: Boolean) method
    • Support for barcode scanner results filtering in RTU-UI barcode scanning components
    • Added 2 implementations of IBarcodeFilter interface - BarcodeFilter and BarcodeExtensionsFilter
    • New setters setBarcodeFilter(barcodeFilter: IBarcodeFilter) in BarcodeScannerConfiguration and BatchBarcodeScannerConfiguration for RTU UI screens
    • Added setPreviewFrameSize(frameSize: Size) and setAnalyzerFrameSize(frameSize: Size) methods in ScanbotCameraXView for more flexible camera frame size modifications
  • 🐞 Bug fixes:
    • Fixed a crash in the barcode detector with Legacy engine mode on stable images
    • Fix incorrect preview size resolving which caused the impossibility to perform scanning with the legacy ScanbotCameraView on some budget devices
    • Fix inconsistent polygon displaying on some horizontally-oriented devices
    • Fix photo-saving callback being ignored for NFC Passport Scanner configuration
  • 🚀 Improvements:
    • Improved recognition of small barcodes on large images
    • Improved recognition of stacked RSS Expanded (GS1) barcodes
    • Improved rectangular DataMatrix performance
    • Increased performance on stable images with PDF-417 barcodes
    • If the Scanbot SDK is not initialized, RTU UI screens are force closed without the RuntimeException
  • ⚠️ Breaking changes:
    • Renamed setPreviewSize(previewSize: Size) to setCameraFrameSize(frameSize: Size) in ScanbotCameraXView
    • Constants RESULT_LICENSE_INVALID, CANCELLATION_REASON_TIMEOUT, SCANNED_BARCODE_EXTRA, SCANNED_BARCODE_IMAGE_PATH_EXTRA, SCANNED_BARCODE_PREVIEW_FRAME_PATH_EXTRA, SNAPPED_PAGE_EXTRA, EDITED_PAGE_EXTRA, EXTRACTED_FIELDS_EXTRA, WORKFLOW_EXTRA, WORKFLOW_RESULT_EXTRA, SNAPPED_OBJECTS_EXTRA were deleted. Instead we have implemented AndroidX Activity Result API for RTU UI components. Also - if you prefer to stick with deprecated startActivityForResult approach - we have added utility methods that incapsulate all the verbosity of getting the result entity from the activity's result Bundle. Please see the documentation for the desired RTU UI component here.
    • IdCardScanner
      • Removed deprecated IdCardScanner and all the classes related to it. Consider using GenericDocumentRecognizer instead
    • Blur Estimator:
      • The ML blobs are now available as a separate library io.scanbot:sdk-blur-assets:$latestSdkVersion. Please make sure to add it to your dependencies to be able to use BlurEstimator
      • The obsolete method ScanbotSDKInitializer#prepareBlurEstimatorBlobs(prepareBlobs: Boolean) was removed from the SDK API.
  • 🚙 Under the hood:
    • Updated the version of CWAC Camera library to 0.6.42

Version 1.89.1 (30 Nov 2021)

  • 🐞 Bug fixes:
    • Fixed a bug for when BatchBarcodeScannerActivity ignored the parameter passed to batchBarcodescannerConfiguration.setCameraModule()

Version 1.89.0 (5 Nov 2021)

  • 🎉 New:
    • Added allowGpuAcceleration(enable: Boolean) method in ScanbotSDKInitializer which enables GPU acceleration for TensorFlow ML models
    • Added precompileGpuMlModels(precompilingCallback: () -> Unit) method in ScanbotSDKInitializer which performs GPU ML models precompilation
  • 🐞 Bug fixes:
    • Fixed a bug in BatchBarcodeScannerActivity and MultipleObjectsDetectorActivity for when they don't show the camera preview after the camera permission approval
    • Fixed a bug when BarcodeScannerActivity does not detect any barcodes with the image generation type VIDEO_FRAME
    • Fixed possible crash with Barcode Scanner activities after the camera permission request
  • 🚙 Under the hood:
    • Updated 3rd party libraries used in SDK, see [[Open Source Libraries in Scanbot SDK]]

Version 1.88.0 (13 Oct 2021)

  • 🎉 New:
    • A new method forceClose() was added into our RTU UI components allowing to manually finish the RTU UI Screen (Activity) from the calling code
    • Now it is possible to access the current state of the flashlight using isFlashEnabled method in IScanbotCameraView
    • Ready to Use UI components now can use CameraX under the hood. Use ScanbotSDKInitializer.useCameraXRtuUi(true) to enable it
    • startPreview() and stopPreview() methods are available for ScanbotCameraXView as well
    • A new filter type PURE_GRAYSCALE is now available for the image processing. It is similar to GRAYSCALE, but without additional contrast and dynamic range optimizations
  • 🚀 Improvements:
    • Improved flexibility, speed, and accuracy of the EHIC Scanner (European Health Insurance Cards)
    • ScanbotCameraXView now uses better preview quality by default
    • ScanbotCameraXView performance was optimized
  • 🐞 Bug fixes:
    • Fixed long initialization of ScanbotCameraXView on foldable devices
  • ⚠️ Breaking changes:
    • HealthInsuranceCardScanner
      • The ML blobs are now available as a separate library io.scanbot:sdk-ehic-assets:$latestSdkVersion. Please make sure to add it to your dependencies to be able to use HealthInsuranceCardScanner
      • recognizeX and detectAndRecognizeX methods were merged in recognizeX
      • setValidationType was removed. Now the country is detected directly from the card
      • Parameters width and height were removed from recognizeJPEG method as redundant
      • Method recognize was renamed to recognizeNv21
      • Enum value FAILED_VALIDATION was replaced with INCOMPLETE_VALIDATION in HealthInsuranceCardDetectionStatus
    • IdCardScanner
      • Removed deprecated IdCardScanner RTU screen (IdCardScannerActivity). Consider using GenericDocumentRecognizerActivity instead
      • Removed deprecated IdCardScannerConfiguration. Consider using GenericDocumentRecognizerConfiguration with GenericDocumentRecognizerActivity instead
  • 🚙 Under the hood:
    • Refactored internal architecture of all RTU screens
    • Removed RxJava and RxAndroid libraries from RTU dependencies

Version 1.87.1 (15 Sep 2021)

  • 🎉 New:
    • A new flag allowXnnpackAcceleration was added in ScanbotSDKInitializer allowing to control whether the XNN pack optimizations should be used (true by default)
  • 🐞 Bug fixes:
    • Fixed MSI_PLESSEY_CHECKSUM_ALGORITHMS, STRIP_CHECK_DIGITS and CAMERA_ZOOM parameters being ignored in BatchBarcodeScannerConfiguration
  • ⚠️ Breaking changes:
    • The corner_radius attribute of FinderOverlayView was renamed to sbsdk_corner_radius

Version 1.87.0 (3 Sep 2021)

  • 🎉 New:
    • Added PdfPagesExtractor class that can extract pages from a PDF as Sdk's Page, or convert them to JPEGs and write to a specified Uri. Check scanbotSdk.createPdfPagesExtractor().
  • 🚀 Improvements:
    • Improved recognition of the front side of ID cards by GenericDocumentRecognizer
    • Improved recognition of UPC/EAN barcodes due to ink spread
    • The resultPoints field of the BarcodeItem now contains correct information about the contours of the detected barcodes
  • 🐞 Bug fixes:
    • Fixed a bug with the EHIC recognizer that caused some UTF8 characters to be ignored upon recognition
    • Fixed a rotation issue in ScanbotCameraXView
    • Fixed incorrect metadata in PDF files generated from encrypted images
  • ⚠️ Breaking changes:
    • Update compile and target SDK of the library to 30
    • The resultPoints field of the BarcodeItem is no longer nullable
  • 🚙 Under the hood:
    • Updated the version of Android PDF Writer library to 1.0.10
    • Bump CameraX version to stable 1.0.1 and CameraX View to 1.0.0-alpha28

Version 1.86.0 (6 Aug 2021)

  • 🎉 New:
    • Page now contains PageImageSource allowing to check if the source image was captured automatically
    • PictureCallback now contains information if the image was captured automatically
    • Added a new method takePicture(acquireFocus: Boolean, isCapturedAutomatically: Boolean) in IScanbotCameraView which should be called with isCapturedAutomatically = true from a custom AutoSnappingController
    • Added method setAnchorPointColor(@ColorInt color: Int) allowing to change the color of draggable points of the cropping polygon in CroppingActivity component and EditPolygonView
    • Additional parameter stripCheckDigits: Boolean in BarcodeScannerAdditionalConfig for BarcodeDetector classical component
    • Additional parameter stripCheckDigits: Boolean in BarcodeScannerAdditionalConfiguration for RTU UI screens
  • 🚀 Improvements:
    • Significant performance improvements for all scanners
    • Added support of sandwiched PDF (OCR) generation with enabled pages binarization and encryption
    • All-zeros MSI Plessey barcodes are ignored now
    • Additional Information field in SEPA barcode document type now parsed correctly to match the specification
    • Memory usage optimizations for DC scanner
  • ⚠️ Breaking changes:
    • The parameter imageOrientation in PictureCallback was replaced to CaptureInfo which contains the orientation of the image and if it was captured automatically
    • IMPORTANT! Added create prefix to names of all the methods in ScanbotSDK and ScanbotBarcodeScannerSDK, that return new instances of scanners, processors or storages. Methods without this prefix return Singleton objects.
    • IMPORTANT! Classical component BusinessCardsImageProcessor is no longer singleton! You should get your instance from SDK, configure it and use it as needed. Calling ScanbotSDK(this).createBusinessCardsImageProcessor() elsewhere will return a new instance of this component with default config
    • Reference and Hint fields in SEPA barcode document type were replaced by Purpose and Remittance to match the specification
  • 🚙 Under the hood:

Version 1.85.1 (5 Jul 2021)

  • 🎉 New:
    • Added a new callback in EditPolygonImageView allowing to handle the dragging state. See EditPolygonDragStateListener
  • 🐞 Bug fixes:
    • Fixed a crash after the license expiration in Classical components

Version 1.85.0 (1 Jul 2021)

  • 🎉 New:
    • Brand new “Next Generation” machine-learning-based barcode scanning engine with improved reliability and much faster performance
    • Added new config parameter engineMode: EngineMode in BarcodeScannerConfig for ScanbotBarcodeDetector. By default ScanbotBarcodeDetector uses EngineMode.NextGen based on a new ML model
    • Added new RTU config method setEngineMode(engineMode: EngineMode) in BarcodeScannerConfiguration. By default - EngineMode.NextGen.
    • Added the possibility to customize the delay between successful frames for BatchBarcodeScannerActivity. Default changed from 1000 ms to 0 ms (no delay)
  • 🐞 Bug fixes:
    • Fixed incorrect toolbar color on NfcPassportScannerActivity
  • ⚠️ Breaking changes:
    • Removed disableMlDetector config parameter in BarcodeScannerConfig. Use EngineMode.LegacyFast instead.
    • Removed BarcodeDetectorType class and setDetectorType() method from Barcode RTU screens. Use setEngineMode(engineMode: EngineMode) instead.
    • Removed unused parameters width: Int and height: Int from detectFromJpeg(jpeg: ByteArray, frameOrientation: Int) method in ScanbotBarcodeDetector
  • 🚙 Under the hood:

Version 1.84.0 (17 Jun 2021)

  • 🎉 New:
    • Added a new supported barcode format BarcodeFormat.MSI_PLESSEY. By default MSI-Plessey is disabled, you must explicitly pass it as an accepted type
    • Additional parameter msiPlesseyChecksumAlgorithms: EnumSet<MSIPlesseyChecksumAlgorithm> in BarcodeScannerAdditionalConfig for BarcodeDetector classical component
    • Additional parameter msiPlesseyChecksumAlgorithms: EnumSet<MSIPlesseyChecksumAlgorithm> in BarcodeScannerAdditionalConfiguration for RTU UI screens
    • Added new parameter to the SdkLicenseInfo class licenseStatusMessage: String?
  • 🚀 Improvements:
    • More clear default values for user guidance strings on RTU UI screens
  • 🐞 Bug fixes:
    • Fixed a problem with UPC-A barcodes being recognized as EAN13 barcodes
    • Moved BlurEstimator assets to Package 1
  • ⚠️ Breaking changes:
    • Disability Certificate Scanner:
      • The ML blobs are now available as a separated library io.scanbot:sdk-dc-assets:$latestSdkVersion. Please make sure to add it to your dependencies to be able to use DCScanner.
      • The obsolete method ScanbotSDKInitializer#prepareDcBlobs(prepareBlobs: Boolean) was removed from the SDK API.
      • Added a new type to supported Disability Certificate formats - DCFormType.Form_1b_Custom
    • IMPORTANT! Classical components TIFFWriter, MRZScanner, BlurEstimator, PayFormScanner, ChequeScanner, DCScanner, HealthInsuranceCardScanner and MultipleObjectsDetector are no longer singletons! You should get your instance from SDK, configure it and use it as needed. Calling ScanbotSDK(this).<component>() elsewhere will return a new instance of this component with default config
    • Refactor RTU's NfcPassportScanningResult entity: make corresponding fields of Int type.
    • Added new setValidationType(validationType: HealthInsuranceCardValidationType) method in HealthInsuranceCardScanner
    • Changed signature of the handleLicenceStatusError method in IScanbotSDKLicenseErrorHandler. Added additional parameter errorMessage : String
    • Marked as deprecated reinitWithValidationType(validationType: HealthInsuranceCardValidationType) method in HealthInsuranceCardScanner

Version 1.83.2 (20 May 2021)

  • 🚀 Improvements:
    • Optimized memory consumption and performance of GenericDocumentRecognizer and IdCardScanner

Version 1.83.1 (18 May 2021)

  • 🚀 Improvements:
    • Improve the false positive rate for GenericDocumentRecognizer
  • 🐞 Bug fixes:
    • Fixed TiffWriter on 32-bit devices
  • 🚙 Under the hood:
    • Bump Kotlin version to 1.4.20
    • Bump CameraX version to stable 1.0.0

Version 1.83.0 (05 May 2021)

  • 🎉 New:
    • Introduced Generic Document Recognizer which provides the ability to scan various types of documents including German ID Cards, Passports and Driver's licenses. See [[Using Generic Document Recognizer]]
  • 🚀 Improvements:
    • IdCardScanner is now deprecated. Consider using GenericDocumentRecognizer instead
  • 🐞 Bug fixes:
  • ⚠️ Breaking changes:
    • IMPORTANT! Classical component BlurEstimator is no longer a singleton! You should get your instance from SDK, configure it and use it as needed. Calling ScanbotSDK(this).blurEstimator() elsewhere will return a new instance of this component with default config
    • IMPORTANT! Classical component TextOrientationScanner is no longer a singleton! You should get your instance from SDK, configure it and use it as needed. Calling ScanbotSDK(this).textOrientationScanner() elsewhere will return a new instance of this component with default config
    • IMPORTANT! Classical component IdCardScanner is no longer a singleton! You should get your instance from SDK, configure it and use it as needed. Calling ScanbotSDK.idCardScanner() elsewhere will return a new instance of this component with default config
    • Refactor RTU's NfcPassportScanningResult entity: make corresponding fields of type Int
  • 🚙 Under the hood:
    • Switched from using org.jetbrains:annotations to androidx.annotation:annotation
    • Improved FinderView behaviour in RTU BarcodeScannerActivity screen layout
    • Updated third-party libraries used in SDK (see Third-party Libraries)

Version 1.82.0 (21 Apr 2021)

  • 🎉 New:
    • Added a new option setOpticalZoomRange(zoomRange: ZoomRange) in IScanbotCameraView
    • Added two new options setCameraZoomFactor(zoomFactor: Float) and setCameraZoomRange(zoomRange: ZoomRange) in BarcodeScannerConfiguration for BarcodeScannerActivity RTU screen
    • Added gs1DecodingEnabled parameter in BarcodeScannerAdditionalConfig and BarcodeScannerAdditionalConfiguration to disable the decoding of FNC1 characters in CODE128 barcodes
  • 🚀 Improvements:
    • Initialization parameters for AESEncryptedFileIOProcessor (key: SecretKey?, initializationVector: ByteArray, salt: ByteArray and iterationCount: Int) became public.
  • ⚠️ Breaking changes:
    • Method setSignificantShakeDelay in LicensePlateScannerConfiguration as well as significantShakeDelay field in TextDataScannerStep are now of Long type
    • Renamed ImageFilterType.ML_BASED_BINARIZATION (filter for low-contrast documents with heavy shadows) to ImageFilterType.SENSITIVE_BINARIZATION
  • 🚙 Under the hood:
    • FilterPredictor instance is no longer a singleton. Each time ScanbotSDK.filterPredictor() is called a new instance will be created - consider that in your code and stick to using it on a "single instance per screen basis".

Version 1.81.0 (26 Mar 2021)

  • 🎉 New:
    • Now it is possible to set ScanbotBarcodeDetector to scan only the given types of BarcodeDocumentFormat and filter out others automatically
    • Added minimumTextLength, maximumTextLength, minimum1DQuietZoneSize params for ScanbotBarcodeDetector as BarcodeScannerAdditionalConfig entity.
    • Added new method setBarcodeScannerAdditionalConfiguration for RTU BarcodeScannerConfiguration to set the minimumTextLength, maximumTextLength, minimum1DQuietZoneSize params.
    • Introduce License Plate Scanner providing ability scan license plates on the vehicles and extract country code and plate number from it
    • GenericTextRecgonizer now has different strategies for scanning Documents and LCD's
    • Added a new configuration option setAcceptedDocumentTypes(acceptedDocumentTypes: List<IdScanResult.DocumentType>) in IdCardScanner
    • Added a new configuration option setAcceptedDocumentTypes(acceptedDocumentTypes: List<IdScanResult.DocumentType>) in IdCardScannerConfiguration for RTU IdCardScannerActivity
    • Added a new configuration option setSharpnessAcceptanceFactor(sharpnessAcceptanceFactor: Float) in IdCardScannerConfiguration for RTU IdCardScannerActivity
    • Added a new configuration parameter accessibilityConfiguration for DocumentScannerActivity and CroppingActivity allowing to set hints for the screen reader
  • 🚀 Improvements:
    • ML-based document detection is now used by default which improves the detection quality for most cases
    • Wrapped general JVM exceptions with specific Scanbot SDK alternatives to enhance crash report readability.
    • Moved MRZScanner, GenericTextRecognizer, MultipleObjectsDetector and BusinessCardsImageProcessor features to the SDK Package 2
    • Optimized memory consumption of BarcodeDetector
    • scanbot-sdk-crypto-persistence library supports min API 21+
  • 🐞 Bug fixes:
    • Fixed calculation of the visible rectangle for CameraView. It solves problems related to the scanning of documents which have borders close to the side of the screen
    • Fixed multiple simultaneous detection results on a single ITF barcode
  • ⚠️ Breaking changes:
    • ML-based document detection is now used by default. Therefore the dependency on io.scanbot:sdk-ml-docdetector was added by default as well. You may switch back to the edge-based approach by setting contourDetectorType in ScanbotSDKInitializer and exclude the module with assets by exclude group: "io.scanbot", module: "sdk-ml-docdetector" in build.gradle file. Excluding it may also be helpful to reduce the .apk size (~4MB) if the usage of the document detection mechanism is not planned at all.
    • io.scanbot.sdk.ocr.LanguageNotFoundException moved to package io.scanbot.sdk.exceptions.ocr.LanguageNotFoundException
    • IMPORTANT! Classical component ScanbotBarcodeDetector is no longer a singleton! You should get your instance from SDK, configure it and use it as needed. Calling ScanbotSDK(this).barcodeDetector() elsewhere will return a new instance of this component with default config. Refer to example implementation.
    • Removed a set of methods from ScanbotBarcodeDetector and BarcodeDetectorFrameHandler - code should be updated to use new setConfig and modifyConfig methods and BarcodeScannerConfig entity.
    • Now the prepareGenericTextRecognizerBlobs call in ScanbotSDKInitializer is redundant for the usage of the Data Scanner SDK
    • CheckableTextView was removed from the SDK. Consider the usage of CheckedTextView from Android SDK instead
  • 🚙 Under the hood:
    • The models for the ML-based document detector are now included in the .aar library. It may lead to an increase in the size of the .apk file if App Bundle is not used. However, the size of the installed application will decrease
    • Updated AndroidX Security Crypto library to the version 1.1.0-alpha03
    • Removed AndroidX security-identity-credential library from dependencies

Version 1.80.1 (10 Mar 2021)

  • ⚠️ Breaking changes:
    • Removed barcode format BarcodeFormat.MSI_PLESSEY

Version 1.80.0 (22 Feb 2021)

  • 🎉 New:
    • Implemented encrypted storage for the generated TIFF documents
    • Added support of parsing of Swiss QR codes in Barcode scanner
  • 🚀 Improvements:
    • Optimized the generation of sandwiched PDFs with OCR content and text recognition for source URIs as an input
  • ⚠️ Breaking changes:
    • Added an additional parameter to the methods writeTIFFFromFiles(sourceFiles: List<File>, sourceFilesEncrypted: Boolean, targetFile: File, parameters: TIFFImageWriterParameters): Boolean in TIFFWriter class for support of encrypted source images.
    • As OpticalCharacterRecognizer#recognizeTextWithPdfFromUris() doesn't compress input images under the hood, the resulting PDF file might become bigger. Make sure to compress images before passing them to OpticalCharacterRecognizer
  • 🚙 Under the hood:
    • Optimized delay handling between camera frames in BarcodeDetectorFrameHandler

Version 1.79.0 (08 Feb 2021)

  • 🎉 New:
    • IdScanResult from IdCardScanner now has additional mrzFields and mrzCheckDigits which are extracted automatically if the MRZ was detected on the document
  • 🚀 Improvements:
    • Massive improvements in the quality of the IdCardScanner
  • 🐞 Bug fixes:
    • MRZScanner now recognizes KindOfDocument, PINCode, LanguageCode, VersionNumber fields correctly. Previously they were detected as Unknown
  • ⚠️ Breaking changes:
    • A call to .prepareIdCardScannerBlobs(true) method in ScanbotSDKInitializer was removed. Now it is not needed to prepare the blobs for the usage of IdCardScanner and only requires a gradle dependency
  • 🚙 Under the hood:
    • Updated the version of CWAC Camera library to 0.6.41.

Version 1.78.0 (01 Feb 2021)

  • 🎉 New:
    • Implemented an encrypted storage for the page images and generated PDF documents
  • 🚀 Improvements:
    • ScanbotPDFRenderer.renderDocumentFromImages() doesn't create a Page under the hood and doesn't create copies of the images during the PDF rendering process anymore.
  • 🐞 Bug fixes:
    • Fix CameraX view bug with contour detector mirroring in the landscape for the front facing camera
  • ⚠️ Breaking changes:
    • Changed behavior of EditPolygonImageView when it mutated the given list of the polygon points. Now it works with a copy of the list.
    • As ScanbotPDFRenderer.renderDocumentFromImages() doesn't compress images under the hood, the result PDF file might become bigger. Make sure to compress images before passing them to ScanbotPDFRenderer
    • Added additional parameter in method renderDocumentFromImages(imageFileUris: List<Uri>, sourceFilesEncrypted: Boolean = false, pageSize: PDFPageSize): File? in PDFRenderer class for support of encrypted source images.
    • Added additional parameter in methods recognizeTextFromUris(imageFileUris: List<Uri>, sourceFilesEncrypted: Boolean = false, languages: Set<Language>): OcrResult ans recognizeTextWithPdfFromUris(imageFileUris: List<Uri>, sourceFilesEncrypted: Boolean = false, pageSize: PDFPageSize, languages: Set<Language>): OcrResult in OpticalCharacterRecognizer class for support of encrypted source images.
  • 🚙 Under the hood:
    • Updated the version of Android PDF Writer library to 1.0.9.

Version 1.77.2 (14 Jan 2021)

  • 🐞 Bug fixes:
    • Further fixes for the "double scan" issue with the RTU UI BarcodeScannerActivity

Version 1.77.1 (12 Jan 2021)

  • 🐞 Bug fixes:
    • Fixed a concurrency issue (RejectedExecutionException) for the frame handling in CameraView
    • Fixed a double scan issue for BarcodeScannerActivity RTU screen
    • Fixed a ShutterButton animation

Version 1.77.0 (17 Dec 2020)

  • 🎉 New:
    • OpticalCharacterRecognizer now has a recognizeTextFromBitmap method which allows to run OCR process on a bitmap
    • Added Front Facing Camera support (BETA). Call setCameraModule(CameraModule.FRONT) in ScanbotCameraView or ScanbotCameraXView to enable it.
    • Added CAMERA_MODULE configuration parameter for RTU screens
    • Added setDetectorType configuration parameter for barcode scanner and related RTU UI screens. It allows to disable model-based detection which might be helpful to increase the performance in some cases
  • 🚀 Improvements:
    • Enhance PageFileStorage class with overloaded removeAll(pageIds: List<String>) method: deletes all files for pages with given IDs
    • Improved detection of ITF barcodes
  • 🐞 Bug fixes:
    • The flash button on RTU UI screens is not shown anymore on devices without a flash light
    • Fixed not working live detection on some devices with non-standard camera frame resolution
  • ⚠️ Breaking changes:
    • io.scanbot.tiffwriter package path is now changed to io.scanbot.sdk.tiff
    • In TIFFWriter class binarize - option was replaced with binarizationFilter: ImageFilterType option which accepts only binarization filters
    • Changed package name io.scanbot.sdk.ui.view.camera.configuration.WorkflowScannerConfigurationParams to io.scanbot.sdk.ui.view.workflow.configuration.WorkflowScannerConfigurationParams
  • 🚙 Under the hood:
    • Updated the version of CWAC Camera library to 0.6.40.

Version 1.76.3 (07 Dec 2020)

  • 🐞 Bug fixes:
    • Fixed incorrect processing of the text part in DataMatrix barcodes with binary data
    • Fixed a rare case of the QR-codes processing which might lead to crash

Version 1.76.2 (04 Dec 2020)

  • 🐞 Bug fixes:
    • Fixed a bug with the size of generated PDF documents being too big
    • Fixed a crash in PageProcessor.rotate() method when there is no UNFILTERED_DOCUMENT image
    • Some redundant logs were cut out
  • 🚙 Under the hood:
    • Return to the usage of crl.android.pdfwriter:apwlibrary library for the PDF processing. Now PNG images saved into PDF as JPG with 100% compression

Version 1.76.1 (02 Dec 2020)

  • 🎉 New:
    • BarcodeScannerActivity and BatchBarcodeScannerActivity now support a possibility to set a timeout via setAutoCancelTimeout method in seconds. You will get CANCELLATION_REASON_TIMEOUT = true as an extra for RESULT_CANCELED in activity result in that case
  • 🚀 Improvements:
    • Better recognition of rotated and damaged PDF417 codes

Version 1.76.0 (23 Nov 2020)

  • 🚀 Improvements:
    • Huge improvements in detection of barcodes of PDF417 type
    • ScanbotBarcodeDetector ML blobs are packaged into the native library - that reduces the size of the installed application
  • ⚠️ Breaking changes:
    • Barcode Scanner:
      • The ML blobs are now available as a separated library io.scanbot:sdk-barcode-assets:$latestSdkVersion. Please make sure to add it to your dependencies to be able to use ScanbotBarcodeDetector.
      • The obsolete method ScanbotSDKInitializer#prepareBarcodeScannerBlobs(prepareBlobs: Boolean) was removed from the SDK API.
    • DC Scanner:
      • DC scanner uses barcode scanner under the hood, so it is also needed to add a dependency on io.scanbot:sdk-barcode-assets:$latestSdkVersion

Version 1.75.5 (19 Nov 2020)

  • 🎉 New:
    • New configuration parameter UseButtonsAllCaps for all the RTU UI screens which controls whether buttons should use ALL CAPS

Version 1.75.4 (18 Nov 2020)

  • 🐞 Bug fixes:
    • Fixed WorkflowScannerActivity not picking given colors and texts configuration

Version 1.75.3 (17 Nov 2020)

  • 🐞 Bug fixes:
    • Fixed a bug when RTU UI screens might lose their configuration or crash after going to a paused state
  • 🚙 Under the hood:
    • Dagger library was updated to 2.25.2

Version 1.75.2 (10 Nov 2020)

  • 🐞 Bug fixes:
    • Fixed a bug when BatchBarcodeScannerActivity was picking only the first barcode on each scanned frame
    • Fixed rendering of the PDF without OCR for PNG storage format
  • 🚙 Under the hood:
    • Removed Android PDF Writer library in order to use native Android SDK solution.

Version 1.75.1 (30 Oct 2020)

  • 🐞 Bug fixes:
    • Fixed MagnifierView drawing

Version 1.75.0 (29 Oct 2020)

  • 🎉 New:
    • Added FinderPictureCallback that automatically crops the visible FinderOverlayView zone and fix an orientation of the snapped image
  • 🚀 Improvements:
    • Changed PictureCallback implementation - it is an abstract class that implements BasePictureCallback interface
    • Improved recognition of barcodes when scanning matrix barcodes from a short distance
  • 🐞 Bug fixes:
    • Fix possible crash in SimpleOcrPerformer when no text data detected on the image
    • Added the "force fetch" mechanism for ScanbotBarcodeDetector ML blobs.
  • 🚙 Under the hood:
    • Update compile SDK of the library to 29

Version 1.74.2 (16 Oct 2020)

  • 🐞 Bug fixes:
    • Make IdCardTextFieldResult fields from IdCardScannerActivity public

Version 1.74.1 (15 Oct 2020)

  • 🚀 Improvements:
    • Improved memory usage of the Id Card scanner

Version 1.74.0 (6 Oct 2020)

  • 🎉 New:
    • Introduce TextDataScannerActivity RTU UI for the convenient use of our new Data Scanner SDK.
    • Optical pinch-to-zoom feature for the CameraView and the digital zoom feature (see ZoomFinderOverlayView)
    • Consumer proguard rules are now integrated into the library
    • New animations during the document detection and page snapping.
    • Snapped Pages in RTU DocumentScannerActivity and WorkflowScannerActivity are stored in the temp directory draft_snapping_pages in the internal (or custom if specified) SDK directory. If the scanning session is canceled all draft pages will be removed automatically. If the user will finish scanning successfully all snapped pages will be moved to the default pages directory automatically. If the application was terminated during the snapping session you can clean all draft pages with Cleaner#cleanUpAllDraftPagesData().
    • New parameter ocrResolutionLimit in the configuration for GenericTextRecgonizer which allows to increase the performance of the recognition.
    • New ImageFilterType.ML_BASED_BINARIZATION (for low-contrast documents with heavy shadows) and new ML-Based implementation of the ImageFilterType.BACKGROUND_CLEAN (a filter to remove a noise on the background). The usage of those filters requires setting the initialization property to ScanbotSDKInitializer.imageProcessorType(ImageProcessor.ML_BASED) and a new gradle dependency
    • IdCardScanner now has an orientation parameter for the scanBitmap method
    • IdCardScanner now has an acceptedSharpnessScore parameter to filter out blurry images. IdCardScannerFrameHandler now requires an id card scanner which has this value set to > 0. It will crash if the value is not set
    • IdCardScannerFrameHandler now has a shouldRecognize parameter to specify if it should recognize fields values or just return a status
    • New IdCardAutoSnappingController to automate the process of taking pictures of ID cards and passports
    • PolygonView size methods now work with Int values and are marked with @Px annotation
    • RTU UI NFC Passport scanner component now has setPassportPhotoSaveCallback method in configuration that accepts custom callback's Class to save passport photo in a secure way. See example
    • FormattedBarcodeDataMapper's DEFAULT implementation was removed. null is new default value for BatchBarcodeScannerActivity.newIntent method instead. See example
  • 🚀 Improvements:
    • Optimized performance of the image processing for simple operations (Rotation, Crop, Resize)
    • Faster saving of the snapped pages
    • Better recognition of ID cards with stickers with an updated address
    • Increased camera preview start speed
  • 🐞 Bug fixes:
    • MRZRecognitionResult parsed from a string now always has a confidence value 1.0

Version 1.73.2 (29 Sep 2020)

  • 🚀 Improvements:
    • Added a view with a hint for CroppingActivity component. See hintTitle and hintTitleColor properties in CroppingConfiguration

Version 1.73.1 (16 Sep 2020)

  • 🚀 Improvements:
    • Improved recognition of damaged DataMatrix barcodes

Version 1.73.0 (8 Sep 2020)

  • 🎉 New:
    • Massive performance and UX optimizations in the Document Scanner
    • Introduce Data Scanner SDK - a versatile OCR solution with validation rules for scanning short pieces of text, numbers and codes, like card or form fields. See [[Using Data Scanner SDK]]
    • Added an ability to scan NFC tags in passports using NfcPassportScannerActivity
    • Added delayAfterFocusCompleteMs property to camera to handle bad autofocus for some devices.
    • Added SAM callbacks support for FrameHandler callbacks
  • 🐞 Bug fixes:
    • Fixed the use of setAutoSnappingSensitivity which was ignored in previous versions
  • 🚙 Under the hood:
    • Upgraded some libs to latest versions: OpenCV 4.4.0, Kotlin Standard Library 1.4, added OpenJPEG 2.3.1

Version 1.72.3 (2 Sep 2020)

  • 🐞 Bug fixes:
    • MRZ: Fixed wrong check digit type in passports for the DocumentNumber field

Version 1.72.2 (19 Aug 2020)

  • 🎉 New:
    • Now it is possible to parse a string with MRZ data with MRZScanner and get MRZRecognitionResult from it
  • 🐞 Bug fixes:
    • Fixed overlapping buttons on CroppingActivity
    • Fixed wrongly displayed toast before the camera permission was granted on IdCardScannerActivity
    • Fixed hanging CameraView after pausing if the orientation was not locked

Version 1.72.1 (13 Aug 2020)

  • 🐞 Bug fixes:
    • Fixed a crash during the initialization process on some devices with Android 5.1 and less

Version 1.72.0 (11 Aug 2020)

  • 🎉 New:

    • New RTU UI screen IdCardScannerActivity for the convenient use of the IdCardScanner
  • 🚀 Improvements:

    • Optimized camera view initialization
  • 🐞 Bug fixes:

    • Fixed a crash in DocumentAutoSnappingController when there is a problem with a license
    • Fixed a crash for barcodes with non-string raw data
    • Binary raw data for barcodes now filled correctly in BarcodeItem.rawBytes

Version 1.71.0 (30 Jul 2020)

  • 🎉 New:

    • Introduce IdCardScanner that can scan ID Card of supported types, crop detected card and recognize fields data. See [[Using ID Card Scanner]]
    • setTopBarBackgroundColor() for RTU UI components works now with status bar too
    • New fields patientInfoFields and dcFormType are available in the result of the DC certificate scanning
  • 🐞 Bug fixes:

    • Removed outdated field EditPolygonImageView.DEFAULT_POLYGON

Version 1.70.4 (17 Jul 2020)

  • 🐞 Bug fixes:
    • Fixed animation bug in AdaptiveFinderOverlayView

Version 1.70.3 (15 Jul 2020)

  • 🚀 Improvements:

    • Improved barcode detection model
    • Improved handling of ink spread issues with Code128 barcodes
    • Improved barcode and QR code live detection especially for very dense codes
    • Refactor io.scanbot.sdk.entity.PageEntity for internal purposes. Use io.scanbot.sdk.persistence.Page instead for all classes available from Scanbot SDK.
    • Refactor auto-snapping components, renamed AutoSnappingController to DocumentAutoSnappingController
  • Removed classes:

    • Removed deprecated io.scanbot.sdk.ocr.process.TextRecognition from ScanbotSDK instance
    • Removed deprecated io.scanbot.sdk.docprocessing.DocumentProcessor from ScanbotSDK instance as deprecated
    • Removed deprecated io.scanbot.sdk.docprocessing.draft.DraftExtractor from ScanbotSDK instance as deprecated
    • Removed deprecated io.scanbot.sdk.persistence.PageFactory from ScanbotSDK instance as deprecated

Version 1.70.2 (8 Jul 2020)

  • 🎉 New:
    • Beta: Blurriness estimator BlurEstimator
    • Added new barcode format BarcodeFormat.MSI_PLESSEY

Version 1.70.1 (17 Jun 2020)

  • 🐞 Bug fixes:
    • Fixed nullability for return values for ChequeRecognizer, ContourDetector and MRZRecognizer
    • Fixed possible crash in EditPolygonView. If you are using this classical component, it is highly recommended to update from 1.70.0

Version 1.70.0 (12 Jun 2020)

  • 🎉 New:
    • Added ability to scan multiple barcodes in a row with the new RTU UI Component BatchBarcodeScannerActivity
    • Added AdaptiveFinderOverlayView, which automatically adjusts to the document format
    • Added ability to process jpeg- and nv21-encoded ByteArray for ImageProcessor
    • Added overloaded methods that accept single Operation for ImageProcessor
    • (BETA) New ScanbotCameraXView with CameraX-based implementation of ScanbotCameraView
    • If after update you get an error, that Invoke-customs are only supported starting with Android O (--min-api 26), then at the end of the android block, right after buildTypes, add the following snippet to your build.gradle file:
        compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
  • 🐞 Bug fixes:

    • Fixed mapping of rare language codes by RFC4646 tags like "zh-Hans", "zh-Hant", "az-Cyrl", etc.
  • 🚀 Improvements:

    • Updated ProGuard rules
    • FINDER_WIDTH and FINDER_HEIGHT params in configurations for BarcodeScannerActivity and MrzScannerActivity were replaced with FINDER_ASPECT_RATIO
    • If OCR blobs have been updated in assets, they will be fetched automatically on ScanbotSDKInitializer.initialize()
    • ImageProcessor.process() is now deprecated, use processBitmap() instead
    • Update to Language class to make ability of setup languages by iso1, iso3, and tesseract codes.
    • Now it is possible to detach AutoSnappingController after usuage to avoid memory leaks when reusing a ContourDetectorFrameHandler
  • ⚠️ Moved classes:

    • Moved document processing classes from net.doo.snap.process package to io.scanbot.sdk.docprocessing
    • Moved net.doo.snap.ui.MultiplePolygonsView to io.scanbot.sdk.ui.multipleobjects.MultiplePolygonsView
    • Moved OCR feature classes from net.doo.snap.process package to io.scanbot.sdk.ocr.process
    • Moved net.doo.snap.process.util.DocumentDraft to io.scanbot.sdk.entity.DocumentDraft
    • Moved net.doo.snap.ui.EditPolygonImageView to io.scanbot.sdk.ui.EditPolygonImageView
    • Moved net.doo.snap.ui.MagnifierView to io.scanbot.sdk.ui.MagnifierView
    • Moved net.doo.snap.ui.PolygonView to io.scanbot.sdk.ui.PolygonView
    • Moved net.doo.snap.camera.AutoSnappingController.AutoSnappingCallback to io.scanbot.camera.BaseAutoSnappingController.AutoSnappingCallback
  • ⚠️ Renamed packages:

    • Renamed net.doo.snap.lib.detector package to io.scanbot.sdk.core.contourdetector
    • Renamed net.doo.snap.payformscanner package to io.scanbot.sdk.payformscanner
    • Renamed io.scanbot.payformscanner.model to io.scanbot.sdk.core.payformscanner.model
    • Renamed net.doo.snap.mrzscanner package to io.scanbot.sdk.mrzscanner
    • Renamed net.doo.snap.dcscanner package to io.scanbot.sdk.dcscanner
    • Renamed net.doo.snap.chequescanner package to io.scanbot.sdk.chequescanner
    • Renamed net.doo.snap.intelligence package to io.scanbot.sdk.ocr.intelligence
    • Renamed net.doo.snap.entity to io.scanbot.sdk.entity
    • Renamed net.doo.snap.persistence tp io.scanbot.sdk.persistence
    • Renamed net.doo.snap.blob to io.scanbot.sdk.blob
    • Renamed net.doo.snap.util to io.scanbot.sdk.util
    • Renamed net.doo.snap.intelligence to io.scanbot.sdk.intelligence
    • Renamed net.doo.snap.camera to io.scanbot.sdk.camera
    • Renamed io.scanbot.barcodescanner.model.BarCodeScannerDocumentFormat to io.scanbot.barcodescanner.model.BarCodeFormattedResult
    • Renamed io.scanbot.sdk.entity.Page to io.scanbot.sdk.entity.PageEntity
  • ⚠️ Removed classes:

    • Removed deprecated classes net.doo.snap.ScanbotSDK and net.doo.snap.ScanbotSDKInitializer. Please use the equivalent classes from the package io.scanbot.sdk.*.
    • Removed deprecated methods in class io.scanbot.sdk.core.contourdetector.ContourDetector. Please use ImageProcessor instead. See [[Image processing and Filters]] for more details.

Version 1.61.1 (8 Jun 2020)

  • 🚀 Improvements:
    • The behavior of Detect/Reset buttons on the CroppingActivity was improved

Version 1.61.0 (28 Apr 2020)

  • 🎉 New:
    • Added RTU UI for Multiple Objects Detector
    • Size for Scanbot SDK Package 1 is significantly decreased
    • Added ML-based Contour Detector (new Gradle dependecy and a flag in 'ScanbotSDKInitializer')
    • Constructor ContourDetector() is now deprecated, use ScanbotSDK.contourDetector() instead
    • Using a DC Scanner now requires a call to ScanbotSDKInitializer.prepareDcBlobs(true)
    • Breaking changes for ContourDetectorFrameHandler.attach. Now it requires ContourDetector instance
    • Added ability to detect barcode on RGBA byte array
    • Added GSON library for JSON serialization/deserialization (instead of Moshi)
  • 🚀 Improvements:
    • Updated ProGuard rules
    • Upgraded Tesseract to the version 4.1
    • Optimized behaviour of the live contour detection. Nicer and faster.
    • Added flag to force autofocus before the capturing in AutoSnappingController
    • European Health Insurance Card (EHIC) Scanner: Automatic country detection and support for Austrian cards
    • European Health Insurance Card (EHIC) Scanner: Added validation types (HealthInsuranceCardRecognizer::ValidationType) for HealthInsuranceCardRecognizer
    • Improved performance of the disability certificate scanner (DCScanner)
    • Decreased size of the SDK Package 1

Version 1.60.0 (11 Mar 2020)

  • 🎉 New:
    • Added new LicenseErrorHandler mechanism for tracking license check events during Scanbot SDK api calls
    • Added ImageProcessor and Operation chains mechanism for the image processing
    • Added Tunes for Image Filters
    • Added shutterSoundEnabled configuration option for DocumentScannerActivity and WorkflowScannerActivity in RTU UI screens
    • Added Multiple Objects Detector feature
    • Added BusinessCardsImageProcessor
    • Added the filter prediction feature (FilterPredictor)
  • 🚀 Improvements:
    • Updated minimum Android API level to 21 (Android 5.0)
    • Updated list of third party dependencies (see Libraries.txt)
    • Updated ProGuard config
    • Better Error Handling for android.permission.CAMERA permission in RTU UI screens
    • Improved OCR by binarizing image before processing. To disable this, set OcrSettings.binarize = false during SDK initialization
    • ScanbotBarcodeDetector.decodeWithState() is now deprecated. Please, use ScanbotBarcodeDetector.detectFromNv21() instead. It is also possible to detect barcodes from bitmap and jpeg bytearray
    • Implemented new ML-based Scanbot Barcode Detector
    • Removed support of ScanbotBarcodeDetector.BarcodeDetectorType#GoogleVision and ScanbotBarcodeDetector.BarcodeDetectorType#ZXing detectors
  • 🐞 Bug fixes:
    • Fixed the live-detection for ChequeScanner

Version 1.56.3 (14 Jan 2020)

  • 🐞 Bug fixes:
    • Fixed the camera issue in RTU UI DocumentScannerActivity.

Version 1.56.2 (13 Dec 2019)

  • 🐞 Bug fixes:
    • Fixed the compatibility issue with kotlin-kapt.

Version 1.56.1 (12 Nov 2019)

  • 🐞 Bug fixes:
    • Re-enabled XML drawables support for the MagnifierView.

Version 1.56.0 (25 Oct 2019)

  • 🚀 Improvements:
    • MRZ Scanner: Added all checkdigits in MRZ result as additional fields - see MRZRecognitionResult.checkDigits.
  • 🐞 Bug fixes:
    • Fixed NPEs in the EditPolygonImageView when trying to use it without the MagnifierView.
    • Fixed crashes in the beta Barcode Scanner with parsing AAMVA data of PDF417 barcodes on US driver licenses.
    • Cleaned up SDK manifests (removed unused permissions as well as some obsolete and conflicting attributes).

Version 1.55.0 (17 Oct 2019)

  • 🎉 New:
    • Added new features in TIFFWriter:
      • Support for further TIFF compressions like CCITTFAX4, ADOBE_DEFLATE, etc. See the enum TIFFImageWriterCompressionOptions.
      • Ability to define DPI value in TIFF metadata.
  • 🚀 Improvements:
    • Improved API of the TIFFWriter class:
      • Deprecated some methods like writeBinarizedSinglePageTIFFFromFile, writeSinglePageTIFFFromFile, writeBinarizedMultiPageTIFFFromFileList, writeMultiPageTIFFFromFileList. Instead please use the new unified and simplified methods based on TIFF parameters TIFFImageWriterParameters - e.g. writeTIFFFromFiles(List<File> sourceFiles, File targetFile, TIFFImageWriterParameters parameters).
  • 👉 See our updated tiff-writer example app.

Version 1.54.0 (19 Aug 2019)

  • 🐞 Bug fixes:
    • Fixed OCR issues with some document images.
    • Fixed crashes with some image filters, like BACKGROUND_CLEAN, DEEP_BINARIZATION, LOW_LIGHT_BINARIZATION, etc. on ARM 32-bit devices (armeabi-v7).
    • Fixed finder view of the RTU UI EHIC Scanner (HealthInsuranceCardScannerActivity).
  • 🚙 Under the hood:
    • Upgraded to OpenCV 3.4.7

Version 1.53.0 (15 Aug 2019)

  • 🎉 New:
    • Added a new image filter LOW_LIGHT_BINARIZATION_2.
    • New recognizer for the European Health Insurance Cards (EHIC). Provides live detection and data extraction of all fields on the back of the card. Available as Classical SDK Components (HealthInsuranceCardScanner, HealthInsuranceCardScannerFrameHandler) as well as the Ready-To-Use UI Component (HealthInsuranceCardScannerActivity). See our updated example apps on GitHub for easy integration.
    • New QR- & Barcode Scanner as beta feature which provides:
      • better detection and extraction of 1D and 2D barcodes, especially Data Matrix and PDF 417 codes
      • support for multiple barcode detection
      • out-of-the-box parsers, like German Medical Plans (Medikationsplan) based on Data Matrix, ID Cards or US Driver Licenses (AAMVA format) both based on PDF 417.
    • Please note that this new QR- & Barcode Scanner component is a BETA feature and is still under active development and improvement. We will try to keep the API as stable as possible. However, please note that we can't guarantee that.
  • ⚠️ Breaking Changes:
    • The API of the BarcodeScanningResult class has changed a little. It now contains multiple results as a list of BarcodeItems.
  • 🐞 Bug fixes:
    • Fixed camera issues on OnePlus 7 Pro devices.

Version 1.52.0 (18 Jun 2019)

  • 🚀 Improvements:
    • Removed dependencies to the deprecated library net.doo:doo-datamining-tools-android.
  • 🐞 Bug fixes:
    • Removed permission READ_PHONE_STATE used in a sub library of the Scanbot SDK.

Version 1.51.0 (6 Jun 2019)

  • 🎉 New:
    • Added a new config property in the RTU UI Document Scanner Component: DocumentScannerConfiguration.setMaxNumberOfPages(number) - Maximum number of pages to scan.

Version 1.50.0 (6 May 2019)

  • 🎉 New:
    • Workflows - New RTU UI Scanning Components. See the [[Workflows]] section for more details.
    • New black & white image filter LOW_LIGHT_BINARIZATION - Binarization filter primarily intended to use on low-contrast documents with hard shadows.
    • Added new config properties for the RTU UI Document Scanner Component:
      • DocumentScannerConfiguration.setDocumentImageSizeLimit(height, width) - to limit the size of the document image.
      • DocumentScannerConfiguration.setShutterButtonHidden(boolean) - to hide the shutter button.
    • Added native libs (.so) for the x86_64 architecture.
    • Added text orientation recognizer. See the class TextOrientationRecognizer.
  • 🚀 Improvements:
    • OCR - Upgraded the OCR engine to Tesseract v4.00. Improved recognition speed and quality. Please also note the Breaking Changes below.
    • Improved performance of the images filter DEEP_BINARIZATION.
    • Added a new method detectAndRecognizeDCBitmap(..) in DisabilityCertificateRecognizer as an alternative detection approach to the recognizeDCBitmap(..) method.
  • ⚠️ Breaking Changes:
    • OCR Language Files - If you use the OCR feature of the Scanbot SDK or some recognizer components which are based on OCR, please upgrade the OCR language files to Tesseract 4.00. See the [[Optical Character Recognition]] section for more details.
    • OCR API - OCR results per page. See OcrResult.ocrPages.
  • 🚙 Under the hood:
    • Upgraded some libs to latest versions: OpenCV 3.4.5, LibPNG 1.6.36, LibTIFF 4.0.10, latest BoringSSL version.
  • 🐞 Bug fixes:
    • Fixed a bug with the Magnifier view in RTU Cropping UI (the Magnifier was stuck in a corner)
    • Various minor bug fixes and improvements.

Version 1.41.0 (31 Jan 2019)

  • 🎉 New:

    • Implemented new feature "Required Aspect Ratios" in Classical Components to restrict document detection to given aspect ratios
      • Check out the example app camera-view-aspect-ratio-finder
    • Implemented new image filter types IMAGE_FILTER_OTSU_BINARIZATION, IMAGE_FILTER_DEEP_BINARIZATION and IMAGE_FILTER_EDGE_HIGHLIGHT
  • 🚀 Improvements:

    • Improved recognition of pay cheques (ChequeScanner)
  • 🐞 Bug fixes:

    • Various minor bug fixes and improvements

Version 1.40.0 (5 Dec 2018)

  • 🎉 New:

    • Support for AndroidX libraries.
    • PDF Renderer (io.scanbot.sdk.process.PDFRenderer) - A new simple and convenient API for PDF rendering. Now with support for PDF page sizes (e.g. A4, US Letter, etc.) See the docs [[Creating PDF Documents]] for more details.
    • OCR Recognizer/Renderer (io.scanbot.sdk.ocr.OpticalCharacterRecognizer) - A new simple and convenient API for OCR and PDF+OCR rendering. See the docs [[Optical Character Recognition]] for more details.
  • ⚠️ Breaking changes:

    • AndroidX: Since AndroidX fully replaces the Android Support Libraries (com.android.support.*, etc), you will have to migrate your project to AndroidX. See "Migrating to AndroidX" for more details.
    • Internal Storage: The Scanbot SDK now uses the internal storage by default, which is more secure and do not require storage permission prompts. See the docs [[Storage]] for more details about the storage system. Please note: In case your app is using the storage for RTU UI Pages as permanent storage, make sure to implement a suitable migration (E.g. move the archived Page images from external storage folder to the new internal storage. Or alternatively overwrite the storage to the external folder again).
    • OCR blobs handling: A new mechanism and API to handle OCR language files as well as other blob files (MRZ blobs, etc) as assets. It replaces the obsolete mechanism based on fetch() methods (blobManager.fetch(..)). See the docs [[Optical Character Recognition]] for more details.
  • 🚀 Improvements:

Version 1.39.52.2 (22 Aug 2019)

  • A special release for our customers who are not yet able to switch their projects to AndroidX. This version provides the same features, improvements and fixes as version 1.52.0, but without AndroidX dependencies.
  • Fixed crashes with some image filters, like BACKGROUND_CLEAN, DEEP_BINARIZATION, LOW_LIGHT_BINARIZATION, etc. on ARM 32-bit devices (armeabi-v7).
  • ⚠️ Please note that this is the last release version which is based on the deprecated Android Support Libraries. We strongly recommend to migrate your project to AndroidX libs and upgrade to the latest version of the Scanbot SDK (see above) to benefit from the latest features, improvements, bug fixes, etc.

Version 1.39.52 (18 Jun 2019)

  • A special release for our customers who are not yet able to switch their projects to AndroidX. This version provides the same features, improvements and fixes as version 1.52.0, but without AndroidX dependencies.

Version 1.39.51 (6 Jun 2019)

  • A special release for our customers who are not yet able to switch their projects to AndroidX. This version provides the same features, improvements and fixes as version 1.51.0, but without AndroidX dependencies.

Version 1.39.50 (10 May 2019)

  • A special release for our customers who are not yet able to switch their projects to AndroidX. This version provides the same features, improvements and fixes as version 1.50.0, but without AndroidX dependencies.

Version 1.39.1 (15 Feb 2019)

  • A special release for our customers who are not yet able to switch their projects to AndroidX. This version provides the same features, improvements and fixes as version 1.41.0, but without AndroidX dependencies.

Version 1.39.0 (19 Dec 2018)

  • A special release for our customers who are not yet able to switch their projects to AndroidX. This version provides the same features, improvements and fixes as version 1.40.0, but without AndroidX dependencies.

Version 1.38.3 (19 Nov 2018)

  • 🐞 Bug fixes:
    • Small fixes in MRZScanner (improved detection on still images of some ID cards)

Version 1.38.2 (25 Oct 2018)

  • 🚀 Improvements:
    • Updated Google Mobile Vision lib version to 16.2.0

Version 1.38.1 (16 Oct 2018)

  • 🐞 Bug fixes:
    • Fixed a bug with freezing camera on Activity start
    • Fixed "CroppingActivity" layout for "ready-to-use-ui".

Version 1.38.0 (11 Oct 2018)

  • 🚀 Improvements:
    • Updated jpeg-turbo lib version to 1.5.3

Version 1.37.0 (27 Sep 2018)

  • 🎉 New:
    • Reset/Detect functionality in RTU Cropping UI
    • Added support for orientationLockMode in RTU Cropping UI
  • ⚠️ Breaking changes:
    • The config parameter pageCounterButtonTitle in RTU Document Scanner UI now requires a placeholder "%d" for the number of pages (e.g. pageCounterButtonTitle: "%d Page(s)")
  • 🐞 Bug fixes:
    • Fixed an issue with camera on "Xiaomi Redmi 5 Plus" devices with MIUI Chinese ROM (#72)

Version 1.36.0 (19 Sep 2018)

  • 🚀 Improvements:
    • MRZ Recognizer: improved detection on still images and parsing of some optional MRZ fields.
    • Check out the updated mrz-scanner and ready-to-use-ui-demo example apps.
  • ⚠️ Breaking changes:
    • All MRZ Scanner and Recognizer components (MRZScanner, MRZScannerActivity) now require an additional trained data blob file (MRZ cascade blob file mrz.xml), which is included in the SDK io.scanbot:sdk-package-3 and can be fetched via blobManager.fetch(blobFactory.mrzCascadeBlob(), false)!

Version 1.35.0 (10 Sep 2018)

  • 🎉 New:
    • Cheque Scanner - Real-time extraction of account & routing number
    • Added a new config parameter rotateButtonHidden for the RTU UI CroppingActivity
  • ⚠️ Breaking change: Added file format extension (.jpg or .png) for RTU UI Page images:
    • Affects the image files created by all RTU UI components, like DocumentScannerActivity, CroppingActivity, etc).
    • Please note that only the new created image files will contain extensions. The currently available image files in the temporary storage of the Scanbot SDK will not get file extensions and may become inaccessible. So please make sure to implement a suitable migration mechanism.
    • If you need backwards compatibility, you can disable the file format extensions via PageStorageSettings.addImageFileFormatExtension(false) on initialization of the SDK (new ScanbotSDKInitializer().usePageStorageSettings(new PageStorageSettings.Builder().addImageFileFormatExtension(false).build())...).
  • 🐞 Bug fixes:
    • MRZ Recognizer: fixed extraction of the field dateOfBirth from some French ID cards
  • 🚀 Improvements:
    • Updated Google Vision lib version to 15.0.2
    • Improvements and potential fixes in SDK license manager

Version 1.34.0 (28 Aug 2018)

  • Updated OpenCV version to 3.4.2
  • DC Scanner:
    • Improved recognition of low-constrast scans
    • ⚠️ Breaking change: The DC Scanner now uses eng.traineddata instead of deu.traineddata!

Version 1.33.3 (19 Jul 2018)

  • Removed allowBackup flag in AndroidManifest.xml in io.scanbot:sdk-package-ui library

Version 1.33.2 (17 Jul 2018)

  • Minor fixes and improvements in EditPolygonImageView

Version 1.33.1 (9 Jul 2018)

  • DC scanner: improved date recognition in cases where the date text overlaps the date field's grid
  • Minor fixes and improvements in EditPolygonView

Version 1.33.0 (2 Jul 2018)

  • Extended and improved the API to apply image filter on pages coming from the Ready-To-Use UI.
  • Added new image filters:
    • IMAGE_FILTER_BACKGROUND_CLEAN - Cleans up the background and tries to preserve photos within the image.
    • IMAGE_FILTER_BLACK_AND_WHITE - Black and white filter with background cleaning. Creates a grayscaled 8-bit image with mostly black or white pixels.
  • Minor bug fixes and improvements.

Version 1.31.3 (22 Jun 2018)

  • Several fixes in io.scanbot.sdk.ScanbotSDKInitializer and io.scanbot.sdk.ScanbotSDK

Version 1.31.2 (21 Jun 2018)

  • Several fixes in io.scanbot.sdk.ScanbotSDKInitializer and io.scanbot.sdk.ScanbotSDK

Version 1.31.1 (18 Jun 2018)

  • Added functionality to apply a real orientation lock in ScanbotCameraView. Use the new methods cameraView.lockToLandscape(boolean lockPicture) or cameraView.lockToPortrait(boolean lockPicture) to lock the UI as well as the taken picture to a desired orientation.
  • Fixed a bug with shutter sound in ScanbotCameraView on some Android devices (e.g. Xiaomi).
  • Fixed a bug with freezing camera on Huawei P20 Lite.

Version 1.31.0 (11 Jun 2018)

  • Added native libs for arm64-v8a.
  • Upgraded Dagger to version 2.16. It is recommended to upgrade the Dagger version in your App to 2.14.x or higher.

Version 1.30.0 (7 Jun 2018)

  • 🎉 New! Added Ready-To-Use UI Components: DocumentScannerActivity, CroppingActivity, MRZScannerActivity, BarcodeScannerActivity. A set of easy to integrate and customize high-level UI components for the most common tasks in Scanbot SDK.
    • Published a new package io.scanbot:sdk-package-ui containing the new Ready-To-Use UI Components.
    • Added a new demo project ready-to-use-ui containing example code for the new Ready-To-Use UI Components.
  • Added a beautiful, animated ShutterButton component (io.scanbot.sdk.ui.camera.ShutterButton) which can also be used with our Classical UI Components. Check out the camera-view example app.
  • Minor bug fixes and improvements.
  • Internal refactorings and improvements:
    • Deprecated some classes in the net.doo.snap Java package. Please use the equivalent classes from the new Java package io.scanbot.sdk. (e.g. net.doo.snap.ScanbotSDKInitializer => io.scanbot.sdk.ScanbotSDKInitializer, net.doo.snap.ScanbotSDK => io.scanbot.sdk.ScanbotSDK, etc.)

Version 1.28.7

  • Added setIgnoreBadAspectRatio(boolean ignoreBadAspectRatio) method for the AutoSnappingController.
  • Improved AutoSnappingController precision.

Version 1.28.6

  • Updated Google Mobile Vision library version to 12.0.1.
  • Optimized ScanbotCameraView performance.

Version 1.28.5

  • Added new attribute magnifierEnableBounding to MagnifierView, which allowing to enable/disable bounding of MagnifierView to the edge of screen.
  • Fixed issue with paddings on a MagnifierView

Version 1.28.4

  • DCScanner detection quality improvements.

Version 1.28.3

  • Scanbot SDK could be reinitialised with the new SDK license.
  • MagnifierView should not be the same size as EditPolygonImageView, but have to have the same aspect ratio.

Version 1.28.2

  • Removed deprecated attributes magnifierCrossSize, magnifierCrossStrokeWidth, magnifierStrokeWidth and editPolygonMagnifier from MagnifierView since they don't have any effects on the view. To customize the MagnifierView please use the attributes magnifierImageSrc, magnifierRadius and magnifierMargin.

Version 1.28.1

  • Exposed the method setImageRotation() in MagnifierView.

Version 1.28.0

  • Added confidence values for detected fields in MRZScanner.
  • Changed default barcode detector to ZXing barcode detector.
  • Added Finder feature for barcode detectors.

Version 1.27.3

  • Updated Google Mobile Vision library version to 12.0.0.

Version 1.27.2

  • Fixed native libraries loading.
  • Fixed DCScanner bugs.

Version 1.27.1

  • Added TIFFWriter feature to the Scanbot SDK package 1.
  • Added new "Pure Binarization" (ContourDetector.IMAGE_FILTER_PURE_BINARIZED) filter.
  • Added DCScanner recognition methods for Bitmaps and JPEG images.

Version 1.27.0

  • Added MRZScanner (Machine Readable Zone scanner) feature to the Scanbot SDK package 3.
  • Added Finder feature for MRZScanner.
  • Added DCScanner (Disability Certificate scanner) feature to the Scanbot SDK package 4.
  • Updated Tesseract version to 3.05.01.
  • Updated Android support library dependencies version to 27.0.2.

Version 1.26.7

  • Minor bug fixes and improvements

Version 1.26.6

  • Minor bug fixes

Version 1.26.5

  • Added cameraView.setPreviewMode(CameraPreviewMode mode) for adjusting camera preview frames in the camera layout.
  • Minor bug fixes

Version 1.26.4

  • Minor bug fixes

Version 1.26.2

  • Fixed bug when cameraView.setShutterSound(boolean enable) throws RuntimeException if the camera is already released.

Version 1.26.1

  • Updated transitive Scanbot SDK dependencies
  • Added cameraView.setShutterSound(boolean enable) and cameraView.setAutoFocusSound(boolean enable) methods in ScanbotCameraView
  • Optimized AutoSnappingController sensitivity and auto snapping timings

Version 1.26.0

  • Optimized Scanbot SDK license check - added Java exceptions with human readable messages
  • Added ScanbotSDK#isLicenseValid() method for the license validation
  • Fixed bug when the image preview edge zooming in MagnifierView was displayed incorrectly

Version 1.25.2

  • Added detected text paragraphs, lines and words blocks of the optical character recognitions result in OcrResult
  • Added PageFactory#buildPage(Bitmap image) and PageFactory#buildPage(byte[] image) methods for Page generation

Version 1.25.1

  • Added rotation methods for EditPolygonImageView

Version 1.25.0

  • Added Barcode/QR code scanner feature to the Scanbot SDK package 1

Version 1.24.0

  • Optimized transitive dependencies for Scanbot SDK library
  • Stop supporting armeabi architecture

Version 1.23.3

  • Fixed contour detection and autosnapping freeze on the autofocus tap

Version 1.23.2

  • Added detectionScore value in DetectedFrame class
  • Fixed 180 degree camera preview rotation

Version 1.23.0

  • Added Scanbot SDK package 3 with SEPA Pay Form scanner feature

Version 1.22.6

  • Fixed bug when ScanbotCameraView crashes with IllegalStateException after onPause

Version 1.22.5

  • Added methods for setting contour detector parameters in ContourDetectorFrameHandler

Version 1.22.4

  • Added methods for setting OCR and language classifier blobs paths in ScanbotSDKInitializer
  • Updated version of transitive dependencies

Version 1.22.3

  • Added continuous focus option for ScanbotCameraView

Version 1.22.2

  • Added method that provides internal OCR blobs directory in BlobManager in SDK-2

Version 1.22.1

  • Added methods for performing OCR with multiple predefined languages in TextRecognition in SDK-2

Version 1.22.0

  • Scanbot SDK was switched from RoboGuice DI to Dagger 2

Version 1.21.3

  • Fixed minor camera issues
  • Added setters for edge width and color in EditPolygonImageView

Version 1.21.2

  • Fixed dependencies in SDK packages

Version 1.21.1

  • Added camera preview and picture size setters in ScanbotCameraView
  • Added camera orientation locks in ScanbotCameraView

Version 1.19.0

  • Fixed issue when EditPolygonImageView with MagnifierView was working only as part of an Activity.
  • Removed DrawMagnifierListener.

Version 1.18.4

  • EditPolygonImageView was not working properly on Android Nougat.

Version 1.18.2

  • It was not possible to create PDFs without embedded text in SDK-2

Version 1.18.1

  • Fixed crash related to text recognition

Version 1.18.0

  • It's now possible to perform OCR without sandwiched PDF as part of result

Version 1.17.0

  • It's now possible to customize the Logger implementation used by the SDK.

Version 1.16.0

  • Added ContourDetector.processImageAndRelease - more memory efficient version of ContourDetector.processImageF.

Version 1.15.3

  • Fixed build issues of OCR example.

Version 1.15.1

  • Removed uses-feature android.hardware.camera. Camera is now optional.

Version 1.14.0

  • Removed unused dependencies. Removed permission declarations from Package 1. Users are now responsible for declaring permissions.

Version 1.13.1

  • Fixed bug when final image contained less than preview image from camera stream.

Version 1.13.0

  • Added ImageQualityOptimizer which allows you to optimize image size.

Version 1.12.2

  • Fixed bug when AutosnappingController stop operating after onPause.

Version 1.12.1

  • Color-document filter was disabled in ContourDetector. Now it works again.

Version 1.12.0

  • Added ScanbotSDKInitializer#withLogging() method which allows you to turn on logging for SDK (disabled by default).
  • Improved edge detection.
  • Added new filter to ContourDetector.

Version 1.11.0

  • Added ScanbotSDK.isLicenseActive() method.

Want to scan longer than one minute?

Generate a free trial license to test the Scanbot SDK thoroughly.

Get your free Trial License

What do you think of this documentation?


On this page

Scroll to top