Changelog for the Android Document Scanner SDK
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
.
- 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 -
- π Under the hood:
- Updated 3rd-party libraries:
- added
gs1-syntax-dictionary
lib
- 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
ScanbotColor
where settingisArgb
to true, resulted in a wrong color.
- Fixes a bug in
Version 5.1.1 (28 May 2024)β
- π New:
- Added new property
barcodesRegexFilter
toBarcodeRecognizerConfiguration
for Barcode Scanner RTU UI v2 screen. - Added support of the new 'Find and Pick' barcode scanning mode, see
FindAndPickScanningMode
. - Added support for continuous scanning in the
BarcodeScannerView
composable. - Added new setter
setLiveDetectionParameters(parameters: EhicRecognizerParameters)
inHealthInsuranceCardScanner
to adjust the scanning process. - Added new setter
setRecognizerParameters(recognizerParameters: EhicRecognizerParameters)
inHealthInsuranceCardScannerConfiguration
to adjust the scanning process in EHIC scanner RTU UI screen. - Added support for new barcode format
BarcodeFormat.MICRO_PDF_417
. - Added support for parsing of AAMVA Certificate of Title for motor vehicle barcodes.
- Added property
acceptedBrightnessThreshold
toContourDetector
to control the accepted brightness level for contour detection (same property added toDocumentScannerConfiguration
andFinderDocumentScannerConfiguration
in RTU UI andContourDetectorFrameHandler
). - Added new class
BarcodeTextLocalization
and new propertylocalization
toBarcodeScannerConfiguration
to 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
SoundController
crash on Android API <= 23. - Fixed
VinScannerConfiguration.setFinderTextHintColor(color)
not being applied to the text hint. - Fixed null pointer exception for
PageFileStorage
operations. - Fixed behavior of 'Update' Button in Manual Count Edit Dialog for Barcode Scanner RTU UI v2 screen.
- Fixed
- β οΈ Breaking changes:
- Replaced the class
BarCodeFormattedResult
byGenericDocuments
class for barcode document parser output. - Added new classes for all the barcode document formats. See the API documentation for more details.
- All
HealthInsuranceCard
prefixes in result model class names were replaced withEhic
(EhicRecognitionResult
,EhicDetectionStatus
, etc.). - Deleted deprecated
isLicenseActive
andisLicenseValid
fromScanbotSDK
. Please uselicenseInfo.isValid
instead. - Renamed
ScanbotPalette
toPalette
for consistency with RTU UI v2 configuration classes. BarcodeExtensionsFilter
now accepts EAN and UPC barcodes with extensions only and all other formats without extensions.- Made the property
type: BarcodeFormat?
inio.scanbot.sdk.ui_v2.barcode.configuration.BarcodeItem
optional. - Changed the type of numeric parametric filter parameters from Float to Double.
- Changed default UI behavior in Barcode Scanner RTU UI v2. If
BarcodeMappedData.barcodeImage
inBarcodeItemMapper
is empty - placeholder image will be shown. IfBarcodeMappedData.barcodeImage
is set withBarcodeMappedDataExtension.barcodeFormatKey
constant - 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
ScanbotSDK
andScanbotBarcodeScannerSDK
API to theLicensableSdk
andBarcodeScanningSdk
interfaces. - Migrated project to AGP 8.x.
- Added more rules for R8 shrinker to work adequately with AGP >= 8.
- Fixed pro-guard rules for
DocumentQualityAnalyzer
. - Added an R8 consumer rule to keep the internals of
io.scanbot.core.processor.ImageProcessor
from shrinking/obfuscating. - Added
Theme.AppCompat.NoActionBar
theme as default for Barcode Scanner RTU UI v2 activity. - Added Consumer Proguard rules for RTU UI v2 modules.
- 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-bundle
module dependency to access the new screen. - Added new
ParametricFilters
inImageProcessor
API (ScanbotBinarizationFilter
,CustomBinarizationFilter
,ColorDocumentFilter
,BrightnessFilter
,ContrastFilter
,GrayscaleFilter
,WhiteBlackPointFilter
andLegacyFilter
). - Added support for German residence permits (2011 and 2019 formats) in
GenericDocumentRecognizer
. PdfConfig
in thePDFWriter
now allows setting the jpegQuality for images encoding. The parameter is only used when transcoding images (adding an image from a bitmap, or resample is true). The parameter is ignored when directly embedding JPEG files.- Added
resample
parameter inPdfConfig
and extended the meaning of thedpi
setting. - Added new constructor parameters
dpi: Int
andpageFit: PageFit
inPageConfig
class forPDFWriter
. - Added
setParametricFilter(parametricFilter: ParametricFilter)
method in DocumentScannerConfiguration for DocumentScanner RTU UI screen. - Added support of
minEstimatedNumberOfSymbolsForNoDocument
config 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
ScanbotCameraXView
to a circle.
- π Bug fixes:
- For
BarcodeFormat.PDF_417
, a single case to generate clusters was not covered, which led to a crash. - Fixed potential crash when trying to embed invalid images in a PDF.
- Fixed issue with misaligned document polygon and barcode polygons on some devices with horizontal orientation.
- Fixed drawing of the detected document contour polygon in landscape orientation.
- Fixed NPE in MRZ scanning with optional fields.
- For
- β οΈ Breaking changes:
- Changes in
ImageProcessor
API:ImageProcessor
is not a singleton anymore.- Removed
scanbotSDK.imageProcessor()
getter. Call one ofImageProcessor
constructors to create a new instance. - Removed old
process*(List<Operation>)
methods andOperation
classes. 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. ImageFilterType
enum is deprecated. UseParametricFilter
API with new filters. Usage of old filters is still available withLegacyFilter
wrapper.ImageFilterTuneType
s are no longer supported. The class was deleted.
- Changes in
PageProcessor
API:PageProcessor
methods are also migrated to theParametricFilter
API.- Added
parametricFilters: List<ParametricFilter>
field inPage
class. It will be used in page processing by default. If it's empty, old legacy filter infilter: ImageFilterType
deprecated field will be used. - Removed
tunes
andfilterOrder
fields inPage
class.
- Deprecated
setImageFilterType(imageFilterType: ImageFilterType)
method in DocumentScannerConfiguration for the DocumentScanner RTU UI screen. - Removed
imageProcessorType(type: ImageProcessor.Type)
inScanbotSDKInitializer
. - In
TIFFImageWriterParameters
constructor replacedbinarizationFilter: ImageFilterType?
parameter withbinarizationFilter: ParametricFilter?
. - In
TIFFImageWriterParameters.defaultParametersForBinaryImages()
parameters changed the default filter toScanbotBinarizationFilter
parametric filter. - Renamed
RSS_14
barcode format toDATABAR
andRSS_EXPANDED
toDATABAR_EXPANDED
. BatchBarcodeScannerActivity
class from RTU UI v1 is now marked as 'Deprecated'.- Removed
BarcodeFormat.CODE_25
fromBarcodeFormat.COMMON_CODES
list. ZoomRange
can 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
SoundController
was renamed toSoundControllerImpl
and interfaceSoundController
was extracted.
Version 4.2.0 (9 Jan 2024)β
- π New:
- Added support for new barcode type
BarcodeFormat.GS1_COMPOSITE
. - Added analyzer image size limit property for Document Quality Analyzer. By default, the image will be resized to 2500 px.
- Added support for the Israelian Check standard.
- 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
enableGS1Decoding
has been replaced by the enumGs1HandlingMode
inBarcodeScannerAdditionalConfig
. GS1
codes are now handled differently for various barcode types. Using the default optionPARSE
will 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
acceptedSizeScore
config parameter forDocumentScannerActivity
andFinderDocumentScannerActivity
RTU screens.
- Fixed an issue with
- β οΈ Breaking changes:
- Moved
setIgnoreBadAspectRatio()
logic fromDocumentAutoSnappingController
toContourDetectorFrameHandler
.
- 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_POST
andDATABAR_LIMITED
.
- π Improvements:
- Improved quality and speed of the Document Contour detector.
- Decreased size of Document Contour detector ML model.
- Removed parameter
forceCpu: Boolean
fromImageProcessor
methods. - 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 inDocumentScannerView
andBarcodeScannerView
to improve compatibility with Compose UI.
- π Bug fixes:
- Added
setBarcodeFormatsFilter(barcodeFormat: List<BarcodeFormat>)
method inBatchBarcodeScannerConfiguration
class.
- Added
- β οΈ Breaking changes:
- Renamed
OpticalCharacterRecognizer.EngineMode.TLDR
toOpticalCharacterRecognizer.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
,BarcodeScanAndCountView
andBarcodeScannerView
.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
BlurEstimator
feature. UseDocumentQualityAnalyzer
instead.
- 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
EnableCameraButtonTitle
andEnableCameraExplanationText
parameters on Batch- and Barcode RTU UI screen configs. - Fixed crash in
GenericTextRecognizer
on ARM v7 devices. - Fixed behavior of
ocrResolutionLimit
configuration 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: PDFPageSize
was replaced with more detailedpdfConfig: PdfConfig
parameter.
- Changed signature of
PDFRenderer#renderDocumentFromImages()
andPDFRenderer#renderDocumentFromPages()
methods -pageSize: PDFPageSize
was replaced with more detailedpdfConfig: PdfConfig
parameter. - Removed
CameraModule.FRONT_MIRRORED
.CameraModule.FRONT
now 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.setBarcodeAppearanceDelegate
to manage polygon appearance. - OCR quality for the Generic Text Line Scanner should be significantly more reliable.
- Reduced the number of barcode detector models from 3 to 2. The model used in Fast mode is now ~20% faster, about the same speed as Fastest mode.
- π Bug fixes:
- Removed conflicting "app_name" string resources from library modules.
- Fixed colors not being applied to fields in RTU UI of Generic Document recognizer.
- Fixed bug for
BarcodePolygonsStaticView
where it crashed ifbarcodeItemViewFactory
returnednull
instead of view. - Before, for certain invalid decodings of QR and MicroQR codes, an exception was thrown from ZXing. Now we rigorously treat this as a format error.
- Before, we have returned CODE_25 results when INDUSTRIAL_2_OF_5 was enabled and CODE_25 was disabled. Now, we do not return the CODE_25 result for such decoding options.
- Fixed the
topBarButtonsColor
option for theMrzScannerActivity
andHealthInsuranceCardScannerActivity
screens. - Potential fix for rare crash in ScanbotCameraXView during binding it to lifecycle.
- β οΈ Breaking changes:
- Text Data Scanner no longer requires Tesseract OCR blobs.
- Text Data Scanner (both RTU UI component and classic) no longer accepts
TextFilterStrategy
and a set ofLanguage
parameters. The code that sets these needs no replacement and can be removed. - Changed the structure of
MRZGenericDocument
. Now it contains a document object for MRZ fields, the same as GenericDocument from GenericDocumentRecogniser. UseMRZGenericDocument.document.wrap() as MRZ
to get exact fields instead of a list of generic fields. - Removed methods from
BarcodePolygonsView
andBarcodeScannerView.selectionOverlayController
related to polygon and text view appearance. E.g.setStrokeColor
etc. Please useBarcodeAppearanceDelegate
instead! - Removed methods from
BarcodePolygonsStaticView
andBarcodeScanAndCountView.counterOverlayController
which were related to polygon appearance. E.g.setStrokeColor
etc. Please useBarcodeAppearanceDelegate
instead.
- π Under the hood:
- Removed
UNKNOWN
barcode type from the API as it is applicable only for internal use. - Fixed declaration of attributes
polygonStrokeDeclinedColor
andpolygonFillDeclinedColor
. - 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
setViewFinderEnabled
method toBarcodeScannerConfiguration
andBatchBarcodeScannerConfiguration
. This toggles the visibility of the viewfinder. Defaults totrue
. - Introduced a scanned barcode confirmation dialog in
BarcodeScannerActivity
RTU screen, and a configuration classBarcodeConfirmationDialogConfiguration
inBarcodeScannerConfiguration
for modifying dialog UI. - Added Scan and Count of Barcodes feature. Use
BarcodeScanAndCountView
to integrate it into your app. - Introduced a new public interface,
PdfImagesExtractor
, for extracting images from PDF files. - Added a new implementation of
PdfImagesExtractor
andPdfPagesExtractor
based on the Pdfium library. Add the optional 'io.scanbot:bundle-sdk-pdfium:SDK_VERSION' dependency to use it.
- π Improvements:
- Stripped down the Android dynamic symbol table in native libraries. As a result, the size of the native shared libraries has decreased.
- Improved accuracy and detection speed of QR_CODE, Code39, and Code93 barcode types.
- Added support for inverted PDF-417 barcodes.
- Optimized the size of native libraries integrated into the Scanbot SDK.
- Enhanced error handling behavior when deleting SDK pages.
- Added a flag,
detectFromNv21(..., isLive: Barcode)
, inScanbotBarcodeDetector
to detect barcodes on NV21 images in the static image mode.
- π Bug fixes:
- Fixed a crash within the barcode detector.
- Corrected a typo in Libraries.txt.
- Fixed detection of a few false-positive RSS_EXPANDED in live mode.
- Fixed a bug causing incorrect (mirrored) preview when
CameraModule.FRONT
is set up forScanbotCameraXView
. - Fixed the logic in
setAutoSnapProgressEnabled
andsetPolygonAutoSnapProgressEnabled
methods inFinderDocumentScannerConfiguration
andDocumentScannerConfiguration
. - Fixed
TextDataScaner.textDataScannerStep
not applying from JSON configuration. - Fixed incorrect mapping of iOS-only parameter
shutterButtonIndicatorColor
inDocumentScanner
andFinderDocumentScanner
. - Corrected mapping of
userGuidanceStrings
JSON configuration forCheckRecognizerConfiguration
.
- β οΈ Breaking changes:
- Corrected a typo in the
polygonAutoSnappingProgressStrokeColor
attribute name for PolygonView. - API breaking changes in the MRZ scanner result interface:
- Replaced
io.scanbot.mrzscanner.model.MRZRecognitionResult
MRZ Scanner result model class withio.scanbot.mrzscanner.model.MRZGenericDocument
. - Removed
fields: List<MRZField>
list andMRZField
class. All detected fields are now stored in thedocument: GenericDocument
field inMRZGenericDocument
instance 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: MRZDocumentType
is now represented by thedocumentType: MRZDocumentType
field in theMRZGenericDocument
instance.
- Replaced
- Date fields in the
MRZGenericDocument
result model now contain an unformatted date string. - Replaced
MRZDocumentType
class withMRZGenericDocument.MRZDocumentType
. - Removed deprecated
MultipleObjectsDetectorActivity
RTU UI screen. - Removed deprecated
MultipleObjectsDetector
andBusinessCardsImageProcessor
.
- Corrected a typo in the
- π Under the hood:
- Libraries.txt is now contained only in
package1
andpackage2
dependencies. - Improved attribute handling to support the generation of a single AAR.
- Blackview and Caterpillar brands are now excluded from GpuAcceleration-supported devices.
- Improved cross-platform parameter handling from the refactored configurations structure.
- Added an OPTIONAL 3rd-party open-source dependency: the Pdfium library (licensed under the Apache License Version 2.0). By default, the Pdfium library is NOT added to the Scanbot SDK dependencies.
- Libraries.txt is now contained only in
Version 2.2.0 (27 Apr 2023)β
- π New:
- Added type
BarcodeFormat.CODE_25
that was previously considered as typeINDUSTRIAL_2OF5
without checksum. TheINDUSTRIAL_2OF5
checksum option is now removed and thus, depending on a valid checksum, we either returnINDUSTRIAL_2OF5
orCODE_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
BarcodeItemViewPositionHandler
that helps to adjust the position of the barcode description view in relation to the polygon contour. - Improved preview quality selection logic for
ScanbotCameraXView
. - Improved GenericDocumentRecognizerFrameHandler's
Rect
cropping logic when working 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
ScanbotCameraXView
on Xiaomi devices, which happened before the preview started. - Fixed a bug where
ScanbotCameraXView
sometimes threwRejectedExecutionException
after the camera stopped.
- Fixed a visual glitch with
- β οΈ Breaking changes:
- Changed structure of
MedicalCertificateRecognizerResult
:McInfoBoxSubType
renamed toCheckBoxType
.MedicalCertificateInfoBox
type split intoPatientInfoBox
andCheckBox
.MedicalCertificateInfoBox.patientInfoFields
property now available asMedicalCertificateInfoBox.patientInfoBox.patientInfoFields
.DateRecord.validationConfidenceValue
removed.
- Removed method
ScanbotSDKInitializer.prepareMRZBlobs()
. MRZ blobs must now be added as a separate module dependency in Gradle:implementation("io.scanbot:sdk-mrz-assets:<SDK_VERSION>")
. - Removed
MRZRecognitionResult.recognizedMRZLines
as it was replaced withMRZRecognitionResult.rawMrz
. - Removed parameter
decodeStacks1D
. The decoding of stacked barcodes is now handled automatically. FrameHandler
interface was converted to an abstract class. If you have custom FrameHandlers, please add constructor invocation to your FrameHandler implementation.- Some of the Scanbot SDK artifact IDs have been changed and need to be updated in your
build.gradle
'sdependencies
block:- for users of
io.scanbot:sdk-package-1
,-2
,-3
or-4
that use barcode scanning, the dependency ofio.scanbot:sdk-barcode-assets
should 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-sdk
and-sdk-ui
dependencies are to stay as is!) - all users of
io.scanbot:sdk-crypto-persistence
should change this dependency toio.scanbot:bundle-sdk-crypto-persistence
(or toio.scanbot:barcode-sdk-crypto-persistence
if you are using Scanbot Barcode standalone SDK)
- for users of
- Changed structure of
- π Under the hood:
- Enabled
-fstack-protector-all
on Android - Removed usage of
backward-cpp
library. - Removed outdated assets for MRZ detection.
- FrameHandlers won't return the result if
FrameHandler.isEnabled
is set tofalse
after 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
,-3
and-4
modules, all*-assets
modules. The exception to this are modulesscanbot-barcode-assets
andscanbot-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 theDocumentScannerConfiguration
that 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
FinderOverlayView
behavior, when UI container is dynamically resized, e.g. on keyboard events, etc. - Added
setForceMaxSnappingQuality(enabled: Boolean)
inIScanbotCameraView
interface (implemented only on ScanbotCameraXView implementation): controls whether the camera should force the maximum possible quality of the snapped picture. As a result, the snapping speed could be significantly slower and the resulting image could be bigger. The default 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
EditPolygonImageView
bug with the coloring of lines on the polygon change. - Fixed Scanbot camera views not resolving
Context
correctly if used in Activity/Fragment with Hilt's@AndroidEntryPoint
annotation. - Fixed Scanbot RTU-UI scanners handling when the app is terminated in the background.
- Fixed a potential memory issue in the check recognizer.
- Fixed
- β οΈ Breaking changes:
FinderAspectRatio
andPageAspectRatio
classes are now deprecated and merged intoAspectRatio
common class. Please useAspectRatio
instead.
- π Under the hood:
- Bump Dagger version to 2.44
- Update Kotlin library to 1.7.10
- Changed the default JPEG compression quality from 95 to 100 for
ScanbotCameraXView
. As a result, snapped images will be bigger but with the better quality
Version 2.0.0 (14 Feb 2023)β
- π New:
- Added a new
automaticSelectionEnabled
option toSelectionOverlayConfiguration
forBarcodeScannerActivity
andBatchBarcodeScannerActivity
RTU UI screens
- Added a new
- π Improvements:
- The raw string is returned for RSS Expanded barcodes that don't contain a GS1 string
- Updated
BarcodeScannerAdditionalConfigBuilder
withdecodeStacks1D
andcodeDensity
parameters - Improved autosnapping animation in
PolygonView
- Eliminated the camera preview going black between
stopPreview()
andstartPreview()
calls inDocumentScannerActivity
RTU UI
- π Bug fixes:
- Fixed the
ScanbotCameraXView
instantiation error in Layout Editor - Fixed the memory leak of CameraManager in
ScanbotCameraXView
- Fixed NPE in the
ScanbotCameraXView
when thestartPreview()
function is called while theScanbotCameraXView
was detached - Fixed an issue with
InitialScanDelayMs
andDelayAfterScanMs
options not working inBarcodeScannerConfiguration
whenBarcodeImageGenerationType.CAPTURED_IMAGE
andBarcodeImageGenerationType.VIDEO_FRAME
output generation types were used - Fixed
ScanbotCameraXView
not working after reattaching to a window
- Fixed the
- β οΈ Breaking changes:
- Removed deprecated
NfcPassportScanner
,PayFormScanner
andWorkflows
classical 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_back
andMcInfoBoxSubtype
. - Added new parameter
decodeStacks1D
inBarcodeScannerAdditionalConfig
for 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
intention
andinsuredPersonType
fields fromMedicalCertificateRecognizerResultInfo
- Removed enums
MedicalCertificateInsuredPersonType
andMedicalCertificateIntention
- Renamed
McBoxAccident
toMcBoxAccidentYes
andMcBoxRequiresCare
toMcBoxRequiresCareYes
inMcInfoBoxSubtype
- Removed
MrzBlobRuntimeException
as 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_ID
for the internal obfuscated classes - Improve allocated memory releasing mechanism for Barcode Scanner and Contour Detector
Version 1.97.0 (26 Oct 2022)β
- π New:
- Added
setVibrationEnabled(enable: Boolean)
method to enable/disable the vibration feature inio.scanbot.sdk.util.snap.SoundController
class. NOTE:android.permission.VIBRATE
permission is required! - Added
bleepResId: Int
andbleepUri: Uri
parameters to theSoundController
class constructors to customize the bleep sound. By default the SDK specific sound will be played. - New barcode types are supported: IATA 2 of 5 and Industrial 2 of 5. Please, note that they are disabled by default. See
BarcodeFormat
BarcodePolygonsView
allows visualization of barcode contours when using classical components- Selection overlay layer based on
BarcodePolygonsView
can be enabled forBarcodeScannerView
viaBarcodeScannerView.selectionOverlayController.setEnabled
- Selection overlay can be enabled and configured for ready-to-use UI via
BarcodeScannerConfiguration.setSelectionOverlayConfiguration(...)
- New properties
InitialScanDelayMs
andDelayAfterScanMs
inBarcodeScannerConfiguration
allow 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_IMAGE
when an instance ofIBarcodeFilter
is 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.ScanBeeper
class from the RTU-UI module to the packageio.scanbot.sdk.util.snap.SoundController
in the basescanbot-sdk-1
module.
- Moved and renamed
- π Under the hood:
- For
ScanbotCameraXView
- whenCameraOpenCallback
is set - theonCameraOpened
method's call was moved later in the lifecycle: now called at the latest point in time when the camera preview is confirmed to be streaming. - Updated third-party libraries: Gson to 2.9.1, CommonsIo to 2.11.0 and CommonsCodec to 1.15
- For
Version 1.96.0 (08 Sep 2022)β
- π Improvements:
- Improved accuracy and performance of the check recognizer.
- π Bug fixes:
- Fixed
ContourDetector
crash when assembled release with obfuscation on old AGP version.
- Fixed
- π Under the hood:
- Improve layouts for RTU UI screens
Version 1.95.0 (12 Aug 2022)β
- π New:
- Each RTU UI configuration and
ScanbotSDKInitializer
class now 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>JsonConfiguration
class - Added new configuration option
codeDensity
inBarcodeScannerAdditionalConfig
for Barcode Scanner - Added
codeDensity
configuration option for Barcode Scanner RTU UI screen
- Each RTU UI configuration and
- π Improvements:
- Added default images for
EditPolygonView
anchors and forMagnifierView
overlay image in classical components. - Added new insets API for the finder box:
finderInsets
allows setting the finder edge padding from the camera preview edges.safeAreaInsets
can add additional padding to the finder. This is particularly useful when part of the camera preview is covered by another widget (e.g. a navigation bar), thus preventing the finder from appearing behind this widget.
- Added configuration methods to
MedicalCertificateRecognizerConfiguration
that allow configuring the appearance of the medical certificate scanner's finder. Details inMedicalCertificateRecognizerConfiguration
API 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
PolygonView
in document detector screens - Fixed snapped page filtering in Document Scanner RTU UI screen
- Fixed incorrect preview size calculation after granting permission for legacy
ScanbotCameraView
- The system back gesture navigation was fixed on the
CroppingActivity
andEditPolygonImageView
- 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.Legacy
support for Barcode Scanner ContourDetector
'sdetect
methods are now synchronized and return a newDetectionResult
entity. It incorporates all data related to contour recognition. Fields that were previously used to obtain this data have been deleted (polygon
,polygonF
,detectionScore
,verticalLines
,horizontalLines
)DetectionResult
class name changed toDetectionStatus
setFinderOffset
deleted. UsefinderInset
values instead
- π Under the hood:
- Updated
compileSdk
version to 31 - Updated Android CameraX version to 1.1.0
- Updated the version of kotlin std library to 1.6.21
- Updated the version of Dagger library to 2.41
- Updated Boost C++ version to 1.79.0
setFinderMinPadding()
works onfinderInsets
API
- Updated
Version 1.94.0 (13 Jun 2022)β
- π New:
- Added
Fragment.registerForActivityResultOk
method for calling activity from fragments for subscribing to success result with the new Activity Result API. - Check recognizer:
- Introduced
CheckRecognizerActivity
RTU UI for the convenient use of our updated Check Recognizer SDK. - Added
setAcceptedCheckStandards(acceptedCheckStandards: ArrayList<RootDocumentType>)
method for Check filtering by standard inCheckRecognizer
. By default - empty list (all standards are accepted). - Added
returnImageOnSuccess: Boolean
parameter forrecognize(...)
andrecognizeWithFinderOverlay(...)
methods inCheckRecognizer
. By default -false
.
- Introduced
- With the new
BarcodeScannerView
andDocumentScannerView
Classical components, the integration of barcode scanning and document scanning with Custom UIs is now even easier!
- Added
- π Improvements:
- Added a cancellation interface for
PdfPagesExtractor
calls. Now you can cancel extracting pages from large PDFs and thus don't need to wait until the end of the process. Look for propertycancelCallback: LongOperationCancelCallback
insidefun pagesFromPdf(pdfFile, cancelCallback)
. - Beta: An improved Check Recognizer that now supports further bank layouts from different countries (e.g Kuwait, India, Australia). The recognizer is available as Classic and RTU UI components. Please note that this feature is still in beta. Furthermore, due to the renaming of the feature from "Cheque" to "Check", some classes and API methods have been renamed as well as new classes have been introduced. For more details please see the Breaking Changes.
- Added configuration methods to
MedicalCertificateRecognizerConfiguration
that allows configuring the medical certificate scanner finder appearance. Details inMedicalCertificateRecognizerConfiguration
API reference. - Fixed an issue with the NFC scanner not working for some devices, e.g. Xiaomi Mi10.
- Improved behavior of FinderOverlayView and its child classes. Now any Finder View can inject other layouts inside itself and these parts would be properly positioned with the finder window changes.
There are 3 customizable parts:
- top - is a zone above the finder window. Can be used for inserting some hints.
- bottom - is a zone below the finder window. Can be used for inserting some hints.
- center - is a zone inside the finder window. Can be used for showing an overlay inside the finder window.
- 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
ScanbotCameraXView
when taking a picture after the screen was paused.
- β οΈ Breaking changes:
finder_description
view id is no longer used to place text views below the finder. Please use new API.- Check recognizer:
- All the Cheque components and packages renamed to Check (
chequescanner
tocheck
). - 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. CheckRecognizer
returnsCheckRecognizerResult
object 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:
PDFRenderer
now properly handlescontent:\\
type uris.- By default, GPU acceleration has been enabled (issues with the Samsung S22 series devices are fixed).
- Fixed crash for calling
TIFFWriter
in release build variant version. - Fixed crash for calling
TextOrientationRecognizer
in release build variant version. - Fixed camera flash state for
DocumentScannerActivity
after picture is taken in multi-page mode. - Fixed cropped images of 1D barcodes.
- Fixed
Multi-Page
button state forMultipleObjectsDetectorActivity
.
- β οΈ Breaking changes:
- Moved configuration of page for cropping screen from method to constructor
CroppingConfiguration(page)
. - Deprecated component
FilterPredictor
was removed. - Deprecated field
MRZCheckDigit.validatedString
was removed.
- 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
FileAccessException
inScanbotSDKInitializer
when 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
MedicalCertificateRecognizerActivity
ready-to-use UI for an easy integration of the Medical Certificate Recognizer. - Added a new property
DocumentScannerConfiguration.enableHardwareSnapButton
that helps to set one hardware button to trigger a manual snap. By default Kotlin usesKeyEvent.KEYCODE_VOLUME_DOWN
but anyKeyEvent.KEYCODE
value can be set. - Added the possibility to replace the cancel button in most of the RTU UI top toolbars with an icon. Please check the
configuration.setCancelButtonIcon()
methods of the RTU configurations. - Added new methods
DocumentScannerConfiguration.setForceMaxSnappingSize()
andScanbotCameraXView.setForceMaxSnappingSize()
that force the maximum available snapping size and apply the same aspect ratio to the preview. Works only withScanbotCameraXView
or with CameraX enabled in the RTU UI. Disabled by default, thusScanbotCameraXView
shows a preview and makes snaps with an aspect ratio closest to the display's dimensions. - Added support for the GS1 barcode document format, see
Gs1Document
. - Added a class
BarcodeDocumentParser
to parse a string into a supported barcode document type. - Added a new method
GenericDocumentScannerConfiguration.setExcludedFieldTypes()
that can be used to set fields that should be excluded from the scanning process altogether, e.g. for security reasons.
- Introduced
- π Improvements:
- Improved the UX of the
DocumentScannerActivity
screen. Now theSnapFlashView
animation and the pausing of the preview happens only after the image was captured. Previously it could result in blurry images. - All the date fields returned by
GenericDocumentRecognizer
now have aValidationStatus
. Fields withValidationStatus = Invalid
will not be shown in the list of fields forGenericDocumentRecognizerActivity
. - Mark
ScanDisabilityCertificateWorkflowStep
as 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
setShouldSavePhotoImageInStorage
andsetShouldSaveSignatureImageInStorage
fromGenericDocumentRecognizerConfiguration
.
- Renamed the feature Disability Certificate Scanner to Medical Certificate Recognizer
- Renamed all related classes and package names with
DC
prefix toMedicalCertificate
prefix (likeio.scanbot.sdk.dcscanner.DCScanner
toio.scanbot.sdk.mcrecognizer.MedicalCertificateRecognizer
) - Renamed Medical Certificate recognizer assets library to
sdk-mc-assets
- Renamed the class
DisabilityCertificateDocument
in the barcode scanner toMedicalCertificateDocument
. All related classes and paths that containDisabilityCertificate
are 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: Int
andheight: Int
inMedicalCertificateRecognizer#recognizeMcJpeg(...)
- Replaced the usage of internal class
io.scanbot.mcscanner.model.MedicalCertificateRecognizerResultInfo
with publicly available classio.scanbot.sdk.mcrecognizer.entity.MedicalCertificateRecognizerResult
in 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)
inBarcodeScannerConfiguration
andBatchBarcodeScannerConfiguration
for RTU UI screens to lock in the minimum supported camera focus distance (supported only with CameraX) - Added
fun lockMinFocusDistance(lock: Boolean)
inIScanbotCameraView
to lock in the minimum supported camera focus distance (supported only with CameraX) - New option
lowPowerMode: Boolean
inBarcodeScannerAdditionalConfiguration
forBarcodeScannerConfiguration
andBatchBarcodeScannerConfiguration
for RTU UI screens andScanbotBarcodeDetector
classical component
- π Bug fixes:
- Fixed a bug that led to incorrect clearing of the scanned documents in
GenericDocumentRecognizerActivity
- Initial flash button state on opening
GenericDocumentScanner
screen will have the same state as was set through the configuration - Fixed an issue when AutoSnapping controllers, that were set up after the camera preview start, were not working
- Fixed a crash in
TextDataScannerActivity
on some rare cases while restarting the app from recent apps to this screen
- Fixed a bug that led to incorrect clearing of the scanned documents in
- π Improvements:
- Significantly improved recognition of Aztec barcodes
- Added method
setFinderMinPadding
to 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
textWithExtension
andmetadata
toBarcodeItem
to support barcode extensions of UPC and EAN barcodes - The results screen of the
BatchBarcodeScannerActivity
now displaystextWithExtension
instead 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
IBarcodeFilter
interface -BarcodeFilter
andBarcodeExtensionsFilter
- New setters
setBarcodeFilter(barcodeFilter: IBarcodeFilter)
inBarcodeScannerConfiguration
andBatchBarcodeScannerConfiguration
for RTU UI screens - Added
setPreviewFrameSize(frameSize: Size)
andsetAnalyzerFrameSize(frameSize: Size)
methods inScanbotCameraXView
for more flexible camera frame size modifications
- π Bug fixes:
- Fixed a crash in the barcode detector with Legacy engine mode on stable images
- Fix incorrect preview size resolving which caused the impossibility to perform scanning with the legacy ScanbotCameraView on some budget devices
- Fix inconsistent polygon displaying on some horizontally-oriented devices
- Fix photo-saving callback being ignored for NFC Passport Scanner configuration
- π Improvements:
- Improved recognition of small barcodes on large images
- Improved recognition of stacked RSS Expanded (GS1) barcodes
- Improved rectangular DataMatrix performance
- Increased performance on stable images with PDF-417 barcodes
- If the Scanbot SDK is not initialized, RTU UI screens are force closed without the RuntimeException
- β οΈ Breaking changes:
- Renamed
setPreviewSize(previewSize: Size)
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_EXTRA
were deleted. Instead we have implemented AndroidX Activity Result API for RTU UI components. Also - if you prefer to stick with deprecatedstartActivityForResult
approach - 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
IdCardScanner
and all the classes related to it. Consider usingGenericDocumentRecognizer
instead
- 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
BatchBarcodeScannerActivity
ignored the parameter passed tobatchBarcodescannerConfiguration.setCameraModule()
- Fixed a bug for when
Version 1.89.0 (5 Nov 2021)β
- π New:
- Added
allowGpuAcceleration(enable: Boolean)
method inScanbotSDKInitializer
which enables GPU acceleration for TensorFlow ML models - Added
precompileGpuMlModels(precompilingCallback: () -> Unit)
method inScanbotSDKInitializer
which performs GPU ML models precompilation
- Added
- π Bug fixes:
- Fixed a bug in
BatchBarcodeScannerActivity
andMultipleObjectsDetectorActivity
for when they don't show the camera preview after the camera permission approval - Fixed a bug when
BarcodeScannerActivity
does not detect any barcodes with the image generation type VIDEO_FRAME - Fixed possible crash with Barcode Scanner activities after the camera permission request
- 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
isFlashEnabled
method 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 forScanbotCameraXView
as well- A new filter type
PURE_GRAYSCALE
is 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)
ScanbotCameraXView
now uses better preview quality by defaultScanbotCameraXView
performance was optimized
- π Bug fixes:
- Fixed long initialization of
ScanbotCameraXView
on 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
recognizeX
anddetectAndRecognizeX
methods were merged inrecognizeX
setValidationType
was removed. Now the country is detected directly from the card- Parameters
width
andheight
were removed fromrecognizeJPEG
method as redundant - Method
recognize
was renamed torecognizeNv21
- Enum value
FAILED_VALIDATION
was replaced withINCOMPLETE_VALIDATION
inHealthInsuranceCardDetectionStatus
- The ML blobs are now available as a separate library
- IdCardScanner
- Removed deprecated IdCardScanner RTU screen (
IdCardScannerActivity
). Consider usingGenericDocumentRecognizerActivity
instead - Removed deprecated
IdCardScannerConfiguration
. Consider usingGenericDocumentRecognizerConfiguration
withGenericDocumentRecognizerActivity
instead
- 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
allowXnnpackAcceleration
was added inScanbotSDKInitializer
allowing to control whether the XNN pack optimizations should be used (true
by default)
- A new flag
- π Bug fixes:
- Fixed
MSI_PLESSEY_CHECKSUM_ALGORITHMS
,STRIP_CHECK_DIGITS
andCAMERA_ZOOM
parameters being ignored in BatchBarcodeScannerConfiguration
- Fixed
- β οΈ Breaking changes:
- The
corner_radius
attribute of FinderOverlayView was renamed tosbsdk_corner_radius
- The
Version 1.87.0 (3 Sep 2021)β
- π New:
- Added
PdfPagesExtractor
class 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
resultPoints
field of theBarcodeItem
now 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
resultPoints
field of theBarcodeItem
is no longer nullable
- π Under the hood:
- Updated the version of Android PDF Writer library to 1.0.10
- Bump CameraX version to stable 1.0.1 and CameraX View to 1.0.0-alpha28
Version 1.86.0 (6 Aug 2021)β
- π New:
Page
now containsPageImageSource
allowing to check if the source image was captured automaticallyPictureCallback
now contains information if the image was captured automatically- Added a new method
takePicture(acquireFocus: Boolean, isCapturedAutomatically: Boolean)
inIScanbotCameraView
which should be called withisCapturedAutomatically = true
from a custom AutoSnappingController - Added method
setAnchorPointColor(@ColorInt color: Int)
allowing to change the color of draggable points of the cropping polygon inCroppingActivity
component andEditPolygonView
- Additional parameter
stripCheckDigits: Boolean
inBarcodeScannerAdditionalConfig
forBarcodeDetector
classical component - Additional parameter
stripCheckDigits: Boolean
inBarcodeScannerAdditionalConfiguration
for RTU UI screens
- π Improvements:
- Significant performance improvements for all scanners
- Added support of sandwiched PDF (OCR) generation with enabled pages binarization and encryption
- All-zeros MSI Plessey barcodes are ignored now
- Additional
Information
field in SEPA barcode document type now parsed correctly to match the specification - Memory usage optimizations for DC scanner
- β οΈ Breaking changes:
- The parameter
imageOrientation
inPictureCallback
was replaced toCaptureInfo
which contains the orientation of the image and if it was captured automatically - IMPORTANT! Added
create
prefix to names of all the methods inScanbotSDK
andScanbotBarcodeScannerSDK
, that return new instances of scanners, processors or storages. Methods without this prefix returnSingleton
objects. - IMPORTANT! Classical component
BusinessCardsImageProcessor
is 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 Reference
andHint
fields in SEPA barcode document type were replaced byPurpose
andRemittance
to 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
EditPolygonImageView
allowing 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: EngineMode
inBarcodeScannerConfig
forScanbotBarcodeDetector
. By defaultScanbotBarcodeDetector
usesEngineMode.NextGen
based 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
disableMlDetector
config parameter inBarcodeScannerConfig
. UseEngineMode.LegacyFast
instead. - Removed
BarcodeDetectorType
class andsetDetectorType()
method from Barcode RTU screens. UsesetEngineMode(engineMode: EngineMode)
instead. - Removed unused parameters
width: Int
andheight: Int
fromdetectFromJpeg(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>
inBarcodeScannerAdditionalConfig
forBarcodeDetector
classical component - Additional parameter
msiPlesseyChecksumAlgorithms: EnumSet<MSIPlesseyChecksumAlgorithm>
inBarcodeScannerAdditionalConfiguration
for RTU UI screens - Added new parameter to the
SdkLicenseInfo
classlicenseStatusMessage: 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
BlurEstimator
assets to Package 1
- β οΈ Breaking changes:
- Disability Certificate Scanner:
- The ML blobs are now available as a separated library
io.scanbot:sdk-dc-assets:$latestSdkVersion
. Please make sure to add it to your dependencies to be able to 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
,HealthInsuranceCardScanner
andMultipleObjectsDetector
are 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
NfcPassportScanningResult
entity: make corresponding fields of Int type. - Added new
setValidationType(validationType: HealthInsuranceCardValidationType)
method inHealthInsuranceCardScanner
- Changed signature of the
handleLicenceStatusError
method 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
GenericDocumentRecognizer
andIdCardScanner
- 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
TiffWriter
on 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:
IdCardScanner
is now deprecated. Consider usingGenericDocumentRecognizer
instead
- π Bug fixes:
- β οΈ Breaking changes:
- IMPORTANT! Classical component
BlurEstimator
is no longer a singleton! You should get your instance from SDK, configure it and use it as needed. CallingScanbotSDK(this).blurEstimator()
elsewhere will return a new instance of this component with default config - IMPORTANT! Classical component
TextOrientationScanner
is no longer a singleton! You should get your instance from SDK, configure it and use it as needed. CallingScanbotSDK(this).textOrientationScanner()
elsewhere will return a new instance of this component with default config - IMPORTANT! Classical component
IdCardScanner
is no longer a singleton! You should get your instance from SDK, configure it and use it as needed. CallingScanbotSDK.idCardScanner()
elsewhere will return a new instance of this component with default config - Refactor RTU's
NfcPassportScanningResult
entity: make corresponding fields of type Int
- IMPORTANT! Classical component
- π Under the hood:
- Switched from using
org.jetbrains:annotations
toandroidx.annotation:annotation
- Improved FinderView behaviour in RTU
BarcodeScannerActivity
screen 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)
inBarcodeScannerConfiguration
forBarcodeScannerActivity
RTU screen - Added
gs1DecodingEnabled
parameter inBarcodeScannerAdditionalConfig
andBarcodeScannerAdditionalConfiguration
to disable the decoding of FNC1 characters in CODE128 barcodes
- Added a new option
- π Improvements:
- Initialization parameters for
AESEncryptedFileIOProcessor
(key: SecretKey?
,initializationVector: ByteArray
,salt: ByteArray
anditerationCount: Int
) became public.
- Initialization parameters for
- β οΈ Breaking changes:
- Method
setSignificantShakeDelay
inLicensePlateScannerConfiguration
as well assignificantShakeDelay
field inTextDataScannerStep
are now ofLong
type - Renamed
ImageFilterType.ML_BASED_BINARIZATION
(filter for low-contrast documents with heavy shadows) toImageFilterType.SENSITIVE_BINARIZATION
- Method
- π Under the hood:
FilterPredictor
instance 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
ScanbotBarcodeDetector
to scan only the given types ofBarcodeDocumentFormat
and filter out others automatically - Added
minimumTextLength
,maximumTextLength
,minimum1DQuietZoneSize
params forScanbotBarcodeDetector
asBarcodeScannerAdditionalConfig
entity. - Added new method
setBarcodeScannerAdditionalConfiguration
for RTUBarcodeScannerConfiguration
to set theminimumTextLength
,maximumTextLength
,minimum1DQuietZoneSize
params. - Introduce License Plate Scanner providing ability scan license plates on the vehicles and extract country code and plate number from it
GenericTextRecgonizer
now has different strategies for scanning Documents and LCD's- Added a new configuration option
setAcceptedDocumentTypes(acceptedDocumentTypes: List<IdScanResult.DocumentType>)
inIdCardScanner
- Added a new configuration option
setAcceptedDocumentTypes(acceptedDocumentTypes: List<IdScanResult.DocumentType>)
inIdCardScannerConfiguration
for RTUIdCardScannerActivity
- Added a new configuration option
setSharpnessAcceptanceFactor(sharpnessAcceptanceFactor: Float)
inIdCardScannerConfiguration
for RTUIdCardScannerActivity
- Added a new configuration parameter
accessibilityConfiguration
forDocumentScannerActivity
andCroppingActivity
allowing 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
,MultipleObjectsDetector
andBusinessCardsImageProcessor
features to the SDK Package 2 - Optimized memory consumption of
BarcodeDetector
scanbot-sdk-crypto-persistence
library supports min API 21+
- π Bug fixes:
- Fixed calculation of the visible rectangle for
CameraView
. It solves problems related to the scanning of documents which have borders close to the side of the screen - Fixed multiple simultaneous detection results on a single ITF barcode
- 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-docdetector
was added by default as well. You may switch back to the edge-based approach by settingcontourDetectorType
inScanbotSDKInitializer
and 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.LanguageNotFoundException
moved to packageio.scanbot.sdk.exceptions.ocr.LanguageNotFoundException
- IMPORTANT! Classical component
ScanbotBarcodeDetector
is no longer a singleton! You should get your instance from SDK, configure it and use it as needed. 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
ScanbotBarcodeDetector
andBarcodeDetectorFrameHandler
- code should be updated to use newsetConfig
andmodifyConfig
methods andBarcodeScannerConfig
entity. - Now the
prepareGenericTextRecognizerBlobs
call inScanbotSDKInitializer
is redundant for the usage of the Data Scanner SDK CheckableTextView
was removed from the SDK. Consider the usage ofCheckedTextView
from 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-credential
library 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): Boolean
inTIFFWriter
class for support of encrypted source images. - As
OpticalCharacterRecognizer#recognizeTextWithPdfFromUris()
doesn't compress input images under the hood, the resulting PDF file might become bigger. Make sure to compress images before passing them 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:
IdScanResult
fromIdCardScanner
now has additionalmrzFields
andmrzCheckDigits
which 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:
MRZScanner
now recognizesKindOfDocument
,PINCode
,LanguageCode
,VersionNumber
fields correctly. Previously they were detected asUnknown
- β οΈ Breaking changes:
- A call to
.prepareIdCardScannerBlobs(true)
method inScanbotSDKInitializer
was removed. Now it is not needed to prepare the blobs for the usage ofIdCardScanner
and 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?
inPDFRenderer
class for support of encrypted source images. - Added additional parameter in methods
recognizeTextFromUris(imageFileUris: List<Uri>, sourceFilesEncrypted: Boolean = false, languages: Set<Language>): OcrResult
ansrecognizeTextWithPdfFromUris(imageFileUris: List<Uri>, sourceFilesEncrypted: Boolean = false, pageSize: PDFPageSize, languages: Set<Language>): OcrResult
inOpticalCharacterRecognizer
class for support of encrypted source images.
- π Under the hood:
- Updated the version of Android PDF Writer library to 1.0.9.
Version 1.77.2 (14 Jan 2021)β
- π Bug fixes:
- Further fixes for the "double scan" issue with the RTU UI
BarcodeScannerActivity
- 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
BarcodeScannerActivity
RTU screen - Fixed a
ShutterButton
animation
- Fixed a concurrency issue (
Version 1.77.0 (17 Dec 2020)β
- π New:
OpticalCharacterRecognizer
now has arecognizeTextFromBitmap
method which allows to run OCR process on a bitmap- Added Front Facing Camera support (BETA). Call
setCameraModule(CameraModule.FRONT)
inScanbotCameraView
orScanbotCameraXView
to enable it. - Added
CAMERA_MODULE
configuration parameter for RTU screens - Added
setDetectorType
configuration parameter for barcode scanner and related RTU UI screens. It allows to disable model-based detection which might be helpful to increase the performance in some cases
- π Improvements:
- Enhance
PageFileStorage
class with 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.tiffwriter
package path is now changed toio.scanbot.sdk.tiff
- In TIFFWriter class
binarize
- option was replaced withbinarizationFilter: ImageFilterType
option which accepts only binarization filters - Changed package name
io.scanbot.sdk.ui.view.camera.configuration.WorkflowScannerConfigurationParams
toio.scanbot.sdk.ui.view.workflow.configuration.WorkflowScannerConfigurationParams
- π Under the hood:
- Updated the version of CWAC Camera library to 0.6.40.
Version 1.76.3 (07 Dec 2020)β
- π Bug fixes:
- Fixed incorrect processing of the text part in DataMatrix barcodes with binary data
- Fixed a rare case of the QR-codes processing which might lead to crash
Version 1.76.2 (04 Dec 2020)β
- π Bug fixes:
- Fixed a bug with the size of generated PDF documents being too big
- Fixed a crash in
PageProcessor.rotate()
method when there is no UNFILTERED_DOCUMENT image - Some redundant logs were cut out
- π Under the hood:
- Return to the usage of crl.android.pdfwriter:apwlibrary library for the PDF processing. Now PNG images saved into PDF as JPG with 100% compression
Version 1.76.1 (02 Dec 2020)β
- π New:
BarcodeScannerActivity
andBatchBarcodeScannerActivity
now support a possibility to set a timeout viasetAutoCancelTimeout
method in seconds. You will getCANCELLATION_REASON_TIMEOUT
= true as an extra forRESULT_CANCELED
in activity result in that case
- π Improvements:
- Better recognition of rotated and damaged PDF417 codes
Version 1.76.0 (23 Nov 2020)β
- π Improvements:
- Huge improvements in detection of barcodes of PDF417 type
ScanbotBarcodeDetector
ML blobs are packaged into the native library - that reduces the size of the installed application
- β οΈ Breaking changes:
- Barcode Scanner:
- The ML blobs are now available as a separated library
io.scanbot:sdk-barcode-assets:$latestSdkVersion
. Please make sure to add it to your dependencies to be able to 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: