Changelog

[5.4.0] - 2024-11-26

  • [Core] Improved the license key initialization by making it more resilient and logging more information in case of failure. In particular, if you pass an invalid license key, the SDK will not even attempt to rely on any cached key but will immediately fail, so that you can quickly fix the issue.
  • [iOS] Fix issue with missing symbols for the GSK class.
  • [iOS ScanFlow] Fix an issue that could cause GSKScanFlow to incorrectly dismiss its presenting view controller when presented from a modal view controller.
  • [Android ScanFlow] Improve UI style by using Material 3 guidelines.

[5.3.1] - 2024-11-12

  • [iOS] Fix crash caused by an exception: -[AVCaptureSession stopRunning] stopRunning may not be called between calls to beginConfiguration and commitConfiguration. The fix consisted in preventing a race condition when cleaning up the camera session stack.
  • [Android] Add support for 16kb page size, which will soon be a requirement to publish apps on Google Play. As part of this change, our SDK now depends on LiteRT, the new name of TensorflowLite. If a conflict arises with another dependency of your app that depends on TFLite, adding an exclusion in your Gradle file might be necessary.
  • [iOS ScanFlow] Fix defaultFlashMode not being used when starting a ScanFlow with a configuration dictionary (ie from crossplatform plugins).

[5.3.0] - 2024-10-04

  • [Android] Add support for Android 15 and add edge-to-edge on all Android versions.
  • [Android ScanFlow] Improve accessibility.
  • [Android ScanFlow] Fix the behavior of the photoLibraryButtonHidden flag which was ignored in cross-platform plugins.
  • [Android ScanFlow] Remove the portrait orientation constraint on Android tablets: the ScanFlow screens will now rotate accordingly with the device orientation. The UI remains locked to portrait on phones. This aligns to the behavior on iOS.
  • [Android ScanFlow] Fix occasional crash when refreshing license key with a poor Internet connection.
  • [iOS] Fix GSKReceiptVAT symbol not being visible.

[5.2.0] - 2024-09-11

  • [Scanflow] Users can now add photos from their Photo Library during a camera-based scan flow. To disable this feature, set the configuration photoLibraryButtonHidden to true.
  • [iOS] Include underlying error when the structured data extraction fails because of missing required OCR data.
  • [iOS] Fix crash when the license key refresher fetched an expired key.

[Android] Receipt Scanner

Like on iOS, you can now extract structured data from receipts on Android devices. To enable this feature, use the property structuredData on ScanConfiguration or use StructuredDataExtractor in custom integrations. Receipt extraction will extract the date, merchant, amount, category, currency and locale.

[5.1.5] - 2024-08-05

  • [Android] Fix FilterConfiguration which was not really Serializable, despite implementing the interface.
  • [iOS] Restore KVO compatibility for the GSKCameraSession.captureDevice property.
  • [iOS] Fix an issue that could cause GSKCameraViewController to be configured with an incorrect interface orientation.

[5.1.4] - 2024-07-29

  • [iOS] Prevent conflicts when a consuming app uses MBProgressHUD also used internally by the SDK. The previous fix was incomplete.
  • [iOS] Re-expose publicly some symbols that broke custom integrations with Genius Scan SDK 5.1.0.

[5.1.3] - 2024-07-26

  • [iOS] Add Value-added-tax (VAT) detection in receipt detector, with the ability to extract multiple tax rates if present.
  • [iOS] Fix regression preventing the camera lens from switching to obtain optimal focus.
  • [iOS] Resume continuous autofocus after the user taps to focus and the subject area changes significantly.

[5.1.2] - 2024-07-23

  • [iOS] Fix memory leak that would cause the camera session indicator to stay on after scanning.
  • [iOS] Prevent conflicts when app uses MBProgressHUD also used internally by the SDK.
  • [Android] Remove use of legacy Camera API on Redmi Note 9 Pro devices as the black camera screen issue has been fixed in CameraX library.
  • [Android] Prevent conflicts between the version of TensorflowLite used by the SDK and another version that might be used by the app integrating the SDK.

[5.1.1] - 2024-07-11

  • [ScanFlow] Improve and shorten filter names.
  • [Android ScanFlow] Always take into account the default filter and curvature correction mode from the ScanFlow configuration.
  • [iOS ScanFlow] Fix regression in SDK v5.0 where custom colors from ScanFlow configuration were improperly taken into account.

[5.1.0] - 2024-06-19

Improve document detection precision

We’ve replaced our legacy algorithm that used to refine the document detection by a new deep-learning approach. It greatly improves the precision of the document detection, reducing the need to manually fine-tune the quadrangle position by users. The size increase of the SDK due to this change is approximately 600KB.

[Android] Static filters

The Genius Scan SDK offers a new set of fixed filters in addition to the existing filters (Monochrome, B/W, Color, and Photo). See v5.0.3 changelog for the iOS part.

Core integration

  • To automatically process a document, use Enhancement.automatic().
  • To process a document while specifying a magic filter, use Enhancement.automatic(FilterStyle.DOCUMENT, Palette.GRAYSCALE).
  • To process a document while specifying a static filter, use Enhancement.withFilterConfiguration(FilterConfiguration.strongMonochrome()). FilterConfiguration exposes a series of static filters as static methods.

Scan flow integration

The filters, automatic and fixed, are exposed on the type ScanConfiguration.Filter.

Retro-compatibility

  • FilterType enum class has been deprecated, use FilterConfiguration instead. Enhancement.withFilter() methods have also been deprecated in favor of Enhancement.withFilterConfiguration().
  • In the ScanProcessor.Result class, the appliedFilter has been deprecated in favor of appliedFilterConfiguration.

Misc

  • [ScanFlow] It’s now possible to customize which filters the user will see when they tap on the Edit Filter button with the availableFilters parameter in the ScanFlow configuration.
  • [Android ScanFlow] It’s now possible to customize whether curvature correction should be applied by default with the defaultCurvatureCorrection parameter in the ScanFlow configuration.
  • [ios] Remove duplicate resource files to reduce the size of the SDK.
  • [Cross-platform/iOS] Fix a regression causing the scan flow to have multipage mode disabled by default. This fix ensures that the default value for the multiPage property of the scan flow configuration is true.
  • [ios ScanFlow] Fix an issue where the scan flow would incorrectly finish when the user tapped “Retry” during a single-page camera scanning session.

[5.0.8] - 2024-06-05

  • [Android ScanFlow] Restrict the images available in the image picker to the formats supported by the SDK (JPEG and PNG).
  • [Cordova, ReactNative, Flutter, .NET] Add structured data extraction support for the receipt and businessCard types in addition to bankDetails.

[5.0.7] - 2024-06-03

  • [Core] Fix an issue with the document detection that sometimes incorrectly returns a subpart of the document instead of the entire document.
  • [Android] Fix crash when deserializing the cached license key.

[5.0.6] - 2024-05-24

  • [ios] Prevent duplicate symbol runtime errors if the consuming app directly depends on PhoneNumberKit as well.
  • [ios ScanFlow] Fix regression where the snap animation wasn’t reset when the document detection lost track of the document.
  • [ios ScanFlow] Fix regression that removed the Photo filter from the filters available by default.

[5.0.5] - 2024-04-22

  • [ios] Fix potential crash when using a custom logger.

[5.0.4] - 2024-04-18

  • [ios] Fix issue where selecting the None filter has no effect in ScanFlow.
  • [ios] Receipt scanner: Fix an issue causing the merchant name not to be properly detected.

[5.0.3] - 2024-04-15

Improved automatic filters

With this update, we have improved the logic in these smart filters to enhance processing for certain classes of documents. For example, they will now apply softer enhancements to carbon-copy documents.

[iOS] Static filters

The Genius Scan SDK offers a set of four magic filters: Monochrome, B/W, Color, and Photo. While we highly recommend using these magic filters, fine-tuned based on our experience processing billions of documents with Genius Scan, we have also introduced fixed filters that allow you to select a specific filter that better suits your needs.

