- added support for reading front side of United Arab Emirates Driver's License - use
UnitedArabEmiratesDlFrontRecognizer
- added support for reading front side of Spain Driver's License - use
SpainDlFrontRecognizer
- added support for reading front and back side of Cyprus ID - use
CyprusIdFrontRecognizer
andCyprusIdBackRecognizer
- added support for reading front and back side of Kuwait ID - use
KuwaitIdFrontRecognizer
andKuwaitIdBackRecognizer
- added support for reading front and back side of Payment / Debit cards - use
PaymentCardFrontRecognizer
,PaymentCardBackRecognizer
andPaymentCardCombinedRecognizer
- improved
SingaporeCombinedRecognizer
:- added support for reading sticker with new address from the back side
BarcodeScanActivity
by default does not show result dialog after scan
- renamed methods in
CroatiaIdBackRecognizer
and itsResult
:address
toresidence
documentForNonResident
toisDocumentForNonResident
issuingAuthority
toissuedBy
getDateOfExpiryPermanent
toisDateOfExpiryPermanent
- MRZ fields are available through
MrzResult
which can be obtained by using getterCroatiaIdBackRecognizer.Result.getMrzResult()
- renamed method in
SingaporeIdFrontRecognizer
and itsResult
:cardNumber
toidentityCardNumber
- renamed method in
SingaporeCombinedRecognizer
and itsResult
:cardNumber
toidentityCardNumber
bloodGroup
tobloodType
- 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
- added support for reading partial dates on all MRTD documents:
- affects all recognizers which extract data from Machine Readable Zone
- added support for reading front side of Swiss Driver's License - use
SwitzerlandDlFrontRecognizer
- added support for reading front side of Singapore Driver's License - use
SingaporeDlFrontRecognizer
- added support for reading front side of Singapore Changi employee ID - use
SingaporeChangiEmployeeIdRecognizer
- added support for reading front and back side of Morocco ID - use
MoroccoIdFrontRecognizer
andMoroccoIdBackRecognizer
- improved
HongKongIdFrontRecognizer
:- added support for reading residential status field
- improved
UnitedArabEmiratesIdFrontRecognizer
:- better name and nationality extraction
- improved
SingaporeIdBackRecognizer
:- added support for reading sticker with new address
- improved
MyKadBackRecognizer
:- added support for reading old NRIC field
- improved
NewZealandDlFrontRecognizer
:- better reading of all fields
- in
CroatiaIdFrontRecognizer
identityCardNumber
is renamed todocumentNumber
BarcodeRecognizer
does not support Manatee library any more:- removed setter
setManateeLicenseKey
- removed setter
- in
GermanyIdBackRecognizer.Result
,AustriaPassportRecognizer.Result
,AustriaIdBackRecognizer.Result
andAustriaCombinedRecognizer.Result
gettergetHeight
returns height asString
(instead ofint
) HongKongIdFrontRecognizer.Result.getDateOfBirth()
returnscom.microblink.results.date.DateResult
instead ofcom.microblink.results.date.Date
- in
ColombiaIdBackRecognizer.Result
gettergetDateOfBirth()
is renamed togetBirthDate()
- in
SingaporeIdBackRecognizer.Result
gettergetBloodGroup()
is renamed togetBloodType()
- renamed getters in
NewZealandDlFrontRecognizer.Result
renamed getters:getIssueDate()
togetDateOfIssue()
getExpiryDate()
togetDateOfExpiry()
getDonorIndicator()
toisDonorIndicator()
- various 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:
RecognizerView
has been renamed toRecognizerRunnerView
andRecognizer
singleton toRecognizerRunner
SegmentScanActivity
has been renamed toFieldByFieldScanActivity
RandomScanActivity
does not exist anymore- previously internal
Recognizer
objects are not internal anymore - instead of having opaqueRecognizerSettings
andRecognizerResult
objects, you now have statefulRecognizer
object that contains itsResult
within and mutates it while performing recognition.- similarly we now have stateful
Parser
andDetector
objects - introduced new
Processor
object type - For more information, see README and updated demo applications
- similarly we now have stateful
- added
RecognizerRunnerFragment
with 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
com.microblink.image.Image
class now has gettergetImageQuality()
:- can be used to choose the best image from the same scan
- it only makes sense to relatively compare image qualities from consecutive camera frames from the same scan on a certain device
- fixed
UnitedArabEmiratesIDBackRecognizer
:- enabled reading of UAE back side where MRZ starts with
IR
- enabled reading of UAE back side where MRZ starts with
- added support for reading front side of Sweden Driver's License - use
SwedenDLFrontRecognizerSettings
- improved
CroatianIDBackSideRecognizer
:- better reading of address field
- improved
GermanIDFrontSideRecognizer
:- added support for reading CAN number
- improved
USDLRecognizer
:- better parsing of the USDL data fields
- improved
HongKongIDFrontRecognizer
:- better reading of document number (check digit validation)
- improved
IKadRecognizer
:- added support for iKad IMM_55 document type (foreign students card)
- added option to extend full document image for German recognizers:
GermanIDFrontSideRecognizer
,GermanOldIDRecognizer
,GermanIDBackSideRecognizer
,GermanIDCombinedRecognizer
andGermanPassportRecognizer
- use methodsetFullDocumentImageExtensionFactors(ImageExtensionFactors)
from the corresponding recognizer settings - when
DocumentFaceRecognizer
is activated at the same time with another more specific recognizer(s) (e.g. EUDLRecognizer), preference is given to the more specific recognizer which means that it will get a chance to extract additional data from the concrete document type
- fixed reading of non-standard PDF417 barcodes
- added support for reading front side of Egypt ID - use
EgyptIDFrontRecognizerSettings
- added support for reading front and back side of Jordan ID - use
JordanIDFrontRecognizerSettings
,JordanIDBackRecognizerSettings
andJordanIDCombinedRecognizerSettings
- added support for reading front side of Malaysian drivers license - use
MalaysianDLFrontRecognizerSettings
- improved
USDLRecognizer
:- better parsing of the USDL barcode content
- fixed extraction of expiry date from magnetic stripe USDL subtype
- improved
VinParser
:- better extraction of specific VIN numbers
- improved
MRTDRecognizer
:- added support for parsing Malaysian Passport IMM13P MRZ type, reading of special characters must be enabled by using
MRTDRecognizerSettings.setAllowSpecialCharacters
- enabled reading of MRZ with '-' characters (non-default setting), to enable this use method
MRTDRecognizerSettings.setAllowSpecialCharacters
- added support for parsing Malaysian Passport IMM13P MRZ type, reading of special characters must be enabled by using
- fixed rare crash in
MRTDRecognizer
- fixed returning of face image when using
UnitedArabEmiratesIDFrontRecognizer
:- fixed face image position
- added support for reading front side of Hong Kong ID - use
HongKongIDFrontRecognizerSettings
- added support for reading front and back side of Colombian ID - use
ColombiaIDFrontRecognizerSettings
andColombiaIDBackRecognizerSettings
- added support for reading front and back side of United Arab Emirates ID - use
UnitedArabEmiratesIDFrontRecognizerSettings
andUnitedArabEmiratesIDBackRecognizerSettings
- added support for reading front side of New Zealand drivers license - use
NewZealandDLFrontRecognizerSettings
- improved
MRTDRecognizer
:- improved reading of Belgium ID MRZ OPT2 field
- added support for reading Belgium MRZ with partial date of birth -
MRTDRecognizerSettings.setAllowUnverifiedResults()
must be set totrue
- added support for reading Kenya MRZ -
MRTDRecognizerSettings.setAllowUnverifiedResults()
must be set totrue
- improved
MyKadFrontSideRecognizer
andMyTenteraRecognizer
:- better reading of name field
- better reading of address field
- when setting DPI for full document image in concrete recognizer settings that has method
setFullDocumentImageDPI
, exception is thrown if DPI value is not in the expected range[100, 400]
- fixed
NullPointerException
inRecognizerView
caused by race condition that happens when quickly restarting camera manager - fixed a crash in Templating API caused by using a
MultiDetector
withDetectorRecognizer
- added support for reading back side of Malaysian MyKad - use
MyKadBackSideRecognizerSettings
- added support for reading Malaysian MyTentera documents - use
MyTenteraRecognizerSettings
- added support for reading Malaysian MyTentera documents with MyKad recognizer - use
MyKadFrontSideRecognizerSettings
and enable reading of army number - added support for setting DPI for full document images returned by
MyKadFrontSideRecognizer
,MyKadBackSideRecognizer
,MyTenteraRecognizer
andIKadRecognizer
:- use
setFullDocumentImageDPI
on the corresponding recognizer settings
- use
- renamed
MyKadRecognizerSettings
andMyKadRecognitionResult
toMyKadFrontSideRecognizerSettings
andMyKadFrontSideRecognitionResult
and moved them tocom.microblink.recognizers.blinkid.malaysia.mykad.front
package - moved
IKadRecognizerSettings
andIKadRecognitionResult
tocom.microblink.recognizers.blinkid.malaysia.ikad
package
- improved
AustralianDLFrontSideRecognizer
:- improved reading of names and addresses
- added support for reading first names with more words
- improved
SingaporeIDFrontRecognizer
:- tuned ID card data extraction positions
- improved Malaysian
IKadRecognizer
:- better reading of date of expiry and employer fields
- fixed crash in
DocumentFaceRecognizer
- added support for reading back side of new Australian Driver's licence for state Victoria - use
AustralianDLBackSideRecognizerSettings
- added support for reading front side of Indonesian ID - use
IndonesianIDFrontRecognizerSettings
- added support for Malaysian visa with document code TS - use
MRTDRecognizerSettings
- introduced
MRTDSpecification
and methodsetMRTDSpecifications
onMRTDRecognizerSettings
andMRTDDetectorSettings
:- detection is limited only to document type specified with
MRTDSpecification
- when
MRTDSpecifications
are set, results will be returned only for specified MRTD documents MRTDSpecification
can be created by usingMRTDSpecification.createFromPreset
, available presets are:MRTD_SPECIFICATION_TD1
,MRTD_SPECIFICATION_TD2
andMRTD_SPECIFICATION_TD3
- detection is limited only to document type specified with
- added support for setting DPI for full document images returned by
MRTDRecognizer
,AustralianDLFrontSideRecognizer
,AustralianDLBackSideRecognizer
andEUDLRecognizer
:- use
setFullDocumentImageDPI
on the corresponding recognizer settings
- use
- improved reading of Malaysian MyKad address
- added support for scanning front and back side of Polish ID - use
PolishIDFrontSideRecognizerSettings
,PolishIDBackSideRecognizerSettings
andPolishIDCombinedRecognizerSettings
- new document specification presets in
DocumentSpecificationPreset
enum:DOCUMENT_SPECIFICATION_PRESET_ID1_VERTICAL_CARD
andDOCUMENT_SPECIFICATION_PRESET_ID2_VERTICAL_CARD
- useDocumentSpecification.createFromPreset
method to create document specification for detector EUDLRecognizer
can return face image from the driver's license- warning for time limited license keys when using provided activities, custom UI integration or Direct API:
- the goal is to prevent unintentional publishing of application to production with the demo license key that will expire
- warning toast can be disabled by using
EXTRAS_SHOW_TIME_LIMITED_LICENSE_KEY_WARNING
intent extra,RecognizerView.setLicenseKeyTimeLimitedWarningEnabled
method when custom UI integration is used andRecognizer.setLicenseKeyTimeLimitedWarningEnabled
method when Direct API is used
DocumentSpecification
does not have methodsetPhysicalSizeInInches
any moreDocumentDetectorResult
does not contain information about screen orientation any moreQuadDetectorWithSizeResult
is renamed toQuadWithSizeDetectorResult
- improved face detection in
DocumentFaceRecognizer
: stable detection is required to prevent returning of blurred images - improved reading of Malaysian
MyKad
documents:- improved reading and parsing of address fields: previously recognizer was unable to read some documents because of the expected address format
- improved reading of Malaysian visas and work permits
- better reading of dates on Australian Driver's Licence
- fixed crash in
GermanIDBackSideRecognitionResult
caused by ProGuard obfuscation, when it is not declared in ProGuard rules to keep the result constructor - fixed crash in
MRTDCombinedRecognizer
: recognizer does not support glare detection
- added support for scanning front and back side of Swiss ID - use
SwissIDFrontSideRecognizerSettings
andSwissIDBackSideRecognizerSettings
- added support for reading front side of new Australian Driver's licence for state Victoria - use
AustralianDLFrontSideRecognizerSettings
- introduced
MRZFilter
:- use
MRTDRecognizerSettings
to enable it onMRTDRecognizer
- determines whether document should be processed or it is filtered out, based on its MRZ (Machine Readable Zone)
- use
- added
QuadDetectorWithSizeResult
which inherits existingQuadDetectorResult
:- it's subclasses are
DocumentDetectorResult
andMRTDDetectorResult
- returns information about physical size (height) in inches of the detected location when physical size is known
- it's subclasses are
- introduced
GlareDetector
which 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
BlinkOCRRecognizerSettings
is now deprecated and will be removed inv4.0.0
- use
DetectorRecognizerSettings
to perform scanning of templated documents - use
BlinkInputRecognizerSettings
for segment scan or for full-screen OCR - until
v4.0.0
,BlinkOCRRecognizerSettings
will behave as before, however you are encouraged to update your code not to use it anymore
- use
DocumentClassifier
interface is moved fromcom.microblink.recognizers.blinkocr
tocom.microblink.recognizers.detector
package andDocumentClassifier.classifyDocument()
now acceptsDetectorRecognitionResult
as parameter for document classificationUSDLRecognizerSettings
:- removed option to scan 1D Code39 and Code128 barcodes on driver's licenses that contain those barcodes alongside PDF417 barcode
- improved date parsing:
- affects date parser and all recognizers which perform date parsing
- added support for reading mirrored QR codes:
- affects all recognizers that perform QR code scanning
- improved
CroatianIDBackSideRecognizer
:- better extraction of fields on back side of the Croatian ID card
- improved
USDLRecognizer
:- added support for new USDL standard
- fixed crash in QR code reading
- fixed returning valid data for MRZ based recognizers when not all fields outside of the MRZ have been scanned
- fixed pareclization of
BlinkOCREngineOptions
:- when defining character whitelist chosen character font has been incorrectly passed to native code
- affects code where character whitelist is defined through
BlinkOCREngineOptions
for used parsers (e.g.Templating API
)
- added support for scanning Austrian passports - use
AustrianPassportRecognizerSettings
- added support for scanning Swiss passports - use
SwissPassportRecognizerSettings
- added support for scanning Mexican Voting Cards - use
MRTDRecognizerSettings
RegexParserSettings
andRawParserSettings
now work withAbstractOCREngineOptions
, which is a base class ofBlinkOCREngineOptions
- default engine options returned by method
getOcrEngineOptions
for both parser settings return instance ofBlinkOCREngineOptions
- default engine options returned by method
- improved address parsing on Malaysian iKad documents
- affects only iKad recognizer (represented by
IKadRecognizerSettings
)
- affects only iKad recognizer (represented by
- added support for scanning non-expiring Croatian ID documents
- affects:
- Croatian ID front recognizer (represented by
CroatianIDFrontSideRecognizerSettings
) - date of expiry is keyword TRAJNO - Croatian ID back recognizer (represented by
CroatianIDBackSideRecognizerSettings
) - date of expiry inside MRZ is991231
- Croatian ID combined recognizer (represented by
CroatianIDCombinedRecognizerSettings
)
- Croatian ID front recognizer (represented by
- affects:
- fixed occassional crash in MRTD detection algorithm
- this affects both MRTD Recognizer (represented by
MRTDRecognizerSettings
) and MRTD Detector (represented byMRTDDetectorSettings
)
- this affects both MRTD Recognizer (represented by
- bugfix in Croatian ID scanning:
- ensured that OIB number is not returned for old ID cards, where it does not exist
- added Czech and Slovak translations
- Date fields in recognition results are returned as
com.microblink.results.date.Date
class which represents immutable dates that are consisted of day, month and year - improved
IbanParser
:- improved extraction of IBANs without prefix and introduced
setAlwaysReturnPrefix
option 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
- Added
VinRecognizer
for scanning VIN (Vehicle Identification Number) barcodes - Added unified
BarcodeRecognizer
for scanning various tipes of barcodesZXingRecognizer
,BarDecoderRecognizer
andAztecRecognizer
are deprecated,BarcodeRecognizer
should be used for all barcode types that are supported by these recognizers
OcrLine.getChars()
method returnsCharWithVariants
array. 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.- Fixed bug in SegmentScanActivity:
- scan results are no longer hidden on shake event
- improved
IKadRecognizer
:- added support for long addresses and employer names
- fixed returning of full document images as metadata
- improved
Singapore ID Recognizers
:- tuned reading positions
- more accurate reading of name and blood type fields
- improved
Slovak ID Recognizers
:- tuned reading positions of ID elements
- improved reading precision of address, place of birth, last name and issuing authority
- added options to disable/enable extraction of certain fields in recognizer settings
- result getters
getPersonalIdentificationNumber()
andgetIssuingAuthority()
are renamed togetPersonalNumber()
andgetIssuedBy()
- Renamed
RomanianIDFrontSideRecognitionResult
element getters for Sex and Nationality outside of the MRZ togetNonMRZNationality()
andgetNonMRZSex()
- For
Austrian ID Recognizers
added options to disable/enable extraction of certain fields in recognizer settings
- improved
CombinedRecognizers
:- better handling of names containing dashes and extra long names
- improved
TopUpParser
:- added option to return USSD code without prefix
- by default
MRTDRecognizer
does not return results with incorrect check digits
- introduced ability to create minimum-size AAR
- a separate static library distribution now exists which contains a script that you can configure with features you need and it creates a AAR file which only contains features you need - this includes minimum-size native binary and only required assets. The rest (resources and java classes) can be thrown-away by ProGuard.
LibBlinkID
is 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
isItalic
andisBold
getters fromOcrChar
class- they always returned
false
, since OCR engine cannot accurately detect that
- they always returned
- removed
setLineGroupingEnabled
andisLineGroupingEnabled
fromBlinkOCREngineOptions
because disabling line grouping completely destroyed the OCR accuracy - added
GermanIDCombinedRecognizer
: scans front and back side of the German ID
- prefixed custom attributes to avoid name collisions with attributes from other libraries:
CameraViewGroup
: renamed animateRotation tomb_animateRotation
, animationDuration tomb_animationDuration
, rotatable tomb_rotatable
BaseCameraView
: renamed initialOrientation tomb_initialOrientation
, aspectMode tomb_aspectMode
- improved
MRTDRecognizer
:- WSA (World Goverment of World Citizens) added as valid country code when parsing MRZ
- added
USDLCombinedRecognizer
: scans face image and USDL barcode
-
updated German ID recognizers:
- instead of
GermanIDMRZSideRecognizer
, which was used for scanning front side of the older ID cards and back side of the new ID cards, there are two specialised recognizers:GermanIDBackSideRecognizer
andGermanOldIDRecognizer
- improved scanning accuracy of the
GermanIDFrontSideRecognizer
(name and surname) - splitting address from back side of the new German ID (GermanIDBackSideRecognizer) to ZIP code, city, street and house number
- instead of
-
better support for German passports:
GermanPassportRecognizer
reads passport data from MRZ and fields outside of the MRZ -
splitting address in
MyKadRecognizer
to street, ZIP code, city and state -
improved Croatian ID recognizers:
- multiple scans are used for better confidence
-
TopUpParser
improvements -
DateParser
can 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
-
fixed returning of images inside TemplatingAPI for frames when document was not correctly detected
-
introduced combined recognizers:
AustrianIDCombinedRecognizer
: scans front and back side of the Austrian IDCroatianIDCombinedRecognizer
: scans front and back side of the Croatian IDCzechIDCombinedRecognizer
: scans front and back side of the Czech IDMRTDCombinedRecognizer
: scans face image from any type of the document and Machine Readable ZoneSerbianIDCombinedRecognizer
: scans front and back side of the Serbian IDSingaporeIDCombinedRecognizer
: scans front and back side of the Singapore IDSlovakIDCombinedRecognizer
: scans front and back side of the Slovak IDSlovenianIDCombinedRecognizer
: scans front and back side of the Slovenian ID
Combined recognizers can be used for scanning multiple parts/sides of the document in predefined order. They combine results from individual scans to boost accuracy and merge them into the final result.
-
added
VerificationFlowActivity
which is designed for scanning multiple parts/sides of the document by using provided combined recognizers -
optimised native binary size
- 15% size reduction for
arm64-v8a
ABI - 14% size reduction for
x86
ABI - 13% size reduction for
armeabi-v7a
and `x86_64 ABIs
- 15% size reduction for
- added
AztecRecognizer
for scanning Aztec barcodes - improved
TopUpParser
:- added suport for 14 digits long sim numbers in addition to existing lengths (12, 19, 20)
MobileCouponsParser
is renamed toTopUpParser
- improved
TopUpParser
:- added option to enable all prefixes at the same time (generic prefix)
- fixed layouting of provided
SegmentScanActivity
andRandomScanActivity
in multi-window mode - added
SimNumberRecognizer
which scans SIM numbers from barcodes - improved
MRTDRecognizer
:- better support for arab MRZ
- updated
CroatianIDFrontSideRecognizer
:- returning sex as written on front side of a document
- added support for scanning front side of Romanian ID cards
- improved multi-window camera support
- fix layouting of default activities in multi-window mode
- fixed problem with front side Singapore recognizer
- improved quality of german ID address recognition
- added support for extracting place of birth on old German IDs
- added support for scanning IBAN from Georgia in Segment Scan
- added support for cancelling ongoing DirectAPI recognition call
- added option to allow unverified results for
MRTDRecognizer
:- by using method
setAllowUnverifiedResults
inMRTDRecognizerSettings
, it is possible to allow obtaining of results with incorrect check digits
- by using method
- Singapore ID recognizer is split in two recognizers - one for front and one for back side
- added Belgian account number check to IBAN parser
- 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
- added support for receiving of
GlareMetadata
which informs user that there is too much glare for performing recognition of ID document
- removed
RecognizerView
methodsetInitialScanningPaused
. For achieving the same functionality, methodpauseScanning
should be used. - added support for scanning IBANs that contain spaces and dashes
- improved
MRTDRecognizer
: when obtaining of full document images is enabled withsetShowFullDocument
method, recognizer returns result only after the document image has been returned.
- fixed camera management on LG X Cam
- improved IBAN parser
- LibRecognizer.aar renamed to LibBlinkID.aar
- added support for scanning Slovenian IDs
- fixed crash on ARMv7 devices when using
ImageListener
- added support for drawing MRZ detection result
- US Driver's Licence:
- fixed parsing of Virgin Islands DL
- added support for Arkansas DL
- added support for new South Carolina DL
- Malaysian ID:
- added support for returning face image
- fixed wrong parsing of birth date
- fixed rare NPE in SegmentScanActivity
- workaround for camera bug on some samsung devices
- added
MobileCouponsParser
for reading prepaid codes from mobile phone coupons DateParser
returns result as javaDate
object and as original dateString
- added method
getSpecificParsedResult
toTemplatingRecognitionResult
(BlinkOCRRecognitionResult
) which returns specific parser results, e.g. javaDate
forDateParser
- added support for scanning front and back side of Serbian ID cards
- added support for scanning Malaysian iKad documents
- migrated to libc++ native runtime and used clang from NDKr12b for building the native code
- this enabled c++14 features which will help us yield much better performance in the future
- added support for scanning front and back side of Slovak ID cards
- added support for scanning front and back side of German ID cards
- added support for Austrian DL
- improved support for scanning Croatian ID cards
- fixed crashes on Nexus 6 (Android 7.0)
- enabled reading of longer ITF barcodes
- added support for Malaysian visa
- added support for Malaysian work permits
- added support for Alberta (Canada) DL
- added support for scanning front and back side of Austrian ID cards
- added support for scanning front and back side of Czech ID cards
- improved support for scanning Croatian ID cards
- Singapore ID scanning now works even when scanning ID which is positioned upside down
- in templating API recognition data does not need to be valid anymore in classification step
- added support for scanning MRZ of green cards
- support for parsing Vehicle Identification Numbers (VINs)
- support for parsing vehicle licence plates
- 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 templating API
- templating API gives you possiblity to combine various detectors with parsers and thus create your own recognizer that can recognize any type of document
- check updated
BlinkID
demo app for example of how templating API could be used to scan both front and rear side of croatian ID cards
- updated
BlinkOCRActivity
:ScanConfiguration
can now define following new features:- whether this configuration is required or optional
- size of field displayed
- added support for scanning North Carolina driver license barcodes
- added support for following MRZ codes:
- austrian ID
- kuwait ID
- pakistani ID
- added recognizers specialized for scanning front and back side of Croatian ID cards
- although this can be achieved using templating API, we also added dedicated recognizers for convenience
- added support for scanning Singapore ID cards
- 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)
- fixed bug which caused document number to have zeros and Os misrecognized, even if OCR was 100% correct
- fixed ANR on Samsung Galaxy S3 Mini VE
- added RegexParser which can parse almost any regular expression from OCR result
- fixed bug in parsing dates from German's Driver's licenses
- 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
- added support for scanning german driver licences
- this is achieved by renaming UKDL recognizer to EUDL recognizer which now supports both UK driver's licences and german driver's licences
- this recognizer will be expanded in future with support for other DL's from European contries
- 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.7.0)
- added new options to BlinkOcrEngineOptions
- support detecting on activity flip event
- fix recognition of long names in MyKad ID cards
- fixed crash in RecognizerCompatibility on ARMv7 without NEON
- added RecognizerCompatibility to javadoc
- added Sony Xperia L to OpenGL blacklist
- fixed NPE in BarcodeDetailedData
- added Detector Recognizer which gives you ability to use one of provided detectors to obtain location of object in camera frame or in image
- improved performance of conversion of Image object into Bitmap
- added support for obtaining image of scanned MyKad document
- added support for obtaining image of scanned UKDL document
- added support for scanning MyKad document via DirectAPI
- 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
- added support for scanning MRTD with wrong checkdigit on date field
- fixed bug in handling setMeteringAreas
- setMeteringAreas now receives boolean indicating whether set areas should be rotated with device
- added support for specifying camera aspect mode from XML
- 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 activities, 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.
- BlinkID now depends on appcompat-v7 library, instead of full android-support library.
- even older versions of BlinkID 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.
- added support for scanning front side of Malaysian MyKad documents
- completely rewritten JNI bridge between Java and native code
- this caused almost 3x increase in recognition performance in our internal tests
- fixed camera orientation bug on Nexus 5X
- DirectAPI no longer recycles Bitmap after performing recognition of it
- this now gives you the possibility to reuse the Bitmap after it has been recognised
- IMPORTANT -
onScanningDone
callback method does not automatically pause scanning loop anymore. As soon asonScanningDone
method ends, scanning will be automatically resumed without resetting state- if you need to reset state, please call
resetRecognitionState
in your implementation ofonScanningDone
- if you need to have scanning paused after
onScanningDone
ends, please callpauseScanning
in your implementation ofonScanningDone
. Do not forget to callresumeScanning
to resume scanning after it has been paused.
- if you need to reset state, please call
pauseScanning
andresumeScanning
calls are now counted, i.e. if you callpauseScanning
twice, you will also need to callresumeScanning
twice 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
pauseScanning
on showing the onboarding view andresumeScanning
on 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 callresumeScanning
to 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_64
architecture
- fixed autofocus issue on devices that do not support continuous autofocus
- improved performance and quality of United Kingdom's Driver's Licence scanning
- improved OCR quality when scanning documents with machine readable zone
- 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 with BlinkID
- added support for performing raw OCR with BlinkID
- improved USDL barcode parsing
- better handling of FullName, FullAddress, Height and Weight of cardholder
- fixed crash in USDL parser
- fixed race condition causing memory leak or rare crashes
- fixed
NullPointerException
inBaseCameraView.dispatchTouchEvent
- fixed bug that caused returning scan result from old video frame
- fixed
NullPointerException
in 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
- ensured
RecognizerView
lifecycle methods are called on UI thread - ensure
onCameraPreviewStarted
is not called if camera is immediately closed after start before the call should have taken place - ensure
onScanningDone
is not called afterRecognizerView
has been paused, even if it had result ready just before pausing - added support for using BlinkID as camera capture API. To do that, implement following:
- when using
RecognizerView
do not callsetRecognitionSettings
or call it withnull
or empty array - implement
ImageListener
interface and set the listener withsetImageListener
- as a reminder - you can process video frames obtained that way using DirectAPI method
recognizeImageWithSettings
- when using
- added
BlinkIDDemoCustomSegmentScan
demo app that demonstrates advanced integration of SegmentScan feature within custom scan activity. It also demonstrates how to perform generic OCR of full camera frame, how to draw OCR results on screen and how to obtain OcrResult object for further processing. - all demo apps now use Maven integration method because it is much easier than importing AAR manually
- fixed NullPointerException when RecognizerSettings array element was
null
- fixed black rectangle bug on some devices
- utilize Camera2 API on devices that support it to achieve much better frame grabbing performance
- new algorithm for determining which video frame is of good enough quality to be processed - it uses much less memory than last one and works in separate thread so it does not impact image recognition thread
- this results in much better and faster scanning performance
- support for defining camera metering areas that will camera use to perform focus, exposure and white balance measurement.
- support for obtaining raw MRZ text even if our internal parser fails to parse it
- in order to do that, you must enable returning of unparsed MRTD results
- when obtaining MRTD recognition result, you should check if MRZ was parsed
- if MRZ was parsed, you can obtain parsed data as ususal
- if MRZ was not parsed, you can obtain raw OCR result and parse it yourself
- added support for Visa MRZ format in internal MRZ parser
- support for obtaining image of MRZ zone and full document image via ImageListener
- bitmaps can now be processed while RecognizerView is active using method [recognizeBitmap](https://blinkid.github.io/blinkid-android/com/microblink/view/recognition/RecognizerView.html#recognizeBitmap(android.graphics.Bitmap, com.microblink.hardware.orientation.Orientation, com.microblink.view.recognition.ScanResultListener))
- removed method
resumeScanningWithoutStateReset
- method resumeScanning of RecognizerView now receivesboolean
indicating whether internal state should be reset - by default, null quiet zone is now set to
true
in US Driver's License recognizer
- removed support for ARMv5 and ARMv6 processors (armeabi) because of their very poor scanning performance
- optimized MRZ text extraction algorithm - 0-O confusion now does not cause extremely long processing that resulted in freezing the device
- updated documentation with use cases for which BlinkID is applicable
- fixed crash in DirectAPI when recognizer was terminated in the middle of recognition process
- support for defining camera aspect mode via intent
- removed autoscale setting from USDL recognizer - autoscale is now always used
- added MRZ detector to MRTD recognizer - Machine Readable Zone location can now be detected almost everywhere on the image
- added support for defining region for scanning MRZ
- added support for scanning UK Driver's Licence, check README for details
- improved parsing of MRZ (Machine Readable Zones)
- support for defining camera zoom level
- fixed NPE when null SuccessCallback was given
- Improved parsing of some problematic US Driver's Licence barcodes
- Added support for non-standard issuing authorities
- added support for US Driver's Licence barcode scanning
- introduced new licence key format which is now mandatory (generate your free licence key on https://microblink.com/login or contact us at http://help.microblink.com
- added support for obtaining complete unparsed MRZ lines
- fixed crash on Motorola Lex755 and Sony Xperia Z
- Support for two-letter country codes
- Support for MRZ formats in passports and ID cards
- Support for integration via Maven
- Documentation update
- Scanning support for MRZ formats