Skip to main content

Changelog for the Kotlin Multiplatform Document Scanner SDK

tip

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

Version 9.0.0 (8 Jul 2026)

  • 📖 Release notes:
    • Explore the release highlights and key improvements here.
  • 🎉 New:
    • General:
      • Added property hibernationDirectory to SdkConfiguration to specify a custom directory for storing image reference hibernation data.
      • ImageRef: optimize property added to SaveImageOptions and EncodeImageOptions for saveImage and encodeImage methods. When set to true, the encoder spends additional time to improve JPEG output quality.
      • Android: Added property cameraPreviewAspectRatio to CameraConfiguration to support different preview aspect ratios in FIT_IN mode in RTU UI screens.
    • Document Scanner:
      • Added ScanbotDocumentEnhancer API with a straightenImage method 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.
      • Added parameter straighteningParameters to the DocumentScannerOutputSettings to configure the behavior of the Document Enhancer in the RTU UI Document Scanner.
      • Added parameter straighteningParameters to ModifyPageOptions, AddPageOptions, and CreateDocumentOptions to allow post processing of pages using the Document Enhancer.
      • Support for recognizing cropped documents. DocumentScannerParameters now includes alreadyCroppedScoreThreshold, and DocumentDetectionScores now includes alreadyCroppedScore. In single-shot mode, if no document is detected and the score exceeds this threshold, a new DocumentDetectionStatus value OK_BUT_ALREADY_CROPPED is returned, along with a quad (points) corresponding to the image corners.
      • Added background property to TextButtonMode and TextWithBadgeButtonMode to configure the background style for the preview button in the RTU UI Document Scanner.
      • Added straighteningParameters to PageData to allow storing Document Enhancer configuration in the Page.
      • iOS: Added accessibilityDescriptionDocumentImagePreview property to ReviewScreenConfiguration to configure the accessibility description of the document image preview.
    • Image Processing:
      • New ColorDocumentShadowRemovalFilter capable of removing shadows from documents without damaging text, barcodes, or images.
    • Document Quality Analyzer:
      • A new Document Quality Analyzer algorithm was introduced. The result object's quality property can now be ACCEPTABLE, UNACCEPTABLE, or UNCERTAIN, indicating whether a user-provided document image meets the required quality standard. Advanced configuration is available using the qualityAnalysisModel parameter, 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 the inputScales property to run the model at multiple resolutions and automatically select the best result.
      • Added the threshold property qualityAcceptableUncertainThreshold for categorizing documents into three classes: ACCEPTABLE, UNACCEPTABLE, and UNCERTAIN.
      • Added the inputScaleThresholdToProcessEntireImage property to run the Document Quality Analyzer on the entire image, even when minProcessedFraction and maxProcessedFraction are not equal to 1 for small input scales.
      • The resulting bestInputScale is now included in the DocumentQualityAnalyzerResult output.
      • Added compatibilityMode property to DocumentQualityAnalyzerConfiguration to allow running the legacy (v8) document quality analysis engine.
    • Barcode Scanner:
      • Added accessibilityState and activeAccessibilityState properties for flash and flip camera buttons in the RTU UI Barcode Scanner screen.
      • Added a TwoDDecodingMode to the barcode configuration. It defaults to HIGH_EFFORT and can be set to LOW_EFFORT for very low-power devices requiring higher frame rates.
      • BarcodeScannerCustomUI:
        • Added property touchToFocusEnabled that allows users to focus the camera on a specific area by tapping on the screen.
  • 🚀 Improvements:
    • General:
      • Improved memory usage when extracting and processing PDF pages.
      • iOS: The touchToFocusEnabled property in RTU UI scanner configurations, previously supported on Android only, is now supported on iOS.
      • iOS: Optimized still image capturing by switching to the 420YCbCr format internally.
    • 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 ERROR_PARTIALLY_VISIBLE document status when only 1–3 document corners are visible in the input image and the scanner is configured with allowPartiallyVisibleDocuments = true.
      • Android: Improved the behavior when the page limit was reached in the RTU UI single-page mode.
      • Android: Improved the behavior of the Acknowledge Screen for more precise error hints control.
    • Cropping Screen:
      • Android: Added support for navigation on polygon corners with keyboard.
    • Document Quality Analyzer:
      • Increased the default threshold for minRequiredOrientationConfidence to 0.9, 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.
    • 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.
    • Barcode Scanner:
      • Enhanced accessibility of the zoom button in the RTU UI Barcode Scanner screen.
      • Clean barcodes (QR Code, DataMatrix, 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 enableOneDBlurScanner is 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 HIGH_EFFORT enabled, 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.
  • 🐞 Bug fixes:
    • General:
      • Android: Fixed a crash with save of ImageRef when default Android encryption was enabled.
      • Android: Fixed RTU UI top bars behavior with hidden back buttons.
      • Android: Fixed incorrect viewfinder aspect ratio calculations when cameraPreviewMode was set to FIT_IN.
    • Document Scanner:
      • Android: Fixed a bug with incorrect page number badge behavior in the RTU UI Document Scanner.
      • Android: Fixed SnapButton click in TalkBack mode in RTU UI scanner screen.
      • Android: Fixed reduced preview image quality when zoomed in on the Review Screen.
      • iOS: Fixed an iPad layout issue with the RTU UI Acknowledge Screen.
      • iOS: Fixed an issue where the auto-rotation feature would incorrectly rotate certain kinds of images by 180 degrees.
      • iOS: Fixed an issue in the RTU UI Document Scanner where the user could become stuck on the camera screen when the pageCountLimit was set to 1.
    • PDF & TIFF Generation:
      • iOS: Fixed an issue where JPEG compression was applied twice to images being rendered to a PDF.
    • Document Quality Analyzer:
      • Fixed ProcessByTileConfiguration.enabled being ignored regardless of its value.
    • 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.
      • iOS: Fixed a crash on iPhone SE when switching to the front camera.
      • iOS: 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.
      • BarcodeScannerCustomUI:
        • iOS: Fixed an issue where the Barcode Scanner stopped scanning when a modal view controller was presented on top of it.
  • ⚠️ 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.
    • Document Scanner:
      • Removed AcknowledgementScreenConfiguration.minimumQuality parameter. Use DoQA configuration to change document acceptance levels.
      • Updated the Acknowledge Screen logic in the RTU UI Document Scanner to properly handle document quality scenarios. The unacceptableQuality acknowledgment mode now shows the Acknowledge Screen for "document not found" cases when documentNotFoundWarning.visible is configured to true. This may change the behavior for applications relying on the previous logic where "document not found" cases were always bypassed in unacceptableQuality mode.
      • 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.visible setting. 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 (see screens.camera.acknowledgement.bottomBar.proceedAnywayButton.unacceptableQuality).
      • Removed AcknowledgementScreenConfiguration.badImageHint parameter. Use documentNotFoundWarning, uncertainQualityWarning, and unacceptableQualityWarning parameters to control the hints shown in the Acknowledge Screen.
      • 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, and acknowledgementWarningUncertainQuality.
      • Renamed the style field to title in TextWithBadgeButtonMode and the text field to title in TextButtonMode.
    • 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 qualityThresholds and qualityIndices have been renamed to qualityLevelThresholds and qualityLevelIndices. The renamed properties are now deprecated; use the new qualityAnalysisModel property instead.
      • The detectOrientation option has been removed. Orientation detection now always runs.
      • The inspectSmallText option has been removed.
  • ⚠️ Deprecations:
    • Document Quality Analyzer:
      • The DocumentQuality enum and result object property are deprecated; use DocumentQualityAssessment instead.
      • The DocumentQualityAnalyzerResult.documentFound property is now deprecated. This deprecated property indicates if too few characters are detected. The new DocumentQualityAssessment will be reported as UNCERTAIN in 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, the documentNotFoundWarning case is now based on the Document Scanner output.
      • qualityLevelThresholds and qualityLevelIndices are deprecated (see Breaking changes).
  • 🚙 Under the hood:
    • Upgraded the native Scanbot Android SDK to v9.0.1.
    • Upgraded the native Scanbot iOS SDK to v9.0.1.
    • Updated magic_enum to version 0.9.7.
    • Added a new barcode decoding model, increasing SDK size by approximately 650 KB.
    • Android: Updated the CameraX library to version 1.6.0 for improved camera performance and compatibility. Update to this version to prevent potential crashes on Android 17 devices.
    • Android: Added org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.7.3 dependency (a stub library for resolving the CameraX dependency with Guava).
    • Android: Improved lifecycle handling with ScanbotCameraX.
    • Android: Removed androidx.legacy:legacy-support-v4 and androidx.fragment:fragment-ktx from the Scanbot SDK dependencies.
    • Android: Document Scanner RTU UI now includes an additional asset dependency io.scanbot:sdk-document-enhancer-assets by default.

Version 8.0.0 (18 May 2026)

  • Initial release of the Kotlin Multiplatform Document Scanner SDK.
  • Runs fully offline.
  • Supports Android and iOS platforms.
  • Supports integration with both Kotlin Multiplatform and Compose Multiplatform applications.
  • 🚙 Under the hood:
    • Uses Scanbot SDK for Android v8.0.1.
    • Uses Scanbot SDK for iOS v8.0.6.

Want to scan longer than one minute?

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

Get free trial license