Core integration

  • To automatically process a document, call GSKScanProcessor.processImage(_:configuration:) with a defaultConfiguration.
  • To process a document while specifying a magic filter, call GSKScanProcessor.processImage(_:configuration:) with GSKEnhancementConfiguration.automaticConfiguration(filterStyle: .document, colorPalette: .grayscale).
  • To process a document while specifying a static filter, call GSKScanProcessor.processImage(_:configuration:) with GSKEnhancementConfiguration.automaticConfiguration(filterConfiguration: .strongMonochrome). GSKFilterConfiguration exposes a series of static filters as static variables.

Scan flow integration

The filters, automatic and fixed, are exposed on the type GSKScanFlowFilterType.

Retro-compatibility

  • This change enhances the existing filters (exposed through GSKFilterType or GSKScanFlowFilterType).
  • We have deprecated the GSKFilterType type (the APIs are still available but marked as deprecated).
  • We have deprecated the GSKScanFlowType type (the APIs are still available but marked as deprecated).

Misc

  • [ios] Add Privacy manifest file. For the record: the SDK doesn’t perform any user tracking, and doesn’t collect any user data.

[5.0.2] - 2024-04-09

  • [ios] Fix crash in receipt detection when OCR text contained special characters.

[5.0.1] - 2024-04-04

  • [ios] Fix GSKDocumentGenerator method not found in cross-platform plugins.

[5.0.0] - 2024-04-03

Version 5.0 of the SDK aims to simplify the integration of the SDK. It also introduces support for modern OCR engines, improving the speed and accuracy of text recognition.

Single-framework architecture

Instead of using a modular architecture with 3 different pieces, the SDK now comes as a single module. Concretely, this only affects customers doing a custom integration. The benefit is that you just need to use a single module, enabling faster iteration and better internal optimizations.

iOS

Instead of importing the modular frameworks, you now just import GSSDK:

- import GSSDKCore
- import GSSDKOCR
- import GSSDKScanFlow
+ import GSSDK

Android

Instead of importing several modules, a single module is now needed in your app’s build.gradle file:

- implementation "com.geniusscansdk:gssdk-ocr:4.21.0"
- implementation "com.geniusscansdk:gssdk-core:4.21.0"
- implementation "com.geniusscansdk:gssdk-scanflow:4.21.0"
+ implementation "com.geniusscansdk:gssdk:5.0.0"

Cross-platform plugins

No change is required.

Modern OCR

The Genius Scan SDK can use the platform OCR engines instead of our legacy engine based on Tesseract. This results in higher performance and accuracy, and the processing still happens fully on-device. If the modern OCR engines do not support a language, the SDK will fall back to our legacy engine.

You must now provide a BCP 47 language tag (en-US) instead of an IOS 639-3 code (eng) to specify the language(s) of the text recognition. The languages supported by the modern OCR engines on both iOS 17 and Android are: Simplified Chinese (zh-Hans), Traditional Chinese (zh-Hant), English (en-US), French (fr-FR), German (de-DE), Italian (it-IT), Japanese (ja-JP), Korean (ko-KR), Brazilian Portuguese (pt-BR), Spanish (es-ES), Vietnamese (vi-VT). An extensive list of all the supported tags is available on the SDK website.

There is no need to pass in the language model files for the legacy OCR anymore. If the SDK needs to fall back on the legacy engine, it will download the language model files on-demand. The SDK doesn’t need to download any language files for the modern engines.

iOS

The API slightly changes:

- let ocrConfiguration = GSKOCRConfiguration()
- ocrConfiguration.languageCodes = ["eng", "fra"]
- ocrConfiguration.trainedDataPath = "…"
+ let ocrConfiguration = GSKOCRConfiguration(languageTags: ["en-US"])

Android

The OCR configuration needs to be adapted:

- OcrConfiguration ocrConfiguration = new OcrConfiguration(Arrays.asList("eng"), trainedDataFolder);
+ OcrConfiguration ocrConfiguration = new OcrConfiguration(Arrays.asList("en-US"));
Cross-platform plugins

The API stays the same, but make sure to change the values of the languages key to BCP 47 language tags: eng must become en-US, etc. Also, remove the languagesDirectoryUrl from the ocrConfiguration dictionary as it is not used anymore.

Structured Data Extraction

On iOS, you can now extract structured data from receipts, business card and bank details. To enable this feature, use the property structuredData on GSKScanFlowConfiguration or use GSKStructuredDataExtractor in custom integrations. Receipt extraction will extract the date, merchant, amount, category, currency and locale. Business card extraction will extract the contact details from a business card or other type of documents. Bank details recognition will extract IBAN and BIC/SWIFT code.

Improved document detection

The Genius Scan SDK introduces an improved document detection model to more accurately find documents even if they are low-contrast, feature unusual aspect ratios, or are partially hidden by other items in the picture such as pens, keyboards or other documents. It also reduces the SDK size by approximately 5MB.

Modernize Android API

Some APIs were modernized, introducing breaking changes for customers with a custom integration:

  • the PDFPage constructor now takes a File instead of a String path for its first argument
  • the pages argument of the PDFDocument constructor has been moved at the first position and all other arguments are optional
  • the DocumentGenerator methods now throw a DocumentGenerator.Exception instead of a DocumentGeneratorException
  • PDFImageProcessor is now an interface instead of an abstract class, and its process method uses File objects rather than String paths
  • the LoggerSeverity enum has been renamed into Logger.Severity, and its values have been renamed: VERBOSELEVEL into Verbose,…
  • the OcrProcessor constructor takes an OcrProcessor.ProgressListener argument rather than an OCREngineProgressListener
  • the TextLayoutToTextConverter class now has an empty constructor, and uses the logger set on GeniusScanSDK
  • the TextLayoutToTextConverter.convert method now returns a TextLayoutToTextConverter.Result and throws a TextLayoutToTextConverter.Exception when an error occurs

Misc

  • [iOS] The SDK is now built with Xcode 15 and its minimum deployment target has been increased to iOS 13.
  • [iOS] Demo projects now integrate the SDK with SwiftPM and not CocoaPods anymore. CocoaPods is still supported.
  • [iOS] Implement a new GSKDocumentFinder which lets you identify if a document is present in a given image, and if the documents needs post-processing such as perspective correction or filters.
  • [iOS] Remove the deprecated GSKPDF type and associated methods in favor of GSKDocumentGenerator to generate PDF and TIFF files.
  • [All] Remove deprecated methods to initialize the SDK and deprecated pdfURL field.
  • [.NET] Upgrade plugin and demo app to .NET 8.

[5.0.0-beta9] - 2024-03-19

  • [Core] Use new document detection models which both improve detection accuracy and reduce SDK size (by ~5MB).
  • [iOS] Remove deprecated GSK.initWithLicenseKey method and GSKScanFlowResult.pdfURL field.
  • [Android] Improve exceptions thrown by OCRProcessor.
  • [Cordova, ReactNative, Flutter] Remove deprecated setLicenceKey method. Use setLicenseKey instead (note the syntax difference with a “s” instead of a “c”).

[5.0.0-beta8] - 2024-03-05

  • [ios] The documentation and podfiles for the native, Flutter, and React Native versions of the SDK have been updated to use iOS 13 as their minimum deployment target.
  • [ios] Fix potential crash (introduced in v5.0.0-beta5) when deallocing the GSKCameraViewController and its view wasn’t loaded yet.
  • [ios] Introduce GSKStructuredDataExtractor to expose extracting structured data (receipts, business cards, IBAN) in custom integrations.
  • [Android] Remove deprecated GeniusScanSDK.init() method and ScanResult.pdfFile field.
  • [.NET] Upgrade plugin and demo app to .NET 8.

[5.0.0-beta7] - 2024-02-20

  • [ios] Implement a new GSKDocumentFinder which lets you identify if a document is present in a given image, and if the documents needs post-processing such as perspective correction or filters.

[5.0.0-beta6] - 2024-02-15

  • [Android] Only expose OCR languages available on Android.

[5.0.0-beta5] - 2024-02-14

  • [ios] Fix occasional crash due to a race condition when deallocating the GSKCameraViewController.
  • [Android] Add ability to preload OCR models. This is useful to ensure models are present when text recognition is processed.

