- The SDK is now supported on Android 16KB page size devices.
- Updated target API level to 36 with full support for edge-to-edge UI enforcement introduced in API level 35.
-
Min Android SDK API level is raised to 21 (Android 5.0)
-
We've changed how
RecognizerRunnerprocesses images. Now it can treatImageobjects as either video frame or photo frame. Until now, Direct API always processed images as photo frames, not giving ability to recognizers to use time-redundant information for yield better recognition quality. -
Removed support for x86 architecture:
- Devices that are based on the Intel x86 architecture, rather than ARM, are no longer supported. x86 and x86_64 architectures are used on very few devices today with most of them being manufactured before 2015, and only a few after that (e.g. Asus Zenfone 4). According to the Device catalog on Google Play Console, these devices make up about 0.5% of all Android devices (97 out of 17278 devices that have an API level of 21 and above support this architecture).
As of this version, BlinkInput SDK is fully compatible with other Microblink SDKs, which means that you can use it alongside another Microblink SDK in the same application.
- We've translated the complete SDK to the following additional languages: Malay, Dutch, Hungarian, Serbian, Slovenian, Indonesian, Arabic, Romanian, Chinese traditional, Chinese simplified, Thai, Hebrew, Vietnamese and Filipino.
- We've made the SDK safe from tapjacking, a form of attack where a user is tricked into tapping something he or she didn't intend to tap. We did this by adding a new security option that prompts the SDK to discard touches when the activity's window is obscured by another visible window. To activate it, use
UISettings.setFilterTouchesWhenObscured(true). - We've introduced a new
FrameRecognitionCallbackcallback for theRecognizerRunnerView, which is invoked each time a camera frame from a video stream is recognized. UseRecognizerRunnerView.setFrameRecognitionCallbackmethod to set the callback.
- To ensure compatibility with other Microblink SDKs, we have repackaged all classes. We’ve renamed the root package
com.microblinktocom.microblink.blinkinput, which is unique toBlinkInputSDK. ScanResultListenerinterface now has an additional method called when the scanning cannot continue because of an unrecoverable error. You have to implementonUnrecoverableErrormethod. If you're using built-in activities, whenonActivityResultis called withRESULT_CANCELEDresult code, the exception will be available viaActivityRunner.EXTRA_SCAN_EXCEPTIONintent extra. If the user canceled the scan, the exception would benull.
- We renamed
EMailParsertoEmailParser. - We renamed some methods:
- In
LicensePlatesParser:getLicensePlateStringis now calledgetLicensePlate. - In
RegexParser:isUsingSieveis now calledshouldUseSieve,setMustStartWithWhitespaceis now calledsetStartWithWhitespace,isMustStartWithWhitespaceis now calledshouldStartWithWhitespace,setMustEndWithWhitespaceis now calledsetEndWithWhitespace, andisMustEndWithWhitespaceis now calledshouldEndWithWhitespace. - In
RawParser:isUsingSieveis now calledshouldUseSieve.
- In
- We've renamed
RecogitionModetoRecognitionDebugModeinRecognizerBundle. - We've replaced
Using time-limited license!warning withUsing trial license!warning. The warning message is displayed when using a trial license key. - We've deprecated
DetectorRecognizer— useDocumentCaptureRecognizerinstead. - We've deprecated
Pdf417Recognizer— useBarcodeRecognizerinstead.
- We've fixed a bug in IBAN parsing which occasionally read the reference number as part of the IBAN.
- We've fixed the front-facing camera error on
Oukitel WP8 Pro.
Based on the feedback, we have restored support for x86_64 processor architecture. Due to the architecture specifics, there is no guarantee that the scanning process will work equally well as it does on the ARM architectures. The main reason for restoring support is to ease the compliance issue for developers. We distribute SDK with ARMv7, ARM64, x86, and x86_64 native library binaries.
- We have translated complete SDK to following languages: Croatian, Czech, English, French, German, Italian, Portuguese, Slovak, and Spanish.
- We improved document detection with
DocumentCaptureRecognizer. - We are now delivering the complete list of open source dependencies used in the SDK. Please check the
open-source-software-useddirectory.
- We removed
RecognizerRunnerViewcustom attributes:mb_initialOrientationandmb_aspectMode. UseRecognizerRunnerView.setInitialOrientationandRecognizerRunnerView.setAspectModeto configure the attributes in the code. - We renamed
EMailParsertoEmailParser - We renamed some methods:
LicensePlatesParser:getLicensePlateStringtogetLicensePlateRegexParser:isUsingSievetoshouldUseSieve,setMustStartWithWhitespacetosetStartWithWhitespace,isMustStartWithWhitespacetoshouldStartWithWhitespace,setMustEndWithWhitespacetosetEndWithWhitespace,isMustEndWithWhitespacetoshouldEndWithWhitespaceRawParser:isUsingSievetoshouldUseSieve
- We decided to remove support for x86_64 processor architecture. x86 and x86_64 architectures are used on very few devices today; most of them are manufactured before 2015, and they take about 1% of all Android devices, according to the device catalog on Google Play Console. We distribute SDK with ARMv7, ARM64, and x86 native library binaries. Native library x86 in SDK is kept mainly for emulator support.
- We migrated the SDK to AndroidX dependencies. We replaced previous SDK dependency com.android.support:appcompat-v7 with androidx.appcompat:appcompat.
- We added the option to disable Microblink logs in the console output. Use
LoggingSettings.disableMicroblinkLogging(), but be careful with this option. We need full log outputs from the application for support purposes. In case of having problems with scanning certain items, undesired behavior on the specific device(s), crashes inside the SDK, or anything unmentioned, we will need a full log from your side. If you disable Microblink logs, you won't be able to provide us this information. Hence support might be limited. - We added support for capturing images of various documents (A4, or some other format):
- Use
DocumentCaptureRecognizerandDocumentCaptureUISettings. DocumentCaptureUISettingslaunches activity that usesDocumentCaptureOverlayController, which is designed for taking cropped high resolution document images and guides the user through the document capturing process. The overlay can be used only withDocumentCaptureRecognizer.
- Use
- It’s possible to set the theme of the provided scan activity, launched from the UISettings, by using UISettings.setActivityTheme
- We improved
VinParser:- We added support for Renewal Identification Number (RIN) - DMV California format.
- We improved camera performance on some Samsung devices.
- We removed
RecognizerRunnerViewcustom attributes:mb_initialOrientationandmb_aspectMode. UseRecognizerRunnerView.setInitialOrientationandRecognizerRunnerView.setAspectModeto configure the attributes in the code. RecognizerRunnerFragmentextendsandroidx.fragment.app.Fragment, instead of the deprecatedandroid.app.Fragment.- All provided scan activities extend
AppCompatActivityand they arefinal. RecognizerRunner.getSingletonInstance()does not throwFeatureNotSupportedExceptionanymore.- We added a new API for configuring camera options in
UISettings. UseUISettings.setCameraSettings, which accepts an object ofCameraSettingstype. FieldByFieldOverlayControlleris now configured by usingFieldByFieldOverlaySettingsinstead ofFieldByFieldUISettings.Recognizernow only has one type parameter.Recognizer.Resultno longer has any type parameters.- We moved some classes to new packages.
- Crash when using Direct API on high resolution
com.microblink.image.ImagefromHighResImageWrapper. - Problems with aspect ratio of camera preview on Huawei Mate 10.
- Crash on some devices that use armeabi-v7a ABI. The SDK was unable to reserve address space due to memory fragmentation.
- Camera busy error in camera management that was happening during the quick closing and opening of the camera.
- Rare crash on Samsung J5 Prime which has been caused by race condition during the initialization of the native camera frame.
- All default scan activities correctly set volume to media instead of the ring.
- All default scan activities now apply a secure flag if enabled in
UISettings. - Scanning bug on devices with problematic camera resolution, which caused that the SDK was unable to scan the data. Known affected devices were:
OnePlus 6T,OnePlus 7 Pro, andVivo V15.
- enabled capturing of high resolution camera frames:
- When custom UI integration is performed, enable this functionality by using method
RecognizerRunnerView.setHighResFrameCaptureEnabledand useRecognizerRunnerView.captureHighResImageto capture image - When using provided scan activities, high resolution full camera frames taken at the moment of successful scan are returned if this option is enabled through
UISettings. ConcreteUISettingswhich implement interfaceHighResSuccessFrameCaptureUIOptionssupport this feature.
- When custom UI integration is performed, enable this functionality by using method
- added option to force overlay orientation for
BarcodeOverlayController(BarcodeScanActivity) - useBarcodeUISettings.setForcedOrientation(OverlayOrientation) RecognizerRunnerViewis lifecycle-aware now, it implementsandroid.arch.lifecycle.LifecycleObserverinterface- improved image return processor:
- the processor now estimates detected (dewarped) document image quality and returns the best quality dewarped image from the best quality detection
BarcodeScanActivityby default does not show result dialog after scan- updated default UI icons
- Scanning timeout that can be configured by using
RecognizerBundle.setNumMsBeforeTimeoutis by default set toRecognizerBundle.TIMEOUT_INFINITY, which means that timeout is disabled by default. Previous default timeout value was 10 seconds. - renamded enum
com.microblink.uisettings.options.ShowOcrResultModetocom.microblink.uisettings.options.OcrResultDisplayMode - for all
UISettingsclasses which support setting of OCR result display mode, renamed methodsetShowOcrResultModetosetOcrResultDisplayMode
- fixed crashes on Nexus 6
- removed incorrect autofocus check that was performed before concrete camera type is chosen
- fixed crash on some devices when using
VIDEO_RESOLUTION_MAX_AVAILABLE - fixed problems in camera management:
- default camera surface is
TextureVeiwfor devices that use Camera1 API, otherwiseSurfaceViewis used
- default camera surface is
- fixed camera autofocus problems on Samsung S9/S9+ when optimisation for near scanning is enabled
- fixed autofocus problems in
Field by fieldscanning on Huawei P20 pro, Huawei P20 and Huawei P20 lite - fixed bug which caused that results from the previous scan are cleared when the scan activity is run again and entities which have produced results are not used in the new scan
- various other bug fixes and improvements
- new API, which is not backward compatible. Please check README and updated demo applications for more information, but the gist of it is:
RecognizerViewhas been renamed toRecognizerRunnerViewandRecognizersingleton toRecognizerRunnerSegmentScanActivityhas been renamed toFieldByFieldScanActivityRandomScanActivitydoes not exist anymore- previously internal
Recognizerobjects are not internal anymore - instead of having opaqueRecognizerSettingsandRecognizerResultobjects, you now have statefulRecognizerobject that contains itsResultwithin and mutates it while performing recognition.- similarly we now have stateful
ParserandDetectorobjects - introduced new
Processorobject type - For more information, see README, updated demo applications and this blog post
- similarly we now have stateful
- added
RecognizerRunnerFragmentwith support for various scanning overlays in a manner similar to iOS API. This now allows you to use built-in UI, which was previously strictly available for built-in activities, in form of fragment anywhere within your activity. Full details are given in README and in updated demo applications.
- new licence format, which is not backward compatible. Full details are given in README and in updated applications, but the gist of it is:
- licence can now be provided with either file, byte array or base64-encoded bytes
- introduced preview version of next generation
DeepOCR. Check BlinkInputRawOcrSample to see how it can be enabled.
- Added
VinRecognizerfor scanning VIN (Vehicle Identification Number) barcodes - Added unified
BarcodeRecognizerfor scanning various tipes of barcodesZXingRecognizerandBarDecoderRecognizerare deprecated,BarcodeRecognizershould be used for all barcode types that are supported by these recognizers
- added support for reading mirrored QR codes:
- affects all recognizers that perform QR code scanning
- introduced
GlareDetectorwhich is by default used in all recognizers whose settings implementGlareDetectorOptions:- when glare is detected, OCR will not be performed on the affected document position to prevent errors in the extracted data
- if the glare detector is used and obtaining of glare metadata is enabled in
MetadataSettings, glare status will be reported toMetadataListener - glare detector can be disabled by using
setDetectGlare(boolean)method on the recognizer settings
- added
QuadDetectorWithSizeResultwhich inherits existingQuadDetectorResult:- it's subclasses are
DocumentDetectorResultandMRTDDetectorResult - returns information about physical size (height) in inches of the detected location when physical size is known
- it's subclasses are
- added support for characters
{and}inOCR_FONT_VERDANAto OCR engine
- Date fields in recognition results are returned as
com.microblink.results.date.Dateclass which represents immutable dates that are consisted of day, month and year OcrLine.getChars()method returnsCharWithVariantsarray. OCR char is defined by all its parameters (value, font, position, quality, etc.) and for each resulting char it is possible to have multiple variants. For example it is possible to have same char value with different font.RegexParserSettingsandRawParserSettingsnow work withAbstractOCREngineOptions, which is a base class ofBlinkOCREngineOptions- default engine options returned by method
getOcrEngineOptionsfor both parser settings return instance ofBlinkOCREngineOptions
- default engine options returned by method
BlinkOCRRecognizerSettingsis now deprecated and will be removed inv4.0.0- use
DetectorRecognizerSettingsto perform scanning of templated documents - use
BlinkInputRecognizerSettingsfor segment scan or for full-screen OCR - until
v4.0.0,BlinkOCRRecognizerSettingswill behave as before, however you are encouraged to update your code not to use it anymore
- use
DocumentClassifierinterface is moved fromcom.microblink.recognizers.blinkocrtocom.microblink.recognizers.detectorpackage andDocumentClassifier.classifyDocument()now acceptsDetectorRecognitionResultas parameter for document classification
- improved
TopUpParser:- added option to return USSD code without prefix
- improved
IbanParser:- improved extraction of IBANs without prefix and introduced
setAlwaysReturnPrefixoption to always return prefix (country code) - added support for french IBANs
- improved extraction of IBANs without prefix and introduced
- enabled reading of Pdf417 barcodes having width/height bar aspect ratio less than 2:1
- improved date parsing:
- affects date parser and all recognizers which perform date parsing
- fixed returning of images inside TemplatingAPI for frames when document was not correctly detected
- Fixed bug in SegmentScanActivity:
- scan results are no longer hidden on shake event
- optimised native binary size
- 33% size reduction for
arm64-v8aABI - 39% size reduction for
armeabi-v7aABI - 34% size reduction for
x86ABI - 31% size reduction for
x86_64ABI
- 33% size reduction for
LibBlinkInputis now fully ProGuard-compatible, i.e. you no longer need to excludecom.microblink.**classes in your ProGuard configuration- removed support for Android 2.3 and Android 4.0 - minimum required Android version is now Android 4.1 (API level 16)
- devices with Android 4.0 and earlier take less than 2% of market share and is very costly to support them
- removed
isItalicandisBoldgetters fromOcrCharclass- they always returned
false, since OCR engine cannot accurately detect that
- they always returned
- removed
setLineGroupingEnabledandisLineGroupingEnabledfromBlinkOCREngineOptionsbecause disabling line grouping completely destroyed the OCR accuracy - improved
TopUpParser:- added option to enable all prefixes at the same time (generic prefix)
- added suport for 14 digits long sim numbers in addition to existing lengths (12, 19, 20)
DateParsercan parse dates with month names in English (either full or abbreviated), if this option is enabled- added support for polish IBAN without PL prefix to
IBANParser - prefixed custom attributes to avoid name collisions with attributes from other libraries:
CameraViewGroup: renamed animateRotation tomb_animateRotation, animationDuration tomb_animationDuration, rotatable tomb_rotatableBaseCameraView: renamed initialOrientation tomb_initialOrientation, aspectMode tomb_aspectMode
- added support for Android 7 multi-window mode
- fixed autofocus bug on Huawei Honor 8
- fixed black camera on Motorola Moto Z
- made camera focusing more stable on some devices
- stable means less "jumpy" when searching for focused image
- MobileCoupon parser renamed to TopUp parser
- removed
RecognizerViewmethodsetInitialScanningPaused. For achieving the same functionality, methodpauseScanningshould be used. - added support for scanning IBANs that contain spaces and dashes
- added support for scanning IBAN from Georgia in Segment Scan
- added support for cancelling ongoing DirectAPI recognition call
- LibRecognizer.aar renamed to LibBlinkInput.aar
- libBlinkOCR.so renamed to libBlinkInput.so
- workaround for camera bug on some samsung devices
- fixed camera bug on LG X Cam
- fixed camera bug on OnePlus 3
- fixed rare NPE in SegmentScanActivity
- improved IBAN parser
- improved amount parser
- amount parser settings now does not have expectAsterixOrEqualsPrefix and expectCurrencySymbol anymore - this is now handled automatically
- migrated to libc++ native runtime and used clang from NDKr13b for building the native code
- this enabled c++14 features which will help us yield much better performance in the future
- added
MobileCouponsParserfor reading prepaid codes from mobile phone coupons DateParserreturns result as javaDateobject and as original dateString- added method
getSpecificParsedResulttoTemplatingRecognitionResult(BlinkOCRRecognitionResult) which returns specific parser results, e.g. javaDateforDateParser - enabled reading of longer ITF barcodes
- support for parsing Vehicle Identification Numbers (VINs)
- renamed BlinkOCRActivity to SegmentScanActivity
- added RandomScanActivity which is similar to SegmentScanActivity but it does not force the user to scan text segments in the predefined order
- improved autofocus support on SGS6 and SGS7
- fixed memory leak in RecognitionProcessCallback, leak was caused by Recognizer singleton holding reference to both Context and MetadataListener even after termination
- added support for using detectors to perform detection of various documents
- added support for combination of detectors with BlinkOCR recognizer to perform OCR of only parts of detected documents
- refer to documentation and demo apps for example
- updated BlinkOCRActivity, through ScanConfiguration it is now possible to make some scan field optional (user can skip it) and set the field size
- FailedDetectionMetadata, PointsDetectionMetadata and QuadDetectionMetadata have been replaced with DetectionMetadata which now holds a DetectorResult
- DetectorResult is more flexible as it allows more different detection types to be added in future
- fixed several possible crashes in camera management
- fixed autofocus bug on LG devices when metering areas or non-default zoom level were set
- fixed autofocus bug on LG G4 (not related to bug above)
- added option to set the OCR document type in BlinkOCREngineOptions
- introduced new setting options for generic AmountParser:
- set parser to Arabic-Indic mode (amounts with Arabic-Indic digits)
- allow amounts with space separated digit groups (thousands)
- set ideal (expected) number of digits before decimal point
- added factory method
createFromPresetto generic AmountParserSettings that creates the settings from one of the available presets (GENERIC,LARGE_AMOUNT)
- reconfigureRecognizers method now throws an error if phone does not have autofocus and at least one of new recognizers require it
- raw resources are now packed as assets
- fixed bug with isScanningPaused which sometimes returned bogus value and caused scanning to work even if initial scanning was set to be paused
- support for scanning custom camera frames via DirectAPI
- fixed bug on some devices causing it to never start scanning if device was not shaken
- increased OCR engine initialisation speed
- improved Frame Quality Estimation on low-end devices (fixed regression introduced in v1.6.0)
- added new options to BlinkOcrEngineOptions
- added RegexParser which can parse almost any regular expression from OCR result
- support detecting on activity flip event
- fixed crash in RecognizerCompatibility on ARMv7 without NEON
- added RecognizerCompatibility to javadoc
- fixed NPE in BarcodeDetailedData
- improved performance of conversion of
Imageobject intoBitmap - fixed crash that could be caused by quickly restarting camera activity
- fixed bug in camera layout in certain aspect ratios of camera view
- fixed bug in segment scan when put on landscape activity
- fixed bug in handling
setMeteringAreas setMeteringAreasnow receives boolean indicating whether set areas should be rotated with device- added support for specifying camera aspect mode from XML
- fixed crash that occurred when detection image was being sent from native to Java
- fixed issue that cause irrationaly refusal to scan anything on high-end devices
- fixed bug in scanning 1D barcodes with ZXing when scanning region was set
- the bug caused not to honor set region
- when embedding
RecognizerViewinto custom scan activity, you no longer need to take care of whether runtime permissions are set or not. You can now simply pass all lifecycle events toRecognizerViewand if camera permission is denied, a new callback methodonCameraPermissionDeniedofCameraEventsListenerwill be invoked to give you chance to ask user for permissions- please refer to updated demo apps for example of new callback
- IMPORTANT -
onScanningDonecallback method does not automatically pause scanning loop anymore. As soon asonScanningDonemethod ends, scanning will be automatically resumed without resetting state- if you need to reset state, please call
resetRecognitionStatein your implementation ofonScanningDone - if you need to have scanning paused after
onScanningDoneends, please callpauseScanningin your implementation ofonScanningDone. Do not forget to callresumeScanningto resume scanning after it has been paused.
- if you need to reset state, please call
pauseScanningandresumeScanningcalls are now counted, i.e. if you callpauseScanningtwice, you will also need to callresumeScanningtwice to actually resume scanning- this is practical if you show multiple onboarding views over camera and you want the scanning paused while each is shown and you do not know in which order they will be dismissed. Now you can simply call
pauseScanningon showing the onboarding view andresumeScanningon dismissing it, regardless of how many onboarding views you have - if you want to show onboarding help first time your scan activity starts, you can call
setInitialScanningPaused(true)which will ensure that first time camera is started, the scanning will not automatically start - you will need to callresumeScanningto start scanning after your onboarding view is dismissed
- this is practical if you show multiple onboarding views over camera and you want the scanning paused while each is shown and you do not know in which order they will be dismissed. Now you can simply call
- added support for
x86_64architecture
- new API which is easier to understand, but is not backward compatible. Please check README and updated demo applications for more information.
- removed support for ARMv7 devices which do not support NEON SIMD
- this enabled us to increase recognition speed at cost of not supporting old devices like those using NVIDIA Tegra 2
- you can check this article for more information about NEON and why we use it
- added official support for Android 6.0 and it's runtime camera permissions
- if using provided BlinkOCRActivity, the logic behind asking user to give camera permission is handled internally
- if integrating using custom UI, you are required to ask user to give you permission to use camera. To make this easier, we have provided a CameraPermissionManager class which does all heavylifting code about managing states when asking user for camera permission. Refer to demo apps to see how it is used.
- BlinkOCR now depends on appcompat-v7 library, instead of full android-support library.
- even older versions of BlinkOCR required only features from appcompat-v7 so we now decided to make appcompat-v7 as dependency because it is much smaller than full support library and is also default dependency of all new Android apps.
- completely rewritten JNI layer which now gives much lower overhead in communication between Java and native code
- in our internal tests, this yielded up to 3 times better performance in OCR
- fixed issue with Nexus 5X upside down camera
- when using DirectAPI, recognized Bitmap is not recycled anymore so it can be reused
- fixed auto-exposure bug on Nexus 6
- improved OCR quality and performance
- fixed autofocus issue on devices that do not support continuous autofocus
- support for defining camera video resolution preset
- to define video resolution preset via Intent, use
BlinkOCRActivity.EXTRAS_CAMERA_VIDEO_PRESET - to define video resolution preset on
RecognizerView, use methodsetVideoResolutionPreset
- to define video resolution preset via Intent, use
- added support for scanning barcodes
- fixed race condition causing memory leak or rare crashes
- fixed
NullPointerExceptioninBaseCameraView.dispatchTouchEvent - fixed bug that caused returning scan result from old video frame
- fixed
NullPointerExceptionin camera2 management - fixed rare race condition in gesture recognizer
- fixed segmentation fault on recognizer reconfiguration operation
- fixed freeze when camera was being quickly turned on and off
- fixed bug in IBAN parser that caused not to parse IBAN's that contain letters, such as in UK, Ireland or Netherlands
- ensured
RecognizerViewlifecycle methods are called on UI thread - ensure
onCameraPreviewStartedis not called if camera is immediately closed after start before the call should have taken place - ensure
onScanningDoneis not called afterRecognizerViewhas been paused, even if it had result ready just before pausing - default maximum number of chars in
raw parseris now 3000 (it used to be 600) - it is now possible to define maximum allowed number of char recognition variants via
BlinkOCREngineOptions. Default value is0. - when calling
onDisplayOcrResultcallback, make sure OCR char recognition variants are not sent to Java - this is both slow and not required - added support for using BlinkOCR as camera capture API. To do that, implement following:
- when using
RecognizerViewdo not callsetRecognitionSettingsor call it withnullor empty array - implement
ImageListenerinterface and set the listener withsetImageListener - as a reminder - you can process video frames obtained that way using direct API method
recognizeImageWithSettings
- when using
- reorganized integration demo apps
BlinkOCRSegmentDemoshows how to use simple Intent-based API to scan little text segments. It also shows you how to create a custom scan activity for scanning little text segments.BlinkOCRFullScreenshows how to perform full camera frame generic OCR, how to draw OCR results on screen and how to obtainOcrResultobject for further processing. This app also shows how to scan Code128 or Code39 barcode on same screen that is used for OCR.BlinkOCRDirectAPIshows how to perform OCR ofBitmapobject obtained from camera- all demo apps now use Maven integration method because it is much easier than importing AAR manually
- removed parsers specific to country standards - these are now available as part of our PhotoPay product
- removed croatian parsers
- removed serbian parsers
- removed macedonian parsers
- removed swedish parsers
- fixed NullPointerException when RecognizerSettings array element was
null
- ImageListener can now receive DEWARPED images and Image now contains information about its Orientation
- [recognizeBitmap](https://blinkocr.github.io/blinkocr-android/com/microblink/view/recognition/RecognizerView.html#recognizeBitmap(android.graphics.Bitmap, com.microblink.view.recognition.ScanResultListener)) method can now receive orientation of given Bitmap
- it is now possible to recognize Image objects directly, without slow conversion into Bitmap
- removed method
resumeScanningWithoutStateReset- methodresumeScanningof RecognizerView now receivesbooleanindicating whether internal state should be reset
- removed dependency to deprecated Horizontal Variable ListView - default activity now only requires Android support library
- new and improved android camera management
- on devices that support it, utilize Camera2 API for better per frame camera control
- new and improved algorithm for choosing which frame is of good enough quality to be processed - there is now less latency from initialization of camera until first scan result
- added support for Macedonian parsers
- added date parser
- fixed crash in DirectAPI when recognizer was terminated in the middle of recognition process
- removed support for ARMv6 processors because those are too slow for OCR
- added support for Serbian parsers
- fixed camera orientation detection when RecognizerView is not initialized with Activity context
- added support for Croatian and Swedish parsers
- added more fonts to OCR model file
- support for controlling camera zoom level
- support "easy" integration mode with provided BlinkOCRActivity - check README
- Raw parser is now more customizable - check javadoc for class RawParserSettings
- character whitelist can now be defined
- maximum and minimum height of text line can be defined
- color vs. grayscale image processing support
- maximum expected number of chars can now be defined
- support for parsing e-mails
- introduced new licence key format (generate your free licence key on https://microblink.com/login or contact us at http://help.microblink.com
- Initial release
- Support for parsing amounts and IBANs