Changelog for the Android Data Capture SDK
tip
For additional details about the API, please refer to our API reference documentation.
Version 7.1.2 (15 Oct 2025)
- 🎉 New:
- Barcode Scanner:
- Barcode configurations for 1D barcode types have a new field
minimumNumberOfRequiredFramesWithEqualRecognitionResultthat requires this number of frames on which the barcode has to be detected.
- Barcode configurations for 1D barcode types have a new field
- Barcode Scanner:
- 🚀 Improvements:
- Check Scanner:
- Improve handling of scanning result when
DetectionMode.DETECT_AND_CROPis set. - Now extracts the field after the account number on US checks. The name in the result is
CheckNumber. Note that this name is only based on common usage and not on any enforced standard. - Updated US check field documentation.
- Improve handling of scanning result when
- Check Scanner:
- 🐞 Bug fixes:
- Check Scanner:
- Fixed a bug in the implementation of the US check standard which lead to rejection of valid checks.
- Document Scanner:
- Fixed issue with empty
documentQualitywhenscreens.camera.acknowledgement.acknowledgementMode = AcknowledgementMode.BAD_QUALITY. - Fixed a bug where the usage guidance wouldn't show properly on screen startup.
- Fixed image size on review screen when screen is in horizontal layout.
- Fixed issue with empty
- General:
- Fixed 16 kb page size support for TFLite native library.
- Check Scanner:
- ⚠️ Breaking changes:
- Barcode Scanner:
- The field
minConfirmationsStandaloneEANinBarcodeAccumulationConfigurationwas moved and renamed to the fieldminimumNumberOfRequiredFramesWithEqualRecognitionResultExtensionlessinBarcodeFormatUpcEanConfiguration.
- The field
- Barcode Scanner:
Version 7.1.1 (27 Aug 2025)
- 🎉 New:
- General:
- Added setters for
UseCaseResolutionSizelimits for Preview and Analyzer use-cases inScanbotCameraXView. SeeScanbotCameraXView#setPreviewFrameResolutionLimit(limit: UseCaseResolutionSize)andScanbotCameraXView#setAnalyzerFrameResolutionLimit(limit: UseCaseResolutionSize).
- Added setters for
- General:
- 🚀 Improvements:
- Barcode Scanner:
- Improved handling of back action with multiple dialogs and bottom sheets.
- Document Scanner:
- Don't rotate images if they are initially detected as rotated by 180 degrees.
- General:
- Changed permission on mock camera to
android.permission.READ_EXTERNAL_STORAGE. - Optimized the selection of the resolution for the Preview use-case in
ScanbotCameraXView. Square resolution support is now an opt-in option. SeeIScanbotCameraView#setSquareFrameSizeEnabled(enabled: Boolean).
- Changed permission on mock camera to
- Barcode Scanner:
- 🐞 Bug fixes:
- MRZ Scanner:
- MRZ Scanner RTU UI v1: fixed kotlin compatibility issue.
- Document Scanner:
- Document Scanner RTU UI v2: fixed the screen behavior on multiple manual snaps in "single page" mode.
- Document Scanner RTU UI v2: fixed an issue where autofocus failed during the autosnap event.
- Barcode Scanner:
- Fixed an issue where the
extractedDocumentwas not being generated for GS1 HandlingDecodeStructureandDecodeFull. - Barcode Scanner RTU UI v2: fixed an issue where the back button navigation did not work.
- Fixed an issue where the
- Credit Card Scanner:
- Fixed an issue where an invalid status was not being returned when the frame accumulator confirmed an invalid field.
- General:
- Fixed an issue with the black preview in
ScanbotCameraXViewwhen the camera selected a square resolution on some Samsung and Xiaomi devices. - Prevent throwing exception when
/sys/devices/system/cpu/cpufreqdoesn't exist.
- Fixed an issue with the black preview in
- MRZ Scanner:
- 🚙 Under the hood:
- Added 3rd party PdfiumAndroid library.
Version 7.1.0 (24 Jul 2025)
- 🎉 New:
- Document Scanner:
- RTU-UI v2: Added parameter
DocumentScanningFlow.showReviewScreenOnStartthat allows showing the Review Screen immediately if the scanner is opened with an existent document ID. E.g. document edit mode. - RTU-UI v2: Added an option to automatically navigate to the Review Screen after each scan. Use
DocumentScanningFlow().screens.camera.openReviewAfterEachScan = true. - RTU-UI v2: Added an option to open either the first or the last page when the Review Screen is opened. Use
DocumentScanningFlow().screens.review.showLastPageWhenAdding = true.
- RTU-UI v2: Added parameter
- VIN Scanner:
- RTU-UI v2: Added a brand-new, redesigned VIN Scanner. Use
io.scanbot.sdk.ui_v2.vin.VinScannerActivity.
- RTU-UI v2: Added a brand-new, redesigned VIN Scanner. Use
- Document Data Extractor:
- RTU-UI v2: Added a brand-new, redesigned Document Data Extractor. Use
io.scanbot.sdk.ui_v2.documentdata.DocumentDataExtractorActivityto start the new scanner. - Introduced a Document Verification API including document semantics verification capabilities. Use the new
verifyDocument(documentParts: List<GenericDocument>)method. - Added support for multiple new document types:
- ID Cards from Brazil, Hong Kong, Macao, and China.
- Chinese Entry and Exit Permits.
- Returns the issuing series of German ID Cards as part of the returned document as the
Seriesfield. - Now supports the front side of many more EU driver's licenses.
- Partial support for parsing of German addresses. For respective ID cards, address parsing can be enabled via a new
DeAddressParserConfiguration. Parsed addresses are stored as child documents.
- RTU-UI v2: Added a brand-new, redesigned Document Data Extractor. Use
- Check Scanner:
- RTU-UI v2: Added a brand-new, redesigned Check Scanner. Use
io.scanbot.sdk.ui_v2.check.CheckScannerActivity.
- RTU-UI v2: Added a brand-new, redesigned Check Scanner. Use
- Barcode Scanner:
- Added
extendedQuadandextendedQuadNormalizedfields to theBarcodeItemclass to represent extended quads for 1D barcodes. BarcodeItemhas a new fieldrawBytesEncodingsthat contains the precise character encoding information ofrawBytes.BarcodeItemhas a new fieldstructuredAppendInfofor messages split across multiple barcodes.BarcodeScannerConfigurationhas a new fieldaccumulationConfigwhich allows the accumulation of barcodes over multiple frames in live mode.BarcodeItemhas a new fieldglobalIndexto identify a barcode across multiple frames.- RTU-UI v2: Added
selectedZoomFactor: Doublemetadata field inBarcodeScannerUiResultwith the value that the user used to scan the barcode.
- Added
- General:
- Added an analytics feature. You can now subscribe to events and redirect them to an external analytics system. Use
ScanbotSDK(context).analyticsManager. ImageRefin Java wrapper can now be efficiently created from ajava.io.InputStream.- Added
setImageCaptureEnabled(enabled: Boolean)method toScanbotCameraXViewto enable or disable image capture functionality. - Added more debug level logging to
ScanbotCameraXViewevents. - Added the possibility to inject an image to simulate a video stream and a captured image to any scanner's camera session for UI testing. See
ScanbotCameraViewConfigurationProvider. - Integrated Android Performance Hint Session. This significantly improves multithreading performance for different scanners on devices that support the Hint Session (e.g. Pixel 9 Pro and Samsung S24 Ultra). Use
ScanbotSDKInitializer.setPerformanceHintApiEnabled(false)to turn it off. - Added option for rtu-ui-v2
CameraConfigurationfor limit the detection fps inScanbotCameraXView. UseCameraConfiguration.fpsLimit = 4to limit the detection fps to less than 4 frames per second.
- Added an analytics feature. You can now subscribe to events and redirect them to an external analytics system. Use
- Document Scanner:
- 🚀 Improvements:
- Document Scanner:
- Increased performance for Document Scanner algorithms.
- Document Quality Analyzer:
- Speed improvements. Note: document quality scores may slightly change for the same input images when compared to the previous version of the DoQA.
- OCR Engine:
- Improved handling of special characters like umlauts when frame accumulation is used.
- MRZ Scanner:
- On US border crossing permits, the document number is now returned in the correct field.
- Dates in MRZ now also support
parsedDatacorrectly.
- Text Pattern Scanner:
- General speed improvements.
- Now supports XNNPACK for faster inference.
- Document Data Extractor:
- General speed improvements.
- Now detects whether a document is in focus and only starts the heavy recognition pipeline when image quality is suitable.
- Can now detect glare in images. Fields obstructed by glare will be returned with a validation status of
Obstructed. - Classification for documents with MRZ is more stable.
- Added normalization before date recognition.
- More consistent usage of common field types.
- Improved maiden name processing for DePassport and DeIdCard.
- Now also supports the new German ID card format issued starting 2024.
- Check Scanner:
- If image cropping is enabled and is successful, check recognition is performed on the crop instead of the original image.
- Credit Card Scanner:
- Support for credit cards with an expiry date above the card number.
- Support for credit cards with a name written on two lines.
- Medical Certificate Scanner:
- Date recognition in Medical Certificate forms is now based on the Scanbot OCR Engine and shows significant quality improvements.
- Barcode Scanner:
- All Barcode AR overlays are now based on
extendedQuads. - Boarding pass document parser now supports up to version 8 of the IATA-BCBP standard.
- vCard document parser was improved.
- All Barcode AR overlays are now based on
- Android: Improved
ScanbotCameraXViewpreview size selection strategy for the square screens. - Android: Improved the algorithm of high performance cores computation as the old one didn't work correctly on some devices (e.g. Pixel 9 Pro).
- Android: Integrated Android Performance Hint Session. This significantly improves multithreading performance for some scanners (e.g. Credit Card Scanner and Barcode Scanner) on devices that support the Hint Session (e.g. Pixel 9 Pro and Samsung S24 Ultra).
- Document Scanner:
- 🐞 Bug Fixes:
- Document Scanner:
- RTU-UI v2: Fixed an issue where the last scanned page's preview would not update on a specific layout configuration.
- RTU-UI v2: Fixed an issue where the start of the activity without initializing the Scanbot SDK was leading to an application crash.
- RTU-UI v2: Auto-rotation is now applied only if the document was found in the snapped image.
- RTU-UI v1: Fixed insets for the shutter button when the app is built with
target_sdk >= 35. - Cropping View: Fixed an issue with a broken layout after screen rotation without recreating the view.
- MRZ Scanner:
- Fixed an issue causing
nullto be returned as a confidence of empty fields.
- Fixed an issue causing
- Document Data Extractor:
- When
IssuerNumberis excluded on European health insurance cards, this no longer leads to theIssuerNamebeing incorrectly excluded. - MRZ fallback now also works when no accepted document types are selected.
- When
- Credit Card Scanner:
- Setting the confirmation method to
INTERPOLATEwhen scanning credit cards no longer results in unsuccessful recognitions if all data was extracted and verified. - Returns the correct scanning status if no fields are recognized.
- Setting the confirmation method to
- Barcode Scanner:
- The carrier identifier for MaxiCode mode 3 might be encoded by using different codewords. Now, all possible codewords are checked.
- vCard document parser now correctly processes the "FN" key as FormattedName.
- General:
- Fixed a rare division by zero crash in Credit Card Scanner, Document Data Extractor, and MRZ Scanner.
- RTU-UI v2: Fixed handling of the back actions for modal dialogs.
- Fixed a bug when
CameraTakePictureCallback.onTakePictureRequested()wasn't called properly at the corresponding event.
- Document Scanner:
- ⚠️ Breaking changes:
- Document Data Extractor:
- Removed the legacy RTU-UI Document Data Extractor. Use RTU-UI v2 instead.
- By default, only German documents are now enabled for scanning. Previously, all supported documents were enabled.
DeDriverLicenseFrontandDeDriverLicenseBackare renamed toEuropeanDriverLicenseFrontandEuropeanDriverLicenseBackrespectively.
- Barcode Scanner:
BarcodePolygonsView.BarcodeItemViewBinder.bindView(): Added an additional property withtextViewStyle.
- Removed
ScanbotSdkInitializer.useCameraXRtuUi().
- Document Data Extractor:
- 🚙 Under the hood:
- Added flatbuffers 2.0.6.
Version 7.0.3 (3 Jun 2025)
- 🎉 New:
- Added an option to limit the analyzer FPS processing for
DocumentScannerView,BarcodeScannerViewandBarcodeScanAndCountView. See more hereICameraViewConfiguration#setAnalyzerFpsLimit(fps: Float).
- Added an option to limit the analyzer FPS processing for
- 🚀 Improvements:
- Updated custom
ScanbotCameraXConfigProviderlogic for Kiron devices.
- Updated custom
Version 7.0.2 (27 May 2025)
- 🎉 New:
- PDF & TIFF Generation:
- Added source OCR Page as an optional input parameter to PDF Generator.
- PDF & TIFF Generation:
- 🚀 Improvements:
- PDF & TIFF Generation:
- PDF Generator with OCR layer now handles non-ASCII characters correctly.
- Barcode Scanner:
- GS1 Composite codes are now processed faster in Scan from Image mode.
- RTU-UI v2: Added ability to force close opened scanner screens by local intent.
- PDF & TIFF Generation:
- 🐞 Bug Fixes:
- Document Scanner:
- RTU-UI v2: Removed accessibility container for user guidance image.
- MRZ Scanner:
- Scanning from still images now correctly returns
MrzScannerResult.successas true.
- Scanning from still images now correctly returns
- Barcode Scanner:
- Fixed a crash that occurred when parsing an HIBC document.
- RTU-UI v2: Fixed a crash with barcode launcher initialization when the SDK was not yet initialized.
- Fixed the camera preview size selection algorithm for
ScanbotCameraXViewwith a square aspect ratio.
- Document Scanner:
- ⚠️ Breaking changes:
- MRZ Scanner:
- Removed outdated
detectMrz: Booleanflag fromscanInArea()methods.
- Removed outdated
- MRZ Scanner:
- 🚙 Under the hood:
- Updated Boost C++ version to 1.88.0.
- Updated spdlog version to 1.15.2.
- Updated xsimd version to 13.2.0.
- Updated xtensor version to 0.26.0-scanbot.
- Updated xtl version to 0.8.0.
Version 7.0.0 (22 Apr 2025)
- 🎉 New:
- Document Scanner RTU-UI v2: added an auto-rotate document option. The document will now be automatically rotated based on the text orientation detected by the Document Quality Analyzer. See more here:
CameraScreenConfiguration.autoRotateImages. ContourDetectorfeature was renamed toDocumentScannerand has a more advanced configuration and scanning API. See more here:DocumentScanner.- Advanced configuration of Barcode Scanner. See more here:
BarcodeScannerConfiguration. - Simplified configuration of Barcode Scanner. See more here:
BarcodeScannerConfiguration.create(barcodeFormats: List<BarcodeFormat>, extractedDocumentFormats: List<BarcodeDocumentFormat>, onlyAcceptDocuments: Boolean). - Lists of predefined subsets (1D, 2D, Postal, Pharma, etc.) of barcode formats. Old predefined sets of barcode formats were removed. See more here:
BarcodeFormats. - Added an ability to filter out all unaccepted barcode document formats in
BarcodeDocumentParser. See more here:BarcodeDocumentParser.parseDocument(input: String, acceptedFormats: List<BarcodeDocumentFormat> = BarcodeDocumentFormats.all). - Advanced configuration of Document Quality Analyzer. See more here:
DocumentQualityAnalyzerConfiguration. - Advanced configuration of Health Insurance Card Scanner. See more here:
EuropeanHealthInsuranceCardRecognizerConfiguration. - Advanced configuration of MRZ Scanner. See more here:
MrzScannerConfiguration. - Generic Document Recognizer feature was renamed to Document Data Extractor and has a more advanced configuration and scanning API. See more here:
DocumentDataExtractor. - Generic Text Recognizer feature was renamed to Text Pattern Scanner and has a more advanced configuration and scanning API. See more here:
TextPatternScanner. - Introduced a new Text Patter Scanner RTU-UI v2 component. See more here:
TextPatternScannerActivity. - Introduced a new MRZ Scanner RTU-UI v2 component. See more here:
MrzScannerActivity. - Medical Certificate Recognizer feature was renamed to Medical Certificate Scanner and has a more advanced configuration and scanning API. See more here:
MedicalCertificateScanner. - Images are now represented as references by using the
ImageReffeature. - Image Processor can now be created with an
ImageRefobject. See more here:ImageProcessor(imageRef: ImageRef). - Check Recognizer feature was renamed to Check Scanner and has a more advanced configuration and scanning API. See more here:
CheckScanner. - Introduced a new feature: Credit Card Scanner, capable of detecting credit cards and extracting data from them. See more here:
CreditCardScanner. - Introduced a new Credit Card Scanner RTU-UI v2 component. See more here:
CreditCardScannerActivity. - Added an option to limit input image size for Document Quality Estimator. If it is bigger then the image will be resized.
- Added a new
BarcodeScannerEngineModecalledNEXT_GEN_FAR_DISTANCEwhich is optimized for scanning from far distances. - Introduced a new engine mode
NEXT_GEN_LOW_POWER_FAR_DISTANCEthat is optimized for scanning barcodes from far distances on low-power devices. - Added support for new barcode formats that are used in the pharmaceutical industry:
PHARMA_CODE,PHARMA_CODE_TWO_TRACK,PZN_8(Pharmazentralnummer) andPZN_7. - Added support for a new barcode document format
BarcodeDocumentFormat.HIBC. BarcodeItemhas a newsizeScorefield with a value between 0 and 1 that represents the relative size of the barcode compared to the size of the input image. All barcode configurations have a new floatminimumSizeScorethat is set to 0 by default. All barcodes withsizeScore < minimumSizeScoreare ignored. Note thatminimumSizeScorecan be configured differently for each barcode format.- Added a flag
addAdditionalQuietZonetoBarcodeFormatConfigurationBase. If this flag is enabled, we process the barcode scanning with an artificial quiet zone that we add to the input image. This flag should be used to scan sharp crops of a barcode. By default the flagaddAdditionalQuietZoneis disabled. - Expanded generic document field validation status. A field can now also be
INFERRED- means that the value was not OCR'd but was inferred from the document type or other fields, orIGNORED- means that the field is required by the schema, but was disabled in the recognizer. - Generic document fields can now have
parsedDataattributes. See more here:FieldParsedData. - Generic document dates are parsed into a
YYYY-MM-DDdate format according to ISO 8601. - Generic document countries are parsed as in the formats
ISO_COUNTRY_NAME,ISO_COUNTRY_ALPHA_2,ISO_COUNTRY_ALPHA_3andISO_COUNTRY_NUMERICaccording to ISO 3166-1. - Generic document gender fields are parsed as "Male" or "Female" if applicable.
- Added support for German driver qualification card.
- Document Data Extractor now extracts the MRZ on unknown documents.
- The
ResultAccumulationConfigurationnow supports a newconfirmationMethodfield. - Document Scanner: added
OK_TOO_DARKdetection status. - Document Quality Analyzer: can now also return the orientation of the document in steps of 90 degrees. Enabled by setting
DocumentQualityAnalyzerConfiguration.detectOrientationto true. - Document Data Extractor, Medical Certificate Scanner and Check Scanner now return document detection results.
- Check Scanner: added possibility of returning cropped document.
- Optionally return
QualityHeatmapas a part of theDocumentQualityAnalyzerResult. - Added support for non-ICAO conformant machine readable zones on US border crossing cards.
- Added properties to
MrzScannerConfigurationandCreditCardScannerConfigurationthat allow to set if crops should be returned. - Added a flag
keepScreenOnto configuration for all RTU-UI v2 scanner screens. Iftrue, as long as this window is visible, the device's screen will stay awake. - Introduced a boolean
strictModefor certain barcode configurators. If this mode is disabled, it should allow for a higher detection rate in difficult scenarios, but with the possibility that false positive results may occur. Currently, we supportstrictModeforQR_CODE,MICRO_QR_CODE,RMQR_CODE,PDF_417,MICRO_PDF417, andGS1_COMPOSITE. - RTU-UI v2: added support of
minimumSizeScoreproperty for Barcode Scanner configuration.
- Document Scanner RTU-UI v2: added an auto-rotate document option. The document will now be automatically rotated based on the text orientation detected by the Document Quality Analyzer. See more here:
- 🚀 Improvements:
- Added the option to ignore barcodes that do not decode to one of the accepted document formats for
BarcodeScannerConfigurationin RTU-UI v2 screen. See more here:BarcodeScannerConfiguration.onlyAcceptDocuments. - Significant speed improvements in live mode on very large input resolutions.
- Improved the false positive rate for
ITFbarcode format. - Improved quiet zone checks for the barcode formats
ITF,CODE_11,MSI_PLESSEY,IATA_2_OF_5,INDUSTRIAL_2_OF_5andCODE_25. - We additionally allow for checking
maximumTextLengthfor the barcode formatsCode11,Code39,Code93,Code128andCodabar. - Added the option to extract VIN data from barcodes for VIN Scanner RTU UI v1 screen. See more here:
VinScannerConfiguration.setExtractVINFromBarcode(enabled: Boolean) - Quantized TextLineDetection model. Now it works faster with the same quality.
- Image Processor: new preset -
BinarizationFilterPreset.PRESET_5, an improved version of PRESET_4, that also works well on documents with barcodes. - Higher accuracy for document classification.
- Document Scanner: exposed
acceptedAspectRatioScoreandaspectRatiosin the scanner configuration. - Document Scanner: added
OK_ORIENTATION_MISMATCHstatus - returned when screen and document orientations don't match. - Document Scanner:
OK_ORIENTATION_MISMATCHcan be disabled by settingignoreOrientationMismatchto true. - Validation of VINs implements full ISO 3779 standard reducing false positives.
- Digits are no longer recognized as part of given names or surnames in the Document Data Extractor.
- Guarantee the same document quality for 90 degree rotated images.
- Passports issued in Costa Rica before 2022 include both a Sequence Number and an ID Number. When used internationally, the ID Number functions as the equivalent of what other countries refer to as the Passport Number or Document Number. However, the pre-2022 Costa Rican passport does not encode the ID Number in the Document Number area of the MRZ, leading to confusion during international travel. To address this, we now return the ID Number as the
DocumentNumberin the MRZ field and the Sequence Number as thePersonalNumberfield. - Document Scanner RTU-UI v2: improved expandability of bad image quality hint on Acknowledgement Screen from 2 to 5 lines.
- Barcode Scanner: By default, Code 93 now includes check digits in the result. To disable this and restore the previous behavior, set
stripCheckDigits = true.
- Added the option to ignore barcodes that do not decode to one of the accepted document formats for
- 🐞 Bug fixes:
- Fixed screen insets for Android API 35 with forced edge-to-edge mode by opting it out for RTU-UI v1 screens.
- RTU-UI v2: fixed the modal dialog to no longer appear below the status bar.
- Clamped parametric filters radius to 127 to prevent asserts in openCV.
- Fixed an overflow when decoding a
MICRO_QR_CODEbarcode format with wrong bits in numeric mode. - Fixed
minimumTextLengthforITFbarcode format. Before, we used it to check the number of symbols instead of the true text length. - Fixed returned results for all types of
UpcEanExtensionBehavior. - Fixed checksum for
Code39barcode format. - For
Code11barcode format with exactly 10 data digits, enabled checksum and enabled flagstripCheckDigits, we now strip both check digits. - Fixed sorting of quad points for four-state/postal barcode types.
- Fixed quad when flag
BarcodeFormatConfigurationBase.addAdditionalQuietZoneis enabled. - RTU-UI v2: fixed issue where
FindAndPickScanningMode().sheetContent.barcodeItemImageVisiblewas not properly applied. - RTU-UI v2: fixed accessibility content for action buttons.
- Fixed Medical Certificate Scanner user guidance default background (was absent before).
- Fixed Check Scanner user guidance default background (was absent before).
- Fixed Document Scanner user guidance default background (was green, should be kept the same).
- Fixed Finder Document Scanner user guidance default background (was green, should be kept the same).
- Fixed Document Scanner fill polygon color (should not be filled by default - was yellow before).
- Fixed Finder Document Scanner fill polygon color (should not be filled by default - was yellow before).
- Fixed Document Scanner shutter button (should not have yellow color by default).
- Document Scanner RTU-UI v2: fixed bug where
screens.camera.captureFeedback.snapFeedbackMode = PageSnapFeedbackNone()resulted in not auto switching to review screen after reaching max pages limit (if set). - Cropping Screen RTU-UI v2: screen returned result instead of cancel if nothing was changed on the screen.
- PDF Generator properly handles no-schema URIs as an input.
- Fixed a bug in Document Data Extractor while determining validation status when fields are excluded.
- Fixed point sorting in Document Scanner.
- Resolved an issue with high peak memory consumption in Document Data Extractor.
- On some German ID cards, the
MaidenNameandSurnameresults were incorrectly merged in the result. - Document Quality Analyzer: fixed crash when maxImageSize was 0.
- Fixed a crash and simplified the logic in person-number extraction. Previously the alphabetical substrings were extracted from whitelisted texts, without considering the current length of the already filtered texts.
- Fixed incorrect handling of field validation for Driver License expiry date.
- Fixed incorrect output of Text Pattern Scanner for unicode symbols.
- Fixed a crash when MRZ fallback was enabled and no text on document was detected.
- Document Quality Analyzer: fixed patch size which is used when
minFraction= 1. - TIFF Generator: fixed JPEG/Deflate support.
- TIFF Generator properly handles URIs with schema as an input.
- Cropping Screen RTU-UI v2: fixed issue with status bar light/dark mode not applied correctly.
- Fixed
content://type uri handling forPdfGenerator,TiffGeneratorandOcrEngineby adding temporary local caching mechanism for the input uris. File copies would be deleted after processing. - Fixed a crash when adding/removing frameHandlers in
ScanbotCameraXin a concurrency race condition. - Fixed the resolution strategy for the square preview for
ScanbotCameraXView.
- ⚠️ Breaking Changes:
- Document Quality Analyzer: to use this feature, you now also need the following dependency:
io.scanbot:sdk-docqualityanalyzer-assets:X.X.X. Note that it’s also required for the Ready-to-Use UI Document Scanner feature. - RTU-UI v1: ll screens now expect
RGBAvalues for HEX string when parsing configuration from JSON. - RTU-UI v1: refactored the screen result structure for both single and batch scanning operations. See more here:
BarcodeScannerResult. - RTU-UI v1: removed the ability to set Barcode Image Generation type in the screen configuration.
- RTU-UI v2: changed the result API of the screen. See more here:
BarcodeScannerUiResult. - Removed old configuration API of Barcode Scanner. Please use the new configuration mechanisms instead.
- All Barcode Formats are represented by
io.scanbot.sdk.barcode.BarcodeFormatenum. All other barcode format enums were removed. - Replaced class
io.scanbot.barcodescanner.model.BarcodeTypewithio.scanbot.sdk.barcode.BarcodeFormat. - Renamed enum
MSIPlesseyChecksumAlgorithmtoMsiPlesseyChecksumAlgorithm. - Barcode Document Format is represented by
io.scanbot.sdk.barcode.BarcodeDocumentFormatenum. - Removed class
io.scanbot.sdk.ui_v2.common.mappers.AspectRatio, please useio.scanbot.sdk.common.AspectRatio. - RTU-UI v2: refactored
BarcodesExtensionFilterenum and synchronized withUpcEanExtensionBehaviorenum from Barcode Scanner Classic component API. - Replaced
acceptedDocumentFormatslist parameter inBarcodeScannerConfigurationwithextractedDocumentFormatslist of document formats andonlyAcceptDocumentsflag. - Changed Check Scanner result API. See more here:
CheckScanningResult. - Removed old configuration API of Check Scanner. Please use the new configuration mechanisms instead. See more here:
CheckScanner.setConfiguration(configuration: CheckScannerConfiguration). - Removed old configuration API of Document Quality Analyzer. Please use the new configuration mechanisms instead. See more here:
DocumentQualityAnalyzer.setConfiguration(configuration: DocumentQualityAnalyzerConfiguration). - Removed
NO_DOCUMENTstatus from theDocumentQualityenum in Document Quality Analyzer results. - Removed old configuration API of Health Insurance Card Scanner feature. Please use the new configuration mechanisms instead. See more here:
HealthInsuranceCardScanner.setConfiguration(configuration: EuropeanHealthInsuranceCardRecognizerConfiguration). - Changed Health Insurance Card Scanner result API. See more here:
EuropeanHealthInsuranceCardRecognitionResult. - Removed old configuration API of MRZ Scanner. Please use the new configuration mechanisms instead. See more here:
MrzScanner.setConfiguration(configuration: MrzScannerConfiguration). - Removed old configuration API of Document Data Extractor. Please use the new configuration mechanisms instead. See more here:
DocumentDataExtractor.setConfiguration(configuration: DocumentDataExtractorConfiguration). - Removed old configuration API of Text Pattern Scanner. Please use the new configuration mechanisms instead. See more here:
TextPatternScanner.setConfiguration(configuration: TextPatternScannerConfiguration). - Changed the interfaces of Text Pattern Validation and Clean callbacks. Please use new Custom Content Validator instead. See more here:
ContentValidator. - Changed Text Pattern Scanner result API. See more here:
TextPatternScannerResult. - Renamed
sdk-generictext-assetsassets library tosdk-textpattern-assets. - Removed
shouldRecognizeproperty from theextract*()methods in Document Data Extractor. Please use the newDocumentDataExtractionModeconfiguration instead. See more here:DocumentDataExtractionMode. - Renamed
sdk-genericdocument-assetsassets library tosdk-documentdata-assets. - Renamed class
MRZScannertoMrzScanner. - Changed MRZ Scanner result API. See more here:
MrzScannerResult. - Changed Medical Certificate Scanner result API. See more here:
MedicalCertificateScanningResult. - Removed old configuration API of Medical Certificate Scanner. Please use the new configuration mechanisms instead. See more here:
MedicalCertificateScanningParameters. - Removed old configuration API of VIN Scanner. Please use the new configuration mechanisms instead. See more here:
VinScanner.setConfiguration(configuration: VinScannerConfiguration). - Changed VIN Scanner result API. See more here:
VinScannerResult. - Changed Document Scanner result API. See more here:
DocumentDetectionResult. - Document Scanner was moved to the
io.scanbot.sdk.documentpackage. - Changed the engine mode API representation for Document Scanner. The engine modes now are respectively named
LEGACYforEDGE_BASEDandMLforML_BASED. See more here:DocumentScannerEngineMode. - Removed
context: Contextproperty fromDocumentScannerActivity.ResultContractconstructor. - Document Scanner RTU-UI v2:
screens.camera.cameraConfiguration.ignoreBadAspectRatioparameter renamed toignoreOrientationMistmatch. - Document Scanner RTU-UI v2: changed
acceptedSizeScoreandacceptedAngleScorerange of values from0..1to0..100. - Document Scanner RTU-UI v2: moved parameters related to the detection process (
requiredAspectRatios,ignoreOrientationMistmatch,acceptedBrightnessThreshold,acceptedSizeScore,acceptedAngleScoreandacceptedAspectRatioScore) fromscreens.camera.cameraConfigurationtoscreens.camera.scannerParameters. - Removed Result Repositories mechanism for most RTU UI screens. All results are returned directly from the scanner or RTU UI screens.
- Changes old configuration API of PDF Generator. Please use the new configuration mechanisms instead. See more here:
PdfConfiguration. - Moved all logic related to PDF with OCR from OCR Engine to PDF Generator. See more here:
PdfGenerator.generateWithOcr*() - For all classic components (scanners) all methods like
scan[recognize]WithFinderOverlay()are renamed toscan[recognize]InArea(). - For all classic components (scanners) all methods like
scan[recognize]From[input_type]()are renamed toscan[recognize]From[input_type](). - For Document Data Extractor classic component all
recognizemethods are renamed toextractFrom[input_type](). - For Document Quality Analyzer all methods
analyzeIn*()are renamed toanalyzeOn*(). - Removed class
ImageProcessor.ImageRotation. Please use the newio.scanbot.sdk.core.ImageRotationclass. - Removed class
io.scanbot.sdk.ui_v2.common.mappers.AspectRatio, please useio.scanbot.common.AspectRatio. - All detected lines in Document Scanner results are represented by new
LineSegmentFloatclass. - TIFF Writer feature was renamed to TIFF Generator and has an updated generation API. See more here:
TiffGenerator. - For TIFF Generator all methods
write*()are renamed togenerateFrom*(). - Removed deprecated License Plate Scanner feature.
- Removed deprecated Text Orientation Scanner. Use
DocumentQualityAnalyzerinstead. - Default MRZ Scanner result handling mode is
Reject. Result only gets counted assuccessif every field isValidorConfirmed. - VIN Scanner RTU-UI v1: changed
TextPatternScannerResultresult type toVinScannerResulttype.
- Document Quality Analyzer: to use this feature, you now also need the following dependency:
- ⚠️ Deprecations:
- Marked Document Scanner, Finder Document Scanner, MRZ Scanner and Text Pattern Scanner RTU UI v1 screens as deprecated. Please use the corresponding RTU UI v2 screens.
- 🚙 Under the hood:
- Updated Compile Sdk to 35
- Android Jetpack Compose updated to 1.7.8
- Upgraded nlohmann::json to 3.11.3
- Upgraded xsimd to 13.0
- Upgraded xtl to 0.7.7
- Upgraded xtensor to 0.25
- Upgraded yaml-cpp to 0.8
- Upgrade OpenCV to 4.10
Version 6.2.1 (18 Feb 2025)
- 🐞 Bug fixes:
- Fixed potential issue with
BarcodePolygonViewduringonDestroywhen the AR overlay is displayed. - Fixed nested views of
ScanbotCameraXViewwhen readjusting the parent view size. - Cropping RTU-UI v2: Now returns successfully when the crop has not been adjusted and the apply button is pressed.
- Document Scanner RTU-UI v2: The horizontal layout camera bar now has a fixed width.
- Fixed potential issue with
Version 6.2.0 (30 Jan 2025)
- 🎉 New:
- Add the ability to limit the detection fps in
ScanbotCameraX. - Implemented AES GCM encryption. Use
AesGcmEncryptedFileIoProcessorwhen setting encryption during SDK initialization. - Document Scanner RTU-UI v2:
- Added a configurable title for the acknowledge screen. Disabled by default.
- Added an option to suppress auto-cropping on manual snaps. Use
screens.camera.cameraConfiguration.autoCropOnManualSnap. - Added support for magnetic line color. Use
screens.cropping.croppingPolygonMagneticLineColor.
- Add the ability to limit the detection fps in
- 🚀 Improvements:
- Document Scanner RTU-UI v2: Added basic support for landscape mode.
- Document Scanner RTU-UI v2: The Review Screen zoom button now allows its text to be hidden.
- Improved
ScanbotCameraXresolution selection strategies for scanning and preview cases. - Added new encryption
AesGsmto encrypt separate files with standalone keys. UseAesGcmEncryptedFileIoProcessorasFileIoProcessorinterface.
- 🚙 Under the hood:
- Updated androidx camerax 1.4.1 with 16kb page support.
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()anddeleteDocument(uuid)function todocumentApi.
- Added
- 🚀 Improvements:
- After calling
documentApi.createDocument(),saveSync()is now also called so that the new empty document will be created in the file storage.
- After calling
- 🐞 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
NoFeedbackModeto disable the animation when a page is captured and the document quality check is disabled. - Added a new property
hardwareButtonsEnabledthat enables snapping from the hardware volume buttons and the new hardware camera control button (enabled by default).
- Added
- Added option
MultipleScanningMode.allowEmptySubmissionto 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.
- Document detector:
- 🐞 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
BarcodeScannerActivityRTU UI v2.0, where the mapped image wasn't shown on the AR Overlay until the same barcode appeared in the list below.
- RTU UI v2.0 Document Scanner:
- ⚠️ Breaking changes:
- Changed the type of the
rotationfield in thePageclass to theio.scanbot.sdk.core.ImageProcessorenum.
- Changed the type of the
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 takedocument: Documentas an input parameter inPDFRendererinterface. - Added
render()methods which take optionaloutputFile: Fileas an input parameter inPDFRendererinterface. - Added
recognizeTextWithPdfFrom*()methods which takedocument: Documentas an input parameter inOpticalCharacterRecognizerinterface. - Added
recognizeTextWithPdfFrom*()methods which take optionaloutputFile: Fileas an input parameter inOpticalCharacterRecognizerinterface. - Added
writeTIFF()methods which takedocument: Documentas an input parameter inTIFFWriter. - Added
writeTIFF()methods which take optionaloutputFile: Fileas an input parameter inTIFFWriter. - Added new property
addAdditionalQuietZonetoBarcodeScannerAdditionalConfig. - 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
FindAndPickScanningModein 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.
- Improved
- 🐞 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.legacypackage. - Renamed methods to
render()inPDFRendererinterface. - Changed
render()method signature inPDFRendererinterface. Now it takes an array of Uris instead of the List of Uris. - Renamed
writeTIFFFromImages()andwriteTIFFFromFiles()methods towriteTIFF()inTIFFWriter. - Renamed
writeTIFFFromImages(): ByteArraymethods totiffByteArray(): ByteArrayinTIFFWriter. - Document scanner asset dependency
io.scanbot:sdk-ml-docdetectorwas renamed toio.scanbot:sdk-ml-docdetector-assets. - Renamed
io.scanbot.sdk.process.model.DocumentQualityResulttoio.scanbot.sdk.process.model.DocumentQuality - Renamed
io.scanbot.sdk.core.contourdetector.DetectionStatustoio.scanbot.sdk.core.contourdetector.DocumentDetectionStatus - The usage of asset dependency
io.scanbot:sdk-mc-assetsand also the usage of OCR fromio.scanbot:sdk-package-2now require an additional dependency to be specified:implementation("io.scanbot:sdk-common-ocr-assets:$scanbotSdkVersion").
- All classes from the old Page API were marked as deprecated and moved to
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,GenericDocumentRecognizerFrameHandlerandGenericDocumentRecognizerActivityRTU UI screen. HealthInsuranceCardScanner,HealthInsuranceCardScannerFrameHandler, andHealthInsuranceCardScannerActivitywere deprecated. Please useGenericDocumentRecognizer,GenericDocumentRecognizerFrameHandlerandGenericDocumentRecognizerActivityinstead.- Added
ResultAccumulationConfigfor the generic document recognition API. - Added support for new barcode types Maxicode, rMQR code, Code 11 and Code 32.
- Added properties
australiaPostCustomerFormat,useIATA2OF5ChecksumanduseCode11ChecksumtoBarcodeAdditionalParameters,BarcodeScannerAdditionalConfigurationfor RTU UI screen andBarcodeRecognizerConfigurationfor RTU UI v2 screen. - Added
AustraliaPostCustomerFormatenum to represent formats of the barcode data for the Australian Post customer barcode. - Added
resetPolygonState()inBarcodePolygonViewto properly clean its state when disabling it after scanning.
- Added support for German health insurance cards (front and back) and European health insurance cards (back only) to
- 🚀 Improvements:
- Changed
resampleflag toresamplingMethod: io.scanbot.pdf.model.ResamplingMethodinPdfConfigclass. - 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. ScanbotCameraXViewnow logs more information throughout its lifecycle (use filter byScanbotCameraXViewtag). 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.
- Changed
- 🐞 Bug fixes:
- Removed redundant dependency on
io.scanbot:sdk-licenseplate-assetsinsideio.scanbot:sdk-generictext-assets. - Fixed R8 obfuscation config for SDK logging classes.
- Fixed a bug in
ScanbotColorwhere settingisArgbto true, resulted in a wrong color.
- Removed redundant dependency on
- ⚠️ Breaking Changes:
- Removed ML assets library for Document Quality Analyzer -
io.scanbot:sdk-docqualityanalyzer-assets:X.X.X. Please useio.scanbot:sdk-multitasktext-assets:X.X.Xinstead. - Removed enum
BarcodeDensity. - Removed property
codeDensityfromBarcodeAdditionalParameters. - Removed enum values
VALIDATEandDECODEfromGs1Handlingand replaced them byDECODE_STRUCTURE,DECODE_FULL,VALIDATE_STRUCTUREandVALIDATE_FULL. - Removed property
sharpnessAcceptanceFactorfromGenericDocumentRecognizerandGenericDocumentRecognizerConfigurationfor RTU UI screen. - Removed redundant fields
barcodeImagePathandbarcodePreviewFramePathfromResultclass in Barcode Scanner RTU UI v2. - Changed
barcodesRegexFilterconfig behavior for Barcode Scanner RTU UI v2. Barcodes are accepted if the barcode data contains the part that matches the regex. - Replaced
standardandvalidationStatusfields withvalidationErrorsin theGS1.Elementclass.
- Removed ML assets library for Document Quality Analyzer -
- 🚙 Under the hood:
- Updated 3rd-party libraries:
- added
gs1-syntax-dictionarylib
- added
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
ScanbotColorwhere settingisArgbto true, resulted in a wrong color.
- Fixes a bug in
Version 5.1.1 (28 May 2024)
- 🎉 New:
- Added new property
barcodesRegexFiltertoBarcodeRecognizerConfigurationfor 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
BarcodeScannerViewcomposable. - Added new setter
setLiveDetectionParameters(parameters: EhicRecognizerParameters)inHealthInsuranceCardScannerto adjust the scanning process. - Added new setter
setRecognizerParameters(recognizerParameters: EhicRecognizerParameters)inHealthInsuranceCardScannerConfigurationto 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
acceptedBrightnessThresholdtoContourDetectorto control the accepted brightness level for contour detection (same property added toDocumentScannerConfigurationandFinderDocumentScannerConfigurationin RTU UI andContourDetectorFrameHandler). - Added new class
BarcodeTextLocalizationand new propertylocalizationtoBarcodeScannerConfigurationto support localized strings.
- Added new property
- 🚀 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
SoundControllercrash on Android API <= 23. - Fixed
VinScannerConfiguration.setFinderTextHintColor(color)not being applied to the text hint. - Fixed null pointer exception for
PageFileStorageoperations. - Fixed behavior of 'Update' Button in Manual Count Edit Dialog for Barcode Scanner RTU UI v2 screen.
- Fixed
- ⚠️ Breaking changes:
- Replaced the class
BarCodeFormattedResultbyGenericDocumentsclass for barcode document parser output. - Added new classes for all the barcode document formats. See the API documentation for more details.
- All
HealthInsuranceCardprefixes in result model class names were replaced withEhic(EhicRecognitionResult,EhicDetectionStatus, etc.). - Deleted deprecated
isLicenseActiveandisLicenseValidfromScanbotSDK. Please uselicenseInfo.isValidinstead. - Renamed
ScanbotPalettetoPalettefor consistency with RTU UI v2 configuration classes. BarcodeExtensionsFilternow accepts EAN and UPC barcodes with extensions only and all other formats without extensions.- Made the property
type: BarcodeFormat?inio.scanbot.sdk.ui_v2.barcode.configuration.BarcodeItemoptional. - Changed the type of numeric parametric filter parameters from Float to Double.
- Changed default UI behavior in Barcode Scanner RTU UI v2. If
BarcodeMappedData.barcodeImageinBarcodeItemMapperis empty - placeholder image will be shown. IfBarcodeMappedData.barcodeImageis set withBarcodeMappedDataExtension.barcodeFormatKeyconstant - the barcode image will be displayed.
- Replaced the class
- 🚙 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
ScanbotSDKandScanbotBarcodeScannerSDKAPI to theLicensableSdkandBarcodeScanningSdkinterfaces. - 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.ImageProcessorfrom shrinking/obfuscating. - Added
Theme.AppCompat.NoActionBartheme as default for Barcode Scanner RTU UI v2 activity. - Added Consumer Proguard rules for RTU UI v2 modules.
- Updated 3rd-party libraries:
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-bundlemodule dependency to access the new screen. - Added new
ParametricFiltersinImageProcessorAPI (ScanbotBinarizationFilter,CustomBinarizationFilter,ColorDocumentFilter,BrightnessFilter,ContrastFilter,GrayscaleFilter,WhiteBlackPointFilterandLegacyFilter). - Added support for German residence permits (2011 and 2019 formats) in
GenericDocumentRecognizer. PdfConfigin thePDFWriternow 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
resampleparameter inPdfConfigand extended the meaning of thedpisetting. - Added new constructor parameters
dpi: IntandpageFit: PageFitinPageConfigclass forPDFWriter. - Added
setParametricFilter(parametricFilter: ParametricFilter)method in DocumentScannerConfiguration for DocumentScanner RTU UI screen. - Added support of
minEstimatedNumberOfSymbolsForNoDocumentconfig parameter in DocumentQualityAnalyzer API.
- Added new freshly designed RTU-UI version 2 for Barcode scanning with advanced agile configuration. Use
- 🚀 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
ScanbotCameraXViewto 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.
- For
- ⚠️ Breaking changes:
- Changes in
ImageProcessorAPI:ImageProcessoris not a singleton anymore.- Removed
scanbotSDK.imageProcessor()getter. Call one ofImageProcessorconstructors to create a new instance. - Removed old
process*(List<Operation>)methods andOperationclasses. They are replaced withapplyFilter(),rotate(),crop(),resize()methods inImageProcessor. CallImageProcessor#processedBitmap(),ImageProcessor#encodedProcessedImage(), orImageProcessor#saveProcessedImage(path: String)to get the image result or to write it to a file. ImageFilterTypeenum is deprecated. UseParametricFilterAPI with new filters. Usage of old filters is still available withLegacyFilterwrapper.ImageFilterTuneTypes are no longer supported. The class was deleted.
- Changes in
PageProcessorAPI:PageProcessormethods are also migrated to theParametricFilterAPI.- Added
parametricFilters: List<ParametricFilter>field inPageclass. It will be used in page processing by default. If it's empty, old legacy filter infilter: ImageFilterTypedeprecated field will be used. - Removed
tunesandfilterOrderfields inPageclass.
- Deprecated
setImageFilterType(imageFilterType: ImageFilterType)method in DocumentScannerConfiguration for the DocumentScanner RTU UI screen. - Removed
imageProcessorType(type: ImageProcessor.Type)inScanbotSDKInitializer. - In
TIFFImageWriterParametersconstructor replacedbinarizationFilter: ImageFilterType?parameter withbinarizationFilter: ParametricFilter?. - In
TIFFImageWriterParameters.defaultParametersForBinaryImages()parameters changed the default filter toScanbotBinarizationFilterparametric filter. - Renamed
RSS_14barcode format toDATABARandRSS_EXPANDEDtoDATABAR_EXPANDED. BatchBarcodeScannerActivityclass from RTU UI v1 is now marked as 'Deprecated'.- Removed
BarcodeFormat.CODE_25fromBarcodeFormat.COMMON_CODESlist. ZoomRangecan be created with any input values but will be limited under the hood by internalMIN_ZOOM(x0.2) andMAX_ZOOM(x100) values.
- Changes in
- 🚙 Under the hood:
- Added 3rd-party library "libzueci" to dependencies.
- Class
SoundControllerwas renamed toSoundControllerImpland interfaceSoundControllerwas 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.
- Added support for new barcode type
- 🚀 Improvements:
- Added more control over how to handle GS1 messages in barcodes. See
BarcodeScannerAdditionalConfig.setGs1HandlingMode.
- Added more control over how to handle GS1 messages in barcodes. See
- 🐞 Bug fixes:
- Fixed the Camera Preview blinking after capturing a picture.
- ⚠️ Breaking Changes:
- The property
enableGS1Decodinghas been replaced by the enumGs1HandlingModeinBarcodeScannerAdditionalConfig. GS1codes are now handled differently for various barcode types. Using the default optionPARSEwill give the same result as before for all barcode types, except ofRSS_EXPANDED. Previously, forRSS_EXPANDED, the result was inconsistently returned with parentheses. Now, to get results with parentheses for all barcode types, it is needed to choose the optionDECODE.
- The property
Version 4.1.1 (1 Dec 2023)
- 🎉 New:
- Added support for Kuwait ID cards in the MRZ scanner.
- 🐞 Bug fixes:
- Fixed an issue with
acceptedSizeScoreconfig parameter forDocumentScannerActivityandFinderDocumentScannerActivityRTU screens.
- Fixed an issue with
- ⚠️ Breaking changes:
- Moved
setIgnoreBadAspectRatio()logic fromDocumentAutoSnappingControllertoContourDetectorFrameHandler.
- Moved
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_POSTandDATABAR_LIMITED.
- 🚀 Improvements:
- Improved quality and speed of the Document Contour detector.
- Decreased size of Document Contour detector ML model.
- Removed parameter
forceCpu: BooleanfromImageProcessormethods. - Optimized default and custom preview/picture size selection in the
ScanbotCameraXView. - Optimized
setForceMaxSnappingSize(enabled: Boolean)behavior in theScanbotCameraXView. - Improved pinch-to-zoom gesture in
ScanbotCameraXView. - Added
setLifecycleOwner(lifecycleOwner: LifecycleOwner)method for view controller inDocumentScannerViewandBarcodeScannerViewto improve compatibility with Compose UI.
- 🐞 Bug fixes:
- Added
setBarcodeFormatsFilter(barcodeFormat: List<BarcodeFormat>)method inBatchBarcodeScannerConfigurationclass.
- Added
- ⚠️ Breaking changes:
- Renamed
OpticalCharacterRecognizer.EngineMode.TLDRtoOpticalCharacterRecognizer.EngineMode.SCANBOT_OCR. - If you are using
setPictureSize(pictureSize: Size),setCameraFrameSize(frameSize: Size)orsetPreviewFrameSize(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()inScanbotCameraXView,DocumentScannerView,BarcodeScanAndCountViewandBarcodeScannerView.setPhysicalZoomRange()andsetPhysicalZoomRatio()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
BlurEstimatorfeature. UseDocumentQualityAnalyzerinstead.
- Renamed
- 🚙 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
EnableCameraButtonTitleandEnableCameraExplanationTextparameters on Batch- and Barcode RTU UI screen configs. - Fixed crash in
GenericTextRecognizeron ARM v7 devices. - Fixed behavior of
ocrResolutionLimitconfiguration inGenericTextRecognizer.
- ⚠️ 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()andOpticalCharacterRecognizer#recognizeTextWithPdfFromPages()methods -pageSize: PDFPageSizewas replaced with more detailedpdfConfig: PdfConfigparameter.
- Changed signature of
PDFRenderer#renderDocumentFromImages()andPDFRenderer#renderDocumentFromPages()methods -pageSize: PDFPageSizewas replaced with more detailedpdfConfig: PdfConfigparameter. - Removed
CameraModule.FRONT_MIRRORED.CameraModule.FRONTnow behaves as mirrored mode.
- Changed the default OCR engine to the new TLDR OCR engine.
- 🚙 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. UseBarcodeScanAndCountView.counterOverlayController.setBarcodeAppearanceDelegateto 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
BarcodePolygonsStaticViewwhere it crashed ifbarcodeItemViewFactoryreturnednullinstead 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
topBarButtonsColoroption for theMrzScannerActivityandHealthInsuranceCardScannerActivityscreens. - 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
TextFilterStrategyand a set ofLanguageparameters. 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. UseMRZGenericDocument.document.wrap() as MRZto get exact fields instead of a list of generic fields. - Removed methods from
BarcodePolygonsViewandBarcodeScannerView.selectionOverlayControllerrelated to polygon and text view appearance. E.g.setStrokeColoretc. Please useBarcodeAppearanceDelegateinstead! - Removed methods from
BarcodePolygonsStaticViewandBarcodeScanAndCountView.counterOverlayControllerwhich were related to polygon appearance. E.g.setStrokeColoretc. Please useBarcodeAppearanceDelegateinstead.
- 🚙 Under the hood:
- Removed
UNKNOWNbarcode type from the API as it is applicable only for internal use. - Fixed declaration of attributes
polygonStrokeDeclinedColorandpolygonFillDeclinedColor. - Text Data Scanner only depends on Tesseract for license plate scanning. For other purposes, Tesseract was removed.
- Removed
Version 2.3.0 (13 Jul 2023)
- 🎉 New:
- Added support for MicroQR codes.
- Added
setViewFinderEnabledmethod toBarcodeScannerConfigurationandBatchBarcodeScannerConfiguration. This toggles the visibility of the viewfinder. Defaults totrue. - Introduced a scanned barcode confirmation dialog in
BarcodeScannerActivityRTU screen, and a configuration classBarcodeConfirmationDialogConfigurationinBarcodeScannerConfigurationfor modifying dialog UI. - Added Scan and Count of Barcodes feature. Use
BarcodeScanAndCountViewto integrate it into your app. - Introduced a new public interface,
PdfImagesExtractor, for extracting images from PDF files. - Added a new implementation of
PdfImagesExtractorandPdfPagesExtractorbased 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), inScanbotBarcodeDetectorto 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.FRONTis set up forScanbotCameraXView. - Fixed the logic in
setAutoSnapProgressEnabledandsetPolygonAutoSnapProgressEnabledmethods inFinderDocumentScannerConfigurationandDocumentScannerConfiguration. - Fixed
TextDataScaner.textDataScannerStepnot applying from JSON configuration. - Fixed incorrect mapping of iOS-only parameter
shutterButtonIndicatorColorinDocumentScannerandFinderDocumentScanner. - Corrected mapping of
userGuidanceStringsJSON configuration forCheckRecognizerConfiguration.
- ⚠️ Breaking changes:
- Corrected a typo in the
polygonAutoSnappingProgressStrokeColorattribute name for PolygonView. - API breaking changes in the MRZ scanner result interface:
- Replaced
io.scanbot.mrzscanner.model.MRZRecognitionResultMRZ Scanner result model class withio.scanbot.mrzscanner.model.MRZGenericDocument. - Removed
fields: List<MRZField>list andMRZFieldclass. All detected fields are now stored in thedocument: GenericDocumentfield inMRZGenericDocumentinstance asfields: 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, andcheckDigits: List<MRZCheckDigit>from the resulting model. All this data can be extracted from theGenericDocument. - The
travelDocType: MRZDocumentTypeis now represented by thedocumentType: MRZDocumentTypefield in theMRZGenericDocumentinstance.
- Replaced
- Date fields in the
MRZGenericDocumentresult model now contain an unformatted date string. - Replaced
MRZDocumentTypeclass withMRZGenericDocument.MRZDocumentType. - Removed deprecated
MultipleObjectsDetectorActivityRTU UI screen. - Removed deprecated
MultipleObjectsDetectorandBusinessCardsImageProcessor.
- Corrected a typo in the
- 🚙 Under the hood:
- Libraries.txt is now contained only in
package1andpackage2dependencies. - 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.
- Libraries.txt is now contained only in
Version 2.2.0 (27 Apr 2023)
- 🎉 New:
- Added type
BarcodeFormat.CODE_25that was previously considered as typeINDUSTRIAL_2OF5without checksum. TheINDUSTRIAL_2OF5checksum option is now removed and thus, depending on a valid checksum, we either returnINDUSTRIAL_2OF5orCODE_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.
- Added type
- 🚀 Improvements:
- Added
BarcodeItemViewPositionHandlerthat 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
Rectcropping logic when working withFinderOverlayView. - Patient info box recognition has been improved in the medical certificate scanners.
- Stacked RSS barcode scanning has seen substantial improvements.
- Added
- 🐞 Bug fixes:
- Fixed a visual glitch with
ScanbotCameraXViewon Xiaomi devices, which happened before the preview started. - Fixed a bug where
ScanbotCameraXViewsometimes threwRejectedExecutionExceptionafter the camera stopped.
- Fixed a visual glitch with
- ⚠️ Breaking changes:
- Changed structure of
MedicalCertificateRecognizerResult:McInfoBoxSubTyperenamed toCheckBoxType.MedicalCertificateInfoBoxtype split intoPatientInfoBoxandCheckBox.MedicalCertificateInfoBox.patientInfoFieldsproperty now available asMedicalCertificateInfoBox.patientInfoBox.patientInfoFields.DateRecord.validationConfidenceValueremoved.
- 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.recognizedMRZLinesas it was replaced withMRZRecognitionResult.rawMrz. - Removed parameter
decodeStacks1D. The decoding of stacked barcodes is now handled automatically. FrameHandlerinterface 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'sdependenciesblock:- for users of
io.scanbot:sdk-package-1,-2,-3or-4that use barcode scanning, the dependency ofio.scanbot:sdk-barcode-assetsshould be updated toio.scanbot:bundle-sdk-barcode-assets(NOTE: barcode standalone SDK users do not need to adjust anything in this case:io.scanbot:scanbot-barcode-scanner-sdkand-sdk-uidependencies are to stay as is!) - all users of
io.scanbot:sdk-crypto-persistenceshould change this dependency toio.scanbot:bundle-sdk-crypto-persistence(or toio.scanbot:barcode-sdk-crypto-persistenceif you are using Scanbot Barcode standalone SDK)
- for users of
- Changed structure of
- 🚙 Under the hood:
- Enabled
-fstack-protector-allon Android - Removed usage of
backward-cpplibrary. - Removed outdated assets for MRZ detection.
- FrameHandlers won't return the result if
FrameHandler.isEnabledis set tofalseafter actual frame detection. - We now append the
bundle-orbarcode-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,-3and-4modules, all*-assetsmodules. The exception to this are modulesscanbot-barcode-assetsandscanbot-sdk-crypto-persistence: these will have corresponding prefixes from now on, depending on what SDK they are being used for.
- Enabled
Version 2.1.0 (5 Apr 2023)
- 🎉 New:
- Added method
setRequiredAspectRatios()to theDocumentScannerConfigurationthat allows you to specify the aspect ratios of the documents that will be automatically captured.
- Added method
- 🚀 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
FinderOverlayViewbehavior, when UI container is dynamically resized, e.g. on keyboard events, etc. - Added
setForceMaxSnappingQuality(enabled: Boolean)inIScanbotCameraViewinterface (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 isfalse. - Added
setSnappingAutoAdjustment(enabled: Boolean)inIScanbotCameraView(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 isfalse.
- 🐞 Bug fixes:
- Fixed
EditPolygonImageViewbug with the coloring of lines on the polygon change. - Fixed Scanbot camera views not resolving
Contextcorrectly if used in Activity/Fragment with Hilt's@AndroidEntryPointannotation. - Fixed Scanbot RTU-UI scanners handling when the app is terminated in the background.
- Fixed a potential memory issue in the check recognizer.
- Fixed
- ⚠️ Breaking changes:
FinderAspectRatioandPageAspectRatioclasses are now deprecated and merged intoAspectRatiocommon class. Please useAspectRatioinstead.
- 🚙 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
automaticSelectionEnabledoption toSelectionOverlayConfigurationforBarcodeScannerActivityandBatchBarcodeScannerActivityRTU UI screens
- Added a new
- 🚀 Improvements:
- The raw string is returned for RSS Expanded barcodes that don't contain a GS1 string
- Updated
BarcodeScannerAdditionalConfigBuilderwithdecodeStacks1DandcodeDensityparameters - Improved autosnapping animation in
PolygonView - Eliminated the camera preview going black between
stopPreview()andstartPreview()calls inDocumentScannerActivityRTU UI
- 🐞 Bug fixes:
- Fixed the
ScanbotCameraXViewinstantiation error in Layout Editor - Fixed the memory leak of CameraManager in
ScanbotCameraXView - Fixed NPE in the
ScanbotCameraXViewwhen thestartPreview()function is called while theScanbotCameraXViewwas detached - Fixed an issue with
InitialScanDelayMsandDelayAfterScanMsoptions not working inBarcodeScannerConfigurationwhenBarcodeImageGenerationType.CAPTURED_IMAGEandBarcodeImageGenerationType.VIDEO_FRAMEoutput generation types were used - Fixed
ScanbotCameraXViewnot working after reattaching to a window
- Fixed the
- ⚠️ Breaking changes:
- Removed deprecated
NfcPassportScanner,PayFormScannerandWorkflowsclassical and RTU components together with all their configurations
- Removed deprecated
- 🚙 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_backandMcInfoBoxSubtype. - Added new parameter
decodeStacks1DinBarcodeScannerAdditionalConfigfor Barcode Scanner. For stacked RSS barcodes, this should be set to the number of stacks with which the barcode was printed.
- Added support for two-sided 21b Medical Certificates with new checkbox types. See
- 🚀 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
intentionandinsuredPersonTypefields fromMedicalCertificateRecognizerResultInfo - Removed enums
MedicalCertificateInsuredPersonTypeandMedicalCertificateIntention - Renamed
McBoxAccidenttoMcBoxAccidentYesandMcBoxRequiresCaretoMcBoxRequiresCareYesinMcInfoBoxSubtype - Removed
MrzBlobRuntimeExceptionas it cannot occur anymore
- Removed
- 🚙 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_IDfor 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 inio.scanbot.sdk.util.snap.SoundControllerclass. NOTE:android.permission.VIBRATEpermission is required! - Added
bleepResId: IntandbleepUri: Uriparameters to theSoundControllerclass 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 BarcodePolygonsViewallows visualization of barcode contours when using classical components- Selection overlay layer based on
BarcodePolygonsViewcan be enabled forBarcodeScannerViewviaBarcodeScannerView.selectionOverlayController.setEnabled - Selection overlay can be enabled and configured for ready-to-use UI via
BarcodeScannerConfiguration.setSelectionOverlayConfiguration(...) - New properties
InitialScanDelayMsandDelayAfterScanMsinBarcodeScannerConfigurationallow delaying the initial scan and/or pausing the preview after scanning the barcode
- Added
- 🚀 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_IMAGEwhen an instance ofIBarcodeFilteris set.
- Fixed a bug with RTU Barcode scanner not being able to produce image of
- ⚠️ Breaking changes:
- Moved and renamed
io.scanbot.sdk.ui.utils.ScanBeeperclass from the RTU-UI module to the packageio.scanbot.sdk.util.snap.SoundControllerin the basescanbot-sdk-1module.
- Moved and renamed
- 🚙 Under the hood:
- For
ScanbotCameraXView- whenCameraOpenCallbackis set - theonCameraOpenedmethod'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
- For
Version 1.96.0 (08 Sep 2022)
- 🚀 Improvements:
- Improved accuracy and performance of the check recognizer.
- 🐞 Bug fixes:
- Fixed
ContourDetectorcrash when assembled release with obfuscation on old AGP version.
- Fixed
- 🚙 Under the hood:
- Improve layouts for RTU UI screens
Version 1.95.0 (12 Aug 2022)
- 🎉 New:
- Each RTU UI configuration and
ScanbotSDKInitializerclass now containsfromJson(input: String)andmodifyFromJsonConfiguration(<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>JsonConfigurationclass - Added new configuration option
codeDensityinBarcodeScannerAdditionalConfigfor Barcode Scanner - Added
codeDensityconfiguration option for Barcode Scanner RTU UI screen
- Each RTU UI configuration and
- 🚀 Improvements:
- Added default images for
EditPolygonViewanchors and forMagnifierViewoverlay image in classical components. - Added new insets API for the finder box:
finderInsetsallows setting the finder edge padding from the camera preview edges.safeAreaInsetscan 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
MedicalCertificateRecognizerConfigurationthat allow configuring the appearance of the medical certificate scanner's finder. Details inMedicalCertificateRecognizerConfigurationAPI reference. - Added an option to force display the user guidance interface when manually snapping documents in
DocumentScannerActivity. UseDocumentScannerConfiguration.setForceUserGuidance(true)to enable this option.
- Added default images for
- 🐞 Bug fixes:
- The polygon's background color now displays correctly at the corners of the
PolygonViewin 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
CroppingActivityandEditPolygonImageView
- The polygon's background color now displays correctly at the corners of the
- ⚠️ Breaking changes:
- Changed the default Camera View to ScanbotCameraXView based on CameraX API in all RTU UI screens
- Removed
EngineMode.Legacysupport for Barcode Scanner ContourDetector'sdetectmethods are now synchronized and return a newDetectionResultentity. 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)DetectionResultclass name changed toDetectionStatussetFinderOffsetdeleted. UsefinderInsetvalues instead
- 🚙 Under the hood:
- Updated
compileSdkversion 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 onfinderInsetsAPI
- Updated
Version 1.94.0 (13 Jun 2022)
- 🎉 New:
- Added
Fragment.registerForActivityResultOkmethod for calling activity from fragments for subscribing to success result with the new Activity Result API. - Check recognizer:
- Introduced
CheckRecognizerActivityRTU UI for the convenient use of our updated Check Recognizer SDK. - Added
setAcceptedCheckStandards(acceptedCheckStandards: ArrayList<RootDocumentType>)method for Check filtering by standard inCheckRecognizer. By default - empty list (all standards are accepted). - Added
returnImageOnSuccess: Booleanparameter forrecognize(...)andrecognizeWithFinderOverlay(...)methods inCheckRecognizer. By default -false.
- Introduced
- With the new
BarcodeScannerViewandDocumentScannerViewClassical components, the integration of barcode scanning and document scanning with Custom UIs is now even easier!
- Added
- 🚀 Improvements:
- Added a cancellation interface for
PdfPagesExtractorcalls. Now you can cancel extracting pages from large PDFs and thus don't need to wait until the end of the process. Look for propertycancelCallback: LongOperationCancelCallbackinsidefun 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
MedicalCertificateRecognizerConfigurationthat allows configuring the medical certificate scanner finder appearance. Details inMedicalCertificateRecognizerConfigurationAPI 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.
- Added a cancellation interface for
- 🐞 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
ScanbotCameraXViewwhen taking a picture after the screen was paused.
- ⚠️ Breaking changes:
finder_descriptionview 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 (
chequescannertocheck). - 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 useCheckRecognizer. - The obsolete method
ScanbotSDKInitializer#prepareChequeBlobs(prepareBlobs: Boolean)was removed from the SDK API. CheckRecognizerreturnsCheckRecognizerResultobject with recognized data.
- All the Cheque components and packages renamed to Check (
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:
PDFRenderernow properly handlescontent:\\type uris.- By default, GPU acceleration has been enabled (issues with the Samsung S22 series devices are fixed).
- Fixed crash for calling
TIFFWriterin release build variant version. - Fixed crash for calling
TextOrientationRecognizerin release build variant version. - Fixed camera flash state for
DocumentScannerActivityafter picture is taken in multi-page mode. - Fixed cropped images of 1D barcodes.
- Fixed
Multi-Pagebutton state forMultipleObjectsDetectorActivity.
- ⚠️ Breaking changes:
- Moved configuration of page for cropping screen from method to constructor
CroppingConfiguration(page). - Deprecated component
FilterPredictorwas removed. - Deprecated field
MRZCheckDigit.validatedStringwas removed.
- Moved configuration of page for cropping screen from method to constructor
- 🚙 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.
- Added new property
- 🐞 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
FileAccessExceptioninScanbotSDKInitializerwhen cleaning deprecated blob files.
- By default, GPU acceleration has been disabled (due to issues on the Samsung S22 series devices). To enable it, use
Version 1.92.0 (23 Feb 2022)
- 🎉 New:
- Introduced
MedicalCertificateRecognizerActivityready-to-use UI for an easy integration of the Medical Certificate Recognizer. - Added a new property
DocumentScannerConfiguration.enableHardwareSnapButtonthat helps to set one hardware button to trigger a manual snap. By default Kotlin usesKeyEvent.KEYCODE_VOLUME_DOWNbut anyKeyEvent.KEYCODEvalue 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()andScanbotCameraXView.setForceMaxSnappingSize()that force the maximum available snapping size and apply the same aspect ratio to the preview. Works only withScanbotCameraXViewor with CameraX enabled in the RTU UI. Disabled by default, thusScanbotCameraXViewshows 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
BarcodeDocumentParserto 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.
- Introduced
- 🚀 Improvements:
- Improved the UX of the
DocumentScannerActivityscreen. Now theSnapFlashViewanimation 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
GenericDocumentRecognizernow have aValidationStatus. Fields withValidationStatus = Invalidwill not be shown in the list of fields forGenericDocumentRecognizerActivity. - Mark
ScanDisabilityCertificateWorkflowStepas deprecated in order to replace it with the Medical Certificate ready-to-use scanner screen.
- Improved the UX of the
- ⚠️ Breaking changes:
- Fixed applying
DocumentScannerConfiguration.setCameraBackgroundColor()forScanbotCameraXView. - Removed unused parameters
setShouldSavePhotoImageInStorageandsetShouldSaveSignatureImageInStoragefromGenericDocumentRecognizerConfiguration.
- Renamed the feature Disability Certificate Scanner to Medical Certificate Recognizer
- Renamed all related classes and package names with
DCprefix toMedicalCertificateprefix (likeio.scanbot.sdk.dcscanner.DCScannertoio.scanbot.sdk.mcrecognizer.MedicalCertificateRecognizer) - Renamed Medical Certificate recognizer assets library to
sdk-mc-assets - Renamed the class
DisabilityCertificateDocumentin the barcode scanner toMedicalCertificateDocument. All related classes and paths that containDisabilityCertificateare also renamed toMedicalCertificate. - Removed methods
detectAndRecognizeMcJpeg(...)anddetectAndRecognizeMcBitmap(...)fromMedicalCertificateRecognizer. UserecognizeMcJpeg(..., shouldCropDocument: Boolean = true, returnCroppedDocument: Boolean = true, recognizePatientInfo: Boolean = true, recognizeBarcode: Boolean = true)andrecognizeMcBitmap(..., shouldCropDocument = true, ...)instead. - Removed outdated parameters
width: Intandheight: IntinMedicalCertificateRecognizer#recognizeMcJpeg(...) - Replaced the usage of internal class
io.scanbot.mcscanner.model.MedicalCertificateRecognizerResultInfowith publicly available classio.scanbot.sdk.mcrecognizer.entity.MedicalCertificateRecognizerResultin all Medical Certificate classical components
- Renamed all related classes and package names with
- Fixed applying
- 🚙 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)inBarcodeScannerConfigurationandBatchBarcodeScannerConfigurationfor RTU UI screens to lock in the minimum supported camera focus distance (supported only with CameraX) - Added
fun lockMinFocusDistance(lock: Boolean)inIScanbotCameraViewto lock in the minimum supported camera focus distance (supported only with CameraX) - New option
lowPowerMode: BooleaninBarcodeScannerAdditionalConfigurationforBarcodeScannerConfigurationandBatchBarcodeScannerConfigurationfor RTU UI screens andScanbotBarcodeDetectorclassical component
- 🐞 Bug fixes:
- Fixed a bug that led to incorrect clearing of the scanned documents in
GenericDocumentRecognizerActivity - Initial flash button state on opening
GenericDocumentScannerscreen 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
TextDataScannerActivityon some rare cases while restarting the app from recent apps to this screen
- Fixed a bug that led to incorrect clearing of the scanned documents in
- 🚀 Improvements:
- Significantly improved recognition of Aztec barcodes
- Added method
setFinderMinPaddingto theFinderOverlayView, 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 UI component.
- Added properties
textWithExtensionandmetadatatoBarcodeItemto support barcode extensions of UPC and EAN barcodes - The results screen of the
BatchBarcodeScannerActivitynow displaystextWithExtensioninstead oftext - Added new boolean flag
enableNativeLogging(by default - false) inScanbotSDKInitializer#withLogging(useLog: Boolean, enableNativeLogging: Boolean)method - Support for barcode scanner results filtering in RTU-UI barcode scanning components
- Added 2 implementations of
IBarcodeFilterinterface -BarcodeFilterandBarcodeExtensionsFilter - New setters
setBarcodeFilter(barcodeFilter: IBarcodeFilter)inBarcodeScannerConfigurationandBatchBarcodeScannerConfigurationfor RTU UI screens - Added
setPreviewFrameSize(frameSize: Size)andsetAnalyzerFrameSize(frameSize: Size)methods inScanbotCameraXViewfor 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)tosetCameraFrameSize(frameSize: Size)inScanbotCameraXView - 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_EXTRAwere deleted. Instead we have implemented AndroidX Activity Result API for RTU UI components. Also - if you prefer to stick with deprecatedstartActivityForResultapproach - we have added utility methods that incapsulate all the verbosity of getting the result entity from the activity's resultBundle. Please see the documentation for the desired RTU UI component.
- IdCardScanner
- Removed deprecated
IdCardScannerand all the classes related to it. Consider usingGenericDocumentRecognizerinstead
- Removed deprecated
- 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 useBlurEstimator - The obsolete method
ScanbotSDKInitializer#prepareBlurEstimatorBlobs(prepareBlobs: Boolean)was removed from the SDK API.
- The ML blobs are now available as a separate library
- Renamed
- 🚙 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
BatchBarcodeScannerActivityignored the parameter passed tobatchBarcodescannerConfiguration.setCameraModule()
- Fixed a bug for when
Version 1.89.0 (5 Nov 2021)
- 🎉 New:
- Added
allowGpuAcceleration(enable: Boolean)method inScanbotSDKInitializerwhich enables GPU acceleration for TensorFlow ML models - Added
precompileGpuMlModels(precompilingCallback: () -> Unit)method inScanbotSDKInitializerwhich performs GPU ML models precompilation
- Added
- 🐞 Bug fixes:
- Fixed a bug in
BatchBarcodeScannerActivityandMultipleObjectsDetectorActivityfor when they don't show the camera preview after the camera permission approval - Fixed a bug when
BarcodeScannerActivitydoes not detect any barcodes with the image generation type VIDEO_FRAME - Fixed possible crash with Barcode Scanner activities after the camera permission request
- Fixed a bug in
- 🚙 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
isFlashEnabledmethod inIScanbotCameraView - Ready to Use UI components now can use CameraX under the hood. Use ScanbotSDKInitializer.useCameraXRtuUi(true) to enable it
startPreview()andstopPreview()methods are available forScanbotCameraXViewas well- A new filter type
PURE_GRAYSCALEis now available for the image processing. It is similar toGRAYSCALE, but without additional contrast and dynamic range optimizations
- A new method
- 🚀 Improvements:
- Improved flexibility, speed, and accuracy of the EHIC Scanner (European Health Insurance Cards)
ScanbotCameraXViewnow uses better preview quality by defaultScanbotCameraXViewperformance was optimized
- 🐞 Bug fixes:
- Fixed long initialization of
ScanbotCameraXViewon foldable devices
- Fixed long initialization of
- ⚠️ 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 useHealthInsuranceCardScanner recognizeXanddetectAndRecognizeXmethods were merged inrecognizeXsetValidationTypewas removed. Now the country is detected directly from the card- Parameters
widthandheightwere removed fromrecognizeJPEGmethod as redundant - Method
recognizewas renamed torecognizeNv21 - Enum value
FAILED_VALIDATIONwas replaced withINCOMPLETE_VALIDATIONinHealthInsuranceCardDetectionStatus
- The ML blobs are now available as a separate library
- IdCardScanner
- Removed deprecated IdCardScanner RTU screen (
IdCardScannerActivity). Consider usingGenericDocumentRecognizerActivityinstead - Removed deprecated
IdCardScannerConfiguration. Consider usingGenericDocumentRecognizerConfigurationwithGenericDocumentRecognizerActivityinstead
- Removed deprecated IdCardScanner RTU screen (
- HealthInsuranceCardScanner
- 🚙 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
allowXnnpackAccelerationwas added inScanbotSDKInitializerallowing to control whether the XNN pack optimizations should be used (trueby default)
- A new flag
- 🐞 Bug fixes:
- Fixed
MSI_PLESSEY_CHECKSUM_ALGORITHMS,STRIP_CHECK_DIGITSandCAMERA_ZOOMparameters being ignored in BatchBarcodeScannerConfiguration
- Fixed
- ⚠️ Breaking changes:
- The
corner_radiusattribute of FinderOverlayView was renamed tosbsdk_corner_radius
- The
Version 1.87.0 (3 Sep 2021)
- 🎉 New:
- Added
PdfPagesExtractorclass that can extract pages from a PDF as Sdk'sPage, or convert them to JPEGs and write to a specified Uri. CheckscanbotSdk.createPdfPagesExtractor().
- Added
- 🚀 Improvements:
- Improved recognition of the front side of ID cards by
GenericDocumentRecognizer - Improved recognition of UPC/EAN barcodes due to ink spread
- The
resultPointsfield of theBarcodeItemnow contains correct information about the contours of the detected barcodes
- Improved recognition of the front side of ID cards by
- 🐞 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
resultPointsfield of theBarcodeItemis 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:
Pagenow containsPageImageSourceallowing to check if the source image was captured automaticallyPictureCallbacknow contains information if the image was captured automatically- Added a new method
takePicture(acquireFocus: Boolean, isCapturedAutomatically: Boolean)inIScanbotCameraViewwhich should be called withisCapturedAutomatically = truefrom a custom AutoSnappingController - Added method
setAnchorPointColor(@ColorInt color: Int)allowing to change the color of draggable points of the cropping polygon inCroppingActivitycomponent andEditPolygonView - Additional parameter
stripCheckDigits: BooleaninBarcodeScannerAdditionalConfigforBarcodeDetectorclassical component - Additional parameter
stripCheckDigits: BooleaninBarcodeScannerAdditionalConfigurationfor 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
Informationfield in SEPA barcode document type now parsed correctly to match the specification - Memory usage optimizations for DC scanner
- ⚠️ Breaking changes:
- The parameter
imageOrientationinPictureCallbackwas replaced toCaptureInfowhich contains the orientation of the image and if it was captured automatically - IMPORTANT! Added
createprefix to names of all the methods inScanbotSDKandScanbotBarcodeScannerSDK, that return new instances of scanners, processors or storages. Methods without this prefix returnSingletonobjects. - IMPORTANT! Classical component
BusinessCardsImageProcessoris no longer singleton! You should get your instance from SDK, configure it and use it as needed. CallingScanbotSDK(this).createBusinessCardsImageProcessor()elsewhere will return a new instance of this component with default config ReferenceandHintfields in SEPA barcode document type were replaced byPurposeandRemittanceto match the specification
- The parameter
- 🚙 Under the hood:
- Updated 3rd party libraries used in SDK
Version 1.85.1 (5 Jul 2021)
- 🎉 New:
- Added a new callback in
EditPolygonImageViewallowing to handle the dragging state. SeeEditPolygonDragStateListener
- Added a new callback in
- 🐞 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: EngineModeinBarcodeScannerConfigforScanbotBarcodeDetector. By defaultScanbotBarcodeDetectorusesEngineMode.NextGenbased on a new ML model - Added new RTU config method
setEngineMode(engineMode: EngineMode)inBarcodeScannerConfiguration. 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
- Fixed incorrect toolbar color on
- ⚠️ Breaking changes:
- Removed
disableMlDetectorconfig parameter inBarcodeScannerConfig. UseEngineMode.LegacyFastinstead. - Removed
BarcodeDetectorTypeclass andsetDetectorType()method from Barcode RTU screens. UsesetEngineMode(engineMode: EngineMode)instead. - Removed unused parameters
width: Intandheight: IntfromdetectFromJpeg(jpeg: ByteArray, frameOrientation: Int)method inScanbotBarcodeDetector
- Removed
- 🚙 Under the hood:
- New third-party libraries: xsimd, xtl und xtensor (see Third-party Libraries)
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>inBarcodeScannerAdditionalConfigforBarcodeDetectorclassical component - Additional parameter
msiPlesseyChecksumAlgorithms: EnumSet<MSIPlesseyChecksumAlgorithm>inBarcodeScannerAdditionalConfigurationfor RTU UI screens - Added new parameter to the
SdkLicenseInfoclasslicenseStatusMessage: String?
- Added a new supported barcode format
- 🚀 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
BlurEstimatorassets 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 useDCScanner. - 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
- The ML blobs are now available as a separated library
- IMPORTANT! Classical components
TIFFWriter,MRZScanner,BlurEstimator,PayFormScanner,ChequeScanner,DCScanner,HealthInsuranceCardScannerandMultipleObjectsDetectorare no longer singletons! You should get your instance from SDK, configure it and use it as needed. CallingScanbotSDK(this).<component>()elsewhere will return a new instance of this component with default config - Refactor RTU's
NfcPassportScanningResultentity: make corresponding fields of Int type. - Added new
setValidationType(validationType: HealthInsuranceCardValidationType)method inHealthInsuranceCardScanner - Changed signature of the
handleLicenceStatusErrormethod inIScanbotSDKLicenseErrorHandler. Added additional parametererrorMessage : String - Marked as deprecated
reinitWithValidationType(validationType: HealthInsuranceCardValidationType)method inHealthInsuranceCardScanner
- Disability Certificate Scanner:
Version 1.83.2 (20 May 2021)
- 🚀 Improvements:
- Optimized memory consumption and performance of
GenericDocumentRecognizerandIdCardScanner
- Optimized memory consumption and performance of
Version 1.83.1 (18 May 2021)
- 🚀 Improvements:
- Improve the false positive rate for
GenericDocumentRecognizer
- Improve the false positive rate for
- 🐞 Bug fixes:
- Fixed
TiffWriteron 32-bit devices
- Fixed
- 🚙 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 Document Data Extractor]]
- 🚀 Improvements:
IdCardScanneris now deprecated. Consider usingGenericDocumentRecognizerinstead
- 🐞 Bug fixes:
- ⚠️ Breaking changes:
- IMPORTANT! Classical component
BlurEstimatoris no longer a singleton! You should get your instance from SDK, configure it and use it as needed. CallingScanbotSDK(this).blurEstimator()elsewhere will return a new instance of this component with default config - IMPORTANT! Classical component
TextOrientationScanneris no longer a singleton! You should get your instance from SDK, configure it and use it as needed. CallingScanbotSDK(this).textOrientationScanner()elsewhere will return a new instance of this component with default config - IMPORTANT! Classical component
IdCardScanneris no longer a singleton! You should get your instance from SDK, configure it and use it as needed. CallingScanbotSDK.idCardScanner()elsewhere will return a new instance of this component with default config - Refactor RTU's
NfcPassportScanningResultentity: make corresponding fields of type Int
- IMPORTANT! Classical component
- 🚙 Under the hood:
- Switched from using
org.jetbrains:annotationstoandroidx.annotation:annotation - Improved FinderView behaviour in RTU
BarcodeScannerActivityscreen layout - Updated third-party libraries used in SDK (see Third-party Libraries)
- Switched from using
Version 1.82.0 (21 Apr 2021)
- 🎉 New:
- Added a new option
setOpticalZoomRange(zoomRange: ZoomRange)inIScanbotCameraView - Added two new options
setCameraZoomFactor(zoomFactor: Float)andsetCameraZoomRange(zoomRange: ZoomRange)inBarcodeScannerConfigurationforBarcodeScannerActivityRTU screen - Added
gs1DecodingEnabledparameter inBarcodeScannerAdditionalConfigandBarcodeScannerAdditionalConfigurationto disable the decoding of FNC1 characters in CODE128 barcodes
- Added a new option
- 🚀 Improvements:
- Initialization parameters for
AESEncryptedFileIOProcessor(key: SecretKey?,initializationVector: ByteArray,salt: ByteArrayanditerationCount: Int) became public.
- Initialization parameters for
- ⚠️ Breaking changes:
- Method
setSignificantShakeDelayinLicensePlateScannerConfigurationas well assignificantShakeDelayfield inTextDataScannerStepare now ofLongtype - Renamed
ImageFilterType.ML_BASED_BINARIZATION(filter for low-contrast documents with heavy shadows) toImageFilterType.SENSITIVE_BINARIZATION
- Method
- 🚙 Under the hood:
FilterPredictorinstance is no longer a singleton. Each timeScanbotSDK.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
ScanbotBarcodeDetectorto scan only the given types ofBarcodeDocumentFormatand filter out others automatically - Added
minimumTextLength,maximumTextLength,minimum1DQuietZoneSizeparams forScanbotBarcodeDetectorasBarcodeScannerAdditionalConfigentity. - Added new method
setBarcodeScannerAdditionalConfigurationfor RTUBarcodeScannerConfigurationto set theminimumTextLength,maximumTextLength,minimum1DQuietZoneSizeparams. - Introduce License Plate Scanner providing ability scan license plates on the vehicles and extract country code and plate number from it
GenericTextRecgonizernow has different strategies for scanning Documents and LCD's- Added a new configuration option
setAcceptedDocumentTypes(acceptedDocumentTypes: List<IdScanResult.DocumentType>)inIdCardScanner - Added a new configuration option
setAcceptedDocumentTypes(acceptedDocumentTypes: List<IdScanResult.DocumentType>)inIdCardScannerConfigurationfor RTUIdCardScannerActivity - Added a new configuration option
setSharpnessAcceptanceFactor(sharpnessAcceptanceFactor: Float)inIdCardScannerConfigurationfor RTUIdCardScannerActivity - Added a new configuration parameter
accessibilityConfigurationforDocumentScannerActivityandCroppingActivityallowing to set hints for the screen reader
- Now it is possible to set
- 🚀 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,MultipleObjectsDetectorandBusinessCardsImageProcessorfeatures to the SDK Package 2 - Optimized memory consumption of
BarcodeDetector scanbot-sdk-crypto-persistencelibrary 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
- Fixed calculation of the visible rectangle for
- ⚠️ Breaking changes:
- ML-based document detection is now used by default. Therefore the dependency on
io.scanbot:sdk-ml-docdetectorwas added by default as well. You may switch back to the edge-based approach by settingcontourDetectorTypeinScanbotSDKInitializerand exclude the module with assets byexclude 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.LanguageNotFoundExceptionmoved to packageio.scanbot.sdk.exceptions.ocr.LanguageNotFoundException- IMPORTANT! Classical component
ScanbotBarcodeDetectoris no longer a singleton! You should get your instance from SDK, configure it and use it as needed. CallingScanbotSDK(this).barcodeDetector()elsewhere will return a new instance of this component with default config. Refer to example implementation. - Removed a set of methods from
ScanbotBarcodeDetectorandBarcodeDetectorFrameHandler- code should be updated to use newsetConfigandmodifyConfigmethods andBarcodeScannerConfigentity. - Now the
prepareGenericTextRecognizerBlobscall inScanbotSDKInitializeris redundant for the usage of the Data Scanner SDK CheckableTextViewwas removed from the SDK. Consider the usage ofCheckedTextViewfrom Android SDK instead
- ML-based document detection is now used by default. Therefore the dependency on
- 🚙 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-credentiallibrary from dependencies
Version 1.80.1 (10 Mar 2021)
- ⚠️ Breaking changes:
- Removed barcode format
BarcodeFormat.MSI_PLESSEY
- Removed barcode format
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): BooleaninTIFFWriterclass 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 toOpticalCharacterRecognizer
- Added an additional parameter to the methods
- 🚙 Under the hood:
- Optimized delay handling between camera frames in
BarcodeDetectorFrameHandler
- Optimized delay handling between camera frames in
Version 1.79.0 (08 Feb 2021)
- 🎉 New:
IdScanResultfromIdCardScannernow has additionalmrzFieldsandmrzCheckDigitswhich are extracted automatically if the MRZ was detected on the document
- 🚀 Improvements:
- Massive improvements in the quality of the
IdCardScanner
- Massive improvements in the quality of the
- 🐞 Bug fixes:
MRZScannernow recognizesKindOfDocument,PINCode,LanguageCode,VersionNumberfields correctly. Previously they were detected asUnknown
- ⚠️ Breaking changes:
- A call to
.prepareIdCardScannerBlobs(true)method inScanbotSDKInitializerwas removed. Now it is not needed to prepare the blobs for the usage ofIdCardScannerand only requires a gradle dependency
- A call to
- 🚙 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 toScanbotPDFRenderer - Added additional parameter in method
renderDocumentFromImages(imageFileUris: List<Uri>, sourceFilesEncrypted: Boolean = false, pageSize: PDFPageSize): File?inPDFRendererclass for support of encrypted source images. - Added additional parameter in methods
recognizeTextFromUris(imageFileUris: List<Uri>, sourceFilesEncrypted: Boolean = false, languages: Set<Language>): OcrResultansrecognizeTextWithPdfFromUris(imageFileUris: List<Uri>, sourceFilesEncrypted: Boolean = false, pageSize: PDFPageSize, languages: Set<Language>): OcrResultinOpticalCharacterRecognizerclass 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
- Further fixes for the "double scan" issue with the RTU UI
Version 1.77.1 (12 Jan 2021)
- 🐞 Bug fixes:
- Fixed a concurrency issue (
RejectedExecutionException) for the frame handling inCameraView - Fixed a double scan issue for
BarcodeScannerActivityRTU screen - Fixed a
ShutterButtonanimation
- Fixed a concurrency issue (
Version 1.77.0 (17 Dec 2020)
- 🎉 New:
OpticalCharacterRecognizernow has arecognizeTextFromBitmapmethod which allows to run OCR process on a bitmap- Added Front Facing Camera support (BETA). Call
setCameraModule(CameraModule.FRONT)inScanbotCameraVieworScanbotCameraXViewto enable it. - Added
CAMERA_MODULEconfiguration parameter for RTU screens - Added
setDetectorTypeconfiguration 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
PageFileStorageclass with overloadedremoveAll(pageIds: List<String>)method: deletes all files for pages with given IDs - Improved detection of ITF barcodes
- Enhance
- 🐞 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.tiffwriterpackage path is now changed toio.scanbot.sdk.tiff- In TIFFWriter class
binarize- option was replaced withbinarizationFilter: ImageFilterTypeoption which accepts only binarization filters - Changed package name
io.scanbot.sdk.ui.view.camera.configuration.WorkflowScannerConfigurationParamstoio.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:
BarcodeScannerActivityandBatchBarcodeScannerActivitynow support a possibility to set a timeout viasetAutoCancelTimeoutmethod in seconds. You will getCANCELLATION_REASON_TIMEOUT= true as an extra forRESULT_CANCELEDin 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
ScanbotBarcodeDetectorML 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 useScanbotBarcodeDetector. - The obsolete method
ScanbotSDKInitializer#prepareBarcodeScannerBlobs(prepareBlobs: Boolean)was removed from the SDK API.
- The ML blobs are now available as a separated library
- 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
- DC scanner uses barcode scanner under the hood, so it is also needed to add a dependency on
- Barcode Scanner:
Version 1.75.5 (19 Nov 2020)
- 🎉 New:
- New configuration parameter
UseButtonsAllCapsfor all the RTU UI screens which controls whether buttons should use ALL CAPS
- New configuration parameter
Version 1.75.4 (18 Nov 2020)
- 🐞 Bug fixes:
- Fixed
WorkflowScannerActivitynot picking given colors and texts configuration
- Fixed
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
BatchBarcodeScannerActivitywas picking only the first barcode on each scanned frame - Fixed rendering of the PDF without OCR for PNG storage format
- Fixed a bug when
- 🚙 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
MagnifierViewdrawing
- Fixed
Version 1.75.0 (29 Oct 2020)
- 🎉 New:
- Added
FinderPictureCallbackthat automatically crops the visibleFinderOverlayViewzone and fix an orientation of the snapped image
- Added
- 🚀 Improvements:
- Changed
PictureCallbackimplementation - it is an abstract class that implementsBasePictureCallbackinterface - Improved recognition of barcodes when scanning matrix barcodes from a short distance
- Changed
- 🐞 Bug fixes:
- Fix possible crash in
SimpleOcrPerformerwhen no text data detected on the image - Added the "force fetch" mechanism for
ScanbotBarcodeDetectorML blobs.
- Fix possible crash in
- 🚙 Under the hood:
- Update compile SDK of the library to 29
Version 1.74.2 (16 Oct 2020)
- 🐞 Bug fixes:
- Make
IdCardTextFieldResultfields fromIdCardScannerActivitypublic
- Make
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
TextDataScannerActivityRTU UI for the convenient use of our new Data Scanner SDK. - Optical pinch-to-zoom feature for the
CameraViewand the digital zoom feature (seeZoomFinderOverlayView) - Consumer proguard rules are now integrated into the library
- New animations during the document detection and page snapping.
- Snapped
Pages in RTUDocumentScannerActivityandWorkflowScannerActivityare stored in the temp directorydraft_snapping_pagesin 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 withCleaner#cleanUpAllDraftPagesData(). - New parameter
ocrResolutionLimitin the configuration forGenericTextRecgonizerwhich 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 theImageFilterType.BACKGROUND_CLEAN(a filter to remove a noise on the background). The usage of those filters requires setting the initialization property toScanbotSDKInitializer.imageProcessorType(ImageProcessor.ML_BASED)and a new gradle dependency IdCardScannernow has anorientationparameter for thescanBitmapmethodIdCardScannernow has anacceptedSharpnessScoreparameter 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 setIdCardScannerFrameHandlernow has ashouldRecognizeparameter to specify if it should recognize fields values or just return a status- New
IdCardAutoSnappingControllerto 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
setPassportPhotoSaveCallbackmethod in configuration that accepts custom callback'sClassto save passport photo in a secure way. See example FormattedBarcodeDataMapper'sDEFAULTimplementation was removed.nullis new default value forBatchBarcodeScannerActivity.newIntentmethod instead. See example
- Introduce
- 🚀 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:
MRZRecognitionResultparsed 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
CroppingActivitycomponent. SeehintTitleandhintTitleColorproperties inCroppingConfiguration
- Added a view with a hint for
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
setAutoSnappingSensitivitywhich was ignored in previous versions
- Fixed the use of
- 🚙 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
MRZScannerand getMRZRecognitionResultfrom it
- Now it is possible to parse a string with MRZ data with
- 🐞 Bug fixes:
- Fixed overlapping buttons on
CroppingActivity - Fixed wrongly displayed toast before the camera permission was granted on
IdCardScannerActivity - Fixed hanging
CameraViewafter pausing if the orientation was not locked
- Fixed overlapping buttons on
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
IdCardScannerActivityfor the convenient use of theIdCardScanner
- New RTU UI screen
-
🚀 Improvements:
- Optimized camera view initialization
-
🐞 Bug fixes:
- Fixed a crash in
DocumentAutoSnappingControllerwhen 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
- Fixed a crash in
Version 1.71.0 (30 Jul 2020)
-
🎉 New:
- Introduce
IdCardScannerthat 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
patientInfoFieldsanddcFormTypeare available in the result of the DC certificate scanning
- Introduce
-
🐞 Bug fixes:
- Removed outdated field
EditPolygonImageView.DEFAULT_POLYGON
- Removed outdated field
Version 1.70.4 (17 Jul 2020)
- 🐞 Bug fixes:
- Fixed animation bug in
AdaptiveFinderOverlayView
- Fixed animation bug in
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.PageEntityfor internal purposes. Useio.scanbot.sdk.persistence.Pageinstead for all classes available from Scanbot SDK. - Refactor auto-snapping components, renamed
AutoSnappingControllertoDocumentAutoSnappingController
-
Removed classes:
- Removed deprecated
io.scanbot.sdk.ocr.process.TextRecognitionfromScanbotSDKinstance - Removed deprecated
io.scanbot.sdk.docprocessing.DocumentProcessorfromScanbotSDKinstance as deprecated - Removed deprecated
io.scanbot.sdk.docprocessing.draft.DraftExtractorfromScanbotSDKinstance as deprecated - Removed deprecated
io.scanbot.sdk.persistence.PageFactoryfromScanbotSDKinstance as deprecated
- Removed deprecated
Version 1.70.2 (8 Jul 2020)
- 🎉 New:
- Beta: Blurriness estimator
BlurEstimator - Added new barcode format
BarcodeFormat.MSI_PLESSEY
- Beta: Blurriness estimator
Version 1.70.1 (17 Jun 2020)
- 🐞 Bug fixes:
- Fixed nullability for return values for
ChequeRecognizer,ContourDetectorandMRZRecognizer - Fixed possible crash in
EditPolygonView. If you are using this classical component, it is highly recommended to update from 1.70.0
- Fixed nullability for return values for
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
OperationforImageProcessor - (BETA) New
ScanbotCameraXViewwith CameraX-based implementation ofScanbotCameraView - 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 theandroidblock, right afterbuildTypes, add the following snippet to your build.gradle file:
- Added ability to scan multiple barcodes in a row with the new RTU UI Component
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
BarcodeScannerActivityandMrzScannerActivitywere 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, useprocessBitmap()instead- Update to Language class to make ability of setup languages by iso1, iso3, and tesseract codes.
- Now it is possible to detach
AutoSnappingControllerafter usuage to avoid memory leaks when reusing aContourDetectorFrameHandler
-
⚠️ Moved classes:
- Moved document processing classes from
net.doo.snap.processpackage toio.scanbot.sdk.docprocessing - Moved
net.doo.snap.ui.MultiplePolygonsViewtoio.scanbot.sdk.ui.multipleobjects.MultiplePolygonsView - Moved OCR feature classes from
net.doo.snap.processpackage toio.scanbot.sdk.ocr.process - Moved
net.doo.snap.process.util.DocumentDrafttoio.scanbot.sdk.entity.DocumentDraft - Moved
net.doo.snap.ui.EditPolygonImageViewtoio.scanbot.sdk.ui.EditPolygonImageView - Moved
net.doo.snap.ui.MagnifierViewtoio.scanbot.sdk.ui.MagnifierView - Moved
net.doo.snap.ui.PolygonViewtoio.scanbot.sdk.ui.PolygonView - Moved
net.doo.snap.camera.AutoSnappingController.AutoSnappingCallbacktoio.scanbot.camera.BaseAutoSnappingController.AutoSnappingCallback
- Moved document processing classes from
-
⚠️ Renamed packages:
- Renamed
net.doo.snap.lib.detectorpackage toio.scanbot.sdk.core.contourdetector - Renamed
net.doo.snap.payformscannerpackage toio.scanbot.sdk.payformscanner - Renamed
io.scanbot.payformscanner.modeltoio.scanbot.sdk.core.payformscanner.model - Renamed
net.doo.snap.mrzscannerpackage toio.scanbot.sdk.mrzscanner - Renamed
net.doo.snap.dcscannerpackage toio.scanbot.sdk.dcscanner - Renamed
net.doo.snap.chequescannerpackage toio.scanbot.sdk.chequescanner - Renamed
net.doo.snap.intelligencepackage toio.scanbot.sdk.ocr.intelligence - Renamed
net.doo.snap.entitytoio.scanbot.sdk.entity - Renamed
net.doo.snap.persistencetpio.scanbot.sdk.persistence - Renamed
net.doo.snap.blobtoio.scanbot.sdk.blob - Renamed
net.doo.snap.utiltoio.scanbot.sdk.util - Renamed
net.doo.snap.intelligencetoio.scanbot.sdk.intelligence - Renamed
net.doo.snap.cameratoio.scanbot.sdk.camera - Renamed
io.scanbot.barcodescanner.model.BarCodeScannerDocumentFormattoio.scanbot.barcodescanner.model.BarCodeFormattedResult - Renamed
io.scanbot.sdk.entity.Pagetoio.scanbot.sdk.entity.PageEntity
- Renamed
-
⚠️ Removed classes:
- Removed deprecated classes
net.doo.snap.ScanbotSDKandnet.doo.snap.ScanbotSDKInitializer. Please use the equivalent classes from the packageio.scanbot.sdk.*. - Removed deprecated methods in class
io.scanbot.sdk.core.contourdetector.ContourDetector. Please useImageProcessorinstead. See [[Image processing and Filters]] for more details.
- Removed deprecated classes
Version 1.61.1 (8 Jun 2020)
- 🚀 Improvements:
- The behavior of Detect/Reset buttons on the
CroppingActivitywas improved
- The behavior of Detect/Reset buttons on the
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
ContourDetectorinstance - 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) forHealthInsuranceCardRecognizer - 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
ImageProcessorandOperationchains mechanism for the image processing - Added Tunes for Image Filters
- Added
shutterSoundEnabledconfiguration option forDocumentScannerActivityandWorkflowScannerActivityin 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.CAMERApermission in RTU UI screens - Improved OCR by binarizing image before processing. To disable this, set
OcrSettings.binarize = falseduring SDK initialization ScanbotBarcodeDetector.decodeWithState()is now deprecated. Please, useScanbotBarcodeDetector.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#GoogleVisionandScanbotBarcodeDetector.BarcodeDetectorType#ZXingdetectors
- 🐞 Bug fixes:
- Fixed the live-detection for
ChequeScanner
- Fixed the live-detection for
Version 1.56.3 (14 Jan 2020)
- 🐞 Bug fixes:
- Fixed the camera issue in RTU UI
DocumentScannerActivity.
- Fixed the camera issue in RTU UI
Version 1.56.2 (13 Dec 2019)
- 🐞 Bug fixes:
- Fixed the compatibility issue with
kotlin-kapt.
- Fixed the compatibility issue with
Version 1.56.1 (12 Nov 2019)
- 🐞 Bug fixes:
- Re-enabled XML drawables support for the
MagnifierView.
- Re-enabled XML drawables support for the
Version 1.56.0 (25 Oct 2019)
- 🚀 Improvements:
- MRZ Scanner: Added all checkdigits in MRZ result as additional fields - see
MRZRecognitionResult.checkDigits.
- MRZ Scanner: Added all checkdigits in MRZ result as additional fields - see
- 🐞 Bug fixes:
- Fixed NPEs in the
EditPolygonImageViewwhen trying to use it without theMagnifierView. - 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).
- Fixed NPEs in the
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.
- Support for further TIFF compressions like CCITTFAX4, ADOBE_DEFLATE, etc. See the enum
- Added new features in
- 🚀 Improvements:
- Improved API of the
TIFFWriterclass:- Deprecated some methods like
writeBinarizedSinglePageTIFFFromFile,writeSinglePageTIFFFromFile,writeBinarizedMultiPageTIFFFromFileList,writeMultiPageTIFFFromFileList. Instead please use the new unified and simplified methods based on TIFF parametersTIFFImageWriterParameters- e.g.writeTIFFFromFiles(List<File> sourceFiles, File targetFile, TIFFImageWriterParameters parameters).
- Deprecated some methods like
- Improved API of the
- 👉 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.
- Added a new image filter
- ⚠️ Breaking Changes:
- The API of the
BarcodeScanningResultclass has changed a little. It now contains multiple results as a list ofBarcodeItems.
- The API of the
- 🐞 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.
- Removed dependencies to the deprecated library
- 🐞 Bug fixes:
- Removed permission
READ_PHONE_STATEused in a sub library of the Scanbot SDK.
- Removed permission
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.
- Added a new config property in the RTU UI Document Scanner Component:
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_64architecture. - 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(..)inDisabilityCertificateRecognizeras an alternative detection approach to therecognizeDCBitmap(..)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_BINARIZATIONandIMAGE_FILTER_EDGE_HIGHLIGHT
- Implemented new feature "Required Aspect Ratios" in Classical Components to restrict document detection to given aspect ratios
-
🚀 Improvements:
- Improved recognition of pay cheques (
ChequeScanner)
- Improved recognition of pay cheques (
-
🐞 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
Pageimages 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.
- AndroidX: Since AndroidX fully replaces the Android Support Libraries (
-
🚀 Improvements:
- Support for
RGBA_F16Bitmaps (https://developer.android.com/reference/android/graphics/Bitmap.Config#RGBA_F16). Auto conversion to compatible Bitmaps. - Updated some third-party libs to the latest versions (e.g. Kotlin 1.3.0, etc).
- Cleaned up some dependencies to avoid potential conflicts on implementation.
- Support for
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)
- Small fixes in
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
orientationLockModein RTU Cropping UI
- ⚠️ Breaking changes:
- The config parameter
pageCounterButtonTitlein RTU Document Scanner UI now requires a placeholder "%d" for the number of pages (e.g.pageCounterButtonTitle: "%d Page(s)")
- The config parameter
- 🐞 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 filemrz.xml), which is included in the SDKio.scanbot:sdk-package-3and can be fetched viablobManager.fetch(blobFactory.mrzCascadeBlob(), false)!
- All MRZ Scanner and Recognizer components (
Version 1.35.0 (10 Sep 2018)
- 🎉 New:
- Cheque Scanner - Real-time extraction of account & routing number
- Added a new config parameter
rotateButtonHiddenfor the RTU UICroppingActivity
- ⚠️ Breaking change: Added file format extension (.jpg or .png) for RTU UI
Pageimages:- 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())...).
- Affects the image files created by all RTU UI components, like
- 🐞 Bug fixes:
- MRZ Recognizer: fixed extraction of the field
dateOfBirthfrom some French ID cards
- MRZ Recognizer: fixed extraction of the field
- 🚀 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.traineddatainstead ofdeu.traineddata!
Version 1.33.3 (19 Jul 2018)
- Removed
allowBackupflag in AndroidManifest.xml inio.scanbot:sdk-package-uilibrary
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.ScanbotSDKInitializerandio.scanbot.sdk.ScanbotSDK
Version 1.31.2 (21 Jun 2018)
- Several fixes in
io.scanbot.sdk.ScanbotSDKInitializerandio.scanbot.sdk.ScanbotSDK
Version 1.31.1 (18 Jun 2018)
- Added functionality to apply a real orientation lock in
ScanbotCameraView. Use the new methodscameraView.lockToLandscape(boolean lockPicture)orcameraView.lockToPortrait(boolean lockPicture)to lock the UI as well as the taken picture to a desired orientation. - Fixed a bug with shutter sound in
ScanbotCameraViewon 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.- ⚠️ Please note: In August 2019, Google Play Store will require that new apps and app updates with native libraries provide 64-bit versions in addition to their 32-bit versions. (https://android-developers.googleblog.com/2017/12/improving-app-security-and-performance.html)
- We strongly recommend to upgrade the Scanbot SDK for Android to the latest version to benefit from the full support of
arm64-v8alibs.
- 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-uicontaining the new Ready-To-Use UI Components. - Added a new demo project
ready-to-use-uicontaining example code for the new Ready-To-Use UI Components.
- Published a new package
- 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.snapJava package. Please use the equivalent classes from the new Java packageio.scanbot.sdk. (e.g.net.doo.snap.ScanbotSDKInitializer=>io.scanbot.sdk.ScanbotSDKInitializer,net.doo.snap.ScanbotSDK=>io.scanbot.sdk.ScanbotSDK, etc.)
- Deprecated some classes in the
Version 1.28.7
- Added
setIgnoreBadAspectRatio(boolean ignoreBadAspectRatio)method for theAutoSnappingController. - Improved
AutoSnappingControllerprecision.
Version 1.28.6
- Updated Google Mobile Vision library version to 12.0.1.
- Optimized
ScanbotCameraViewperformance.
Version 1.28.5
- Added new attribute
magnifierEnableBoundingtoMagnifierView, which allowing to enable/disable bounding ofMagnifierViewto the edge of screen. - Fixed issue with paddings on a
MagnifierView
Version 1.28.4
DCScannerdetection quality improvements.
Version 1.28.3
- Scanbot SDK could be reinitialised with the new SDK license.
MagnifierViewshould not be the same size asEditPolygonImageView, but have to have the same aspect ratio.
Version 1.28.2
- Removed deprecated attributes
magnifierCrossSize,magnifierCrossStrokeWidth,magnifierStrokeWidthandeditPolygonMagnifierfromMagnifierViewsince they don't have any effects on the view. To customize theMagnifierViewplease use the attributesmagnifierImageSrc,magnifierRadiusandmagnifierMargin.
Version 1.28.1
- Exposed the method
setImageRotation()inMagnifierView.
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.