[4.21.1] - 2024-02-13

  • [Android] Fix an issue where the camera preview is black on Redmi Note 9 Pro devices.

[5.0.0-beta4] - 2024-02-09

  • [ios] Prevent potential app hang when deallocating the GSKCameraViewController.
  • [ios] Add missing header file from GSSDK.h umbrella header.
  • [ios] Restore previous GSKScanFlow.startFromViewController Objective-C API.
  • [ios] The new async/await-based GSKScanFlow.resultByStarting API is now only available when using Swift.

[5.0.0-beta3] - 2024-02-09

Features

On iOS, you can now perform receipt and business card extraction with GSKScanFlow. To enable this feature, use the property structuredData on GSKScanFlowConfiguration. Receipt extraction will extract the date, merchant, amount, category, currency and locale. Business card extraction will extract the contact details from a business card or other type of documents.

Misc

  • [ios] Make GSKPDFGeneratorError public again.

[5.0.0-beta2] - 2024-02-07

Modernize Android Custom API

Some APIs were modernized, introducing breaking changes for customers with a custom integration:

  • the PDFPage constructor now takes a File instead of a String path for its first argument
  • the pages argument of the PDFDocument constructor has been moved at the first position and all other arguments are optional
  • the DocumentGenerator methods now throw a DocumentGenerator.Exception instead of a DocumentGeneratorException
  • PDFImageProcessor is now an interface instead of an abstract class, and its process method uses File objects rather than String paths
  • the LoggerSeverity enum has been renamed into Logger.Severity, and its values have been renamed: VERBOSELEVEL into Verbose,…
  • the OcrProcessor constructor takes an OcrProcessor.ProgressListener argument rather than an OCREngineProgressListener
  • the TextLayoutToTextConverter class now has an empty constructor, and uses the logger set on GeniusScanSDK
  • the TextLayoutToTextConverter.convert method now returns a TextLayoutToTextConverter.Result and throws a TextLayoutToTextConverter.Exception when an error occurs

Misc

  • [Android] Fix incorrect OCR progress.
  • [Android] Expose supported OCR languages.

[5.0.0-beta1] - 2024-01-19

Version 5.0 of the SDK aims to simplify the integration of the SDK. It also introduces support for modern OCR engines, improving the speed and accuracy of text recognition.

Single-framework architecture

Instead of using a modular architecture with 3 different pieces, the SDK now comes as a single module. Concretely, this only affects customers doing a custom integration. The benefit is that you just need to import a single framework, enabling faster iteration and better internal optimizations.

iOS

Instead of importing the modular frameworks, you now just import GSSDK:

- import GSSDKCore
- import GSSDKOCR
- import GSSDKScanFlow
+ import GSSDK

Android

Instead of importing several modules, a single module is now needed in your app’s build.gradle file:

- implementation "com.geniusscansdk:gssdk-ocr:4.21.0"
- implementation "com.geniusscansdk:gssdk-core:4.21.0"
- implementation "com.geniusscansdk:gssdk-scanflow:4.21.0"
+ implementation "com.geniusscansdk:gssdk:5.0.0-beta1"

Cross-platform plugins

No change is required.

Modern OCR

The Genius Scan SDK can use the platform OCR engines instead of our legacy engine based on Tesseract. This results in higher performance and accuracy, and the processing still happens fully on-device. If the modern OCR engines do not support a language, the SDK will fall back to our legacy engine.

You must now provide a BCP 47 language tag (en-US) instead of an IOS 639-3 code (eng) to specify the language(s) of the text recognition. The languages supported by the modern OCR engines on both iOS 17 and Android are: Simplified Chinese (zh-Hans), Traditional Chinese (zh-Hant), English (en-US), French (fr-FR), German (de-DE), Italian (it-IT), Japanese (ja-JP), Korean (ko-KR), Brazilian Portuguese (pt-BR), Spanish (es-ES), Vietnamese (vi-VT). An extensive list of all the supported tags will be available on the SDK website.

There is no need to pass in the language model files for the legacy OCR anymore. If the SDK needs to fall back on the legacy engine, it will download the language model files on-demand. The SDK doesn’t need to download any language files for the modern engines.

iOS

The API slightly changes:

- let ocrConfiguration = GSKOCRConfiguration()
- ocrConfiguration.languageCodes = ["eng", "fra"]
- ocrConfiguration.trainedDataPath = "…"
+ let ocrConfiguration = GSKOCRConfiguration(languageTags: ["en-US"])

Android

The OCR configuration needs to be adapted:

- OcrConfiguration ocrConfiguration = new OcrConfiguration(Arrays.asList("eng"), trainedDataFolder);
+ OcrConfiguration ocrConfiguration = new OcrConfiguration(Arrays.asList("en-US"));
Cross-platform plugins

The API stays the same, but make sure to change the values of the languages key to BCP 47 language tags: eng must become en-US, etc. Also, remove the languagesDirectoryUrl from the ocrConfiguration dictionary as it is not used anymore.

Misc

iOS

  • The iOS SDK is now built with Xcode 15.
  • Demo projects now integrate the SDK with SwiftPM and not CocoaPods anymore. CocoaPods is still supported.

[4.21.0] - 2023-12-20

  • [Android] Upgrade to CameraX 1.3.1 to fix a performance issue in camera initialization.

[4.20.1] - 2023-12-12

  • [iOS, ScanFlow] Add missing exported symbol for GSKScanFlowButton.

[4.20.0] - 2023-12-11

  • [Cordova, ReactNative, Flutter, .Net] Add auto-refreshing of license key (see v4.17.0 for more details). The new method used to set the license key is called setLicenseKey and has an autoRefresh boolean flag. The old method, called setLicenceKey is now deprecated. See the documentation for each framework for more details.
  • [iOS, ScanFlow] Correctly report a cancellation error if the user dismissed the system photo picker by swiping down.

ScanFlow: Add SwiftUI API for starting a scan flow

ScanFlow now offers a dedicated SwiftUI-based button, GSKScanFlowButton, which acts as a convenience API for starting a scan flow from within a SwiftUI view.

ScanFlow: Bank Details Scanning

ScanFlow now supports scanning bank details (such as IBAN and BIC/SWIFT codes). The feature is launching on iOS but you can already use it in the cross-platform plugins; support for Android will come soon.

To enable this feature, set the flag structuredData to .bankDetails on GSKScanFlowConfiguration.

[4.19.0] - 2023-11-27

  • [Android] Add auto-refreshing of license key (see v4.17.0 for more details).
  • [Android] Accelerate the camera startup. The upgrade to CameraX 1.3 introduced a bug where the camera could take a few seconds to initialize. Several improvements were made internally to mitigate this problem until a fix is available in the CameraX library.
  • [Android] Fix a bug in ScanFragmentLegacy where setting the JPEG quality before the camera was initialized would not be taken into account.

[4.18.0] - 2023-11-15

  • [iOS] Fix build issues with JS plugins due to incorrect iOS headers.

[4.17.0] - 2023-11-14

New

  • [iOS] iOS 13.0 is now required.
  • [iOS] Auto-refreshing license keys (see below).
  • [Android] Add ability to disable PDF/A format by passing a PDFAConfiguration to the DocumentGenerator. It was already possible to do so on iOS by passing a null iccProfilePath to the GSKPDFGeneratorConfiguration.

Fixed

  • [iOS] Fix issue where some public Swift symbols were not properly exported.

[iOS] Auto-refreshing License Keys

The Genius Scan SDK no longer requires a new license key to be obtained and updated in your app’s source code annually. While it is still advisable to update the license key each year, you now have the option to enable automatic license key renewal. This provides greater flexibility and ensures that users who do not immediately update your app will continue to have access to the Genius Scan SDK features.

If you use the new APIs, this feature is enabled by default but can be disabled.

