Changelog

[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

© 2021 The Grizzly Labs, Inc. All rights reserved.