Changelog for the iOS Document Scanner SDK
tip
For additional details about the API, please refer to our API reference documentation.
Version 10.0.1 (26 October 2026)
- 🎉 New:
- Barcode Scanner:
- Added
init(viewModel:delegate:)toSBSDKBarcodeScanAndCountViewControllerto create a Barcode Scanner in Scan & Count mode with an existing view model.
- Added
- Barcode Scanner:
- 🐞 Bug fixes:
- General:
- RTU UI: Fixed wrapped text in user guidance labels below the viewfinder being left-aligned instead of center-aligned.
- Fixed an issue on older iOS versions where setting zoom with
animated: truebefore the camera session started could leave zoom unapplied and prevent scanning. Zoom changes made before session startup are applied without animation. - Fixed torch state handling in all RTU UI and Custom UI scanners. The requested torch setting is restored when the app is reactivated and is correctly applied when set before the camera session starts.
- PDF Image Extractor:
- Fixed an issue where images embedded as 16-bit images in the source PDF weren't extracted.
- Text Pattern Scanner:
- RTU UI: Fixed the completion overlay being shown after confirming a result in the confirmation dialog when
confirmationAlertDialogEnabledistrue. Confirming returns the result directly.
- RTU UI: Fixed the completion overlay being shown after confirming a result in the confirmation dialog when
- VIN Scanner:
- RTU UI: Fixed the completion overlay being shown after confirming a result in the confirmation dialog when
confirmationAlertDialogEnabledistrue. Confirming returns the result directly.
- RTU UI: Fixed the completion overlay being shown after confirming a result in the confirmation dialog when
- Barcode Scanner:
- RTU UI: Fixed the viewfinder being top-aligned. It's vertically centered in the available scanning space in portrait and landscape mode, matching the other scanners.
- General:
Version 10.0.0 (1 October 2026)
- 📖 Release notes:
- Explore the release highlights and key improvements here.
- 🎉 New:
- General:
- Added landscape mode support for all RTU UI screens.
- All Custom UI scanners: Added native SwiftUI scanning with
SBSDKScannerView(model:)and feature-specific scanner view models. UIKit scanner controllers expose their view model throughviewModel; the models provide camera controls, observable configuration and runtime state, and frame-engine results. - Mutable scanner and RTU UI configuration properties now support KVO and SwiftUI observation through
SBSDKObservableModel. - Added
SBSDKZoomRange.normalizedZoomFactor(for:)andabsoluteZoomFactor(for:)to convert between absolute zoom and a normalized position in the zoom range. - All RTU UI screens: Added
SBSDKJSONValidator.validate(json:configurationClass:)for opt-in configuration JSON validation.SBSDKJSONValidationResultreports decoding failures and unknown fields with their JSON paths, without changing how the SDK decodes configurations. - All RTU UI screens: Added
SBSDKUI2Palette.uiColor(for:)andswiftUIColor(for:)to resolve palette color tokens for UIKit and SwiftUI.
- Barcode Scanner:
- Added the
selectionConfigfield toSBSDKBarcodeScannerConfiguration. ItsselectionMethoddetermines whether all detected barcodes are returned (all), only the barcode closest to the center (centerClosest), or only the barcode touching the center (center). ForcenterClosestandcenter, the center point can be configured with the normalized valuescenterCoordXandcenterCoordY(default:0.5,0.5). Forcenter, acenterDistanceTolerancecan also be configured. - 2D barcode configurations have a new field
fallbackEncoding, used when the barcode doesn't specify an encoding. The default isunknown, where the SDK guesses the encoding, as in previous versions. - Added barcode tracking-overlay selection through
selectionMode,selectionStyle, selection delegate callbacks,SBSDKBarcodeTrackingOverlayController.selectedBarcodes,setSelected(_:for:), andclearSelection. SwiftUI integrations can customize the overlay throughSBSDKBarcodeTrackingOverlayHandlers.
- Added the
- Document Data Extractor:
- Added support for the new German passports introduced in October 2025 (distinguishable by the Type value
PP). - Added support for provisional German ID cards via MRZ fallback.
- Added support for the new German passports introduced in October 2025 (distinguishable by the Type value
- Document Scanner:
- The Document Cleanup feature lets the user remove artifacts from a document by drawing over them while preserving the text.
- Added
SBSDKDocumentCleanupfor mask-based removal of unwanted image content, with undo, redo, and reset. Custom UI integrations can useSBSDKDocumentCleanupCanvasandSBSDKDocumentCleanupCanvasViewModel; RTU UI integrations can useSBSDKUI2DocumentCleanupVieworSBSDKUI2DocumentCleanupViewControllerwithSBSDKUI2DocumentCleanupStandaloneConfiguration. - Added cleanup to the RTU UI document review toolbar, configured through
screens.cleanupanddocumentCleanupButton.SBSDKScannedPagenow exposesapplyCleanup(image:),applyCleanupAsync(image:completion:), andcleanupAppliedfor applying and tracking cleanup results. - Added the
documentCropOptimizationargument to theSBSDKImageProcessor.cropmethod with a default ofoptimizeQuad, which corresponds to the existing behavior (reduces the input quad by 0.5%). To turn it off, passnone.
- Image Processing:
- The stroke weight (line thickness) of binarized images with anti-aliasing enabled can now be controlled with the
strokeWeightparameter. - Added
SBSDKImageEditingViewandSBSDKImageEditingViewModelfor SwiftUI cropping, rotation, and polygon editing. The view model exposesonFailure,onPolygonDidChange, andonPolygonDidDetectcallbacks.
- The stroke weight (line thickness) of binarized images with anti-aliasing enabled can now be controlled with the
- Text Pattern Scanner:
- Added the
inputHeightLimitoption. It limits the input image height to avoid text that's too large for the text detection model.
- Added the
- General:
- 🚀 Improvements:
- Barcode Scanner:
SBSDKBarcodeFormatUpcEanConfigurationhas a new fieldconvertUpceToUpca, which converts the 6-digit UPC-E result into a 12-digit UPC-A result. It'sfalseby default.- The DataBar and DataBar Expanded barcode configurations now support minimum and maximum text lengths. For GS1 messages, both limits apply to the parsed text.
- In single-shot mode, larger internal image sizes are allowed for the engine modes
nextGenFarDistance(up to 4K for the barcode detector model) andnextGenMaxDistance(unlimited input size for the barcode detector model). Use these modes with caution, because they can require substantial memory depending on the input resolution. - Improved recall for heavily damaged barcodes in the Code 128, Code 39, EAN-8, and EAN-13 formats, where every single scanline is corrupted, via a new field
damagedBarcodeReconstruction(enabled by default) in the barcode configurations.
- Check Scanner:
- Now uses the same accumulation logic as the Document Data Extractor. This makes the results substantially more reliable and accurate in both live and single-shot modes.
- Canadian checks with a leading dash in the account number are now supported.
- Credit Card Scanner:
- Documents with the wrong aspect ratio are now ignored.
- Uses a digit-only list of characters for card number recognition.
- Document Data Extractor:
- Extraction for Driver Qualification Certificates is more lenient towards printing offsets.
- Increased stability when scanning the country field on European Health Insurance Cards.
- Improved data consistency for surnames on German ID cards.
- Document Scanner:
- RTU UI: The Review Screen toolbar is adaptive. The Add, Retake, Crop, Rotate, Cleanup, Reorder, and Delete buttons automatically collapse into a "More" pop-up menu only when they don't fit in the toolbar. The toolbar is a bottom bar in portrait and a side bar in landscape.
- Improved manual cropping in the Custom UI and RTU UI: left and right edge handles now move horizontally, while top and bottom handles move vertically. Movement stops before the crop becomes invalid or leaves the image. Snapping preserves edge length when matching detected document edges or image borders, and is skipped if the resulting crop would be invalid.
- Image Processing:
- Binarized images with anti-aliasing enabled are more legible and have higher contrast.
- Improved behavior of the
SBSDKColorDocumentShadowRemovalFilteron documents with tables.
- Barcode Scanner:
- 🐞 Bug fixes:
- Barcode Scanner:
- Fixed undefined behavior for some clean input scanlines in the HMM decoder.
stripCheckDigitsnow applies correctly to UPC and EAN formats.- Fixed a rare bug when scanning UPC and EAN barcodes with a 5-digit (EAN-5) extension while the scanner was configured to accept only barcodes with a 2-digit extension.
- Fixed the orientation of quads for DataBar and DataBar Expanded barcodes with multiple stacks.
- Fixed an issue where vCards containing a colon in their value were silently ignored.
- Fixed some duplicated results for UPC and EAN barcodes with extensions.
- Fixed crashes when scanning Data Matrix barcodes with
engineModeset tolegacy. - For the Micro QR Code and rMQR Code formats, the scanner now returns
rawBytesEncodings. - Document parser: Fixed HIBC parsing to allow a trailing slash and an alphanumeric lot number.
- Reduced the false positive rate for corrupted barcodes in strong light.
- Fixed an issue where EAN-8 barcodes were returned when the EAN-8 format was disabled and
damagedBarcodeReconstructionwas enabled.
- Check Scanner:
- Fixed an issue where a Canadian check was incorrectly recognized as a USA check.
- Credit Card Scanner:
- If frame accumulation is used in single-shot mode and the scanner doesn't find a document on some attempts, it returns the accumulated result.
- Fixed the quad (the corner coordinates of the detected card) returned in single-shot mode.
- Fixed the returned status of document detection in single-shot mode.
- Document Data Extractor:
- Fixed incorrect crops for the country field on European Health Insurance Cards.
- Fixed the document detection result points in single-shot mode.
- Fixed the Document Data Extractor crop results when
returnCrops = true.
- Image Processing:
- Fixed the chessboard artifacts produced by the
SBSDKColorDocumentShadowRemovalFilteron images smaller than 1 megapixel.
- Fixed the chessboard artifacts produced by the
- MRZ Scanner:
- The Nationality field is no longer shown for Swiss driver's license MRZ documents.
- OCR Engine:
- Fixed an issue that could sometimes produce wrong bounding boxes.
- Fixed an issue where the
allowedCharactersset was sometimes ignored.
- Text Pattern Scanner:
- Fixed how the VIN Scanner and Text Pattern Scanner apply the input image height limit.
- Barcode Scanner:
- ⚠️ Breaking changes:
- General:
- RTU UI: Renamed
SBSDKUI2BottomBarModetoSBSDKUI2ToolbarModein all configuration classes and fields. - RTU UI: MRZ, VIN, Text Pattern, Check, Credit Card, and Document Data Extractor screens now default to
cameraConfiguration.orientationLockMode = .noneinstead of.portrait. Set.portraitexplicitly to retain the previous orientation restriction. The default finder sizes on these screens are now bounded bymaxWidthandmaxHeight. - All Custom UI scanners: Removed the controller's session, flashlight, application-state, zoom, viewfinder, and frame-processing callback properties. Observe the camera and runtime models, or subscribe to frame engine events.
SBSDKCameraSession,SBSDKCameraSessionDelegate, andSBSDKCameraSessionObservingare no longer public; use the view model's camera and frame engine. - All Custom UI scanners: Replaced the controller's
viewFinderConfigurationwithviewFinder(SBSDKViewFinderConfiguration). MovedviewFinderStyletoviewFinder.style,finderSafeAreatoviewFinder.finderSafeArea, and the scanner background color touserInterface.backgroundColor. Read the finder rectangle throughbaseViewModel.currentViewFinderRect;currentSecondaryViewFinderRectis no longer exposed. - RTU UI:
preferredHeightwas replaced with themaxWidthandmaxHeightparameters inSBSDKFinderConfiguration. - Replaced the
SBSDKUI2BarButtonConfigurationandSBSDKUI2PopupMenuItemconfigs of adaptive toolbar items with a singleSBSDKUI2AdaptiveBarButtonConfigurationthat combines both classes. - Replaced
Scanbot.setLoggingEnabled(_:)with theScanbot.loggingEnabledproperty. - Moved
Scanbot.testData.cameraMockDatatoScanbot.cameraMockDataand renamedSBSDKSimulatedCameraMockDatatoSBSDKCameraMockData, which supports image and video sources. TheSBSDKTestDatacontainer was removed. Set mock data before creating the scanner; changing or clearing it no longer switches an already-attached camera session. Camera-permission prompts are bypassed while mock data is set. - Replaced
SBSDKDeviceInformationwithSBSDKSystemInfo. UsemodelNameinstead ofdeviceName, combinemodelNameandiOSVersioninstead offullDeviceName, and access formatted disk-space values as properties rather than methods. - All Custom UI scanners: Camera controls moved from
SBSDKBaseScannerViewControllertocamera(SBSDKCameraModel). Usecamera.device,isAuthorized,isInterrupted,isTorchAvailable,isTorchLightEnabled,isSessionRunning, andisCapturingStillImageinstead of the former controller properties. Usecamera.normalizedZoomFactor/zoomValuefor normalized/absolute zoom,setNormalizedZoomFactor(_:animated:)/setZoom(_:animated:)to change it, andresetZoom(animated:)to reset it. Replacepause/freezeCameraandresume/unfreezeCamerawithcamera.freezeandcamera.unfreeze; readcamera.isFrozeninstead ofisCameraFrozen. - All Custom UI scanners: Scanning state and processing controls moved to
baseViewModel: usebaseRuntime.isScanningEnabled,baseRuntime.isVisible, andbaseRuntime.isEnergySavingActive; usebaseFrameEngineforadditionalFrameProcessor,timeIntervalSinceLastSuccessfulRecognition, andperformanceMetrics. CallcaptureStillImage(completion:),startEnergySaving, andendEnergySavingon the view model, andsound.playBleepSoundfor sound. ReplaceSBSDKPerformanceMetrics.frameTimewithlastFrameProcessingDuration. - All Custom UI scanners:
generalConfiguration,zoomConfiguration, andenergyConfigurationnow return snapshots. Assign a modified snapshot back to the controller, or change the livecameraanduserInterfaceproperties. InSBSDKBaseScannerGeneralConfiguration, replaceisFocusLockEnabledwithfocusMode = .focusLockedandfocusLockPositionwithfocusLockLensPosition; use the same camera properties instead of the removed controller focus-lock methods. - All Custom UI scanners: Replaced the UIKit
SBSDKShutterButtonwith the SwiftUISBSDKUIShutterButtonandSBSDKUIShutterButtonConfiguration. RenamedSBSDKScannerStatustoSBSDKShutterButtonStatus. - All RTU UI screens: The SwiftUI screen types now conform directly to
View, notUIViewControllerRepresentable. Code using theirUIViewControllerType,makeUIViewController(context:), orupdateUIViewController(_:context:)must use the corresponding UIKit controller's factory methods instead. - RTU UI: All SwiftUI scanner initializers now throw on construction failures; use
tryand handle the error. The callback-basedcreateandpresentmethods for Barcode, MRZ, VIN, Text Pattern, Check, Credit Card, and Document Data Extractor also throw. Objective-C callers must use the updated error-taking selectors, includingpresentOn:configuration:completion:error:. The async Check presentation method now returnsSBSDKUI2CheckScannerUIResult. - Data Capture Custom UI: Text Pattern and VIN word-box settings moved to
viewModel.configuration. Check ScanneracceptedCheckTypes,captureHighResolutionImage, andignoreInvalidResultsmoved there too; readstatefromviewModel.frameEngine. For Medical Certificate, useviewModel.configuration.scannerConfigurationinstead ofscannerParameters, movecaptureHighResolutionImageto the configuration model, and readstatefrom the frame engine. Document Data Extractor'sresetDocumentAccumulationis nowviewModel.frameEngine.resetAccumulation. - Data Capture Custom UI: Removed the parameterless initializers of the Check, Medical Certificate, Text Pattern, and VIN Scanner controllers. Use a parent-view or configuration initializer, or construct a view model and pass it to
init(viewModel:delegate:). - Raised the minimum iOS deployment target to iOS 15.0. Apps using the SDK must now target iOS 15.0 or later.
- RTU UI: Renamed
- Barcode Scanner:
- The boolean
enableOneDBlurScannerwas replaced by theSBSDKConfigStateenumblurryOneDScanner. - Custom UI: Moved
SBSDKBarcodeScannerViewController.isTrackingOverlayEnabledandtrackingOverlayControllerconfiguration and delegation toviewModel.trackingOverlay: useisTrackingOverlayEnabled,trackingOverlayConfiguration,delegate, orhandlers. CallviewModel.frameEngine.resetAccumulationinstead of the controller'sresetAccumulation. - Custom UI: Replaced
SBSDKBarcodeTrackedViewPolygonStyleandSBSDKBarcodeTrackedViewTextStylewithSBSDKBarcodeTrackingOverlayStyle, configured throughdefaultStyle,highlightStyle, andselectionStyle. Replace the old style, highlight, and text delegate callbacks withbarcodeTrackingOverlay(_:styleFor:proposedStyle:). Custom views now receiveSBSDKBarcodeTrackingOverlayItemthroughcustomViewFor:andupdateCustomView:with:; the olddidCreateCustomView:,SBSDKTrackedBarcodeInfoView,SBSDKTrackedBarcodeInfoViewable,customView, andcustomViewTypeAPIs were removed. - Custom UI: Scan & Count settings moved to
viewModel.configuration:scannerConfigurationreplaces the controller'sconfiguration;captureMode,polygonStyle, andshutterButtonHiddenkeep their names. UseviewModel.frameEngine.scanAndCount,continueScanning,clearCountedBarcodes, andaccumulatedBarcodesinstead of the controller's methods andcountedBarcodes. - Custom UI: Removed the parameterless initializers of
SBSDKBarcodeScannerViewControllerandSBSDKBarcodeScanAndCountViewController. Use the parent-view and configuration initializers; the regular barcode scanner also supportsinit(viewModel:delegate:).
- The boolean
- Check Scanner:
- The Check Scanner now features improved result accumulation across frames, which significantly reduces the likelihood of OCR errors. It can be configured via
SBSDKCheckScannerConfiguration.resultAccumulationConfig. - In live scanning mode, by default, 3 frames need to yield the same scanning result to produce a scan with the status
success. During accumulation, the statusscanningInProgressis returned along with the current best intermediate result. - In single-shot scanning mode, up to 9 detections are run on small perturbations of the input image. Again, by default, a result with the status
successis returned only if at least 3 of these scans are identical and successful. If fewer successful scans are obtained, a result with the statussuccessButLowConfidenceResultis produced. - Both live and single-shot scanning modes can still produce results with the statuses
incompleteValidation(if a MICR line with an unknown format was found) orerrorNothingFound(if no check was found at all). - Live scanning no longer yields the status
incompleteValidation. If a check is detected that doesn't pass validation, the statusscanningInProgressis returned instead.
- The Check Scanner now features improved result accumulation across frames, which significantly reduces the likelihood of OCR errors. It can be configured via
- Document Data Extractor:
- The new status
okButLowConfidenceResultswas introduced. This status can only be returned in single-shot mode. okButNotConfirmedwas renamed to thescanningInProgressstatus, which is now only returned in live scanning mode.
- The new status
- Document Scanner:
- Renamed
SBSDKDocumentEnhancertoSBSDKDocumentStraightenerandstraighten(image:parameters:priorCornersNormalized:)torun(image:parameters:priorCornersNormalized:). Objective-C image cropping now requires thedocumentCropOptimization:argument, and the parameterizedSBSDKCustomBinarizationFilterinitializer now includesstrokeWeight. - Renamed the
SBSDKReviewBottomBarConfigurationclass and thebottomBarfield toSBSDKReviewToolbarConfigurationandtoolbar. - Moved most
SBSDKUI2PopupMenuItemconfigs fromSBSDKUI2ReviewMorePopupMenutoSBSDKUI2AdaptiveBarButtonConfigurationitems inSBSDKUI2ReviewToolbarConfiguration. - Custom UI: Document Scanner polygon, auto-snapping, image-output, status-label, and capture-animation settings moved from
SBSDKDocumentScannerViewControllertoviewModel.configuration, retaining their property names. ReadisAnimatingCapturefromviewModel.frameEngine. ThesnapButtonproperty was removed; customizeviewModel.configuration.shutterButtonConfigurationor providecustomSnapButton. - RTU UI: Renamed
SBSDKUI2CroppingConfigurationtoSBSDKUI2CroppingStandaloneConfiguration. Renamed the camera, cropping, acknowledgement, and reviewBottomBarconfiguration types to theirToolbarequivalents, andbottomBar,bottomBarMode, andbottomBarBackgroundColortotoolbar,toolbarMode, andtoolbarBackgroundColor. Update serialized configuration keys as well. - RTU UI: Review toolbar actions now use
SBSDKUI2AdaptiveBarButtonConfiguration: configure theirbarButtonandpopupMenuItemseparately. MovedmorePopupMenu.reorderPagestotoolbar.reorderButton; usereviewScreenPopupReorderPagesButtonTitlefor the popup title. Removed the unusedcameraProgressOverlayTitlefrom the Document Scanner and Crop Screen localization. - RTU UI: Objective-C cropping factories changed: use
createWithConfiguration:completion:error:without a custom-dismiss argument, andpresentOn:configuration:completion:for presentation. Presentation returnsniland reports construction errors through completion; its completion controller argument is now nullable. Swift callers retain the throwingcreateandpresentmethods.
- Renamed
- Image Processing:
- Binarized images with anti-aliasing enabled now have higher contrast by default. To get the previous behavior, set
strokeWeight=0in theSBSDKCustomBinarizationFilter's configuration. To get the previous behavior of theSBSDKScanbotBinarizationFilter, useSBSDKCustomBinarizationFilterwithpreset4andstrokeWeight = 0. SBSDKImageProcessor.crop()has a new argument,documentCropOptimization, that controls how the crop is optimized, assuming the cropped image is a document. The argument has a default value. As a consequence, this is expected to be a breaking change only on platforms that don't support default argument values.- Moved image, polygon, rotation, cropping, appearance, and inset properties from
SBSDKImageEditingViewControllertoviewModel. CallviewModel.rotateInputImageClockwise(_:animated:),resetPolygon, anddetectAndApplyPolygoninstead of the controller's rotation, reset, and detection methods. ReplacecroppedImagewithtry viewModel.outputImage(croppingEnabled: true);processingQueueis no longer public.
- Binarized images with anti-aliasing enabled now have higher contrast by default. To get the previous behavior, set
- MRZ Scanner:
- The internal MRZ field
Unknownwas previously returned but is now removed from the result. - The Nationality field is now optional.
- The internal MRZ field
- General:
- ⚠️ Deprecations:
- General:
- RTU UI:
SBSDKUI2TopBarMode.hidden,SBSDKUI2TopBarMode.gradient,SBSDKUI2ToolbarMode.hidden, andSBSDKUI2ToolbarMode.gradientvalues are deprecated.
- RTU UI:
- Text Pattern Scanner:
- The
ocrResolutionLimitoption is deprecated in favor ofinputHeightLimit.
- The
- General:
- 🚙 Under the hood:
- General:
- Updated gs1-json to version 1.2.
- General:
Version 9.0.3 (14 September 2026)
- 🎉 New:
- Barcode Scanner:
- Added the
barcodeDefectProfileproperty to theCode128,ITF, andUPC/EANbarcode configurations. The property acceptsGENERIC,GENERIC_AND_THERMAL(default), andDEGRADED_THERMALprofiles. TheDEGRADED_THERMALprofile improves robustness when thermal printers skip entire bars during printing.
- Added the
- Barcode Scanner:
- 🐞 Bug fixes:
- General:
- Fixed a build issue that prevented any app using
ScanbotDocumentScannerSDKfrom passing App Store validation.ScanbotSDKandScanbotBarcodeScannerSDKwere not affected by this issue.
- Fixed a build issue that prevented any app using
- General:
Version 9.0.2 (21 July 2026)
- 🐞 Bug fixes:
- PDF Generation:
- Fixed an issue where PDF generation produced an invalid file when the license key did not include the OCR feature, even though no
ocrConfigurationwas provided.
- Fixed an issue where PDF generation produced an invalid file when the license key did not include the OCR feature, even though no
- PDF Generation:
Version 9.0.1 (6 July 2026)
- 🐞 Bug fixes:
- Document Scanner:
- Fixed an issue in the RTU UI Document Scanner where the camera screen remained black when swiping back from the Review Screen.
- Fixed an issue in the RTU UI Document Scanner Crop Screen where the polygon was not always applied with pixel-perfect accuracy.
- Document Scanner:
Version 9.0.0 (30 June 2026)
- 📖 Release notes:
- Explore the release highlights and key improvements here.
- 🎉 New:
- General:
- SBSDKImageRef:
optimizeflag added tosaveImageandencodeImage. When set totrue, the encoder spends additional time to improve JPEG output quality. - Added
accessibilityStateandactiveAccessibilityStateproperties for flash and flip camera buttons in the RTU UI Barcode Scanner and Data Capture screens. VoiceOver now announces the current state in accessibility mode. - Added properties
isTapToFocusEnabledandtapToFocusDurationtoSBSDKBaseScannerGeneralConfiguration. You can now enable the tap-to-focus functionality in all Custom UI screens. Disabled by default.
- SBSDKImageRef:
- Document Scanner:
- Added
SBSDKDocumentEnhancerwith astraightenmethod that removes crinkles, creases, folds, and curl from document photos. It is enabled by default in the RTU UI and automatically applied in auto-cropping flows. See the Document Enhancer documentation for details. - Support for recognizing cropped documents.
SBSDKDocumentScannerParametersnow includesalreadyCroppedScoreThreshold, andSBSDKDocumentDetectionScoresnow includesalreadyCroppedScore. In single-shot mode, if no document is detected and the score exceeds this threshold, a newSBSDKDocumentDetectionStatusvalueokButAlreadyCroppedis returned, along with a quad (points) corresponding to the image corners. This feature is supported by all downstream components of the Document Scanner (Check Scanner, Credit Card Scanner, Document Classifier, Document Data Extractor, and Medical Certificate Scanner). - Added
backgroundproperty toSBSDKUI2TextButtonModeandSBSDKUI2TextWithBadgeButtonModeto configure the background style for the preview button in the RTU UI Document Scanner. - Added
accessibilityDescriptionDocumentImagePreviewproperty toSBSDKUI2ReviewScreenConfigurationto configure the accessibility description of the document image preview.
- Added
- Image Processing:
- New
SBSDKColorDocumentShadowRemovalFiltercapable of removing shadows from documents without damaging text, barcodes, or images.
- New
- PDF & TIFF Generation:
- Added methods to
SBSDKPDFGeneratorthat generate a PDF from an array ofSBSDKImageRefimages. - Added processing block parameter to all
SBSDKPDFImageExtractorextract methods, allowing real-time image manipulation during PDF extraction with memory-efficient processing. SeeSBSDKPDFImageProcessingBlock. - Added
extract(from:extraction:)method toSBSDKPDFImageExtractorfor conditional PDF image extraction with callback-based flow control, allowing extraction to be stopped midway and enabling memory-efficient processing of extracted images. SeeSBSDKPDFImageExtractionBlock.
- Added methods to
- Document Quality Analyzer:
- A new Document Quality Analyzer algorithm was introduced. The result object
SBSDKDocumentQualityAnalyzerResult'squalityproperty can now beacceptable,unacceptable, oruncertain, indicating whether a user-provided document image meets the required quality standard. Advanced configuration is available using thequalityAnalysisModelproperty inSBSDKDocumentQualityAnalyzerConfiguration, which allows the Document Quality Analyzer to be fine-tuned for specific use cases using an external script. This capability is currently in closed beta. To request access and obtain the script, sign up here. - Added threshold property
qualityAcceptableUncertainThresholdfor categorizing documents into three classes:acceptable,unacceptable, anduncertain. - Added the
inputScalesproperty inSBSDKDocumentQualityAnalyzerConfigurationto run the model at multiple resolutions and automatically select the best result. - Added the
inputScaleThresholdToProcessEntireImageproperty inSBSDKDocumentQualityAnalyzerConfigurationto run the Document Quality Analyzer on the entire image, even whenminProcessedFractionandmaxProcessedFractionare not equal to 1 for small input scales. - The resulting
bestInputScaleis now included in the outputSBSDKDocumentQualityAnalyzerResult. - Added
compatibilityModeproperty toSBSDKDocumentQualityAnalyzerConfigurationto allow running the legacy (v8) document quality analysis engine.
- A new Document Quality Analyzer algorithm was introduced. The result object
- OCR Engine:
- Added a method to
SBSDKOCREngineManagerthat generates a PDF from an array ofSBSDKImageRefimages.
- Added a method to
- Document Data Extractor:
- Added support for Romanian, Italian, Turkish, and Polish ID cards.
- Barcode Scanner:
- Added the
touchToFocusEnabledproperty toSBSDKUI2CameraConfigurationto allow enabling or disabling tap-to-focus in the RTU UI screen. - Added the
twoDDecoderModeproperty toSBSDKBarcodeFormatDataMatrixConfiguration. It defaults tohighEffortand can be set tolowEffortfor very low-power devices requiring higher frame rates.
- Added the
- General:
- 🚀 Improvements:
- General:
- Optimized still image capturing by switching to the 420YCbCr format internally.
- Improved camera session management across all scanning components.
- Enhanced accessibility of the zoom button in the RTU UI Barcode Scanner and Data Capture screens. VoiceOver now announces its current state in accessibility mode.
- Document Scanner:
- Updated document detector models with improved accuracy.
- Partially visible documents are now supported in all processing modes. Auto and single-shot modes now return the
errorPartiallyVisibledocument status when only 1–3 document corners are visible in the input image and the scanner is configured withallowPartiallyVisibleDocumentsset to true inSBSDKPartiallyVisibleDocumentConfiguration. - Improved captured image quality when capturing with a virtual camera device, e.g., the triple camera.
- Document Quality Analyzer:
- Increased the default threshold for
minRequiredOrientationConfidenceto 0.9 inSBSDKDocumentQualityAnalyzerConfiguration, reducing false positives in orientation estimation. - Orientation detection now considers text at any angle, not just within ±10° of 0°, 90°, 180°, or 270°. For orientation estimation, text at any angle is rounded to the nearest multiple of 90° — for example, a 30° angle yields a predicted orientation of 0°.
- Improved performance on very bright or very dark images.
- Increased the default threshold for
- OCR Engine:
- New model with better performance for German diacritics and ß/ẞ recognition.
- Added support for Turkish, Polish, Italian, and Romanian alphabets.
- Increased accuracy without increasing inference time.
- VIN Scanner:
- Live or single-shot mode, derived from the input image, is now propagated to the internal barcode scanner.
- Document Data Extractor:
- Reduced the likelihood of reading incorrect values for eye color on German ID cards (e.g., GRUN instead of GRÜN).
- Document types are now classified using an ML model, resulting in higher quality and faster recognition.
- Check Scanner:
- For Canadian checks, the scanner now allows more whitespace characters in the MICR line.
- Credit Card Scanner:
- Various improvements to check digit validation and aspect ratio handling.
- Barcode Scanner:
- Clean barcodes (QR Code, Data Matrix, and all 1D formats) are detected faster in single-shot mode and can be detected without a quiet zone.
- Significantly improved decoding performance for truncated PDF417 barcodes.
- Reduced the false positive rate for barcode formats EAN-8, EAN-13, and UPC-A when
enableOneDBlurScanneris enabled (now the default). - Improved recall and precision for barcode formats EAN-8, EAN-13, UPC-A, and UPC-E when ink spread is present.
- Data Matrix codes can now be scanned under harsher conditions. With
twoDDecoderModeset tohighEffort, scanning works even on curved surfaces or when the code is partially occluded. - Reduced the number of false-positive Codabar barcodes when scanning in live mode and the barcode is only partially visible.
- General:
- 🐞 Bug fixes:
- General:
- Fixed a crash on iPhone SE when switching to the front camera in the Barcode Scanner or Check Scanner.
- Fixed the viewfinder's initial position when launched in landscape orientation in all RTU UI Data Capture screens.
- Document Scanner:
- Fixed an issue in the RTU UI Document Scanner where the user could become stuck on the camera screen when the
pageCountLimitwas set to 1.
- Fixed an issue in the RTU UI Document Scanner where the user could become stuck on the camera screen when the
- PDF & TIFF Generation:
- Fixed an issue where JPEG compression was applied twice to images being rendered to a PDF.
- Document Quality Analyzer:
- Fixed
SBSDKProcessByTileConfiguration.enabledbeing ignored regardless of its value.
- Fixed
- VIN Scanner:
- Fixed a bug where the result was not displayed properly in
SBSDKUI2VINScannerViewControllerwhenconfirmationAlertDialogEnabledwas enabled.
- Fixed a bug where the result was not displayed properly in
- Document Data Extractor:
- Fixed an issue where documents containing Cyrillic text were sometimes classified incorrectly.
- Check Scanner:
- Fixed missing support for longer check number fields on Canadian checks.
- Barcode Scanner:
- Fixed an arithmetic exception occurring when processing images with very small heights (lower than 5 px) in single-shot mode.
- Fixed the orientation of quads for barcode formats DataBar and DataBar Expanded with multiple stacks.
- Fixed a rare issue with the DataBar barcode format, which could lead to a crash.
- Fixed an issue in the RTU UI Barcode Scanner screen where the confirmation alert would reappear upon tapping the submit button while in Find & Pick mode.
- General:
- ⚠️ Breaking changes:
- General:
- All APIs that receive or return normalized coordinates of points assume that normalization is performed by dividing image coordinates by (width - 1, height - 1) instead of
(width, height). This ensures that rotation operations that are performed on the normalized coordinates are mathematically correct. Callers that call functions that receive normalized coordinates or process results with normalized points and perform conversion on their own should adjust their implementations.
- All APIs that receive or return normalized coordinates of points assume that normalization is performed by dividing image coordinates by (width - 1, height - 1) instead of
- Document Scanner:
- Renamed the
stylefield totitleinSBSDKUI2TextButtonModeand thetextfield totitleinSBSDKUI2TextWithBadgeButtonMode. - Updated the Acknowledge Screen logic in the RTU UI Document Scanner to properly handle document quality scenarios. The
unacceptableQualityacknowledgment mode now shows the Acknowledge Screen for "document not found" cases whendocumentNotFoundWarning.visibleis configured totrue. This may change the behavior for applications relying on the previous logic where "document not found" cases were always bypassed inunacceptableQualitymode. - Improved the button visibility logic on the Acknowledge Screen. The proceed anyway button visibility now correctly considers both the specific button configuration and the global
proceedAnywayButton.visiblesetting. This may affect existing configurations that rely on the previous behavior. By default, when the image is unacceptable, the proceed anyway button is no longer shown unless explicitly configured to be visible (seescreens.camera.acknowledgement.bottomBar.proceedAnywayButton.unacceptableQuality). - The
badImageHintproperty has been removed fromSBSDKUI2AcknowledgementScreenConfiguration. The warning shown for bad image capture is now configured separately usingunacceptableQualityWarning,uncertainQualityWarning, anddocumentNotFoundWarning. - Strings were introduced for the Acknowledge Screen in the RTU UI Document Scanner to support the new document quality scenarios. Update custom translations for the Acknowledge Screen to include these strings:
proceedAnywayButtonDocumentNotFound,proceedAnywayButtonUnacceptableQuality,proceedAnywayButtonUncertainQuality,acknowledgementWarningDocumentNotFound,acknowledgementWarningUnacceptableQuality, andacknowledgementWarningUncertainQuality. - Enhanced the document quality warning configuration logic to better handle edge cases where no analyzer result exists or document detection fails, which may change the acknowledgment flow for imported images or manual captures in certain configurations.
- Renamed the
- PDF & TIFF Generation:
- When adding a PNG file to a PDF, the image is now always re-encoded as JPEG. Previously, this occurred only in specific situations.
- Document Quality Analyzer:
- The configuration properties
qualityThresholdsandqualityIndiceshave been renamed toqualityLevelThresholdsandqualityLevelIndices. The renamed properties are now deprecated; use the newqualityAnalysisModelproperty instead. - The
detectOrientationproperty has been removed. Orientation detection now always runs. - The
inspectSmallTextproperty has been removed.
- The configuration properties
- Document Data Extractor:
- When initialized with no accepted document types, or only invalid ones, and with MRZ fallback disabled, an
invalidArgumenterror is now thrown.
- When initialized with no accepted document types, or only invalid ones, and with MRZ fallback disabled, an
- General:
- ⚠️ Deprecations:
- Document Quality Analyzer:
- The
SBSDKDocumentQualityenum and result object property are deprecated; useSBSDKDocumentQualityAssessmentinstead. - The
SBSDKDocumentQualityAnalyzerResult.documentFoundproperty is now deprecated. This deprecated property indicates if too few characters are detected. The newSBSDKDocumentQualityAssessmentwill be reported asuncertainin this situation. If this is not suitable for your use case, consider using the Document Scanner instead to determine if an image contains a document. In the RTU UI Document Scanner, thedocumentNotFoundWarningcase is now based on the Document Scanner output. - Properties
qualityLevelThresholdsandqualityLevelIndicesare deprecated (see Breaking changes).
- The
- Document Quality Analyzer:
- 🚙 Under the hood:
- Updated
magic_enumto version 0.9.7. - Added a new barcode decoding model, increasing SDK size by approximately 650 KB.
- Updated
Version 8.0.6 (9 April 2026)
- 🎉 New:
- Check Scanner:
- Added support for more USA check formats. Newly supported formats: (TT)xxx(TT)xxxx(UU)xxx(UU), and the ones enumerated in the MICR line identification documentation.
- Added support for xxx-xxx-x account number format for Canadian checks.
- Check Scanner:
- 🐞 Bug fixes:
- Document Scanner:
- Fixed an iPad layout issue with the RTU UI Acknowledge Screen.
- Fixed an issue where the auto-rotation feature would incorrectly rotate certain kinds of images by 180 degrees.
- Document Scanner:
- ⚠️ Breaking changes:
- Check Scanner:
- Leading and trailing whitespace for all USA check fields is now trimmed.
- A group of numbers in the Canadian check account number section preceding the first dash is now treated as a designation number only if its length is 4. Previously, a sequence of any length was treated as a designation number. Dashes present in the MICR line are preserved in the Account Number parsed field.
- Check Scanner:
Version 8.0.5 (1 April 2026)
- 🐞 Bug fixes:
- Document Scanner:
- Fixed an issue where the RTU UI Acknowledge Screen was not showing when the
acknowledgementModewas set tobadQualityand the captured image was not classified as a document image.
- Fixed an issue where the RTU UI Acknowledge Screen was not showing when the
- Document Scanner:
Version 8.0.4 (23 February 2026)
- 🐞 Bug fixes:
- Document Scanner:
- Fixed wrong polygon orientation when capturing a page with auto-detect orientation enabled in the RTU component, leading to the inaccurate crop of the document image.
- Document Scanner:
Version 8.0.3 (17 February 2026)
- 🐞 Bug fixes:
- PDF Generator:
- Fixed an error when encrypting and decrypting PDFs with the AES/GCM encrypter.
- PDF Generator:
Version 8.0.2 (5 February 2026)
- 🐞 Bug fixes:
- Document Scanner:
- Fixed a bug that left a temporary copy of captured images on disk when scanning with the RTU-UI v2 Document Scanner. Once you have fully migrated all
SBSDKDocumentobjects toSBSDKScannedDocument, you can clean up the old storage and temporary copies by callingSBSDKDocumentPageFileStorage.defaultStorage.removeAll().
- Fixed a bug that left a temporary copy of captured images on disk when scanning with the RTU-UI v2 Document Scanner. Once you have fully migrated all
- Document Scanner:
Version 8.0.1 (2 February 2026)
- 🐞 Bug fixes:
- General:
- Fixed a memory leak in all RTU-UI v2 data capture screens.
- Fixed a possible error when an image ref is created from a 16-bit image.
- Document Scanner:
- Fixed a UI regression in
SBSDKUI2DocumentScannerViewControllerwhere the bottom bar height was incorrectly increased.
- Fixed a UI regression in
- PDF Generator:
- Fixed a bug where invalid PDFs were generated from certain images.
- Document Data Extractor:
- Fixed a bug which prevented the recognition of mixed letters in the address field of some ID cards.
- Speed up verification of
DeResidencePermitFrontby using interpolation-verification for the "Remarks" field.
- General:
Version 8.0.0 (13 January 2026)
- 🎉 New:
- General:
- The SDK now supports a new license key format, which does not contain special characters or line breaks.
SBSDKImageRefconstructor now supports HEIC images.- Added the possibility for providing custom encryption for individual images from path load / image save operations.
- Added property
cameraLiveScannerResolutionto all the RTU-UI v2 screens to control the camera live scanning resolution. - Added property
keepScreenOnto all RTU-UI v2 screens to prevent the system from going idle or entering the lockscreen while scanning. - Added property
keepScreenOnto all Classic UI screens (seeSBSDKBaseScannerEnergyConfiguration) to prevent the system from going idle or entering the lockscreen while scanning. - Added mandatory delegate functions
...scannerViewController(controller:didFailScanning:)to all Classic-UI components. - All scanner and generator classes now throw errors instead of returning
nilorfalsein case of failures. - Added a read-only property
colorStringtoSBSDKUI2Colorto retrieve the color in HEX format or a reference to a palette color. - Added functions
toRgba()andtoArgb()toSBSDKUI2Colorto retrieve the color in RGBA and ARGB hex formats.
- Document Scanner:
- Added the new
partiallyVisibleDocumentConfigurationobject inSBSDKDocumentScannerConfigurationto determine how partially visible documents are aggregated and tracked. This feature is disabled by default. - Two new
SBSDKDocumentDetectionStatusvalues have been introduced:errorPartiallyVisibleanderrorPartiallyVisibleTooClose. - The
SBSDKDocumentDetectionResultnow includes adisplacementVectorand adisplacementenum to indicate the direction towards the center of a partially visible document. - Added support for Document Quality Analyzer configuration to RTU-UI v2 Document Scanner.
- Added support for bottom bar visual modes, see
SBSDKUI2BottomBarMode. - Added
SBSDKUI2TextWithBadgeButtonModepreview mode in RTU-UI v2 Document Scanner.
- Added the new
- Cropping Screen:
- Added support for selecting and moving individual corners in the cropping screen using a hardware keyboard. Press the tab key to cycle through the corner and edge handles. Use the arrow keys to move the selected corner or edge handle. Hold shift while pressing the arrow keys to move faster.
- Image Processing:
- The color document filter now has parameters controlling contrast, color, and paper enhancement.
- Document Quality Analyzer:
- Added
cumulativeContrastHistogramandcumulativeTextSizeHistogramfor text contrast and size estimation inSBSDKDocumentQualityAnalyzerResult. - Added the
orientationConfidenceproperty to theSBSDKDocumentQualityAnalyzerResultresult object. - Added an option to explicitly enable/disable by tile processing via
ProcessByTileConfiguration.
- Added
- Text Pattern Scanner:
- Added the option
optimizeSingleLinetoSBSDKTextPatternScannerConfiguration. Enable this option when scanning a single line or a single word that is hard to scan reliably. Disabled by default.
- Added the option
- Document Data Extractor:
- Added a metadata child document to all supported formats.
- Added
CountryCodevalues to all supported formats. - Introduced the
okButInvalidDocumentreturn status toSBSDKDocumentDataExtractionStatus. This is returned if a field's contents are confirmed but fail validation rules. - Introduced
personalIdcommon field type toSBSDKCommonFieldType.
- Check Scanner:
- Support a wider range of USA check formats.
- Barcode Scanner:
- New supported document parser for British Columbia driver licenses PDF417 codes.
- Introduced a new algorithm for recognizing 1D symbologies, enhancing performance with blurred and distant barcodes. This feature is enabled by default but can be turned off using the
enableOneDBlurScannerproperty in barcode format configurations on low-power devices if necessary. - Added a new
SBSDKBarcodeScannerEngineMode:nextGenMaxDistance, which is optimized for scanning from far distances on very high-power devices with a 4K video stream. - All 1D barcode formats can be configured with a new
oneDConfirmationModewhich isthoroughby default. Setting it tominimalornonecould lead to higher recall in difficult scenarios, but could also cause more false positives.
- General:
- 🚀 Improvements:
- General:
- All OCR-based features now benefit from new OCR models that are optimized for speed and accuracy.
- The "Created TensorFlow Lite XNNPACK delegate for CPU." log is no longer an output in production builds.
- If a global or custom encrypter is set when an image is created from a file, it will be automatically detected if the image is encrypted or not. Note that now
encryptionModeis NOT ignored if a custom encrypter/decrypter is used. - When creating an
SBSDKImageReffromUIImageor from a .png file containing an alpha channel, it is blended with a user specified canvas color instead of simply discarding the alpha channel. It is possible to select whether to use aWHITEorBLACKbackground inSBSDKRawImageLoadOptions,SBSDKPathImageLoadOptions, andSBSDKBufferImageLoadOptions. - Improved error handling and reporting in all scanners, this includes licensing errors, cancellation by user, file I/O errors, image conversion errors, and scanning errors. In case of an error, an
SBSDKErroris thrown with a descriptive error message and error code. - Camera sessions no longer show a black screen in case of license error. Instead, the camera runs but the detection fails with appropriate license error.
- Classic UI components can now be configured directly by setting the properties of the configuration objects instead of creating new configuration objects.
- Document Scanner:
- Aspect ratio scores are now symmetrical, and low scores are more consistent.
- Cropping Screen:
- Improved cropping handle movement, preventing irregular polygons and glitches.
- Image Processing:
- The color document filter now preserves colors better by default.
- Removed unused image filter models, saving about 2.4MB from binaries.
- PDF Generation:
- PDF generation now supports binarized images. Binarized images are stored in the PDF with an optimized compression algorithm, resulting in extremely small file sizes.
- Document Quality Analyzer:
- Improved performance.
- If provided configuration is invalid, an error will be returned instead of changing invalid fields to default values.
- OCR Engine:
- Improved detection of text, specifically for lines that are close together.
- Document Data Extractor:
- Improved
FrameAccumulationlogic. - Increased accuracy, specifically fewer false positives.
- General speed improvements.
- Glare detection now works more reliably.
- Improved
- Credit Card Scanner:
- Higher recall for expiry date detection.
- Improved
FrameAccumulationlogic.
- Medical Certificate Scanner:
- Improved date recognition.
- Barcode Scanner:
- Improved quiet zone checks for the barcode format
PharmaCodeto reduce the false positive rate. - Reduced the false positive rate of blurred barcodes in live mode when the barcode is only partially visible.
- Improved quiet zone checks for the barcode format
- General:
- 🐞 Bug fixes:
- General:
- SBSDKImageRef: If
SBSDKImageRefwas created in a lazy mode from an encrypted file and then saved to some location, a simple copy was performed. Because of this, the created file could become invalid if the decryption key depends on location. - SBSDKImageRef: If
SBSDKImageRefwas saved to an already existing location, in some cases it could return an error instead of overwriting the existing file. - SBSDKImageRef: Fixed possibility of
SBSDKImageRefto be saved as an invalid JPEG (when only part of the image was actually saved).
- SBSDKImageRef: If
- Document Scanner:
- Now correctly returns
errorTooDarkwhen nothing is detected and the image brightness is below the threshold. - Fixed a bug in the SwiftUI Document Scanner that prevented the proper display of the review screen automatically when
showReviewScreenOnStartwas set to true.
- Now correctly returns
- Document Quality Analyzer:
- Fixed a bug that could lead to incorrect DoQA results. This bug affected documents with text lines that were not strictly vertical or horizontal.
- Document Data Extractor:
- Fixed a rare case where an EHIC card could be returned with an excluded country.
- MRZ Scanner:
- Fixed a rare crash with inverted text.
- Fixed an issue with an incorrect birth date being parsed from the MRZ date, when the birth date could be returned from the future.
- VIN Scanner:
- Fixed a bug when scanning VINs that could have discarded valid results.
- Credit Card Scanner:
- An invalid status will now be correctly returned if the frame accumulator confirms a field that is invalid.
- Barcode Scanner:
- Fixed a bug in Barcode RTU-UI v2 Multiple Scanning Mode where the count of the sheet button was not updated properly.
- General:
- ⚠️ Breaking changes:
- General:
- API Consistency Improvements: We went through our APIs and made several improvements to make them more consistent and easier to use. The SDK now throws errors instead of returning
nilorfalsein many places. This also affects how you handle results from various operations in the SDK. Please review your error handling code when updating to this version. - All scanners now have a common public interface:
- Replaced
recognize...anddetect...functions by arunfunction. - Replaced all platform specific image parameters, e.g.
UIImageandCMSampleBuffer, by a parameter of typeSBSDKImageRef.
- Replaced
SBSDKImageRefis now immutable. Theclone()method has been removed, and cloning now acquires a new strong reference.- Changed encryption of images, generated PDFs, and TIFFs:
- Removed properties
defaultPDFEncrypteranddefaultImageStoreEncrypterfrom classScanbotUI. - Images, generated PDFs, and TIFFs are now encrypted using the new
defaultCryptingProviderproperty in theScanbotclass.
- Removed properties
- Changed the completion handlers of all RTU-UI v2 screens to either return a result or an error. Cancellation by user is treated as an error. Check
SBSDKError.isCanceled. - The default license error handler
Scanbot.defaultLicenseFailureHandlerno longer tries to display an alert, instead it logs the error to the console. SBSDKImageRef:encryptionModedefault value has been replaced withAUTO.- Removed function
setupDefaultLicenseFailureHandler(completion: (() -> ())?)fromScanbotclass. Instead callsetupDefaultLicenseFailureHandler(). The completion handler is no longer needed. - Removed
SBSDKOCRPageandSBSDKOCRResultBlockclasses.SBSDKOCRResultnow contains all recognized pages asSBSDKPageobjects.
- API Consistency Improvements: We went through our APIs and made several improvements to make them more consistent and easier to use. The SDK now throws errors instead of returning
- Feature removal:
- Removed the License Plate Scanner.
- Document Scanner:
- The
processingModehas been moved fromDocumentScannerParameterstoSBSDKDocumentScannerConfiguration. - Accepted score thresholds are now all
ints. - Removed Document RTU-UI v1 completely, including
SBSDKUIDocumentScannerViewController,SBSDKUIFinderDocumentScannerViewController,SBSDKUICroppingViewControllerand all related components.
- The
- Image Processing:
- The
Image Processornow returns a newSBSDKImageRefinstead of applying operations in place. Filters: TheSBSDKColorDocumentFilternow works slightly differently by default. To get the previous behavior, setpaperWhitening=0andpaperWhiteningBias=64.- The behavior of the
LegacyImageFilterwas changed to be a no-op. The class is kept only for migration purposes. It is now required to migrate to the other parametric filters.
- The
- PDF Image Extractor:
- The constructor
init(configuration:, ocrConfiguration: , useEncryptionIfAvailable)now throws anSBSDKErrorif the license check has failed.
- The constructor
- TIFF Generation:
- Removed the empty constructor initializer, please use
init(parameters:, useEncryptionIfAvailable:)instead. - The constructor
init(parameters:, useEncryptionIfAvailable:)now throws anSBSDKErrorif the license check has failed. - The methods
generate(from images:, to fileURL:),generate(from imageURLs:, to fileURL:),generate(from document:, to fileURL:), andgenerate(from scannedDocument:, to fileURL:)now throw anSBSDKErrorif the TIFF generation has failed and do not return a Boolean anymore. - The asynchronous methods
generate(from images:, to fileURL:),generate(from imageURLs:,to fileURL:),generate(from document:, to fileURL:), andgenerate(from scannedDocument:, to fileURL:)now throw anSBSDKErrorif the TIFF generation fails. - The completion blocks of
generate(from images:, to fileURL:, completion:),generate(from imageURLs:, to fileURL:, completion:),generate(from document:, to fileURL:, completion:),generate(from scannedDocument:, to fileURL:, completion:), andgenerate(from images:, completion:)now include an additionalError?parameter which is non-nil if the TIFF generation fails.
- Removed the empty constructor initializer, please use
- Document Quality Analyzer:
- The
minProcessedFraction,maxProcessedFraction,minNumberOfRequiredSymbols, andtileSizeoptions are moved into the separateSBSDKProcessByTileConfiguration.
- The
- MRZ Scanner:
- Removed MRZ RTU-UI v1 completely, including
SBSDKUIMRZScannerViewControllerand all related components. - Replaced methods
SBSDKMRZScanner.scan(from: UIImage)andSBSDKMRZScanner.scan(from: SBSDKBaseScannerFrame)bySBSDKMRZScanner.run(image: SBSDKImageRef).
- Removed MRZ RTU-UI v1 completely, including
- Text Pattern Scanner:
- Removed TextPattern RTU-UI v1 completely, including
SBSDKUITextPatternScannerViewControllerand all related components.
- Removed TextPattern RTU-UI v1 completely, including
- VIN Scanner:
- Removed VIN RTU-UI v1 completely, including
SBSDKUIVINScannerViewControllerand all related components.
- Removed VIN RTU-UI v1 completely, including
- Document Data Extractor:
- No longer returns crops by default. This can be re-enabled in the configuration.
- All documents:
CommonFieldType.CountryCodehas been renamed toIssuingCountryinSBSDKCommonFieldType. EuropeanDriverLicenseFront: The common field type forCitizenshiphas been changed toNationality.- Renamed output statuses and improved their documentation to align with the new
okButInvalidDocumentstatus. - Updated
SBSDKDocumentDataExtractionStatusstatuses. - Removed the
SBSDKUIDataExtractorViewControllerclass and its related components as part of the DDE RTU-UI v1 removal.
- EHIC Scanner:
- Removed EHIC RTU-UI v1 completely, including
SBSDKUIHealthInsuranceCardRecognizerViewControllerand all related components.
- Removed EHIC RTU-UI v1 completely, including
- Check Scanner:
- Removed Check RTU-UI v1 completely, including
SBSDKUICheckScannerViewControllerand all related components. - Changed
SBSDKCheckScannerViewControllerDelegatefunctioncheckScannerViewController(_:didScanCheck:)tocheckScannerViewController(_:didScanCheck:isHighRes:). - Renamed enum
SBSDKCheckRecognizerStatetoSBSDKCheckScannerState. - Renamed the enum case
recognizingtoscanninginSBSDKCheckScannerState.
- Removed Check RTU-UI v1 completely, including
- Medical Certificate Scanner:
- Removed Medical RTU-UI v1 completely, including
SBSDKUIMedicalCertificateRecognizerViewControllerand all related components.
- Removed Medical RTU-UI v1 completely, including
- Barcode Scanner:
- No longer returns crops by default. This can be re-enabled in the configuration.
- The
MicroQrCodebarcode format has been removed from the list of common barcode formats. - Removed Barcode RTU-UI v1 completely, including
SBSDKUIBarcodeScannerViewController,SBSDKUIBarcodesBatchScannerViewControllerand all related components. - Removed
SBSDKUI2BarcodeScannerConfigurationand replaced it withSBSDKBarcodeScannerConfigurationin Barcode RTU-UI v2. - Removed properties
isSelectableandisAutomaticSelectionEnabledfromSBSDKBarcodeTrackingOverlayConfiguration. - Renamed parameter
isSelectedtoisHighlightedin tracking overlay methods. - Changed delegate method signatures in
SBSDKBarcodeTrackingOverlayControllerDelegate:- Removed
didChangeSelectedBarcodesmethod. - Added
shouldHighlightmethod to determine barcode highlighting state. - Added
proposedStyleparameter to style-related delegate methods.
- Removed
- General:
- 🚙 Under the hood:
- Upgraded libzueci to 1.0.1.
- Added snowflake-arctic-embed-xs eadfba3b.
Version 7.1.4 (28 October 2025)
- 🐞 Bug fixes:
- Barcode Scanner:
- Fixed truncated text on the back button in the RTU-UI v2 Barcode Scanner screen.
- Document:
- Fixed truncated texts on the back buttons in the RTU-UI v2 Document Scanner screens.
- Barcode Scanner:
Version 7.1.3 (15 October 2025)
- 🎉 New:
- Barcode Scanner:
- Barcode configurations for 1D barcode types have a new field
minimumNumberOfRequiredFramesWithEqualRecognitionResultthat requires this number of frames on which the barcode has to be detected.
- Barcode configurations for 1D barcode types have a new field
- Check Scanner:
- We now extract the field after the account number on US checks. The name in the result is
checkNumber. Note that this name is only based on common usage and not on any enforced standard. - Added
SBSDKCheckScannerViewControllerDelegatefunctioncheckScannerViewControllerShouldCaptureHighResImage(_ controller: SBSDKCheckScannerViewController, forResult result: SBSDKCheckScanningResult) -> Bool.
- We now extract the field after the account number on US checks. The name in the result is
- Barcode Scanner:
- 🚀 Improvements:
- Check Scanner:
- Updated US check field documentation.
- Check Scanner:
- 🐞 Bug fixes:
- General:
- Fixed a bug in the RTU-UI v2 user interface that prevented the proper display of the view finder in landscape mode.
- Document Scanner:
- Fixed a bug in RTU-UI v2 that did not always crop images from the photo library.
- Check Scanner:
- Fixed a bug in the implementation of the US check standard which lead to rejection of valid checks.
- Fixed a bug in Check Scanner RTU-UI v2 that delivered (invalid) results when
documentDetectionModewas set todetectAndCropDocument.
- General:
- ⚠️ Breaking changes:
- Barcode Scanner:
- The field
minConfirmationsStandaloneEANinSBSDKBarcodeAccumulationConfigurationwas moved and renamed to the fieldminimumNumberOfRequiredFramesWithEqualRecognitionResultExtensionlessinSBSDKBarcodeFormatUpcEanConfiguration.
- The field
- Check Scanner:
- Changed
SBSDKCheckScannerViewControllerDelegatefunctioncheckScannerViewController(: SBSDKCheckScannerViewController, didScanCheck: SBSDKCheckScanningResult)tocheckScannerViewController(: SBSDKCheckScannerViewController ,didScanCheck: SBSDKCheckScanningResult, isHighRes: Bool).
- Changed
- Barcode Scanner:
Version 7.1.2 (1 September 2025)
- 🎉 New:
- General:
- Added property
isInterruptedtoSBSDKCameraSessionto indicate if the camera session was interrupted by the system.
- Added property
- Document Scanner:
- Added property
documentPreviewImageSizeLimitinSBSDKDocumentPageto limit the size of the document preview image.
- Added property
- General:
- 🚀 Improvements:
- Document Scanner:
- Rebalanced the internally used photo capture settings to better match the photo quality prioritization modes. The mode
speedis now significantly faster, the modebalancedis a bit faster, and the modequalityis a bit slower with the best possible image quality.
- Rebalanced the internally used photo capture settings to better match the photo quality prioritization modes. The mode
- Document Scanner:
- 🐞 Bug fixes:
- Document Scanner:
- Fixed an issue on simulators where the shutter button was missing in the RTU-UI Document Scanner.
- General:
- Fixed a bug with scanned documents cloning when using per-file encryption.
- Document Scanner:
Version 7.1.0 (24 July 2025)
- 🎉 New:
- Document Scanner:
- Added property
showReviewScreenOnStarttoSBSDKUI2DocumentScanningFlow. If enabled, the scanner automatically navigates to the Review Screen when the flow starts. - Added property
openReviewAfterEachScantoSBSDKUI2CameraScreenConfiguration. If enabled, the Review Screen is opened after each addition of a new page. - Added property
showLastPageWhenAddingtoSBSDKUI2ReviewScreenConfiguration. If enabled, the Review Screen will be opened showing the last page.
- Added property
- General:
- Added property
hardwareButtonsEnabledtoSBSDKUI2CameraConfiguration. If enabled, it allows zooming using the camera control button (iPhone 16 series). - Added property
fpsLimittoSBSDKUI2CameraConfigurationandSBSDKUI2DocumentScannerCameraConfigurationto limit the rate of detections per second in normal performance mode. - Added property
didEndZoomHandlertoSBSDKZoomingImageScrollView. - Added analytics support with new classes:
SBSDKAnalyticsManager,SBSDKAnalyticsEvent,SBSDKAnalyticsFeature,SBSDKAnalyticsCategory,SBSDKAnalyticsEventName,SBSDKAnalyticsEventFactory, andSBSDKAnalyticsSubscriberfor tracking and managing SDK usage analytics.
- Added property
- Document Scanner:
- 🚀 Improvements:
- Document Scanner:
- Improved landscape-orientation layout of RTU-UI v2 screens.
- Increased performance for Document Scanner algorithms.
- The zoomed page view in the Document Scanner RTU-UI v2 Review Screen now closes when you finish zooming while being below the minimum zoom value.
- 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.
- Document Scanner:
- 🐞 Bug fixes:
- Document Scanner:
- Fixed a bug in RTU-UI v2 Document Scanner where the document could not be captured in auto snap mode when
enabledInAutoSnappingModewas set to false inSBSDKUI2ShutterButton. - Fixed a bug in RTU-UI v2 Document Scanner Swift UI component
SBSDKUI2DocumentScannerViewwhere the completion handler was not called when the view was a root view. Additionally, the view is now prevented from being automatically dismissed upon completion. - Fixed a bug in RTU-UI v2 Document Scanner where auto rotation was applied if no document was detected.
- Fixed a bug in RTU-UI v2 Document Scanner where the document could not be captured in auto snap mode when
- Image Editing:
- Fixed a rare crash when the screen orientation changed.
- PDF Image Extractor:
- Fixed wrong orientation of extracted images when the PDF page had a transform applied.
- Document Quality Analyzer:
- Fixed quality estimation for rotated images.
- Storage Crypting:
- Fixed data corruption issues in AES encryption/decryption that could result in corrupted or partially corrupted files.
- Document Scanner:
- ⚠️ Breaking changes:
- Document Data Extractor:
- Renamed
SBSDKDeDriverLicenseFrontandSBSDKDeDriverLicenseBacktoSBSDKEuropeanDriverLicenseFrontandSBSDKEuropeanDriverLicenseBack. - By default, only German documents are now enabled for scanning. Previously all supported documents were enabled.
- Renamed
- Document Scanner:
- Changed the
inittoconvenience initinSBSDKUI2DocumentScannerController. - The
SBSDKUI2DocumentScannerControllerdoes not dismiss itself automatically anymore when usingconvenience init(configuration:completion:)or the staticcreate(configuration:completion:)method.
- Changed the
- PDF Image Extractor:
- Removed parameter
scalingfrom all methods and replaced it by member variablescaleFactor.
- Removed parameter
- General:
- Replaced all occurrences of the deprecated
AVCaptureVideoOrientationenum by an equal enum namedSBSDKVideoOrientation.
- Replaced all occurrences of the deprecated
- Document Data Extractor:
- 🚙 Under the hood:
- Added flatbuffers 2.0.6.
Version 7.0.3 (June 2025)
- 🐞 Bug fixes:
- Document Scanner:
- Fixed a memory leak when dealing with grayscale images.
- Document Scanner:
Version 7.0.2 (28 May 2025)
- 🎉 New:
- Added property
hardwareButtonsEnabledtoSBSDKBaseScannerViewControllerwhich can be set tofalseto restore the original volume button behavior. - Added properties
cameraSessionKeepAliveTimeoutandanimateCameraOverlaytoSBSDKBaseScannerGeneralConfiguration. - Added properties
sessionDidChangeHandlerandisSessionRunningtoSBSDKBaseScannerViewController. - Added functions
pauseandresumetoSBSDKBaseScannerViewController.
- Added property
- 🚀 Improvements:
- The camera permission screen will now appear if camera access is restricted in all RTU-UI screens.
- Improved the accessibility handling in RTU-UI v2 Document Scanner. Accessibility for the document preview button is now activated only when scanned pages are available.
- 🐞 Bug fixes:
- Fixed a race condition in
SBSDKScannedPage. - Fixed an issue where quickly stopping and starting the camera session of any scanner screen could lead to a crash or unpredictable behavior.
- Fixed a bug in all cropping screens where the magnetic lines were missing.
- Fixed an issue in RTU-UI v2 where the introduction screen appeared automatically even when camera access was denied.
- Fixed a crash in
SBSDKBaseScannerViewControllercaused by camera access being restricted by system-wide settings (e.g. Parental Controls / Screen Time).
- Fixed a race condition in
- ⚠️ Breaking changes:
defaultBackFacingCamera,defaultFrontFacingCameraandwidestAvailableBackFacingCameranow returns a simulated camera instead ofnilif the physical camera is not available.- Removed property
stopsCameraSessionWhenDisappearedfromSBSDKBaseScannerGeneralConfiguration. To emulate this behavior, setcameraSessionKeepAliveTimeoutto a high value, e.g.TimeInterval.greatestFiniteMagnitude.
- 🚙 Under the hood:
- Upgraded xtensor to 0.26.
- Upgraded xtl to 0.8.
- Upgraded xsmid to 13.2.
- Upgraded CLI11 to 2.5.
- Upgraded spdlog to 1.15.2.
- Upgraded Boost to 1.88.
Version 7.0.1 (May 2025)
- 🎉 New:
- Added property
hardwareButtonsEnabledtoSBSDKBaseScannerViewControllerwhich can be set tofalseto restore the original volume button behavior.
- 🐞 Bug fixes:
- Fixed a bug in all cropping screens where the magnetic lines were missing.
- Fixed an issue in RTU-UI v2 where the introduction screen appeared automatically even when camera access was denied.
Version 7.0.0 (22 April 2025)
- 🎉 New:
- Document Scanner:
DocumentDetectorwas renamed toDocumentScannerand has a more advanced configuration and scanning API. SeeSBSDKDocumentScanner.- RTU-UI v2: Added the auto-rotate document option. The document will now be automatically rotated based on the text orientation detected by the Document Quality Analyzer. See
SBSDKUI2CameraScreenConfiguration.autoRotateImages. - Introduced advanced generation settings for PDFs and TIFFs (via
SBSDKPDFConfigurationandSBSDKTIFFGeneratorParameters). - Added a new document detection status
okButTooDark. - Ability to set the bad aspect ratio hint of the Document Scanner. See
SBSDKDocumentScannerStatusTextConfiguration.textHintBadAspectRatio. - Image Processor can be initialized with
SBSDKImageRef,UIImage, orimageURL. New methods to apply filters, crop, rotate, and resize. SeeSBSDKImageProcessor. - Advanced configuration of the PDF Generator. See
SBSDKPDFConfiguration. Introduced new OCR configuration:SBSDKPDFGenerator.ocrConfiguration.
- Document Quality Analyzer:
- New and advanced API. See
SBSDKDocumentQualityAnalyzer,SBSDKDocumentQualityAnalyzerConfiguration, andSBSDKDocumentQualityAnalyzerResult. - Can now also return the orientation of the document in steps of 90 degrees. Enabled by setting
SBSDKDocumentQualityAnalyzerConfiguration.detectOrientationto true. - Optionally,
QualityHeatmapis returned as a part of theSBSDKDocumentQualityAnalyzerResult. - Added support for an advanced on-image scanning configuration
SBSDKDocumentQualityAnalyzer.analyze(image:)call. - Added an option to include small text on the image in the analysis. Disabled by default.
- New and advanced API. See
- Credit Card Scanner:
- Introduced a new beta feature: Credit Card Scanner, capable of detecting credit cards and extracting data from them. See
SBSDKCreditCardScanner. - New RTU UI v2 component for Credit Card Scanner.
- Introduced a new beta feature: Credit Card Scanner, capable of detecting credit cards and extracting data from them. See
- MRZ Scanner:
- Advanced configuration of MRZ Scanner. See
SBSDKMRZScannerConfiguration. - New RTU UI v2 is now available for MRZ Scanner. See
SBSDKUI2MRZScannerViewController. - Added support for non-ICAO conformant machine readable zones on US border crossing cards.
- Added an option to enable the cropped image of the MRZ code to be returned. Disabled by default.
- Advanced configuration of MRZ Scanner. See
- Text Pattern Scanner:
- Feature was renamed from Generic Text Recognizer to Text Pattern Scanner and has more advanced configuration and scanning API. See
SBSDKTextPatternScanner. - New RTU UI v2 is now available for Text Pattern Scanner. See
SBSDKUI2TextPatternScannerViewController. - Added an option to define if the RegEx or Pattern should be used for validation.
- Feature was renamed from Generic Text Recognizer to Text Pattern Scanner and has more advanced configuration and scanning API. See
- VIN Scanner:
- Added a new property
extractVINFromBarcodeinSBSDKUIVINScannerBehaviorConfigurationthat allows VIN data extraction from barcodes (for RTU UI v1).
- Added a new property
- Document Data Extractor:
- Feature was renamed from Generic Document Recognizer to Document Data Extractor and has more advanced configuration and scanning API. See
SBSDKDocumentDataExtractor. - Now supports fallback to extraction of only the MRZ on unsupported documents by using the config
SBSDKMRZDocumentType.unknown. - Added support for German driver qualification card.
- Document field validation now supports two additional statuses:
inferredandignored. SeeSBSDKGenericDocumentFieldValidationStatus. - Generic document fields now support
parsedDataattributes for standardized data (ISO 8601 dates, ISO 3166-1 countries, "Male"/"Female" gender). SeeSBSDKGenericDocumentFieldParsedData. - Added support for an advanced on-image scanning configuration for:
SBSDKDocumentDataExtractor,SBSDKEuropeanHealthInsuranceCardRecognizer,SBSDKMedicalCertificateScanner,SBSDKMRZScanner, andSBSDKCheckScanner.
- Feature was renamed from Generic Document Recognizer to Document Data Extractor and has more advanced configuration and scanning API. See
- Health Insurance Card (EHIC) Scanner:
- Advanced configuration of Health Insurance Card Recognizer. See
SBSDKEuropeanHealthInsuranceCardRecognizerConfiguration.
- Advanced configuration of Health Insurance Card Recognizer. See
- Check Scanner:
- Feature was renamed to Check Scanner and has more advanced configuration and scanning API. See
SBSDKCheckScanner. - Ability to configure Check Scanner Classic UI using
SBSDKCheckScannerViewController.setConfiguration(_:).
- Feature was renamed to Check Scanner and has more advanced configuration and scanning API. See
- Medical Certificate Scanner:
- Feature was renamed to Medical Certificate Scanner and has more advanced configuration and scanning API. See
SBSDKMedicalCertificateScanner. - Introduced a new method to scan a medical certificate from frames. See
SBSDKMedicalCertificateScanner.scan(from:parameters:).
- Feature was renamed to Medical Certificate Scanner and has more advanced configuration and scanning API. See
- Barcode Scanner:
- Added support for barcode types Pharma Code, Pharma Code Two Track and PZN (Pharmazentralnummer).
- Added support for the HIBC barcode document format.
- Added support for an advanced on-image scanning configuration for
SBSDKBarcodeScanner.scan(from:useLiveMode:)call. - Added ability to configure common barcode properties via
SBSDKBarcodeFormatCommonConfiguration. - Added
minimumSizeScoreto barcode configurations;SBSDKBarcodeItemhas newsizeScore. Barcodes withsizeScore < minimumSizeScoreare ignored. - Introduced
strictModefor certain barcode configurators (QR Code,Micro QR Code,rMQR Code,PDF417,MicroPDF417andgs1Composite). - Added the ability to return the barcode image in the resulting object via
SBSDKUI2BarcodeScannerConfiguration.returnBarcodeImage. - Added new engine modes
nextGenLowPower,nextGenFarDistanceandnextGenLowPowerFarDistance. SeeSBSDKBarcodeScannerEngineMode. - Barcode scanning results have been enhanced with more detailed information. See
SBSDKBarcodeItem. - Added new predefined subsets of barcode formats (1D, 2D, Postal, Pharma, etc.). Old sets removed. See
SBSDKBarcodeFormat,SBSDKBarcodeFormats. - Ability to initialize Barcode Scanner using
SBSDKBarcodeScanner.init(formats:, extractedDocumentFormats:). - Introduced new property
optimizeOverlaystoSBSDKBarcodeScanner. - Ability to configure Barcode Scanner Classic UI and Scan-and-Count Classic UI using
setConfiguration(_:). - Ability to get
extractedDocumentFormatsfromSBSDKBarcodeDocumentParser. - Ability to know when a barcode was last detected using
SBSDKBarcodeScannerAccumulatingResult.dateOfLastDetection.
- Added property
hardwareButtonsEnabledtoSBSDKBaseScannerViewController(all Classic UI) to toggle volume button behavior. - Cropped images returned as part of the scanner results are now represented as image references (
SBSDKImageRef), convertible toUIImage. - Ability to additionally process frames before main scanner via
SBSDKBaseScannerViewController.additionalFrameProcessor. - Introduced
SBSDKUI2PermanentViewFinderConfigurationfor always visible view finder. - Document Data Extractor, Medical Certificate Scanner and Check Scanner now return document detection results (
SBSDKDocumentDetectionResult). - Added new enum case
phototoSBSDKVideoFrameResolution.
- Document Scanner:
- 🚀 Improvements:
- Document Scanner:
- Added
okButOrientationMismatchstatus, returned when screen and document orientations don't match. Can be disabled by settingignoreOrientationMismatchto True. SeeSBSDKDocumentDetectionStatusandSBSDKDocumentScannerParameters. - Improved the Document Scanner RTU-UI v2 acknowledgment's bad image hint by adding the ability to present up to 5 lines.
- Improved performance when editing
SBSDKScannedPageand in the RTU-UI v2 Document Scanner Review Screen. - Improved captured image quality when using the Document Scanner Classic UI or RTU-UI (v1 and v2).
- Improved the user guidance in the Document Scanner RTU-UI v2 to support longer text entries.
- Added
- Document Quality Analyzer (DQA):
- Guarantee the same document quality score for 90 degrees rotated images.
- Image Processing:
- New Image Processor preset
BinarizationFilterPreset.PRESET_5for documents with barcodes.
- New Image Processor preset
- Text Pattern Scanner:
- Improved performance with the same quality.
- VIN Scanner:
- Validation of VINs implements the full ISO 3779 standard, reducing false positives.
- Document Data Extractor (DDE):
- Digits can no longer be recognized as part of given names or surnames.
- Higher accuracy for document classification.
- Barcode Scanner:
- By default, Code 93 now includes check digits in the result. To disable this and restore the previous behavior, set
stripCheckDigits = true. - Significant speed-up in live mode on very large input resolutions.
- Improved barcode detection for various barcode types.
- More robust QR code recognition (timing patterns, alignment, artistic QR codes).
- QR codes with non-square finder patterns and embedded in adversarial backgrounds can now be recognized.
- Improved quiet zone checks for
ITF,Code 11,MSI Plessey,IATA 2 of 5,Industrial 2 of 5, andCode 25. - Improved the false positive rate for
ITF. - Added the option to ignore barcodes that do not decode to one of the accepted document formats for Barcode Scanner RTU-UI v2 (
SBSDKBarcodeScannerConfiguration.onlyAcceptDocuments). - Improved performance when scanning four-state postal barcodes (i.e. Australia Post, Japanese Post, RM4SCC, Royal TNT Post and USPS Intelligent Mail).
- Improved the recognition of
PDF417barcodes. - Improved the barcode scanner to better recognize the
QRcodes if the top left finder pattern is corrupted (up to QR code version size 20).
- By default, Code 93 now includes check digits in the result. To disable this and restore the previous behavior, set
- Document Scanner:
- 🐞 Bug Fixes:
- Document Scanner and Data Capture modules:
- Fixed processing of still images of an indexed color space model in all scanners, Document Quality Analyzer, and PDF and TIFF generators.
- Fixed a UI bug in the Document Scanner Classic UI where
accepteddocument'sfillColorwas not being removed when theautoSnapProgressfillColorwas being shown. - Fixed a UI bug in the Document Scanner RTU-UI v2 where the bar buttons were not properly grayed out when in disabled state.
- Fixed a bug in the TIFF generator that prevented the creation of JPEG-encoded colored TIFF files.
- Barcode Scanner:
- Fixed returned results for all types of
SBSDKUpcEanExtensionBehavior. - Fixed the checksum of the
Code 39barcode format. - Fixed a bug in the Barcode Scanner RTU-UI v2 where the flip camera button was not resetting the widest camera available if chosen.
- Fixed a bug in
SBSDKBarcodeScannerViewControllerthat could lead to a crash when embedded within aUIViewControllerRepresentable. - Fixed a bug in the AR Barcode Scan and Count where the scanner would be stuck if there was no barcode detected.
- Fixed a UI bug in the Barcode Scanner RTU-UI v2 where the sheet button overlapped with the action bar.
- Fixed returned results for all types of
- Document Scanner and Data Capture modules:
- ⚠️ Breaking changes:
- General API structure & naming:
- Extensive renaming of classes, properties, methods, and enums (e.g.,
DocumentDetectortoSBSDKDocumentScanner,GenericDocumentRecognizertoSBSDKDocumentDataExtractor,CheckRecognizertoSBSDKCheckScanner,SBSDKHealthInsuranceCardRecognizerrelated classes,SBSDKMachineReadableZoneRecognizertoSBSDKMRZScanner,SBSDKGenericTextLineRecognizertoSBSDKTextPatternScanner,SBSDKMedicalCertificateRecognizertoSBSDKMedicalCertificateScanner,SBSDKPDFRenderertoSBSDKPDFGenerator,SBSDKTIFFImageWritertoSBSDKTIFFGenerator). - Many
recognize...methods renamed toscan...orextract.... - Many initializers changed to accept new configuration objects.
- Extensive renaming of classes, properties, methods, and enums (e.g.,
- Feature removal:
- Removed the License Plate Scanner and all of its related files.
- Result type changes:
- Result objects updated for many scanners (e.g.,
SBSDKDocumentDetectionResult,SBSDKBarcodeItem,SBSDKMRZScannerResult,SBSDKCheckScanningResult,SBSDKMedicalCertificateScanningResult). SBSDKMachineReadableZoneRecognizerResultreplaced bySBSDKMRZScannerResult.SBSDKMachineReadableZoneRecognizerResultDocumentTypebySBSDKMRZDocumentType.SBSDKCheckRecognizerResultbySBSDKCheckScanningResult.SBSDKMedicalCertificateRecognizerResultbySBSDKMedicalCertificateScanningResult.SBSDKHealthInsuranceCardRecognitionResulttoSBSDKEuropeanHealthInsuranceCardRecognitionResult.
- Result objects updated for many scanners (e.g.,
- Configuration object changes:
- Removed old configuration APIs for most scanners; use new
setConfiguration(_:)methods with dedicated configuration objects. SBSDKPDFRendererOptionsreplaced bySBSDKPDFConfiguration.SBSDKUI2BarcodeRecognizerConfigurationtoSBSDKBarcodeScannerConfiguration.SBSDKUI2AspectRatioreplaced bySBSDKAspectRatio.
- Removed old configuration APIs for most scanners; use new
- Document Scanner:
- Properties related to detection parameters (angle, size, brightness, and aspect ratios) moved from
SBSDKUI2DocumentScannerCameraConfigurationtoscannerParametersinSBSDKUI2CameraScreenConfiguration. ignoreBadAspectRatiorenamed toignoreOrientationMismatchin UI configurations.SBSDKDocumentDetectorResultreplaced bySBSDKDocumentDetectionResult.SBSDKPolygonEdgebySBSDKLineSegment.- Renamed class
SBSDKDocumentDetectorModetoSBSDKDocumentScannerEngineMode.
- Properties related to detection parameters (angle, size, brightness, and aspect ratios) moved from
- Barcode Scanner:
- Initializers for
SBSDKBarcodeScannerViewControllerandSBSDKBarcodeScanAndCountViewControllerchanged to accept configuration objects. SBSDKUI2BarcodeScannerResultrenamed toSBSDKUI2BarcodeScannerUIResult.- Removed properties like
acceptedBarcodeTypes,engineMode, etc., fromSBSDKBarcodeScannerViewController; configure viaSBSDKBarcodeScannerConfiguration. SBSDKBarcodeScannerAccumulatingResult.coderemoved, useitem.SBSDKBarcodeTyperenamed toSBSDKBarcodeFormat.SBSDKBarcodeDocumentRootTypetoSBSDKBarcodeDocumentFormat. Display names of various barcode formats changed.- Replaced
SBSDKUI2BarcodesExtensionFilterenum withSBSDKUpcEanExtensionBehavior. PropertybarcodesExtensionFilterinSBSDKUI2BarcodeScannerConfigurationrenamed toextensions. - Methods of
SBSDKBarcodeTrackingOverlayControllerDelegateandSBSDKTrackedBarcodeInfoViewablenow useSBSDKBarcodeItem. - Removed
SBSDKBarcodeImageGenerationTypeand related properties.
- Initializers for
- Other class & enum renames:
SBSDKCheckDocumentRootTypetoSBSDKCheckDocumentModelRootType.SBSDKCheckRecognitionResultStatusbySBSDKCheckMagneticInkStripScanningStatus.SBSDKGenericDocumentRootTypetoSBSDKDocumentsModelRootTypeand related constants/model classes.SBSDKHealthInsuranceCardFieldTypetoSBSDKEuropeanHealthInsuranceCardRecognitionResultFieldTypeand related field/status/type classes.SBSDKMedicalCertificateRecognizerCheckboxTypetoSBSDKMedicalCertificateCheckBoxTypeand related result/enum renames.- Renamed parameter
completionHandlertocompletionincreateandpresentfunctions ofSBSDKUI2DocumentScannerController. - Renamed parameter
handlertocompletionincreateandpresentfunctions ofSBSDKUI2BarcodeScannerViewController. - Renamed async function
presentAsync(on:configuration)topresent(on:configuration)inSBSDKUI2BarcodeScannerViewController. - Completion result type for
SBSDKUI2CroppingViewControlleris now optional (SBSDKUI2CroppingResult?).
- Other removed classes:
- Removed
SBSDKCaptureInfo,SBSDKDocumentDetectionMetrics,SBSDKGenericDocumentRecognizerAccumulationConfiguration,SBSDKMachineReadableZoneRecognizerFieldName,SBSDKImageProcessorError, etc.
- Removed
- General API structure & naming:
- ⚠️ Deprecations:
- MRZ Scanner RTU-UI v1 is deprecated. Use new
SBSDKUI2MRZScannerViewController. - Text Pattern Scanner RTU-UI v1 is deprecated. Use new
SBSDKUI2TextPatternScannerViewController.
- MRZ Scanner RTU-UI v1 is deprecated. Use new
- 🚙 Under the hood:
- The regex filters are applied for substrings instead of the entire output string.
- 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.
Version 6.2.0 (24 January 2025)
- 🎉 New:
- Added support for encryption/decryption of images and PDFs using the AES-GCM algorithm with random 96-bit initialization vectors and variable length authentication tags, as required for ePA-FdV-certification by gematik and BSI. See
SBSDKAESGCMEncrypterclass. - Added support for encryption key derivation using PBKDF2, HKDF and Random key derivation on both the standard AES encrypter (
SBSDKAESEncrypter) and the new AES-GCM encrypter (SBSDKAESGCMEncrypter) with variable key lengths (128 and 256 bits). See the new protocolSBSDKStorageCryptingKeyGeneratorand the new classesSBSDKRandomKeyGenerator,SBSDKPBKDF2KeyGeneratorandSBSDKHKDFKeyGenerator. - Added protocol-based support for encryption key management. See the new protocol
SBSDKStorageCryptingKeyProviderand the new classSBSDKVolatileKeyProvider. - Added new class
SBSDKVolatileKeyProviderthat stores, restores and deletes keys in memory per context. For a persistent storage, e.g. in the keychain or in a file, you can implement your own key provider by conforming to theSBSDKStorageCryptingKeyProviderprotocol. - Added support for encryption/decryption on a encryption-key-per-context base. See
SBSDKStorageCryptingKeyProviderandSBSDKStorageCrypting. - When storing files in image storages, with the PDF renderer, or the TIFF writer, a context in the form of the file URL is being passed to the encrypter APIs to allow for context-based key derivation.
- Added new property
autoCropOnManualSnaptoSBSDKDocumentScannerViewControllerandSBSDKUI2DocumentScannerCameraConfigurationto enable/disable the automatic cropping of the document after a manual snap. - Added new property
croppingPolygonMagneticLineColortoSBSDKUI2CroppingScreenConfigurationto set the color of the magnetic lines in the cropping screen. - Added compliance to NSCopying protocol to
SBSDKScannedDocument. - Added new delegate method
barcodeTrackingOverlay(_ controller:overrideTextFor:proposedString:)toSBSDKBarcodeTrackingOverlayControllerDelegate. - Added new property
topBarTitletoSBSDKUI2AcknowledgementScreenConfiguration.
- Added support for encryption/decryption of images and PDFs using the AES-GCM algorithm with random 96-bit initialization vectors and variable length authentication tags, as required for ePA-FdV-certification by gematik and BSI. See
- 🚀 Improvements:
- The Generic Document Recognizer no longer needs the additional data bundle with OCR languages.
- The Generic Document Recognizer now returns ID number (document number field) and sequence number (personal number field) separately for pre-2022 Costa Rican passports.
- 🐞 Bug fixes:
- Fixed layout when hiding the text of the close button on zooming in RTU-UI v2 Document Scanner.
- Fixed a layout bug in the RTU-UI v2 cropping screen's top bar.
- Fixed a bug in the barcode RTU-UI v2 action bar items where the
accessibilityDescriptionwas not being applied correctly.
- 🚙 Under the hood:
- Removed third-party-library symbols from the binary to avoid linking conflicts.
Version 6.1.1 (28 November 2024)
- 🐞 Bug fixes:
- Fixed a bug that did not properly store an
SBSDKScannedDocumentwithout pages. - Fixed a bug that caused
SBSDKTIFFImageWriterto crash when the input images are encrypted.
- Fixed a bug that did not properly store an
- ⚠️ Breaking Changes:
- Changed signature of
SBSDKScannedPagemethodapply(rotation: SBSDKImageRotation?, polygon: SBSDKPolygon?, filters: [SBSDKParametricFilter]?)toapply(rotation: SBSDKImageRotation, polygon: SBSDKPolygon?, filters: [SBSDKParametricFilter]?)to properly expose it to Objective-C.
- Changed signature of