API Changes

  • Introduction of a new API setLicenseKey(_:, autoRefresh: Bool) that allows you to set an initial license key. This initial license key will be utilized for automatic renewal of the license key from our servers. Upon your app’s launch, it will ping our licensing server to update the license key, if necessary, with our servers receiving the license key, a random device identifier, and your app’s version. This is the only network connection the SDK will perform.
  • If you want to prevent the license key refresh (for privacy reasons), set the autoRefresh flag to false. This will provide the same behavior as the deprecated initWithLicenseKey(_:) API call and the SDK will make no connection to our licensing server.
  • The former API initWithLicenseKey(_:) throws has been deprecated.

Best Practices for User Experience

  • It is recommended to update the license key annually to ensure a seamless offline experience for your app users.
  • We advise initializing the SDK as early as possible after app launch so that a fresh key is received as early as possible.

[4.16.0] - 2023-11-07

  • [iOS] Properly specify the dSYM path of the different XCFrameworks in the Info.plist, so that the consuming app can properly archive them and upload them to the store and/or crash reporting systems.

[4.15.0] - 2023-11-02

  • [Android] Upgrade AndroidX Camera component to v1.3. This mainly fixes a camera resolution issue on some Samsung devices. We used to workaround this issue by using the legacy Camera API for these devices. We’ve now removed this workaround and the CameraX API is now used for these devices.
  • [Flutter, ReactNative, Cordova, .NET] A new source for the ScanFlow is now officially supported and documented: library. It allows to start the ScanFlow with an image picker, and the image picked by the user will be used as the source of the ScanFlow.

[4.14.0] - 2023-10-17

  • [ScanFlow] Add support for Polish and Hungarian languages.
  • [ScanFlow Android] Change error code and message when the scan flow is canceled by the user to align with the ones on iOS: “E_SCAN_CANCELED” and “Scanning canceled by user”.
  • [ScanFlow] Add ability to configure the format of the text recognition result (outputFormats in the ocrConfiguration). It can be a combination of raw text, hOCR text layout and an invisible layer in the generated PDF documents. Prior to this change, the OCR result was available in all these formats without the ability to skip some of them.
  • [ScanFlow iOS] Breaking changes: the GSKUIOCRConfiguration class was renamed into GSKScanFlowOCRConfiguration, the OCR result returned for each scan is now a GSKScanFlowOCRResult instead of GSKOCRResult and some internal properties of the result scans were removed (appliedQuadrangle, appliedFilter, appliedRotation).

[4.13.0] - 2023-09-01

  • [Core iOS] Fix issue preventing PDF/A-1 files from being properly generated because the ICC profile wasn’t properly loaded from the framework.
  • [Core Android] Fix resolution issue on some Samsung Galaxy devices (A41, Tab S8 Ultra). The Camera legacy API is used until this issue is solved in CameraX library.
  • [ScanFlow Android] Fix crash when multiPageFormat is set to none in crossplatform plugins.
  • [.NET] Revert Android package name to GeniusScanSDK.Scanflow. It was inadvertently modified when migrating from Xamarin to .NET.

[4.12.0] - 2023-06-01

  • [ScanFlow iOS] Fix bug where images are not deleted when the user taps the Retry button.
  • [ScanFlow iOS] Fix bug where custom PDF font file was ignored in the ScanFlow configuration.
  • [ScanFlow iOS] Fix issue where OCR progress wasn’t displayed when the multipage flag was set to false.
  • [Core iOS] Make GSKPDFGeneratorError public again, it was incorrectly made private in 4.11.0.
  • [Core iOS] Expose a GSKPDFGeneratorConfiguration initializer that will use a default ICC profile to create a PDF/A-1.
  • [.NET] This version drops support for Xamarin and adds support for .NET MAUI for both Android and iOS. The NuGet packages keep the same name: GeniusScanSDK.ScanFlow.Android and GeniusScanSDK.ScanFlow.iOS.

[4.11.0] - 2023-05-24

  • [Core] Fix performance regression for the PNG output. The regression was due to the compression factor being switched from 1 to 9. While this improved the compression by about 10%, this caused the compression to be several orders of magnitude slower.
  • [ScanFlow] Generated PDF files are now using the PDF/A-1 format (PDF 1.4), particularly suitable for long-term archiving.
  • [iOS] SDK is now built with Xcode 14.3.
  • [iOS] Catch C++ exceptions raised during document detection and raise them as errors to the GSKCameraSession.
  • [iOS] Prevent a rare crash when the camera session is deallocated.
  • [Android] Fix incorrect behavior when the app is in the background during OCR.

[4.10.1] - 2023-04-20

  • [Android] Fix crash when custom font file is not provided for PDF generation.

[4.10.0] - 2023-04-13

  • [Xamarin Android] Strip Android native debugging symbols from the Xamarin.Android plugin. This reduces considerably the size of the APK when using the plugin.
  • [ScanFlow] Add ability to specify a custom font to the PDF generator. The default font supports a limited set of scripts and a custom font needs to be specified when generating a PDF file with a text layer with non-Latin characters.

[4.9.0] - 2023-03-14

  • [ScanFlow] Android: Add ability to start the ScanFlow with a photo picker (with source gallery). This was already available on iOS.
  • [ScanFlow] Expose OCR text layout (in addition to raw text) in the result of the ScanFlow so that it can be used in the PDF generation.

[4.8.0] - 2023-01-24

  • [Android] Refactor image format management with two breaking changes:
    • The ScanProcessor.process method now takes an OutputConfiguration with a destination folder as input instead of an output file.
    • The GeniusScanSDK.scaleImage method doesn’t accept a filter type as a parameter. Instead, it will automatically infer the type of interpolation needed from the image.
  • [Core] iOS: Catch some memory exceptions to return them as errors instead of crashing.
  • [Core] iOS: Catch some internal exceptions if some conditions attempts to create an image with negative dimensions and return an error instead of crashing.
  • [ScanFlow] iOS: Add distortion correction feature to the scan flow. This toggle button lets the user correct the curvature of documents (curved book pages or folded documents).
  • [ScanFlow] iOS: Display activity indicator during PDF generation.
  • [ScanFlow] iOS: Fix bug where document detection could still be active when performing text recognition and PDF generation on a document with many pages.
  • [ScanFlow] Android: Fix crash when discarding a scan flow with an existing image as input.

[4.7.4] - 2022-12-09

  • [ScanFlow] Android: Stop automatic document detection when dialog is displayed on top of camera screen
  • [Core] Change interpolation mode in curvature correction to avoid aliasing artifacts
  • [Xamarin] Add OCR configuration to demo apps

[4.7.3] - 2022-11-17

  • [Xamarin] Fix Android runtime error because of missing CameraX classes.
  • [Xamarin] Fix Android binding again to expose ScanFragment implementations.
  • [ReactNative] Android: Adapt plugin and demo for ReactNative v0.70.

[4.7.2] - 2022-11-11

  • [ReactNative] Adapt plugin and demo for ReactNative v0.70

[4.7.1] - 2022-11-09

  • [Xamarin] Fix incorrect Java.Interop version used in Android plugin

[4.7.0] - 2022-11-07

  • [Xamarin] Fix an issue with Android binding that prevented some classes (eg ScanFragment) from being exposed.
  • [Xamarin] Fix iOS binding.
  • [Xamarin] Add code sample in demo apps to show how to use document generation.
  • [iOS] Fix close-up camera focus issue on some devices with multiple lenses such as iPhone 14 Pro.
  • [Android] Increase the compression level for PNG files produced when using the Monochrome filter to align with the value on iOS.
  • [Android] Fix a camera resolution issue on Samsung A32 and A32 5G devices. The Camera legacy API is used until this issue is solved in CameraX library.

[4.6.0] - 2022-10-04

  • [Flutter, ReactNative, Cordova, Xamarin] Add a PDF generation method to crossplatform plugins to allow generating a PDF document from a collection of images outside of the Scan Flow. Refer to the documentation of each plugin or to the demo apps for more details on how to use this method.
  • [iOS] Build SDK with Xcode 14.0.
  • [iOS] Remove BCSymbolMaps from the SDK’s XCFrameworks since Bitcode isn’t supported by Xcode 14 anymore.
  • [Android ScanFlow] Use CameraX instead of the legacy Camera API on most devices. The legacy Camera API will still be used on a very limited list of device models that don’t support some features.
  • [Android ScanFlow] Fix missing message on OCR progress dialog.
  • [Android ScanFlow] Support dark theme for dialog.
  • [Android ScanFlow] Keep the user-selected flash mode on all scans in the same scanning session.

