Changelog for the Android Document Scanner 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
minimumNumberOfRequiredFramesWithEqualRecognitionResult
that 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_CROP
is 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
documentQuality
whenscreens.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
minConfirmationsStandaloneEAN
inBarcodeAccumulationConfiguration
was moved and renamed to the fieldminimumNumberOfRequiredFramesWithEqualRecognitionResultExtensionless
inBarcodeFormatUpcEanConfiguration
.
- The field
- Barcode Scanner:
Version 7.1.1 (27 Aug 2025)
- 🎉 New:
- General:
- Added setters for
UseCaseResolutionSize
limits 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
extractedDocument
was not being generated for GS1 HandlingDecodeStructure
andDecodeFull
. - 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
ScanbotCameraXView
when the camera selected a square resolution on some Samsung and Xiaomi devices. - Prevent throwing exception when
/sys/devices/system/cpu/cpufreq
doesn'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.showReviewScreenOnStart
that 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.DocumentDataExtractorActivity
to 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
Series
field. - 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
extendedQuad
andextendedQuadNormalized
fields to theBarcodeItem
class to represent extended quads for 1D barcodes. BarcodeItem
has a new fieldrawBytesEncodings
that contains the precise character encoding information ofrawBytes
.BarcodeItem
has a new fieldstructuredAppendInfo
for messages split across multiple barcodes.BarcodeScannerConfiguration
has a new fieldaccumulationConfig
which allows the accumulation of barcodes over multiple frames in live mode.BarcodeItem
has a new fieldglobalIndex
to identify a barcode across multiple frames.- RTU-UI v2: Added
selectedZoomFactor: Double
metadata field inBarcodeScannerUiResult
with 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
. ImageRef
in Java wrapper can now be efficiently created from ajava.io.InputStream
.- Added
setImageCaptureEnabled(enabled: Boolean)
method toScanbotCameraXView
to enable or disable image capture functionality. - Added more debug level logging to
ScanbotCameraXView
events. - 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
CameraConfiguration
for limit the detection fps inScanbotCameraXView
. UseCameraConfiguration.fpsLimit = 4
to 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
parsedData
correctly.
- 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
ScanbotCameraXView
preview 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
null
to be returned as a confidence of empty fields.
- Fixed an issue causing
- Document Data Extractor:
- When
IssuerNumber
is excluded on European health insurance cards, this no longer leads to theIssuerName
being incorrectly excluded. - MRZ fallback now also works when no accepted document types are selected.
- When
- Credit Card Scanner:
- Setting the confirmation method to
INTERPOLATE
when 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.
DeDriverLicenseFront
andDeDriverLicenseBack
are renamed toEuropeanDriverLicenseFront
andEuropeanDriverLicenseBack
respectively.
- 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
,BarcodeScannerView
andBarcodeScanAndCountView
. See more hereICameraViewConfiguration#setAnalyzerFpsLimit(fps: Float)
.
- Added an option to limit the analyzer FPS processing for
- 🚀 Improvements:
- Updated custom
ScanbotCameraXConfigProvider
logic 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.success
as 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
ScanbotCameraXView
with a square aspect ratio.
- Document Scanner:
- ⚠️ Breaking changes:
- MRZ Scanner:
- Removed outdated
detectMrz: Boolean
flag 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
. ContourDetector
feature was renamed toDocumentScanner
and 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
ImageRef
feature. - Image Processor can now be created with an
ImageRef
object. 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
BarcodeScannerEngineMode
calledNEXT_GEN_FAR_DISTANCE
which is optimized for scanning from far distances. - Introduced a new engine mode
NEXT_GEN_LOW_POWER_FAR_DISTANCE
that 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
. BarcodeItem
has a newsizeScore
field 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 floatminimumSizeScore
that is set to 0 by default. All barcodes withsizeScore < minimumSizeScore
are ignored. Note thatminimumSizeScore
can be configured differently for each barcode format.- Added a flag
addAdditionalQuietZone
toBarcodeFormatConfigurationBase
. 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 flagaddAdditionalQuietZone
is 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
parsedData
attributes. See more here:FieldParsedData
. - Generic document dates are parsed into a
YYYY-MM-DD
date format according to ISO 8601. - Generic document countries are parsed as in the formats
ISO_COUNTRY_NAME
,ISO_COUNTRY_ALPHA_2
,ISO_COUNTRY_ALPHA_3
andISO_COUNTRY_NUMERIC
according 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
ResultAccumulationConfiguration
now supports a newconfirmationMethod
field. - Document Scanner: added
OK_TOO_DARK
detection status. - Document Quality Analyzer: can now also return the orientation of the document in steps of 90 degrees. Enabled by setting
DocumentQualityAnalyzerConfiguration.detectOrientation
to 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
QualityHeatmap
as a part of theDocumentQualityAnalyzerResult
. - Added support for non-ICAO conformant machine readable zones on US border crossing cards.
- Added properties to
MrzScannerConfiguration
andCreditCardScannerConfiguration
that allow to set if crops should be returned. - Added a flag
keepScreenOn
to 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
strictMode
for 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 supportstrictMode
forQR_CODE
,MICRO_QR_CODE
,RMQR_CODE
,PDF_417
,MICRO_PDF417
, andGS1_COMPOSITE
. - RTU-UI v2: added support of
minimumSizeScore
property 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
BarcodeScannerConfiguration
in 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
ITF
barcode format. - Improved quiet zone checks for the barcode formats
ITF
,CODE_11
,MSI_PLESSEY
,IATA_2_OF_5
,INDUSTRIAL_2_OF_5
andCODE_25
. - We additionally allow for checking
maximumTextLength
for the barcode formatsCode11
,Code39
,Code93
,Code128
andCodabar
. - 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
acceptedAspectRatioScore
andaspectRatios
in the scanner configuration. - Document Scanner: added
OK_ORIENTATION_MISMATCH
status - returned when screen and document orientations don't match. - Document Scanner:
OK_ORIENTATION_MISMATCH
can be disabled by settingignoreOrientationMismatch
to 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
DocumentNumber
in the MRZ field and the Sequence Number as thePersonalNumber
field. - 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_CODE
barcode format with wrong bits in numeric mode. - Fixed
minimumTextLength
forITF
barcode 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
Code39
barcode format. - For
Code11
barcode 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.addAdditionalQuietZone
is enabled. - RTU-UI v2: fixed issue where
FindAndPickScanningMode().sheetContent.barcodeItemImageVisible
was 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
MaidenName
andSurname
results 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
,TiffGenerator
andOcrEngine
by adding temporary local caching mechanism for the input uris. File copies would be deleted after processing. - Fixed a crash when adding/removing frameHandlers in
ScanbotCameraX
in 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
RGBA
values 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.BarcodeFormat
enum. All other barcode format enums were removed. - Replaced class
io.scanbot.barcodescanner.model.BarcodeType
withio.scanbot.sdk.barcode.BarcodeFormat
. - Renamed enum
MSIPlesseyChecksumAlgorithm
toMsiPlesseyChecksumAlgorithm
. - Barcode Document Format is represented by
io.scanbot.sdk.barcode.BarcodeDocumentFormat
enum. - Removed class
io.scanbot.sdk.ui_v2.common.mappers.AspectRatio
, please useio.scanbot.sdk.common.AspectRatio
. - RTU-UI v2: refactored
BarcodesExtensionFilter
enum and synchronized withUpcEanExtensionBehavior
enum from Barcode Scanner Classic component API. - Replaced
acceptedDocumentFormats
list parameter inBarcodeScannerConfiguration
withextractedDocumentFormats
list of document formats andonlyAcceptDocuments
flag. - 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_DOCUMENT
status from theDocumentQuality
enum 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-assets
assets library tosdk-textpattern-assets
. - Removed
shouldRecognize
property from theextract*()
methods in Document Data Extractor. Please use the newDocumentDataExtractionMode
configuration instead. See more here:DocumentDataExtractionMode
. - Renamed
sdk-genericdocument-assets
assets library tosdk-documentdata-assets
. - Renamed class
MRZScanner
toMrzScanner
. - 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.document
package. - Changed the engine mode API representation for Document Scanner. The engine modes now are respectively named
LEGACY
forEDGE_BASED
andML
forML_BASED
. See more here:DocumentScannerEngineMode
. - Removed
context: Context
property fromDocumentScannerActivity.ResultContract
constructor. - Document Scanner RTU-UI v2:
screens.camera.cameraConfiguration.ignoreBadAspectRatio
parameter renamed toignoreOrientationMistmatch
. - Document Scanner RTU-UI v2: changed
acceptedSizeScore
andacceptedAngleScore
range of values from0..1
to0..100
. - Document Scanner RTU-UI v2: moved parameters related to the detection process (
requiredAspectRatios
,ignoreOrientationMistmatch
,acceptedBrightnessThreshold
,acceptedSizeScore
,acceptedAngleScore
andacceptedAspectRatioScore
) fromscreens.camera.cameraConfiguration
toscreens.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
recognize
methods 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.ImageRotation
class. - 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
LineSegmentFloat
class. - 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
DocumentQualityAnalyzer
instead. - Default MRZ Scanner result handling mode is
Reject
. Result only gets counted assuccess
if every field isValid
orConfirmed
. - VIN Scanner RTU-UI v1: changed
TextPatternScannerResult
result type toVinScannerResult
type.
- 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
BarcodePolygonView
duringonDestroy
when the AR overlay is displayed. - Fixed nested views of
ScanbotCameraXView
when 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
AesGcmEncryptedFileIoProcessor
when 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
ScanbotCameraX
resolution selection strategies for scanning and preview cases. - Added new encryption
AesGsm
to encrypt separate files with standalone keys. UseAesGcmEncryptedFileIoProcessor
asFileIoProcessor
interface.
- 🚙 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
NoFeedbackMode
to disable the animation when a page is captured and the document quality check is disabled. - Added a new property
hardwareButtonsEnabled
that enables snapping from the hardware volume buttons and the new hardware camera control button (enabled by default).
- Added
- Added option
MultipleScanningMode.allowEmptySubmission
to allow submission of an empty barcode list in the Multiple Barcodes use case in RTU-UI v2.
- 🚀 Improvements:
- Document detector:
- Improved detection speed and robustness against orientation changes.
- Improved robustness against picking up random contours.
- Improved robustness against documents with colored corners, booklets, handheld documents and cards, documents near edges of tables and overlapping documents.
- 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
BarcodeScannerActivity
RTU UI v2.0, where the mapped image wasn't shown on the AR Overlay until the same barcode appeared in the list below.
- RTU UI v2.0 Document Scanner:
- ⚠️ Breaking changes:
- Changed the type of the
rotation
field in thePage
class to theio.scanbot.sdk.core.ImageProcessor
enum.
- 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: Document
as an input parameter inPDFRenderer
interface. - Added
render()
methods which take optionaloutputFile: File
as an input parameter inPDFRenderer
interface. - Added
recognizeTextWithPdfFrom*()
methods which takedocument: Document
as an input parameter inOpticalCharacterRecognizer
interface. - Added
recognizeTextWithPdfFrom*()
methods which take optionaloutputFile: File
as an input parameter inOpticalCharacterRecognizer
interface. - Added
writeTIFF()
methods which takedocument: Document
as an input parameter inTIFFWriter
. - Added
writeTIFF()
methods which take optionaloutputFile: File
as an input parameter inTIFFWriter
. - Added new property
addAdditionalQuietZone
toBarcodeScannerAdditionalConfig
. - Added a new predefined collection of barcodes,
BarcodeFormat.POSTAL
, which includes barcodes used in the postal industry.
- 🚀 Improvements:
- Improved
MagnifierView
. - AR overlay is enabled by default for
FindAndPickScanningMode
in Barcode Scanner RTU UI v2 screen. - For CODE_128 and ITF, we improved the recognition of barcodes generated by defective thermal printers that do not print certain black bars correctly.
- 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.legacy
package. - Renamed methods to
render()
inPDFRenderer
interface. - Changed
render()
method signature inPDFRenderer
interface. Now it takes an array of Uris instead of the List of Uris. - Renamed
writeTIFFFromImages()
andwriteTIFFFromFiles()
methods towriteTIFF()
inTIFFWriter
. - Renamed
writeTIFFFromImages(): ByteArray
methods totiffByteArray(): ByteArray
inTIFFWriter
. - Document scanner asset dependency
io.scanbot:sdk-ml-docdetector
was renamed toio.scanbot:sdk-ml-docdetector-assets
. - Renamed
io.scanbot.sdk.process.model.DocumentQualityResult
toio.scanbot.sdk.process.model.DocumentQuality
- Renamed
io.scanbot.sdk.core.contourdetector.DetectionStatus
toio.scanbot.sdk.core.contourdetector.DocumentDetectionStatus
- The usage of asset dependency
io.scanbot:sdk-mc-assets
and also the usage of OCR fromio.scanbot:sdk-package-2
now 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
,GenericDocumentRecognizerFrameHandler
andGenericDocumentRecognizerActivity
RTU UI screen. HealthInsuranceCardScanner
,HealthInsuranceCardScannerFrameHandler
, andHealthInsuranceCardScannerActivity
were deprecated. Please useGenericDocumentRecognizer
,GenericDocumentRecognizerFrameHandler
andGenericDocumentRecognizerActivity
instead.- Added
ResultAccumulationConfig
for the generic document recognition API. - Added support for new barcode types Maxicode, rMQR code, Code 11 and Code 32.
- Added properties
australiaPostCustomerFormat
,useIATA2OF5Checksum
anduseCode11Checksum
toBarcodeAdditionalParameters
,BarcodeScannerAdditionalConfiguration
for RTU UI screen andBarcodeRecognizerConfiguration
for RTU UI v2 screen. - Added
AustraliaPostCustomerFormat
enum to represent formats of the barcode data for the Australian Post customer barcode. - Added
resetPolygonState()
inBarcodePolygonView
to 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
resample
flag toresamplingMethod: io.scanbot.pdf.model.ResamplingMethod
inPdfConfig
class. - The Generic Document Recognizer and its UI components now use the new Scanbot OCR engine under the hood. In order to scan for generic documents the additional OCR language data bundle is no longer required.
- Improved generic document recognition on static images.
- Improved document detection on booklet documents.
- Improved performance of
DocumentQualityAnalyzer
. - Added support for Extended Channel Interpretation (ECI) for Data Matrix and Aztec.
- Improved GS1 string handling with new modes for decoding and validation. See
Gs1Handling
. ScanbotCameraXView
now logs more information throughout its lifecycle (use filter byScanbotCameraXView
tag). Logging is enabled only in the 'debug' builds.- Improved detection of UPC/EAN barcode extensions in live mode.
- The barcode scanner now supports transposed (mirrored/flipped) Aztec barcodes.
- Changed
- 🐞 Bug fixes:
- Removed redundant dependency on
io.scanbot:sdk-licenseplate-assets
insideio.scanbot:sdk-generictext-assets
. - Fixed R8 obfuscation config for SDK logging classes.
- Fixed a bug in
ScanbotColor
where settingisArgb
to 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.X
instead. - Removed enum
BarcodeDensity
. - Removed property
codeDensity
fromBarcodeAdditionalParameters
. - Removed enum values
VALIDATE
andDECODE
fromGs1Handling
and replaced them byDECODE_STRUCTURE
,DECODE_FULL
,VALIDATE_STRUCTURE
andVALIDATE_FULL
. - Removed property
sharpnessAcceptanceFactor
fromGenericDocumentRecognizer
andGenericDocumentRecognizerConfiguration
for RTU UI screen. - Removed redundant fields
barcodeImagePath
andbarcodePreviewFramePath
fromResult
class in Barcode Scanner RTU UI v2. - Changed
barcodesRegexFilter
config behavior for Barcode Scanner RTU UI v2. Barcodes are accepted if the barcode data contains the part that matches the regex. - Replaced
standard
andvalidationStatus
fields withvalidationErrors
in theGS1.Element
class.
- Removed ML assets library for Document Quality Analyzer -