[4.5.3] - 2022-08-26

  • [Android] Update CameraX to v1.1.0: this should solve a crash when no camera can be found on some devices.

[4.5.2] - 2022-06-23

  • [Core] Prevent auto-rotation from rotating documents by 180 degrees.
  • [Core] iOS: Take in account sensor orientation for auto-orientation to improve results.

[4.5.1] - 2022-06-10

  • [ScanFlow] iOS: Fix behavior of post processing actions where the Recrop button was hidden when it shouldn’t be.
  • [Core] Android: Fix method not available when using CameraX 1.1.0
  • [iOS] Fix deprecation documentation.

[4.5.0] - 2022-04-19

Added

  • [Core] Auto-rotation: Genius Scan now automatically detects the orientation of your document to make sure users scan documents in the proper orientation.
  • [ScanFlow] Allow zooming in image on validation screen
  • [Core ScanFlow] Add TIFF support as multi-page document format in addition to PDF. When using the ScanFlow module, use the multiPageFormat to specify the output format and the multiPageDocument field in the ScanFlow result to retrieve the document in the right format.
  • [Core ScanFlow] iOS: the recrop view now prevents the creation of a concave selection.
  • [Core] iOS: Allow changing the magnifier crosshair to show the zoomed quadrangle vertex (see GSKMagnifierView)
  • [Core] iOS: Allow customization of the shade color of the area outside and inside the quadrangle (see GSKEditableFrame)

Changed

  • [Core ScanFlow] iOS: Added small corners to denote that quadrangle vertices are draggable.
  • [Core ScanFlow] iOS: Make outside of quadrangle shaded in transparent black, as opposed to shading the inside of the quadrangle.
  • [Core] Android: Improve capture callback to allow the caller to handle the capture result. The method takePicture now takes as input an ImageCaptureCallback instead of a File. The previous behavior can be kept by using a FileImageCaptureCallback.

Fixed

  • [Core] Improve B&W and Color filters for document with dark background.
  • [Core] Return a negative clean image for the Monochrome filter when the background is dark to improve OCR results.
  • [Core ScanFlow] iOS: Ensured magnifier crosshair is visible on both light and dark backgrounds.

[4.4.7] - 2022-03-25

  • [Android] Fix behavior of setPreviewAspectFill option when using CameraX.
  • [Android] Stop the preview before (rather than after) calling the onPictureTaken callback when using CameraX.

[4.4.6] - 2022-03-15

  • [Android] Fix document detection not working when using CameraX on some devices.

[4.4.5] - 2022-03-01

  • [Android] Fix rare crash when using CameraX and SurfaceView is not properly laid out.

[4.4.4] - 2022-02-16

  • [iOS, ScanFlow] Fix memory leak when using OCR in ScanFlow. This could cause the scan flow to crash especially for JS plugins.

[4.4.3] - 2022-01-16

  • [Android] Fix crash in ScanFlow when the Recrop action was used before the page was processed.
  • [Android] Fix crash in ScanFlow when using ScanfragmentX without FocusIndicator
  • [Android] Fix bug where the overlay color of the ScanFragment could not be set to white.

[4.4.2] - 2021-12-14

  • [Android] Fix optimization level for native code which resulted in slower code and a bigger library size.

[4.4.1] - 2021-12-08

  • [Android] Fix crash when using CameraX.
  • [Flutter, ReactNative, Cordova] Remove Android binaries from plugins. The plugins now depend on Genius Scan Android SDK via Maven.

[4.4.0] - 2021-12-07

  • [iOS] Add support for simulator on Apple Silicon
  • [Android] The minimum version required is increased from Android 4.4 (API level 19) to Android 5.0 (API level 21). This covers more than 98% of Android devices.
  • [Android] Fix crash when flash mode is switched before camera is initialized.
  • [Xamarin] Improve iOS plugin: shortened paths, unique target name, better temporary file management.

[4.3.0] - 2021-11-23

  • [Android] Core: Add a new camera screen with CameraX API. The goal of this change is to prepare the replacement of the Camera API which is deprecated. The ScanFragment class has been converted to an interface, the ScanFragmentLegacy is an implementation of this interface using the legacy Camera API and ScanFragmentX is a new implementation using CameraX API. The ScanFragmentLegacy implementation will still be used by default for now but it’s possible to try the ScanFragmentX implementation when using the Core module of the SDK.
  • [Android] Core: Fix a bug where the camera preview would not be centered on screen when setting setPreviewAspectFill to true on the ScanFragment.
  • [iOS] ScanFlow: Fix innocuous Auto-Layout warnings.
  • [Xamarin] Add support for iOS simulators (x86_64 only for now).

[4.2.2] - 2021-11-12

  • [Flutter] Fix missing iOS frameworks in plugin.
  • [Flutter] Remove Android native symbols to limit plugin size to 100MB.
  • [ScanFlow] Android: Disable Next button until scan is proccessed to avoid errors in PDF generation.

[4.2.1] - 2021-11-09

  • [iOS] Fix issue resulting in invalid archive when archiving an app linked with the Genius Scan SDK installed through CocoaPods.

[4.2.0] - 2021-11-08

  • [ScanFlow] Add ability to perform Text Recognition (OCR) in ScanFlow. To enable it, add an ocrConfiguration to your ScanFlow configuration and add the required Tesseract language files to your application. This change increases the footprint of the ScanFlow module by approximately 15%.
  • [OCR] Android: Fix the OcrProcessor to avoid loading language models for each page that is processed.
  • [Flutter] Support the new Android plugins APIs.

[4.1.4] - 2021-10-26

  • [iOS] Fix potential crash when app moves to the background and image stream still being processed. This wasn’t affecting users but could be potentially seem in your app’s crash reports.

[4.1.3] - 2021-09-28

  • [Android] Fix bug where the JPEG quality setting was ignored in image processing operations.

[4.1.2] - 2021-09-13

  • [Xamarin] Change plugin dependencies to proper AndroidX libraries.
  • [ScanFlow] iOS: Fix bug where discarding a page would also discard the previous one.

[4.1.1] - 2021-09-10

  • Fix 4.1 publication issue.
  • [ScanFlow] Add missing translations.

[4.1.0] - 2021-09-09

  • [Android] Migrate to AndroidX and Java 8 language level.

[4.0.12] - 2021-08-26

  • [ScanFlow] Properly handle case where camera permission was previously denied by user.
  • [ScanFlow] Tweak localizations in French and Spanish.
  • [Android] Fix minor memory leak involving the singleton class BorderDetectionThreadManager.

[4.0.11] - 2021-08-18

  • [ReactNative] Remove iOS debug symbols from ReactNative plugin to avoid a Cocoapods bug which results in corrupt archives.

[4.0.10] - 2021-07-02

  • [iOS] Properly apply curvature correction on images rotated by 90° or 270°.

[4.0.9] - 2021-06-24

  • [iOS] Include dSYMs and BCSymbolMaps as part of the SDK’s XCFrameworks.

[4.0.8] - 2021-05-07

  • [Android] ScanFlow: Prevent crash when changing filter before processing is finished.
  • [Core] Improve perspective correction interpolation to avoid aliasing issues.
  • [Flutter] Migrate Flutter plugin to null safety. The minimum required Dart version is now 2.12.

[4.0.7] - 2021-03-31

  • [Android] ScanFlow: Prevent multiple clicks on rotation button to avoid image corruption.

[4.0.6] - 2021-03-29

  • [Xamarin] Add Xamarin plugins wrapping the ScanFlow module on nuget. Xamarin.Forms demo apps are available on our demo repository.
  • [OCR] Improve hOCR to text conversion.

[4.0.5] - 2021-03-16

  • [OCR] Return a proper exception in java instead of crashing if OCR engine cannot be initialized.

[4.0.4] - 2021-03-12

  • [Android] Core: Fix the scaleImage(float aspectRatio) method that was not correctly processing images with an exif orientation.
  • [Core] Tune the B&W and Color filters to better process white text over dark background.

[4.0.3] - 2021-03-05

  • [iOS] Core: Fix a regression where Red and Blue channels were systematically swapped.
  • [OCR] Fix a crash when OCR engine cannot find text.

[4.0.2] - 2021-03-04

  • [OCR] Return an error instead of crashing if OCR engine cannot be initialized because of a corrupt language file.
  • [Android] Fix crash when taking photo on devices without flash. Add method to list available flash modes to be able to properly initialize the flash button: ScanFragment.getAvailableFlashModes().
  • [Android] Fix resource leak in document detector.
  • [iOS] Swift Package support. Point to https://github.com/thegrizzlylabs/geniusscan-sdk-spm to get the Swift Package.
  • [iOS] Core: Fix issue where Red and Blue channels could be swapped when resizing images.
  • [iOS] ScanFlow: When editing the crop area, properly show the current area.
  • [iOS] ScanFlow: Return GSKScanFlowUserCancelationError when user cancels scanning from source, library.
  • [iOS] ScanFlow: Hide flash button on devices without a flash.
  • [iOS, Android] ScanFlow: Improve Russian, Japanese localizations.
  • [Flutter, ReactNative] Remove UIViewControllerBasedStatusBarAppearance=NO from Info.plist. Note: The Genius Scan SDK only supports the modern, view controller-based, status bar appearance. In particular, the camera screen is designed to work the status bar hidden.
  • [Flutter, ReactNative, Cordova] Better forwarding of iOS error codes.

[4.0.1] - 2021-01-27

  • [iOS] Fix crash when taking photo on devices without flash.
  • [iOS] iOS demo apps are now available on our Github repository.

[4.0.0] - 2021-01-11

Genius Scan SDK 4.0 is an entire rewrite from scratch of the Genius Scan SDK, using entirely new technologies and algorithms. Genius Scan 4.0 introduces breaking changes to the API.

Document Detection

The document detection has been entirely rewritten using deep learning. The document detection is more accurate and more robust to low-contrast, low-light or unusual settings.

API Change

On Android, instead of using GeniusScanLibrary.detectFrame(path), use the DocumentDetector class. On iOS, use the GSKDocumentDetector class.

Document Enhancement

New Algorithms

We used novel algorithms to improve the image filters to achieve enhanced quality and readability for your scanned documents. You can expect better removal of shadows, white-balancing, and treatment of the colors in text documents.

In automatic mode, the document enhancement pipeline can now automatically select one of the four filters: no filter if the image doesn’t contain any document, black and white if the image is a text document with little color, color for text documents with some colors, or photo when the document mainly contains visuals but not so much text.

Edge Cleaning

Edge cleaning is a powerful enhancement that cleans up the edges of the documents. Often, after you crop a scan, some artifacts are left on the edges. The edge cleaning cleans them up. This step results in a cleaner document and helps with the accuracy of the OCR step. Edge cleaning only applies to the monochrome, black and white, and color filters.

API Change

The document enhancement pipeline is available through a single processor object set up with configuration objects. Use the ScanProcessor on Android or the GSKScanProcessor on iOS instead of the static methods on GeniusScanLibrary and GSK. When creating a processor, use the associated configuration object to tune the processing to your liking.

ScanFlow

We’ve renamed the ScannerUI framework into ScanFlow.

We’ve simplified the ScanFlow module to two main screens: a Camera screen and a Scan Review screen, from which one can change the filter and edit the cropping area of the current page.

The batch scanning mode is now streamlined: after validating a page on the post-processing screen, instead of being prompted to add a new page, the user is brought back to the camera screen. Hitting the Done button validates the scanned pages and terminates the flow. Hitting the Cancel button cancels the entire scan flow after a confirmation.

API Change

On Android, the class containing all the static methods to manage the scan flow has been renamed from GeniusScanSdkUI to ScanFlow.

PDF Generation

We’ve made several changes to optimize the size of PDF files created with the SDK. When using the Monochrome filter, you have the ability to save the output as monochrome 1-bit PNG images. Resulting PDF files using these PNG images are up to 10 times smaller.

Integration

iOS

The SDK is now packaged as XCFrameworks. We’ve removed support for Carthage.

Android

All package names and Maven articfact groups have changed from com.thegrizzlylabs.geniusscan.sdk to com.geniusscansdk to match our website URL.

Modules have also been renamed as follows:

  • gs-sdk-core into gssdk-core
  • gs-sdk-ui into gssdk-scanflow
  • gs-sdk-ocr into gs-sdk-ocr

Other Changes

  • Improve API documentation. Up-to-date API documentation is now provided directly on the geniusscansdk.com website.
  • Rewrite iOS demo apps in Swift.
  • Large API simplifications.
  • Remove the Android interface ScanContainer which was used to hold the result of a capture and replace it with a File object.
  • Improve performance of algorithms.

[4.0.0-beta15] - 2021-01-07

  • [iOS] Fix issue where grayscale images were not processed properly with OCR.
  • [iOS] Fix issue where 16-bit images were not properly imported and resulted in garbled scans.
  • [ScanFlow] Add missing translations

[4.0.0-beta14] - 2021-01-04

  • [Android] Fix a plural string in the ScanFlow module.
  • [Android] Prefix all string resources with “gssdk_” to avoid conflicts with other libraries resources.
  • [Android] Remove a useless empty constructor in OcrConfiguration.
  • [iOS] Mark quadrangle in GSKDocumentDetectionResult as non-null.
  • [iOS] ScanFlow: Fix bug preventing flash button from having any effect.

[4.0.0-beta13] - 2020-12-17

  • [iOS] Properly handle ARGB, ABGR -> RGB conversions.
  • [iOS] Renamed GSKDocumentProcessor into GSKScanProcessor.
  • [Android] The public API for document detection is now DocumentDetector instead of CnnDocumentDetection.

[4.0.0-beta12] - 2020-12-08

  • [Core] Add a new document detection configuration, which improves the precision of the document detection.
  • [iOS] API change: GSKDocumentProcessor now takes a single configuration object.

ScanFlow

  • [iOS] Add cancel button when changing filter.
  • [iOS] Fix regression allowing ScanFlow to run in landscape mode.
  • [iOS] Layout fixes.
  • [iOS] Fix status bar text color in Dark Mode.
  • [iOS] Fix toolbar tint color that wasn’t taking in account the foregroundColor.
  • [Android] Fix navigation bar color on devices with an old Android version.

[3.0.27] - 2020-12-03

  • [React Native] Android: Remove tag from plugin manifest resulting in a warning while building your project.

[4.0.0-beta11] - 2020-11-26

  • [iOS] Fix localization of “Detect” text in ScanFlow module.
  • [iOS] Remove the beta modifier in Framework’s SDK version as this doesn’t respect the semantic versioning required by CFBundleShortVersionString. Instead of v4.0.0-beta11, the framework’s version will be 4.0.0 even for beta versions.
  • [Android] Simplify the API of the ScanFlow result: you don’t need to use ImageStore to get the file path of the images.

[4.0.0-beta10] - 2020-11-24

  • [Flutter] Fix missing iOS frameworks.

[4.0.0-beta9] - 2020-11-23

  • [iOS] Further simplify the GSKCameraSession API: you don’t have to call setup on it anymore, the GSKCameraViewController will call it at the appropriate time.
  • [iOS] Add SDK version as part of the Framework Info.plist.
  • [iOS] Rewrite Custom Demo in Swift.
  • [core] Improve stability of image detection.

[4.0.0-beta8] - 2020-11-13

  • [Android] Rename ImageType into FilterType.
  • [iOS] Simplify API of the GSKCameraSession. The session doesn’t require a GSKScanProtocol/GSKScanFactory, and will simply return a GSKScan object with the new scan. See GSKCustomDemo for an updated implementation reference.
  • [iOS] Prevent crash if a concave quadrangle is passed to the GSKDocumentProcessor. Instead, an error will be returned by the processor.
  • [iOS] ScanFlow: Add padding around user guidance labels.

[4.0.0-beta7] - 2020-11-06

  • [Android] Fix ScanProcessor behavior when no perspective correction should be done.
  • [Android] Fix rotation of empty quadrangle.
  • [Cordova] iOS: Fix plugin that included incorrect headers.

Improved ScanFlow UI

We’ve simplified the ScanFlow module to 2 main screens: a Camera screen, and a Post-processing screen, from which one can change the filter and edit the cropping area of the current page.

Also, the batch scanning mode has been changed: after validating a page on the post-processing screen, the user is brought back to the Camera screen. Hitting the Done button validates the scanned pages and terminates the flow. Hitting the Cancel button cancels the entire scan flow after a confirmation.

[4.0.0-beta6] - 2020-10-26

  • [iOS/Android] Smoother real-time display of the detected document.
  • [React Native] Android: Remove tag from plugin manifest resulting in a warning while building your project.

[4.0.0-beta5] - 2020-10-23

  • [iOS, Android] Improve the document processor API to avoid confusing parameter combinations.

Edge Cleaning

Edge cleaning is a powerful enhancement that cleans up the edges of the documents. Often, after you crop a document, some artifacts are left on the edges of the document. The edge cleaning cleans them up. This results in a cleaner document and helps with the accuracy of the OCR step.

[3.0.26] - 2020-10-19

  • [Core] Accelerate perspective correction
  • [Android] Fix a crash happening on Android 11 when performing perspective correction

[4.0.0-beta4] - 2020-10-14

  • [Android] Add ability to set an additional camera frame processing. A onPreviewFrame method has been added to the CameraManager.Callback.

[4.0.0-beta3] - 2020-10-07

Best filter detection

The Best filter detection algorithm, which takes an image as input and returns the best filter to apply to this image, has been completely changed. It used to return only two outputs: Black & White or Photo. It now has 4 outputs:

  • None when the image does not contain a document
  • Black & White for text documents with very little color
  • Color for text documents with some color
  • Photo when the document contains mainly graphic parts and little text

Other changes

  • [Android] Revert incorrect renaming of the UI package in the Core module
  • [Core] The document detection now returns an empty quadrangle when no document has been detected on the image. A full quadrangle is returned when the detected document fills the entire image (e.g. no crop is needed).

[4.0.0-beta2] - 2020-10-05

  • Fix documentation and demo apps

[4.0.0-beta1] - 2020-10-02

Document detection

Document detection has been entirely rewritten using deep learning and a new interface is now available for Android and iOS.

On Android, instead of using GeniusScanLibrary.detectFrame(path), you need to build a CnnDocumentDetection object and call one of the detectDocument methods on it. Similarly, on iOS, instead of using [GSK detectQuadrangleFromImage:imageOutOfCamera options:0], use the GSKDocumentDetector class and the detectQuadrangle* methods.

Scan processor

A new interface is also available for the different scan processing operations such as perspective correction, filtering and distortion correction. A single call is now needed to process an image and get a clean and readable document.

On Android, the corresponding methods have been removed from the GeniusScanLibrary class and have been replaced by a ScanProcessor class. On iOS, the GSKDocumentProcessor class replaces previous methods from GSKCore.

Image filters

The different image filters (Photo, Color, Black and White, Monochrome) have also been rewritten from scratch using novel algorithms to improve the quality and readability of the scanned documents. This results in a better removal of shadows, a correction of the colored tint that appears on some documents because of ambient light, and a better treatment of colors in text documents.

Monochrome filter and smaller PDF files

We’ve made several changes to optimize the size of PDF files created with the SDK. When using the Monochrome filter, you have the ability to save the output as monochrome 1-bit PNG images. Resulting PDF files using these PNG images are up to 10 times smaller.

Other changes

  • [Cordova ReactNative Flutter] iOS: Change the output format to match the documentation. Now, the scans and the generated PDF all have a URL in the form file:///path/to/file.ext.

[3.0.25] - 2020-10-01

  • [Android] Add support for Android 11
  • [Cordova] Fix Ionic documentation

[3.0.24] - 2020-08-24

  • [PDF] Add ability to set creation and last update dates of PDF files metadata.
  • [UI] Fix bug where current page was saved when the validation dialog was canceled.
  • [Core] Android: Properly throw an exception in perspective correction when quadrangle is invalid.
  • [Core] iOS: Fix crash in perspective correction when two vertices of the quadrangle are really close.

[3.0.23] - 2020-07-21

  • [UI] Improve translations, mainly in Turkish.
  • [Android] Keep symbols in AARs to be able to track crashes (eg with Firebase Crashlytics). This shouldn’t result in bigger APKs since native symbols are stripped when built in Release mode.

[3.0.22] - 2020-07-15

  • [OCR] Improve error reporting in TextLayoutToTextConverter.
  • [UI] Improve German localization.
  • [UI] iOS: Add cancel button when picking an image from the Photos or scanning directly from a URL.
  • [UI] iOS: Prevent conflict between interactive pop gesture and dragging to adjust the document’s detected edges.

[3.0.21] - 2020-07-13

  • [Android] Core: ScanFragment now checks if its parent fragment implements CameraCallbackProvider, not only its parent activity.
  • [iOS] Fix crash with 64-bit images.
  • [OCR] Fix TextLayoutToTextConverter issue on some images with no text.

[3.0.20] - 2020-07-06

  • [Android] Fix a Proguard issue regarding TextLayoutToTextConverter class

[3.0.19] - 2020-06-23

  • [Android] Fix dependencies of Maven artifacts
  • [UI] Android: Fix a minor issue closing a dialog that was causing an error being logged
  • [UI] Android: Fix Camera screen on devices with a 16:9 camera
  • [OCR] Add a TextLayout to Text converter to convert OCR result into a legible text

[3.0.18] - 2020-05-12

  • [iOS] SDK is now built with Xcode 11.4.1.
  • [Flutter, RN, Cordova] Fix Android dependency (Bolt Tasks) that was causing a crash

[3.0.17] - 2020-05-05

  • [OCR] Remove preprocessed parameter. This parameter let the caller specify that the image was already preprocessed for OCR and that the SDK didn’t need to reprocess it. The OCR stack will now always preprocess images for optimal results. The caller doesn’t have the ability to prevent that anymore.
  • [UI] Fix some translations
  • [UI] Android: optimize bitmap loading, especially for devices with a very large resolution camera

[3.0.16] - 2020-04-22

  • [Core] Fix regression introduced in 3.0.15 where the PDF generation was broken if the images were resized during PDF generation.
  • [OCR] Report error rather than crashing if language files are missing.

[3.0.15] - 2020-04-21

  • [Core] Drastically reduce memory usage during PDF creation.

[3.0.14] - 2020-04-06

  • Internal changes only

[3.0.13] - 2020-03-31

  • [OCR] Improve quality of OCR for non-preprocessed images.

[3.0.12] - 2020-03-17

Changed

  • [Cordova] Make plugin compatible with Capacitor

[3.0.11] - 2020-03-06

Changed

  • [Flutter] Android: Fixed our plugin to work with the new plugin embedding system (for apps created with Flutter 1.12 and above)

[3.0.10] - 2020-01-10

Changed

  • [OCR] Android: Improve interface and include a preprocessing step if requested. OcrProcessor should now be used.
  • [ReactNative] Android: Fix jpegQuality and pdfMaxScanDimension that were Double values instead of integers.

[3.0.9] - 2019-11-29

Changed

  • [Core] Android: Improve detectWarpEnhance method that takes a Bitmap as input and rename it to process now that it also handles distortion correction.

[3.0.8] - 2019-11-07

Changed

  • [Flutter] Improve integration of the plugin on Android, it’s no longer needed to edit an app’s android/build.gradle file to include the plugin native libraries.
  • [Flutter] Android: Fix crash when onActivityResult wasn’t called with this plugin request code.

[3.0.7] - 2019-10-21

Changed

  • [Core] Improve the robustness of the distortion/curvature correction

Added

  • [UI] Add a parameter jpegQuality to set the JPEG quality of scanned pages
  • [UI] Add a parameter pdfMaxScanDimension to reduce size of pages before PDF generation

[3.0.6] - 2019-10-02

Changed

  • [iOS] Prevent scan 180° rotation when iPhone is tilted upside down.
  • [Flutter] Android: Migrate to AndroidX
  • [Cordova] Android Support library version can now be passed as parameter when adding the plugin.
  • [Android] Remove the unneeded permission WRITE_EXTERNAL_STORAGE from manifest since SDK only writes to app specific directory.

[3.0.5] - 2019-09-19

Added

  • [iOS] ScannerUI: the status bar color now automatically adapts to the chosen background color’s contrast (https://www.w3.org/WAI/ER/WD-AERT/#color-contrast).

Changed

  • [Flutter] Android: Fix return of setLicenceKey method. An error with message java.lang.IllegalStateException: Reply already submitted was logged before this fix.

[3.0.4] - 2019-09-12

Changed

  • [iOS] Fix link issue by exposing some missing symbols

[3.0.3] - 2019-08-28

Added

  • [Flutter] Add a Flutter plugin using the UI module of the SDK on pub.dev

Changed

  • [Flutter/iOS] Fix a crash when canceling the scan flow
  • [Android Cordova ReactNative] Parameter name imageUrl has been changed into image. This parameter still expects the image URL and not the image itself.
  • [Android] UI: Fix visibility of a class to be able to access individual pages in scan flow result

[3.0.2] - 2019-07-31

  • [iOS] Fixed missing symbol in GSKScannerUI framework. This was resulting in a linker error when trying to access the GSKScannerUI results as individual scans (GSKScannerUIScan).

[3.0.1] - 2019-07-22

Changed

  • [Android] UI: Default multiPage to true
  • [ReactNative] Ensure compatibility of plugin with ReactNative 0.60

[3.0.0] - 2019-07-09

As of this release, the native SDK and the cross-platform plugins will be versioned under the same version number

Added

  • [Android, iOS] Add a new “Scanner UI” module that allows to start a customizable capture flow with 3 screens in one command
  • [Android, iOS] Add a new “Simple demo” app that shows how to use the Scanner UI module
  • [Android] Split SDK into 3 libraries (AAR): gs-sdk (core scanning methods and PDF generation), gs-sdk-ocr (text and layout extraction from an image), gs-sdk-ui (simple scan flow UI)
  • [iOS] Split SDK into three frameworks: GSSDK, GSSDKScannerUI and GSSDKOCR
  • Add localization into 10 new languages
  • [iOS] Utils: Add methods to rotate and fix orientation of an image
  • [iOS] Utils: Add method to scale an image

Changed

  • [ReactNative, Cordova] Switched to using the new SDK Scanner UI module
  • [iOS] API: Improved documentation
  • [iOS] API: Cleaned up API for Swift
  • [iOS] Camera UI: Redesigned shutter button
  • [iOS] Camera UI: Added animation when document is detected
  • [iOS] API: Renamed filters Color -> Photo, Whiteboard -> Color
  • [Android] UI: Fix shutter button not animating after camera permission dialog.

Removed

  • [Cordova, ReactNative] Removed support for title, password for the generated PDF file
  • [iOS] Removed distortion correction from iOS native demo

[ReactNative_2.5.2] - 2019-06-10

Changed

  • [Android] Fixed setLicenceKey method which was not returning properly

[ReactNative_2.5.1, Cordova_2.5.1] - 2019-05-07

Changed

  • [Cordova, ReactNative] Fixed typos in UI
  • [Cordova, ReactNative] Android: Fixed layout issue

[ReactNative_2.5.0, Cordova_2.5.0] - 2019-04-30

Changed

  • [Cordova, ReactNative] Android: Page format for PDF generation is FIT rather than A4
  • [Cordova, ReactNative] Android: PDF title is used for filename, in addition to PDF metadata
  • [Cordova, ReactNative] Android: Image type was incorrectly detected on original image, instead of warped image

Added

  • [Cordova, ReactNative] Document detection status
  • [Cordova, ReactNative] Scan functions now return original image Uri, in addition to enhanced image

[2.4.2] 2019-03-07

Added

  • [Android] Made focus before trigger optional

Changed

  • [iOS, Android] Improved OCR progress report (was between 0 and 70, should be between 0 and 100 now)
  • [Android] Improved speed of OCR

[2.4.1] 2019-03-05

Changed

  • [Android] Correctly throw exception when SDK initialized with incorrect license key
  • [Android] Support landscape camera screen
  • [iOS] Fix AutoTrigger flag that couldn’t be disabled

[2.4] [ReactNative_2.4.2, Cordova_2.4.2] 2019-02-27

Added

  • [iOS, Android] Added OCR. Ability to extract text and layout from an image and generate PDF documents with this text information to make it searchable and selectable.
  • [iOS] Added distortion correction to demo
  • [React] Added ability to specify “ENHANCEMENT_NONE” to avoid filter phase
  • [React] Added cancel button on iOS camera screen
  • [React] Added automatic photo trigger on Android

Changed

  • [Cordova] Compatibility with android-cordova >= v7.0.0

[2.3.4] 2019-02-20

[2.3.3] 2019-01-29

Added

  • [iOS, Android] Added distortion correction
  • [Android] Added support x86_64 architecture

Changed

  • [iOS] Fixed crash with B&W images (#274)
  • Improved exceptions handling (eg license check) (#280)
  • [Android] Upgraded to Android P
  • [Android] Upgraded OpenCV to 3.4.3

[ReactNative_2.4.1] 2018-12-05

Changed

  • [React] Fixed wrong method name to set license key

[ReactNative_2.4.0] 2018-12-05

Added

  • PDF generation with generatePDF
  • Selecting an enhancement type by default with defaultEnhancement option

Changed

  • [iOS] Fix crash on ipad when clicking “Edit” button
  • [Android] Fix error when activity result code too long

  • [iOS] Bump minim version to iOS 11. Removed armv7 armv7s and i386 architectures.

[2.3.2] 2018-08-22

  • [Android] Fixed export in demo for Android 7 and above

[2.3.1] 2018-07-25

  • [iOS] Fixed resize of scaled image
  • [Android] Added Auto Trigger to demo
  • [Cordova] Added upgrade instructions to doc

[2.3] 2018-11-07

  • [iOS] Added Auto Trigger to demo app
  • [Android] Camera is released in an async task
  • [ReactNative] Added plugin and demo
  • [Cordova] Breaking changes:
    • Licence needs to be set via setLicence
    • scan is now scanImage
    • New method to scan from camera scanCamera

[2.2] 2018-06-26

  • [iOS] Fixed empty Apple documentation
  • [iOS] On iPad, changed picture orientation to be based on UI instead of sensors
  • [Android] Breaking change
    • ScanFragment is now a fragment from the Support library, instead of a native fragment
  • [Android] SDK is now published to our Maven repository on S3

[2.1.9] 2018-03-06

  • [Android] Fixed Proguard

[2.1.8] 2018-02-27

  • [Android] Fixed logging, especially to notify that SDK is not initialized
  • [Cordova] Changed demo app to use image instead of camera in simulator
  • [Cordova] Upgraded SDK, added docs for Plugman and Ionic

[2.1.7] 2017-01-31

  • [iOS] Reduced size of SDK: footprint of Universal IPA according to App Thinning Report (~ 500 KB)
  • [iOS] Removed need for adding OpenCV dependency to Podfile
  • Updated READMEs

[2.1.6] 2017-01-18

  • Added timer to allow tests for a minute without a license

[2.1.5] 2017-01-08

  • [iOS] Added support for bitcode and Xcode 9.2

[2.1.10] 2018-04-03

  • Improved enhancement of shadows in B&W
  • [iOS] Added Appledoc
  • [Android] Changed preview to stop after each picture is taken
  • [Cordova] Added translations: de, en, es, fr, it, ja, pt-BR, ru, zh-Hans, zh-Hant

© 2024 The Grizzly Labs. All rights reserved.