- Updates for
CroatiaPdf417PaymentRecognizer
andCroatiaQrCodePaymentRecognizer
to enable conversion from HRK to EUR.- We've added new result members:
amountHRK
,amountEUR
andconversionToEurPerformed
. - We've added new setting member called
conversionRate
with the default value of 7,53540.- We will make conversion to EUR only in the case when the currency in the barcode is HRK;
conversionToEurPerformed
will betrue
in that case, andfalse
otherwise. Conversion from EUR to HRK will never be performed.
- We will make conversion to EUR only in the case when the currency in the barcode is HRK;
- We've added new result members:
- We have removed HUB1 payment slip support from the
CroatiaPdf417PaymentRecognizer
andCroatiaQrCodePaymentRecognizer
where these result members are no longer available:amount
,currency
,payerAccountNumber
,payerBankCode
,payerIban
,payerReferenceModel
,payerReference
.
- Support for the HUB1 payment slip is also removed for the
CroatiaSlipRecognizer
.
- We’ve updated Microblink logo and colors
- The SDK now includes only
PhotoPay
andBlinkInput
recognizers. ForBlinkID
recognizers, please importBlinkID
SDK (more here). - To ensure compatibility with other Microblink SDKs, we have repackaged all classes. The root package has been renamed from
com.microblink
tocom.microblink.photopay
, which is unique toPhotoPay
SDK. - Removed support for Android 4.1 - 4.3 - minimum required Android version is now Android 4.4 (API level 19).
- Getters for some of the fields have been renamed according to the guidelines we have for all of our recognizers.
- For example,
getIban
instead ofgetIBAN
,getBic
instead ofgetBIC
,getBlz
instead ofgetBLZ
, etc.
- For example,
- We’ve added support for 3 new fields to HungaryQRCodePaymentRecognizer:
idCode
,versionNumber
,characterSet
- We’ve added 2 new fields to CzQRCodePaymentRecognizer:
paymentSituation
,orderFrequency
- Thailand - ID Card
- Added new result members -
fathersName
andmothersName
both in BlinkID and BlinkIDCombined Recognizers, as well as in VIZ result
- We can now extract
fathersName
andmothersName
from Mexico Voter ID Card - Australian Driving Licenses for New South Wales, Northern Territory, Queensland, Victoria and Western Australia now have the driver license unique card number field extracted as
document_additional_number
- We’ve removed support for
aztec
anddataMatrix
barcode formats from BarcodeRecognizer
- Added
MRTD_TYPE_BORDER_CROSSING_CARD
to MrtdDocumentType enum
- Fixed rare NullPointerException that happened only on some devices, caused by a lifecycle issue where the camera error callback was called after the view has already been destroyed
We’ve added 174 new documents:
- Albania - Driver Card (front only)
- Albania - Professional Driver License (front only)
- Belarus - Driver License (front only, beta)
- Belgium - Minors ID (beta)
- Czechia - Residence Permit
- Finland - Alien ID
- Finland - Residence Permit (beta)
- Georgia - Driver License (front only)
- Greece - Residence Permit
- Ireland - Passport Card
- Ireland - Public Services Card (beta)
- Kosovo - Driver License (front only, beta)
- Latvia - Alien ID
- Luxembourg - ID Card
- Moldova - ID Card (beta)
- North Macedonia - Driver License (front only)
- North Macedonia - ID Card
- Poland - Passport (beta)
- Slovenia - Residence Permit (beta)
- Spain - Alien ID
- UK - Passport (beta)
- North Macedonia - Polycarbonate Passport
- Austria - Paper Passport
- Belarus - Paper Passport
- Belgium - Paper Passport (beta)
- Bulgaria - Paper Passport
- Estonia - Paper Passport
- France - Paper Passport (beta)
- Georgia - Paper Passport (beta)
- Germany - Paper Passport
- Greece - Paper Passport
- Hungary- Paper Passport
- Italy - Paper Passport (beta)
- Kosovo - Paper Passport
- Moldova - Paper Passport (beta)
- Poland - Paper Passport
- Portugal - Paper Passport
- Spain - Paper Passport
- Switzerland - Paper Passport
- UK - Paper Passport
- Algeria - Driver License
- Burkina Faso - ID Card
- Cameroon - ID Card
- Democratic Republic Of The Congo - Driver License (front only, beta)
- Egypt - Driver License (beta)
- Ghana - ID Card
- Iraq - ID Card
- Ivory Coast - Driver License (front only, beta)
- Ivory Coast - ID Card
- Lebanon - ID Card (beta)
- Morocco - Driver License
- Mozambique - Driver License (front only, beta)
- Oman - Driver License (beta)
- Rwanda - ID Card (front only)
- Senegal - ID Card
- Tanzania - Driver License (front only, beta)
- Tunisia - Driver License (front only)
- Uganda - Driver License (front only, beta)
- Botswana - ID Card
- Sudan - Polycarbonate Passport
- Algeria - Paper Passport (beta)
- Egypt - Paper Passport (beta)
- Eswatini - Paper Passport
- Ghana - Paper Passport
- Iran - Paper Passport (beta)
- Iraq - Paper Passport (beta)
- Israel - Paper Passport (beta)
- Jordan - Paper Passport (beta)
- Kenya - Polycarbonate Passport
- Libya - Polycarbonate Passport (beta)
- Morocco - Paper Passport (beta)
- Nigeria - Paper Passport
- Nigeria - Polycarbonate Passport (beta)
- Qatar - ID Card (front only, beta)
- Saudi Arabia - Paper Passport
- Syria - Paper Passport
- Tanzania - ID Card (beta)
- Tanzania - Voter ID (front only, beta)
- Tunisia - Paper Passport
- Turkey - Paper Passport
- Zimbabwe - Paper Passport
- Argentina - Alien ID
- Bahamas - ID Card (front only, beta)
- Bolivia - Minors ID
- Jamaica - Driver License
- Mexico - Residence Permit (beta)
- Mexico - Chiapas - Driver License (front only)
- Mexico - Coahuila - Driver License (beta)
- Mexico - Durango - Driver License(front only, beta)
- Mexico - Guerrero-cocula - Driver License (beta)
- Mexico - Guerrero-juchitan - Driver License (beta)
- Mexico - Guerrero-tepecoacuilco - Driver License (front only, beta)
- Mexico - Guerrero-tlacoapa - Driver License (front only, beta)
- Mexico - Hidalgo - Driver License
- Mexico - Mexico - Driver License (beta)
- Mexico - Morelos - Driver License (front only)
- Mexico - Oaxaca - Driver License
- Mexico - Puebla - Driver License (front only, beta)
- Mexico - San Luis Potosi - Driver License (front only)
- Mexico - Sinaloa - Driver License (front only, beta)
- Mexico - Sonora - Driver License (beta)
- Mexico - Tabasco - Driver License (beta)
- Mexico - Yucatan - Driver License (beta)
- Mexico - Zacatecas - Driver License (beta)
- Mexico - Baja California Sur - Driving License (beta)
- Mexico - Campeche - Driving License (beta)
- Mexico - Colima - Driving License (beta)
- Panama - Temporary Residence Permit (beta)
- Peru - Minors ID (beta)
- Trinidad And Tobago - Driver License (front only, beta)
- Trinidad And Tobago - ID Card
- Argentina - Paper Passport
- Brazil - Paper Passport (beta)
- Guatemala - Paper Passport
- Haiti - Paper Passport
- Honduras - Paper Passport (beta)
- Mexico - Paper Passport (beta)
- Mexico - Nayarit - Driving Licence (beta)
- Australia - South Australia - Proof Of Age Card (front only, beta)
- Australia - Health Insurance Card (front only, beta)
- Australia - Paper Passport
- Armenia - ID Card
- Bangladesh - Driver License (beta)
- Cambodia - Driver License (front only, beta)
- India - Gujarat - Driving Licence (front only, beta)
- India - Karnataka - Driving Licence (front only)
- India - Kerala - Driving Licence (beta)
- India - Madhya Pradesh - Driving Licence (front only, beta)
- India - Punjab - Driving Licence (front only, beta)
- India - Tamil Nadu - Driving Licence (beta)
- Kyrgyzstan - ID Card
- Malaysia - Mypolis (beta)
- Malaysia - Refugee ID (front only)
- Myanmar - Driver License (beta)
- Pakistan - Punjab - Driving Licence (front only)
- Sri Lanka - Driving Licence (front only)
- Thailand - Alien ID (front only)
- Thailand - Driver License (beta)
- Uzbekistan - Driver License (front only, beta)
- Azerbaijan - Polycarbonate Passport (beta)
- Tajikistan - Polycarbonate Passport (beta)
- Bangladesh - Paper Passport
- China - Paper Passport (beta)
- India - Paper Passport
- Indonesia - Paper Passport
- Japan - Paper Passport
- Nepal - Paper Passport
- Pakistan - Paper Passport
- Philippines - Paper Passport
- South Korea - Paper Passport (beta)
- Sri Lanka - Paper Passport
- Uzbekistan - Paper Passport
- Canada - Tribal ID (beta)
- Canada - Nova Scotia - ID Card (beta)
- Canada - Saskatchewan - ID Card (beta)
- USA - Border Crossing Card (front only)
- USA - Global Entry Card
- USA - Nexus Card (beta)
- USA - Veteran ID (front only)
- USA - Work Permit
- USA - Mississippi - ID Card (beta)
- USA - Montana - ID Card
- USA - New Mexico - ID Card
- USA - Wisconsin - ID Card
- Canada - Citizenship Certificate (beta)
- Canada - Ontario - Health Insurance Card (front only)
- Canada - Quebec - Health Insurance Card (front only, beta)
- USA - Military ID Card
- USA - Rhode Island - ID Card
- USA - South Carolina - ID Card
- Canada - Paper Passport
- Canada - Weapon Permit (front only, beta)
- USA - Paper Passport (beta)
- Hungary - Residence Permit
- Luxembourg - Residence Permit (no longer beta)
- Mauritius - ID Card
- Colombia - Alien ID (no longer beta)
- Mexico - Baja California - Driver License
- Mexico - Chihuahua - Driver License
- Mexico - Guanajuato - Driver License
- Mexico - Michoacan - Driver License
- Malaysia - MyKid
- Malaysia - MyPR
- Mexico - Puebla - Driving License
- Singapore - S PASS
- Greece - ID Card
- Democratic Republic of the Congo - Driving Licence
- Mexico - Veracruz - Driving Licence
- Albania - Passport
- Malta - Residence Permit
- Switzerland - Residence Permit
- Bolivia - Driver License
- Chile - Passport
- El Salvador - ID Card
- Peru - ID Card
- Singapore - S Pass
- Finland - Polycarbonate Passport
- Ireland - Polycarbonate Passport
- Kosovo - Driving License
- Latvia - Polycarbonate Alien Passport
- Latvia - Polycarbonate Passport
- Poland - Polycarbonate Passport
- Cameroon - ID Card
- Ghana - ID Card
- Iraq - ID Card
- Tanzania - Driving Licence
- Turkey - Polycarbonate Passport
- Uganda - Driving Licence
- Chile - Driving Licence
- Ecuador - Driving Licence
- Haiti - Driving Licence
- Belarus - Driving Licence
- UK - Polycarbonate Passport
- Bahamas - Driving Licence
- Mexico - Durango - Driving Licence
- Venezuela - ID Card
- USA - Kansas - ID Card
-
You can now retrieve an image of the document owner along with cropped images of the document itself whenever you’re scanning an AAMVA-compliant ID:
- Using
BarcodeId
as aRecognitionMode
lets you scan US driver licenses and IDs that BlinkID can’t read from the Visual Inspection Zone (VIZ) alone. Use it to extract:- A face image from the front side
- Barcode data from the back side
- Cropped document images of both sides
- You can disable this
RecognitionMode
by settingenableBarcodeId
tofalse
in theRecognitionModeFilter
.
- Using
-
We've improved data extraction through the MRZ:
- We now allow standard M/F values for gender on Mexican documents (along with localized H/M values)
-
We're now converting dates to the Gregorian calendar for:
- Taiwan documents with Republic of China (ROC) calendar dates
- Saudi documents with Islamic calendar dates
-
We're now auto-filling all ‘partial’ dates found on identity documents (showing year or month-year only):
- Date of issue will be converted to the first day of the (first) month
- E.g. '1999' will be converted to '01.01.1999.'
- E.g. '03.1999.' will be converted to '01.03.1999.'
- Date of expiry will be converted to the last day of the (last) month
- E.g. '1999' will be converted to '31.12.1999.'
- E.g. '03.1999.' will be converted to '31.03.1999.'
- Date of issue will be converted to the first day of the (first) month
-
We've added the parameter
maxAllowedMismatchesPerField
to settings. When this is set to a non-zero value, DataMatch will be successful as long as the number of mismatched characters doesn't exceed the specified value. -
We've added the parameter
allowUncertainFrontSideScan
to settings. When this parameter is set to true, the Recognizer will proceed scanning the back side of the document even if the front side scanning resultState
isUncertain
. -
We've enabled the return of image and back side data results, even when the
State
isUncertain
. Keep in mind that returned images, in this case, might be blurry or low quality.- This applies to all image types: full document image, face and signature image.
-
We've added two separate fields for the processing status in the Recognizer Result:
frontProcessingStatus
andbackProcessingStatus
. They indicate the status of the last recognition process for each side. -
We’ve renamed the Swaziland country to Eswatini in results and ClassInfo
-
Improved result validation
FieldIdentificationFailed
processing status is used to indicate if unexpected fields are present on the document. Those fields are then deleted from the result
-
We are filling out COUNTRY and REGION fields in ClassInfo, without the field TYPE of document, when using BarcodeID mode for scanning documents where the Front side is not supported, and back side results are extracted from AAMVA compliant barcodes
- This applies only if
ClassInfo
isn’t already prepopulated in some other way and when you’re not inFullRecognition
mode
- This applies only if
-
We added support for the Malaysian NRIC numbers that hold an asterisk (*) character.
-
While using
FullRecognitionMode
for scanning unsupported Passports, we are now extractingClassInfo
from MRZ -
Improved quality of fully cropped vertical images
-
Better parsing of Bermuda Driving License AAMVA-compliant barcode dates
-
Fix for correct calculation of check digit for Saudi Arabia ID Card MRZ
-
We are splitting first and last name from the additional name information (e.g., Nom d’ usage, Epouse, Geb. etc.) into two different results. The additional name info will be a part of the
name_additional_info
field. This applies to the following documents:- France
- ID Card
- Residence Permit
- Germany
- ID Card
- Luxembourg
- ID Card
- Netherlands
- Driving License
- Polycarbonate Passport
- France
-
We are removing title prefixes (e.g., Mrs., Mr., Ing., etc.) from
full_name
,first_name
andlast_name
for these documents:- Austria
- Driving License
- ID Card
- Czechia
- Driving License
- Germany
- ID Card
- Thailand
- ID Card
- UK
- Driving License
- Austria
-
We can now extract the date of birth from the document number on the South Korean identity card and from the personal identification number on the driving licence
- We've added anonymization for new documents:
- Document number on Germany Polycarbonate Passport
- Document number on Hong Kong Polycarbonate Passport
- Document number and personal ID number on Singapore Polycarbonate Passport
- We've added a new feature that lets you anonymize extracted results, images or both:
- Choose which fields you want to mask:
- Card number
- Card number prefix
- CVV
- Owner
- IBAN
- Choose a
BlinkCardAnonymizationMode
for each field:None
ImageOnly
- Black boxes will cover chosen data on the extracted image, results are not anonymizedResultFieldsOnly
- String data is redacted from the result, images are not anonymizedFullResult
- Both images and string data (results) are anonymized
- You can customize the way you anonymize the card number through
CardNumberAnonymizationSettings
:prefixDigitsVisible
- Defines how many digits at the beginning of the card number remain visible after anonymizationsuffixDigitsVisible
- Defines how many digits at the end of the card number remain visible after anonymization
- Choose which fields you want to mask:
- We've added support for new horizontal card layouts
- We've added support for vertical payment cards.
- As of this release, BlinkCard supports the Visa Quick Read format (the one where the card number spans through four lines).
- We've changed the threshold for "Camera too far" and "Camera too near" callbacks. From now on, the card needs to be closer to the camera.
- We updated the default BlinkCard scanning screen (
BlinkCardOverlayController
andBlinkCardActivity
) which is activated when using BlinkCardUISettings. Now the UI supports landscape mode. - From now on, BlinkCard reads and extracts the expiry date in MM/YYYY format
- removed the usage of konto_check library which was used for validating German account numbers on non-SEPA payment slips.
- Removed support for non-SEPA payment slips in
DePaymentRecognizer
- Removed
ACCOUNT_NUMBER
andBANK_CODE
fields fromSlipRecognizer
- in SEPA payment slips they are part of the IBAN
- Added support for including or excluding groups of documents supported by the current license with the
captureModeFilter
setting, which also enables:- Scanning of documents with AAMVA compliant barcodes with BarcodeID mode
- Scanning of all licensed documents in BlinkID FullRecognition mode
Pdf417Recognizer
has been deprecated - useBarcodeRecognizer
instead- We've changed how
RecognizerRunner
processes images. Now it can treatImage
objects as either video frame or photo frame. Until now, Direct API always processed images as photo frames, that not giving ability to recognizers to use time-redundant information for yield better recognition quality.
To optimize our scanning process, we decided to remove support for processors which don't have VFPv4 support because it blocked us from implementing those optimizations. This affects only a small number of older devices with armeabi_v7 CPUs. Those devices are rarely used.
- We’ve fixed camera issues for the following devices:
- Motorola Moto G100 - Camera 2 API wasn’t working
- Realme X50 5G - Problem with Camera 2 API in legacy mode
- LG K4 - Camera 2 API wasn’t working
- Galaxy Tab Active 2 - broken aspect ratio
-
We've improved QR code parsing in our
CzechiaQrCodeRecognizer
:- We're now supporting strings containing the null terminator in the middle.
-
We've improved parsing Croatian reference numbers:
- We're now supporting cases where the reference number contains spaces around the
-
delimiter
- We're now supporting cases where the reference number contains spaces around the
-
Newly supported identity documents
- Saudi Arabia - DL (front)
- Saudi Arabia - Resident ID (front)
-
We've introduced another variant of
resetRecognitionState
method that lets you reset the scanning process in different recognition stages: -
If you’re using our Direct API, call
RecognizerRunner.resetRecognitionState(false)
to clear the scanning cache as well as results gathered in a specific recognition step, i.e. after scanning the back side of a document. -
If you’re using our built-in UI to scan IDs from the camera stream, call
RecognizerRunnerView.resetRecognitionState(false)
to do the same.
- We're now able to extract the additional address on Hungary Address Cards
- We've improved data extraction through the MRZ:
- We now return the document type through
ClassInfo
, regardless of theRecognitionMode
you're using (MrzId
,MrzPassport
orMrzVisa
). - This means you can now use
ClassFilter
to filter these documents by their type. - We now return the document number on Nigeria IDs complete with its check digit.
- We now support Italy Residence Permits with a CR document code.
- We now return the document type through
- We've extended the
ClassInfo
structure with helper methods so you can filter documents by country more easily:- Use
countryName
,isoNumericCountryCode
,isoAlpha2CountryCode
andisoAlpha3CountryCode
to get the full country names or their representative codes defined by ISO.
- Use
- We've extended the
BarcodeResult
structure withextendedElements
- You can find all data from AAMVA-compliant barcodes under their respective
BarcodeElementKey
in theBarcodeElements
structure - For a full list of keys please see
BarcodeElementKey
enum
- You can find all data from AAMVA-compliant barcodes under their respective
- We've added another
ProcessingStatus
calledAwaitingOtherSide
- This status is triggered once BlinkID has finished with the first side of a document and expects the other side, too.
- We're now able to extract the date of birth from the CURP field on Mexico Voter IDs
- Direct API:
- We've added a new recognition mode for recognizing still images of documents that have already been cropped:
- Set the
scanCroppedDocumentImage
to true when you're feeding BlinkID images of documents that have already been cropped and don't require detection. - Keep in mind that this setting won't work on document images that haven't been properly cropped.
- Set the
- We've added a new recognition mode for recognizing still images of documents that have already been cropped:
- We've extended the results with
extendedElements
- You can find all data from AAMVA-compliant barcodes under their respective
BarcodeElementKey
in theBarcodeElements
structure - For a full list of keys please see
BarcodeElementKey
enum
- You can find all data from AAMVA-compliant barcodes under their respective
- We’ve updated our default UI with new error messages shown if the user doesn’t place the card within the frame.
- We’re no longer hiding the security code on the edit results screen.
- We’ve added a new edit results screen customisation option, you can now change the toolbar icon displaying an arrow by default (
mb_blinkcardEditToolbarNavigationIcon
theme attribute). - We’ve fixed an edit results screen issue causing user changes to become lost when the app goes to background.
- We've deprecated
UsdlRecognizer
. Please useIdBarcodeRecognizer
instead.
- 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 renamed
MrtdDocumentType.MRTD_TYPE_IDENITY_CARD
enum member toMrtdDocumentType.MRTD_TYPE_IDENTITY_CARD
.
- We've fixed the front-facing camera error on
Oukitel WP8 Pro
. - We've fixed a rare crash in
BlinkIdOverlayController
, which happened as a result of rapidly launching the scanning process multiple times in a row.
- We’ve updated SDK's Android target API level to 30.
- We’ve translated the complete SDK to the Serbian language.
- 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 added a new feedback message to users, reminding them to keep a document fully visible in case they accidentally cover a part of it with their finger or an object.
- It appears while scanning the document by using
BlinkIdUISettings
andBlinkIdOverlayController
: - It will display an error message "Keep the document fully visible".
- This message is displayed only when using
BlinkIdRecognizer
orBlinkIdCombinedRecognizer
for scanning.
- It appears while scanning the document by using
- We’ve introduced a new
FrameRecognitionCallback
callback for theRecognizerRunnerView
, which is invoked each time a camera frame from a video stream is recognized. UseRecognizerRunnerView.setFrameRecognitionCallback
method to set the callback. - We’ve added support for a new Top Up format, for A1 Croatia.
-
53 documents added:
- ALBANIA - DL (front)
- BELGIUM - RESIDENCE PERMIT (front, back)
- BOLIVIA - ID (front, back)
- BOSNIA AND HERZEGOVINA - PASSPORT
- CAMBODIA - PASSPORT
- CANADA - RESIDENCE PERMIT (front, back)
- CANADA - MANITOBA - ID (front)
- CANADA - ONTARIO - HEALTH INSURANCE CARD (front)
- CHILE - ALIEN ID (front, back)
- CHINA - ID (front, back)
- COLOMBIA - MINORS ID (front, back)
- CYPRUS - RESIDENCE PERMIT (front, back)
- CZECHIA - PASSPORT
- GREECE - ID (front)
- HAITI - ID (front, back)
- ITALY - RESIDENCE PERMIT (front, back)
- LATVIA - DL (front)
- LATVIA - PASSPORT
- LITHUANIA - PASSPORT
- LUXEMBOURG - DL (front)
- MONTENEGRO - DL (front)
- MONTENEGRO - ID (front, back)
- MONTENEGRO - PASSPORT
- NETHERLANDS - RESIDENCE PERMIT (front, back)
- NICARAGUA - ID (front, back)
- NIGERIA - ID (front, back)
- NORWAY - RESIDENCE PERMIT (front, back)
- OMAN - RESIDENT ID (front, back)
- PARAGUAY - DL (front, back)
- PERU - DL (front, back)
- PHILIPPINES - SOCIAL SECURITY CARD (front)
- ROMANIA - PASSPORT
- RUSSIA - PASSPORT
- SERBIA - PASSPORT
- SLOVAKIA - PASSPORT
- SLOVENIA - PASSPORT
- SOUTH KOREA - DL (front)
- SPAIN - RESIDENCE PERMIT (front, back)
- SWEDEN - RESIDENCE PERMIT (front, back)
- THAILAND - PASSPORT
- UKRAINE - DL (front)
- UKRAINE - PASSPORT
- USA - ARKANSAS - ID (front, back)
- USA - CONNECTICUT - ID (front, back)
- USA - GREEN CARD (front, back)
- USA - MARYLAND - ID (front, back)
- USA - MINNESOTA - ID (front, back)
- USA - NEVADA - ID (front, back)
- USA - NEW YORK CITY - ID (front, back)
- USA - TEXAS - WEAPON PERMIT (front)
- USA - VIRGINIA - ID (front, back)
- VENEZUELA - DL (front)
- VENEZUELA - PASSPORT
-
Beta support added for 46 documents:
- ALBANIA - PASSPORT
- BAHAMAS - DL (front)
- BERMUDA - DL (front)
- BOLIVIA - DL (front)
- CHILE - DL (front)
- COLOMBIA - ALIEN ID (front)
- DENMARK - RESIDENCE PERMIT (front, back)
- DOMINICAN REPUBLIC - DL (front, back)
- ECUADOR - DL (front)
- EL SALVADOR - DL (front, back)
- ESTONIA - RESIDENCE PERMIT (front, back)
- GUATEMALA - DL (front, back)
- HAITI - DL (front)
- HONDURAS - DL (front, back)
- HONDURAS - ID (front, back)
- HUNGARY - ADDRESS CARD (front, back)
- HUNGARY - RESIDENCE PERMIT (front)
- ICELAND - DL (front)
- ISRAEL - ID (front, back)
- JAPAN - DL (front)
- JORDAN - DL (front)
- LATVIA - ALIEN PASSPORT
- LATVIA - RESIDENCE PERMIT (front, back)
- LUXEMBOURG - RESIDENCE PERMIT (front)
- MALTA - RESIDENCE PERMIT (front, back)
- MEXICO - BAJA CALIFORNIA - DL (front)
- MEXICO - CHIHUAHUA - DL (front)
- MEXICO - CIUDAD DE MEXICO - DL (front)
- MEXICO - PROFESSIONAL DL (front)
- MEXICO - GUANAJUATO - DL (front)
- MEXICO - MICHOACAN - DL (front)
- MEXICO - TAMAULIPAS - DL (front, back)
- MEXICO - VERACRUZ - DL (front, back)
- PHILIPPINES - TAX ID (front)
- PHILIPPINES - VOTER ID (front)
- POLAND - RESIDENCE PERMIT (front, back)
- PORTUGAL - RESIDENCE PERMIT (front, back)
- PUERTO RICO - VOTER ID (front)
- SLOVAKIA - RESIDENCE PERMIT (front, back)
- SOUTH KOREA - ID (front)
- SWITZERLAND - RESIDENCE PERMIT (front, back)
- TAIWAN - TEMPORARY RESIDENCE PERMIT (front)
- TURKEY - RESIDENCE PERMIT (front)
- USA - KANSAS - ID (front, back)
- VENEZUELA - ID (front)
- VIETNAM - DL (front)
-
Added back side support for 7 documents:
- ARGENTINA - ID
- ECUADOR - ID
- FINLAND - ID
- NIGERIA - DL
- QATAR - RESIDENCE PERMIT
- URUGUAY - ID
- USA - NEW YORK - DL
-
9 documents are no longer beta:
- BRAZIL - DL
- CANADA - ALBERTA - ID
- MALAYSIA - MyKAS
- MEXICO - NUEVO LEON - DL
- PANAMA - DL
- PORTUGAL - DL
- SAUDI ARABIA - ID
- SRI LANKA - ID
- USA - IDAHO - ID
- We’re now able to read partial MRZ formats (2.5 lines), like the ones found on Switzerland and Liechtenstein DLs.
- We’ve added
documentOptionalAdditionalNumber
to the main part of the result, as well as front and back side VIZ results. - We’ve expanded the set of possible recognizer states with
StageValid
. This state fixesBlinkIDCombinedRecognizer
timeout issues, and enables better control of the Combined scanning pipeline. It activates when the first side of a document has been successfully scanned and scanning of the second side is required.
-
BlinkCardRecognizer
is a Combined recognizer, which means it's designed for scanning both sides of a card. However, if all required data is found on the first side, we do not wait for second side scanning. We can return the result early. A set of required fields is defined through the recognizer's settings. -
"Front side" and "back side" are terms more suited to ID scanning. We start the scanning process with the side containing the card number. This makes the UX easier for users with cards where all data is on the back side.
-
We've expanded the set of possible recognizer states with StageValid. This state is set when first side scanning completes with valid data, and second side scanning is required.
-
Available
BlinkCardRecognizer
settings:- You can toggle mandatory extraction of all fields except the PAN.
- You can enable the blur filter. When blur filtering is enabled, blurred frames are discarded. Otherwise, we process the blurred frames but set the blur indicator result member.
- You can define required padding around the detected document. This ensures some empty space exists between the document and the edge of the frame.
-
BlinkCardRecognizer.Result
structure:- Contains:
- The card issuer
- PAN
- PAN prefix
- Expiry date
- Owner information
- IBAN
- CVV
- Cropped document images
- Blur indicators for both sides
- Processing status
- Processing status can be one of:
- Success - if the process ended successfully and data is valid
- DetectionFailed - if detection of the document failed
- ImagePreprocessingFailed - if preprocessing of the image failed
- StabilityTestFailed - if inconsistent results were detected between different video frames (when video processing, we require at least two frames with consistent data, for image processing this isn't applicable)
- ScanningWrongSide - if the first side presented in the scanning process does not contain the PAN, or when the user failed to present the second side
- FieldIdentificationFailed - if we detected a field, but we're unable to parse it (possible glare issues, or a finger covering the field)
- ImageReturnFailed - failed to return requested images
- UnsupportedCard - this card layout is currently unsupported.
- Contains:
-
We added a new BlinkCard screen that allows users to edit
BlinkCardRecognizer
scan results:- This screen allows users to edit scanned data and input data that wasn't scanned.
- Enable it by calling
BlinkCardUISettings.setEditScreenEnabled(true)
. - Configure which fields should be displayed on this screen by using
BlinkCardUISettings.setEditScreenFieldConfiguration()
method. - Set your custom theme with
BlinkCardUISettings.setEditScreenTheme()
method. - Change default strings by using
BlinkCardUISettings.setEditScreenStrings()
. - To get user-edited fields, in your
onActivityResult(int requestCode, int resultCode, Intent data)
method callBlinkCardEditResultBundle.createFromIntent(data)
. - This feature is available only for
BlinkCardRecognizer
. - If you are using a custom UI, you can launch edit screen by building intent with the following method
BlinkCardEditActivity.buildIntent()
.
-
We updated the default BlinkCard scanning screen (
BlinkCardOverlayController
):- Instructions on how to reduce glare will be displayed when the user enables flashlight, you can disable it with
BlinkCardUISettings.setShowGlareWarning(false)
. - If the edit screen is enabled, a new button will show up after 5 seconds of unsuccessful scanning to allow the user to go directly to the edit screen.
- Instructions on how to reduce glare will be displayed when the user enables flashlight, you can disable it with
-
We have improved recognition timeout logic when using
BlinkCardRecognizer
.- When a credit card has multiple sides to scan, the timeout timer for the second side starts after the second side of the card has been detected. Previously, it has been started immediately after the first side has been scanned.
- Timeout duration can be configured by using
RecognizerBundle.setNumMsBeforeTimeout
CroatiaReferenceParser
- We’ve improved parsing of Croatian reference strings by adding additional validation of the model and reference fields. You can disable these validations by setting
allowUnverifiedReferences
totrue
.
- We’ve improved parsing of Croatian reference strings by adding additional validation of the model and reference fields. You can disable these validations by setting
We have deprecated the following recognizers:
-
CroatiaIdFrontRecognizer
,CzechiaIdFrontRecognizer
,GermanyDlFrontRecognizer
,GermanyIdFrontRecognizer
,GermanyIdOldRecognizer
,MalaysiaMyKasFrontRecognizer
,SlovakiaIdFrontRecognizer
,SwitzerlandDlFrontRecognizer
- useBlinkIdCombinedRecognizer
orBlinkIdRecognizer
instead -
CroatiaCombinedRecognizer
,CroatiaIdBackRecognizer
,CzechiaCombinedRecognizer
,CzechiaIdBackRecognizer
,GermanyCombinedRecognizer
,GermanyIdBackRecognizer
,SlovakiaCombinedRecognizer
,SlovakiaIdBackRecognizer
- useBlinkIdCombinedRecognizer
instead
- We have renamed old
BlinkCardRecognizer
andBlinkCardEliteRecognizer
recognizers toLegacyBlinkCardRecognizer
andLegacyBlinkCardEliteRecognizer
. They are now deprecated. - Interface
CombinedResult
does not provide thegetDocumentDataMatch()
method anymore, this method is moved to the new interfaceCombinedDataMatchResult
.
- We’ve fixed an uncommon bug where you’d get incomplete results upon scanning of the MRZ with the
allowUnparsed
setting enabled. - SDK does not require permission
android.permission.ACCESS_NETWORK_STATE
to unlock itself anymore, in cases when the license key needs online activation.
-
We added support for data extraction from Hungary QR code:
- New
HungaryQrCodePaymentRecognizer
- Support for the Hungary QR code payment standard
- New
-
We have improved parsing of Serbia Barcode:
- We improved parsing for the recipient name, sender’s name and address fields
-
We translated complete SDK to the following additional languages: Malay, Dutch, Hungarian, Slovenian, Indonesian, Arabic(UAE), Romanian, Chinese traditional, Chinese simplified, Thai, Hewrew, Vietnamese, Filipino.
-
We added user feedback when turning ON the flashlight on
BlinkIdOverlayController
:- It warns the user to watch out for flashlight glare.
- It can be disabled by using
BlinkIdUISettings.setShowFlashlightWarning(false)
option.
-
New features and updates in BlinkId(Combined)Recognizer:
- We added
signatureImage
to the result. - We enabled extraction of the date of birth from the NRIC from Malaysian documents.
- We added
-
BlinkIdRecognizer
andBlinkIdCombinedRecognizer
now support new document types from different countries.- All supported document types are listed in
documentation/BlinkIDRecognizer.md
. Also checkdocumentation/BlinkIDRecognizerResult.md
for complete list of fields that we are extracting.
- All supported document types are listed in
-
We added the field
middleName
toBlinkId(Combined)Recognizer
,IdBarcodeRecognizer
andUsdl(Combined)Recognizer
results. This field is extracted from AAMVA standard compliant barcodes, whenever available.
-
We have improved parsing of MRZ formats deviating from the ISO/IEC 7501 standard:
- Document discriminator was in place of the document number on driver licenses and IDs from:
- New York
- Michigan
- Canada
- Different check digit calculation for Mexico (Consular) ID
- Recognition of the unofficial
XCT
country code for Northern Cyprus ID - Recognition of different country codes and check digit calculation on China Mainland Travel Permit for Hong Kong and Macao Residents
- Document discriminator was in place of the document number on driver licenses and IDs from:
-
We have made some improvements to the BlinkID(Combined)Recognizer
- We improved MRZ data extraction on Russia Passport.
- We added anonymization support for more documents.
- You can now see
ProcessingStatus
in the results to inspect potential processing errors, such as when barcode detection fails, a mandatory field is missing, etc. - You can now also see a more detailed
ImageAnalysisResult
showing you when:- Face image is detected
- MRZ is detected
- Barcode is detected
- We added a
RecognitionModeFilter
settings group. You can toggle flags on this object to control the recognition mode of the recognizer:enableMrzId
lets you scan MRZ on all identity documents except visas and passports.enableMrzVisa
lets you scan MRZ on visa documents.enableMrzPassport
lets you scan MRZ on passports.enablePhotoId
lets you scan photo IDs. Use it to enable or disable document and face image extraction on unsupported documents.enableFullRecognition
lets you scan all data from our supported documents.- Your license key still controls which of the above recognition modes are allowed.
- We have added a
RecognitionMode
result member describing which recognition mode was used to produce the results. - We are now retrieving sex and nationality fields from the MRZ in cases where those two fields cannot be found in the document’s VIZ. Previously, we only used to do this for dates, name fields and document numbers.
- We are now preserving the original string (raw data) of the dates we couldn’t parse.
-
We have improved the thresholds for card detection feedback messages ("move closer" and "move farther"). This will improve the UX when scanning in landscape mode as the document can now be closer to the camera.
We have deprecated the following recognizers:
-
PassportRecognizer
,VisaRecognizer
,AustraliaDlFrontRecognizer
,AustriaDlFrontRecognizer
,AustriaIdFrontRecognizer
,BelgiumIdFrontRecognizer
,BruneiIdFrontRecognizer
,ColombiaDlFrontRecognizer
,ColombiaIdFrontRecognizer
,CyprusIdFrontRecognizer
,CyprusOldIdFrontRecognizer
,EgyptIdFrontRecognizer
,EudlRecognizer
,HongKongIdFrontRecognizer
,IndonesiaIdFrontRecognizer
,IrelandDlFrontRecognizer
,ItalyDlFrontRecognizer
,JordanIdFrontRecognizer
,KuwaitIdFrontRecognizer
,MalaysiaDlFrontRecognizer
,MalaysiaIkadFrontRecognizer
,MalaysiaMyKadFrontRecognizer
,MalaysiaMyPrFrontRecognizer
,MalaysiaMyTenteraFrontRecognizer
,MexicoVoterIdFrontRecognizer
,MoroccoIdFrontRecognizer
,NewZealandDlFrontRecognizer
,PolandIdFrontRecognizer
,RomaniaIdFrontRecognizer
,SingaporeDlFrontRecognizer
,SingaporeIdFrontRecognizer
,SloveniaIdFrontRecognizer
,SpainDlFrontRecognizer
,SwedenDlFrontRecognizer
,SwitzerlandIdFrontRecognizer
,UnitedArabEmiratesIdFrontRecognizer
,UnitedArabEmiratesDlFrontRecognizer
- useBlinkIdCombinedRecognizer
orBlinkIdRecognizer
instead -
DocumentFaceRecognizer
,MrtdRecognizer
- useBlinkIdRecognizer
instead -
MrtdCombinedRecognizer
,AustraliaDlBackRecognizer
,AustriaCombinedRecognizer
,AustriaIdBackRecognizer
,BelgiumCombinedRecognizer
,BelgiumIdBackRecognizer
,BruneiIdBackRecognizer
,ColombiaIdBackRecognizer
,CyprusIdBackRecognizer
,CyprusOldIdBackRecognizer
,JordanCombinedRecognizer
,JordanIdBackRecognizer
,KuwaitIdBackRecognizer
,MalaysiaMyKadBackRecognizer
,MoroccoIdBackRecognizer
,NigeriaCombinedRecognizer
,NigeriaVoterIdBackRecognizer
,PolandCombinedRecognizer
,PolandIdBackRecognizer
,SingaporeCombinedRecognizer
,SingaporeIdBackRecognizer
,SloveniaCombinedRecognizer
,SloveniaIdBackRecognizer
,SwitzerlandIdBackRecognizer
,UnitedArabEmiratesIdBackRecognizer
- useBlinkIdCombinedRecognizer
instead
ScanResultListener
interface now has an additional method called when the scanning cannot continue because of an unrecoverable error. You have to implement onUnrecoverableError
method.
If you’re using built-in activities, when onActivityResult
is called with RESULT_CANCELED
result code, the exception will be available via ActivityRunner.EXTRA_SCAN_EXCEPTION
intent extra. If the user canceled the scan, the exception would be null
.
- We have made some changes to the
BlinkIDRecognizer
andBlinkIDCombinedRecognizer
:- We renamed
DocumentImageMoireStatus
toImageAnalysisDetectionStatus
- We grouped the
conditions
member from the results with theDriverLicenseDetailedInfo
structure
- We renamed
- We renamed
RecogitionMode
toRecognitionDebugMode
inRecognizerBundle
.
- We improved the data match logic for Guatemala Consular ID in BlinkId(Combined)Recognizer.
- We fixed race conditions in camera management, which in some cases caused that the camera was unable to resume after it has been paused.
- We fixed an issue in default UI that was causing reticle to reappear while card flip animation was showing.
- We fixed an issue that was causing some methods marked with
@NonNull
to returnnull
. - We made camera permission handling update for Android 11.
-
In
BlinkIdCombinedRecognizer
andBlinkIdRecognizer
we added:-
Support for obtaining full document image for IDs with barcodes. Now you can capture document image and extract barcode data with a single scan.
-
Scanning & data extraction for travel visas and passports.
-
Field validation - we validate if the results from certain fields match predefined character sets.
- If validation fails, the recognizer's state is
Recognizer.Result.State.Uncertain
. - Use
setValidateResultCharacters()
to enable or disable validation.
- If validation fails, the recognizer's state is
-
Support for US documents with vertical orientations:
- Alabama DL
- Arizona DL
- California DL
- Colorado DL
- Connecticut DL
- Georgia DL
- Illinois DL
- Iowa DL
- Kansas DL
- Kentucky DL
- Maryland DL
- Massachusetts DL
- Minnesota DL
- Missouri DL
- New Jersey DL
- Ohio DL
- Pennsylvania DL
- South Carolina DL
- Tennessee DL
- Texas DL
- Utah DL
- Washington DL
- Wisconsin DL
-
Support for new document types:
- Australia New South Wales - ID Card / Front only / BETA
- Brazil - Driver License / BETA
- Brunei - Military ID / BETA
- Brunei - Residence Permit / BETA
- Brunei - Temporary Residence Permit / BETA
- Croatia Health Insurance Card / front side / BETA
- Ecuador ID / front side
- El Salvador ID / BETA
- Ghana - Driver License / Front only
- Latvia - ID Card
- Norway - Driving Licence / Front only / BETA
- Oman - ID Card
- Saudi Arabia - ID Card / BETA
- Sri Lanka ID / BETA
- Sweden - Social Security Card / Front only
- USA - Social Security Card / BETA
- Back side supported:
- Malaysia - MyTentera
-
No longer BETA:
- Australia Tasmania - Driving Licence
- Canada British Columbia - ID Card
- Canada Nova Scotia DL
- Canada Yukon DL - Germany - Residence Permit
- Morocco - ID Card
- Nigeria - Voter ID
- Norway DL
- Singapore - Work Permit
- USA Alaska - ID Card
- USA District Of Columbia - Driver License
- USA Indiana - ID Card
- USA Kentucky - ID Card
-
Back side support:
- Kenya ID
-
Barcode scanning on the following documents:
- Argentina ID
- Colombia ID
- Nigeria Voter ID
- South Africa ID
-
Result anonymization - with this option enabled, results are not returned for protected fields on documents listed here. The full document image will also have this data blacked out.
- Protected fields are:
- Document number on Hong Kong ID
- MRZ on Hong Kong passports
- Personal ID number on Netherlands DL
- Personal ID number and MRZ on Netherlands ID
- MRZ on Netherlands passports
- Document number on Singapore DL, ID, Fin Card, Resident ID
- Personal ID number on Singapore Employment Pass
- Document number and personal ID number on Singapore Work Permit
- MRZ on Singapore passports.
- By using
setAnonymizationMode
method, you can choose theAnonymizationMode
:ImageOnly
,ResultFieldsOnly
,FullResult
orNone
. FullResult
anonymization (both images and data) is set by default.
- Protected fields are:
-
-
We added support for new MRZ formats:
- Guatemala ID
- Kenya ID
-
Improvements in
BlinkIdCombinedRecognizer
andBlinkIdRecognizer
:- Documents discarded with the class filter are now reported as not supported
ClassifierCallback.onDocumentSupportStatus(false)
will be called if a documents is filtered out by theClassFilter
- For Malaysian MyKad we are now returning if a Moire pattern is present on the scanned document (detected or not detected).
- use
getImageAnalysisResult().getDocumentImageMoireStatus()
inBlinkIdRecognizer
. - use
getFrontImageAnalysisResult().getDocumentImageMoireStatus()
andgetBackImageAnalysisResult().getDocumentImageMoireStatus()
inBlinkIdCombinedRecognizer
.
- use
- Documents discarded with the class filter are now reported as not supported
-
We made changes to the result structure of
BlinkIdCombinedRecognizer
andBlinkIdRecognizer
:- Barcode data is now encapsulated in its own result structure:
BarcodeResult
. - Data from all OCR-ed fields, without MRZ data, is now encapsulated in a
VizResult
structure, representing the "Visual Inspection Zone" data. InBlinkIdCombinedRecognizer
, front side data is available in its own structure (frontVizResult
), back side data in its own (backVizResult
), so you can now access data from each side separately. - The main part of the result, outside these structures, is filled according to these rules:
- Document number is filled with data from the MRZ, if present.
- Remaining data is then filled with barcode data.
- Remaining data is filled from the back side's visual inspection zone (OCR data outside of MRZ).
- Remaining data is filled from the front side's visual inspection zone.
- Remaining data is filled with data from the MRZ.
- Barcode data is now encapsulated in its own result structure:
-
We added digital signature support to
PassportRecognizer
. -
We updated
IdBarcodeRecognizer.Result
with specific driving license info.- Use
getRestrictions()
,getEndorsements()
andgetVehicleClass()
.
- Use
-
We updated
UsdlRecognizer.Result
andIdBarcodeRecognizer.Result
with additional address fields:street
,postalCode
,city
andjurisdiction
-
We added
isExpired()
method toBlinkIdRecognizer.Result
,BlinkIdCombinedRecognizer.Result
andIdBarcodeRecognizer.Result
.- It compares the current time on the device with the date of expiry and checks whether the document has expired or not.
-
We enabled usage of combined recognizers through the Direct API:
- Recognition state is not automatically reset with every image that comes to the recognition through the Direct API. If reset is required, you should call
RecognizerRunner.resetRecognitionState()
- Recognition state is not automatically reset with every image that comes to the recognition through the Direct API. If reset is required, you should call
- We renamed
EMailParser
toEmailParser
. - We renamed some methods:
- In
LicensePlatesParser
:getLicensePlateString
togetLicensePlate
. - In
RegexParser
:isUsingSieve
toshouldUseSieve
,setMustStartWithWhitespace
tosetStartWithWhitespace
,isMustStartWithWhitespace
toshouldStartWithWhitespace
,setMustEndWithWhitespace
tosetEndWithWhitespace
,isMustEndWithWhitespace
toshouldEndWithWhitespace
. - In
RawParser
:isUsingSieve
toshouldUseSieve
.
- In
- We moved
BlinkIdRecognizer.Result
membercolorStatus
to the result'simageAnalysisResult
(frontImageAnalysisResult
andbackImageAnalysisResult
inBlinkIDCombinedRecognizer.Result
). - We changed default
IntentDataTransferMode
toIntentDataTransferMode.PERSISTED_OPTIMISED
. It can be configured by usingMicroblinkSDK.setIntentDataTransferMode
.
- We fixed bug in IBAN parsing which caused that reference number was sometimes read as part of the IBAN number.
- We fixed amount extraction in
SerbiaQrCodePaymentRecognizer
andSerbiaPdf417PaymentRecognizer
. - We fixed bug in
BlinkIdCombinedRecognizer
andBlinkIdRecognizer
which caused that dates on Belgian ID cards are not parsed correctly in cases when month is July. - We fixed US driver's license address extraction (Oregon, Mississippi, Rhode Island).
- We fixed a bug which caused that, in some cases, camera has not been resumed after the device screen was turned OFF and back ON.
- We added a new recognizer specialized for scanning and parsing barcodes on various identity cards -
IdBarcodeRecognizer
. Supported document types are:- AAMVA compliant (US DL, Canada DL, etc.)
- Argentina ID
- Panama ID
- Colombia ID
- South Africa ID
- Nigeria Voter ID and driver license
- We added age verification feature:
- Now you can more easily obtain the age of the document owner in years and check whether it is above some age limit.
- Use
age
andageLimitStatus
helper methods inMrzResult
,BlinkIdRecognizer.Result
,BlinkIdCombinedRecognizer.Result
,UsdlRecognizer.Result
,UsdlCombinedRecognizer.Result
, andIdBarcodeRecognizer.Result
.
- We added the option to disable Microblink logs in the console output. Use
LoggingSettings.disableMicroblinkLogging()
. 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 SDK or anything unmentioned, we will need a full log from your side. If you disable Microblink logging, you won't be able to provide us this information. Hence support might be limited.
-
We have translated complete SDK to following languages: Croatian, Czech, English, French, German, Italian, Portuguese, Slovak, and Spanish.
-
We added support for non-standard (floating point) amounts in QR code
-
We enabled reading of ITF barcodes with length 4
-
We added support for new document types in
BlinkIdCombinedRecognizer
andBlinkIdRecognizer
:- Australia - Australian Capital Territory - Driving licence / front only
- Australia - Northern Territory - Driving licence / BETA
- Australia - Tasmania - Driving licence / front only / BETA
- Canada - Alberta - ID card / BETA
- Canada - British Columbia - Driver license / Public services card (Combined)
- Canada - British Columbia - ID card / BETA
- Canada - British Columbia - Public services card
- Canada - New Brunswick - Driving license
- Canada - Nova Scotia - Driving license / BETA
- Canada - Yukon - Driving license / BETA
- Panama - Driving license / front only / BETA
- Panama - ID card / front only
- Singapore - Work permit / BETA
- Taiwan - ID card / front only / BETA
- USA - Alabama - ID card
- USA - Alaska - ID card / BETA
- USA - District Of Columbia - Driver license / BETA
- USA - Idaho - ID card / BETA
- USA - Indiana - ID card / BETA
- USA - Kentucky - ID card / BETA
- USA - Massachusetts - ID card
- USA - Oregon - ID card
- USA - Washington - ID card
- We added support for back side to:
- Australia - Western Australia - Driving licence
- Mexico - Voter ID
- Netherlands - Driving licence
-
Additional improvements in
BlinkIdCombinedRecognizer
andBlinkIdRecognizer
:- When the back side of the document is not fully supported by the
BlinkIdCombinedRecognizer
, we will capture and return the back side image without performing data extraction. You can disable this behaviour by usingBlinkIdCombinedRecognizer.setSkipUnsupportedBack(true)
. - We are now returning color status for the scanned document (black and white or color) in the following result fields:
documentImageColorStatus
inBlinkIdRecognizer.Result
.documentFrontImageColorStatus
anddocumentBackImageColorStatus
inBlinkIdCombinedRecognizer.Result
.
- We are now returning
ClassInfo
which holds the following information about the scanned document:Country
,Region
, andType
of the document. UseBlinkIdRecognizer.Result.getClassInfo()
andBlinkIdCombinedRecognizer.Result.getClassInfo()
. - We introduced
ClassFilter
which determines whether a document should be processed or is filtered out, based on itsClassInfo
. UseBlinkIdRecognizer.setClassFilter
andBlinkIdCombinedRecognizer.setClassFilter
to enable it. - To improve the scanning performance, we added additional feedback for users that ensures a detected document is entirely inside the frame. When a document is too close to the edge of the camera frame, we will display an appropriate message to the user in
BlinkIdOverlayController
. You can configure the minimum distance from the edge of the frame by using thepaddingEdge
settings method. - We added new recognizer options:
allowUnparsedMrzResults
andallowUnverifiedMrzResults
- We added new result field:
dateOfExpiryPermanent
- When the back side of the document is not fully supported by the
-
We added new result fields in
MrzResult
, returned by all recognizers which scan MRZ (Machine Readable Zone):issuerName
nationalityName
-
Improvements in
BlinkIdOverlayController
:- When a document is too close to the edge of the camera frame, we display
Move the document from the edge
message. - We added better user instructions when barcodes are being scanned in
UsdlCombinedRecognizer
. We displayScan the barcode
message.
- When a document is too close to the edge of the camera frame, we display
-
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-used
directory.
- We removed
RecognizerRunnerView
custom attributes:mb_initialOrientation
andmb_aspectMode
. UseRecognizerRunnerView.setInitialOrientation
andRecognizerRunnerView.setAspectMode
to configure the attributes in the code. - All provided scan activities extend
AppCompatActivity
- We fixed bug in
BlinkIdOverlayController
which caused thatMrtdRecognizer.Result
is cleared after scanning is done and empty result is returned. - We fixed crash when using Direct API on high resolution
com.microblink.image.Image
from `HighResImageWrapper
- SDK has been migrated to AndroidX dependencies - previous SDK dependency com.android.support:appcompat-v7 has been replaced with androidx.appcompat:appcompat
- added support for capturing cropped images (without data extraction) of documents of any format:
- use
DocumentCaptureRecognizer
andDocumentCaptureUISettings
DocumentCaptureUISettings
launches activity that usesDocumentCaptureOverlayController
, which is designed for taking high resolution document images and guides the user through the image capturing process. It can be used only withDocumentCaptureRecognizer
.
- use
BlinkIdRecognizer
andBlinkIdCombinedRecognizer
now support new document types from different countries, all supported document types are listed here- Updated
BelgiumCombinedRecognizer
:- added
nationalRegisterNumber
to result
- added
- added support for reading front and back side of Nigerian Voter ID card - use
NigeriaCombinedRecognizer
- new options in
BlinkIdUISettings
,DocumentUISettings
,DocumentVerificationUISettings
andBlinkIdOverlaySettings
:- option to disable displaying of "Document Not Supported" dialog when
BlinkIdRecognizer
orBlinkIdCombinedRecognizer
is used in combination with other recognizers - use methodsetShowNotSupportedDialog
- option to configure back side scanning timeout - use
setBackSideScanningTimeoutMs
- option to disable displaying of "Document Not Supported" dialog when
- it is possible to set theme that will be used by activity, launched from the UISettings - use UISettings.setActivityTheme
- overall size impact on application reduced for almost 5 MB when PhotoPay SDK v7.7 is used, relative to size impact of the previous v7.5
- improved
SwitzerlandSlipRecognizer
:- new result member
ocrLineResult
which returns raw OCR line
- new result member
- improved
BelgiumSlipRecognizer
:- better
amount
andreference
extraction - now it is possible to enable/disable reading of free form, unstructured references - use
BelgiumSlipRecognizer.setFreeFormReferenceEnabled
- better
- improved
BlinkCardRecognizer
:- now extracts IBAN from the Payment / Debit card
- added option to anonymize Netherlands MRZ area in document image returned by the
PassportRecognizer
- usePassportRecognizer.setAnonymizeNetherlandsMrz(true)
- enabled setting
MrzFilter
onMrtdCombinedRecognizer
:- determines whether document should be processed or it is filtered out, based on its MRZ (Machine Readable Zone)
- this feature is also available for
MrtdRecognizer
- added property
localizedName
toBlinkIdRecognizer.Result
,BlinkIdCombinedRecognizer.Result
andHongKongIdFrontRecognizer.Result
(CCC to chinese alphabet conversion for Hong Kong ID) - enabled digital signing of
BlinkIdCombinedRecognizer.Result
- improved
VinParser
:- added support for Renewal Identification Number (RIN) - DMV California format
- added new fields in
MrzResult
:sanitizedDocumentCode
sanitizedDocumentNumber
- improved
BlinkIdRecognizer
andBlinkIdCombinedRecognizer
:- introduced blur filter that discards blurred frames and prevents reading data from them. This option is enabled by default, it can be disabled by using
BlinkIdRecognizer.setAllowBlurFilter(false)
andBlinkIdCombinedRecognizer.setAllowBlurFilter(false)
- introduced blur filter that discards blurred frames and prevents reading data from them. This option is enabled by default, it can be disabled by using
- improved camera performance on some Samsung devices
MrzFilter
now acceptsMrzResult
for filtering, previously filtering has been performed based on the givenMrtdRecognizer
result.RecognizerRunner.getSingletonInstance()
does not throwFeatureNotSupportedException
anymore- all scan activity classes are final now
- in combined recognizers results,
documentDataMatch
value is now returned asDataMatchResult
enum with three possible values:NotPerformed
,Failed
andSuccess
- new API for configuring camera options on
UISettings
- useUISettings.setCameraSettings
, which accepts object ofCameraSettings
type
- fixed issue with utf8 encoding in SloveniaQrCodePaymentRecognizer
- fixed problems with aspect ratio of camera preview on Huawei Mate 10
- fixed bug in
BlinkCardRecognizer
:anonymizeCvv
now works independently of any other anonymization setting
BlinkIdCombinedRecognizer
- fixed issue when the front side of a document was returned as a back side
- added
BlinkIdRecognizer
for scanning front side of ID cards andBlinkIdCombinedRecognizer
for combined scanning of front and back side of ID cards- for now, these recognizers classify and extract data from 87 different classes of United States driver's licenses and IDs (front and back side)
- list of all supported document types can be found here
- in the upcoming releases, we are planning to add support for more document types from different countries
- completely new UX for scanning ID cards with new scan activity and overlay:
BlinkIdActivity
andBlinkIdOverlayController
:- best suited for scanning with
BlinkIdRecognizer
andBlinkIdCombinedRecognizer
- other single side and combined document recognizers are also supported
- best suited for scanning with
- added support for reading back side of Nigerian Voter ID card - use
NigeriaVoterIdBackRecognizer
- added support for reading front and back side of Belgium ID - use
BelgiumIdFrontRecognizer
,BelgiumIdBackRecognizer
andBelgiumCombinedRecognizer
- added support for reading all visa documents containing Machine Readable Zone - use
VisaRecognizer
- improved
MrtdRecognizer
:- added support for documents with non-binary gender specification (symbol X)
- improved
DocumentFaceRecognizer
:- improved scanning time (faster scan)
- added support for vertical IDs
- removed the
tryBothOrientations
option (improved scan in all directions is enabled by default)
- improved scanning time (faster scan) for
PassportRecognizer
- improved
RomaniaIdFrontRecognizer
- now extracts
CNP
number
- now extracts
- improved
SloveniaIdFrontRecognizer
andSloveniaCombinedRecognizer
:- return boolean flag which indicates whether date of expiry is permanent - use
SloveniaIdFrontRecognizer.Result.isDateOfExpiryPermanent()
andSloveniaCombinedRecognizer.Result.isDateOfExpiryPermanent()
- return boolean flag which indicates whether date of expiry is permanent - use
- improved
GermanyPassportRecognizer
:- better passport classification
- improved
ColombiaIdFrontRecognizer
:- support for document number in format 1-3-3
- improved
SlovakiaIdFrontRecognizer
:- support for German letters
- Malaysia:
MalaysiaMyTenteraFrontRecognizer
supports 6-digit army numberMalaysiaIkadFrontRecognizer
- better extraction of the following fields (DeepOCR support): date of birth, sector, employer, address and date of expiry
- United Arab Emirates:
- glare detection is disabled by default for
UnitedArabEmiratesIdFrontRecognizer
andUnitedArabEmiratesIdBackRecognizer
UnitedArabEmiratesIdBackRecognizer
- optimized detection for black backgrounds
- glare detection is disabled by default for
- renamed following recognizers:
CroatiaPdf417Recognizer
toCroatiaPdf417PaymentRecognizer
CroatiaQrCodeRecognizer
toCroatiaQrCodePaymentRecognizer
SepaQrCodeRecognizer
toSepaQrCodePaymentRecognizer
SlovakiaCode128Recognizer
toSlovakiaCode128PaymentRecognizer
SlovakiaDataMatrixRecognizer
toSlovakiaDataMatrixPaymentRecognizer
SlovakiaQrCodeRecognizer
toSlovakiaQrCodePaymentRecognizer
SloveniaQrCodeRecognizer
toSloveniaQrCodePaymentRecognizer
SwitzerlandQrCodeRecognizer
toSwitzerlandQrCodePaymentRecognizer
UnitedKingdomQrCodeRecognizer
toUnitedKingdomQrCodePaymentRecognizer
- overlay controllers are no longer using UI settings, they're now using Overlay settings, you can create Overlay controller from UI settings by calling method
uiSettings.createOverlayController
PhotopayOverlayController
,DocumentOverlayController
andBarcodeOverlayController
are replaced with single overlay controller -BasicOverlayController
- moved some classes to new packages
- removed
WindowedOcrLineUISettings
BarcodeScanActivity
no longer supports results dialog- verification activities no longer support action bar built in obsolete activity themes
- fixed bug in
SloveniaQrCodePaymentRecognizer
which caused invalid parsing - all default scan activities correctly set volume to media instead of ring
- all default scan activities now apply secure flag if enabled in ui settings
- added support for reading all passports with MRZ - use
PassportRecognizer
- added
tryBothOrientations
option toDocumentFaceRecognizer
which defines whether document will be scanned in both orientations (normal and upside down) GermanyCombinedRecognizer.Result
:- added getter for the full MRZ string:
getRawMrzString
- added getter for the full MRZ string:
- added support for reading commercial code in two rows for
HongKongIdFrontRecognizer
- added support for
HongKongIdFrontRecognizer
2018 version - improved reading accuracy for the following recognizers (DeepOCR support):
MalaysiaIKadFrontRecognizer
- improved scanning time of all Malaysian ID front recognizers:
MalaysiaMyKadFrontRecognizer
,MalaysiaMyKasFrontRecognizer
,MalaysiaMyPrFrontRecognizer
,MalaysiaMyTenteraFrontRecognizer
- Scanning timeout that can be configured by using
RecognizerBundle.setNumMsBeforeTimeout
is by default set toRecognizerBundle.TIMEOUT_INFINITY
, which means that timeout is disabled by default. Previous default timeout value was 10 seconds.
ColombiaIdBackRecognizer
- fixed result strings encoding problem- DPI options on images are now correctly applied to dewarped image results in
DocumentFaceRecognizer.Result
- fixed a validation issue for the gender field in
SloveniaCombinedRecognizer
- fixed scanning bug for devices with problematic camera resolution, which caused that SDK was unable to scan data, known affected devices were:
OnePlus 6T
,OnePlus 7 Pro
andVivo V15
Important notice on MRTD recognizer in the latest PhotoPay SDK release (v7.3.0)
Please note that we have significantly improved accuracy for MRZ/MRTD scanning because now we switched to the newest OCR technology based on machine learning. To be more precise, we measured and compared existing vs. new MRTD scanning. The new OCR system based on machine learning achieves 99.9% accuracy on the character level, which results with a 50% reduction in the error rate in MRZ extraction.
In order to use new MrtdRecognizer or MrtdCombinedRecognizer or to continue using any additional Recognizer for scanning any ID with the MRZ (machine readable zone) within the latest PhotoPay SDK update, you must have a new license key. Before updating to the SDK version 7.3.0, please contact your account manager or send an email to [email protected] to obtain the new production license key.
Important notes:
- The MRTD scanning with the older PhotoPay SDK versions (v7.2.0 and below) will continue to work without any problems - until you decide to update.
- If you upgrade to the SDK version 7.3.0 without a new license key scanning of MRTD/MRZ documents will not work.
- Contact us at [email protected] to obtain a new license key if you plan to update your app with the latest release.
For any questions, you might have, we stand at your service.
- added support for reading front and back side of Brunei Military ID - use
BruneiMilitaryIdFrontRecognizer
andBruneiMilitaryIdBackRecognizer
- added support for reading front and back side of Brunei Temporary Residence Permit - use
BruneiTemporaryResidencePermitFrontRecognizer
andBruneiTemporaryResidencePermitBackRecognizer
- added new scan activity and overlay:
BlinkCardActivity
andBlinkCardOverlayController
which are best suited for scanning payment cards withBlinkCardRecognizer
- improved reading accuracy for all MRZ recognizers
- added option to force overlay orientation for
PhotopayOverlayController
(PhotopayActivity
),DocumentOverlayController
(DocumentScanActivity
) andBarcodeOverlayController
(BarcodeScanActivity
) - usePhotopayUISettings.setForcedOrientation(OverlayOrientation)
,DocumentUISettings.setForcedOrientation(OverlayOrientation)
andBarcodeUISettings.setForcedOrientation(OverlayOrientation)
- enabled reading year-only dates of birth on Kuwait IDs
- improved
SingaporeIdBackRecognizer
:- better reading of documents with sticker
- improved
MrtdRecognizer
:- added
allowSpecialCharacters
option which is required for parsing Malaysian Passport IMM13P MRZ type
- added
- all recognizers now reset their results on shake, except Combined recognizers
BlinkCardRecognizer
returns card issuer
- renamed
com.microblink.entities.recognizers.photopay.austria.qr.AustriaQrCodeRecognizer
tocom.microblink.entities.recognizers.photopay.austria.AustriaQrCodePaymentRecognizer
and fields in itsResult
:IBAN
toiban
BIC
tobic
referenceNumber
toreference
- renamed
com.microblink.entities.recognizers.photopay.germany.qr.GermanyQrCodeRecognizer
tocom.microblink.entities.recognizers.photopay.germany.GermanyQrCodePaymentRecognizer
and updated fields in itsResult
:authority
is returned asString
- renamed fields:
IBAN
toiban
BIC
tobic
paymentReference
toreference
BLZ
tobankCode
- added fields:
creditorId
dateOfSignature
displayData
formFunction
formType
formVersion
mandateId
periodicFirstExecutionDate
periodicLastExecutionDate
periodicTimeUnit
periodicTimeUnitRotation
postingKey
- renamed
com.microblink.entities.recognizers.photopay.kosovo.code128.KosovoCode128Recognizer
tocom.microblink.entities.recognizers.photopay.kosovo.KosovoCode128PaymentRecognizer
and updated fields in itsResult
:- removed
currency
field - renamed fields:
payerAccount
topayerAccountNumber
referenceNumber
toreference
slipID
toslipId
- removed
- removed
SerbiaIdFrontRecognizer
,SerbiaIdBackRecognizer
andSerbiaCombinedRecognizer
- fields that are not deprecated anymore:
- Sweden DL - reference number
- Ireland DL - driver number
- Malaysia iKad - passport number
- Hong Kong ID - commercial code
- deprecated the following methods in
UsdlRecognizer.Result
andUsdlCombinedRecognizer.Result
: (they have been replaced with new getters):- getField(UsdlKeys)
- getOptionalElements
- added new getters to following results:
UsdlRecognizer.Result
andUsdlCombinedRecognizer.Result
:firstName
lastName
fullName
address
documentNumber
sex
restrictions
endorsements
vehicleClass
dateOfBirth
dateOfIssue
dateOfExpiry
MrzResult
:sanitizedOpt1
sanitizedOpt2
sanitizedNationality
sanitizedIssuer
- moved
SwedenDlFrontRecognizer
from packagecom.microblink.entities.recognizers.blinkid.sweden.dl
tocom.microblink.entities.recognizers.blinkid.sweden
- renamed methods in the following recognizers and its results:
CzechiaCombinedRecognizer
:lastName
tosurname
firstName
togivenNames
identityCardNumber
todocumentNumber
address
topermanentStay
issuingAuthority
toauthority
personalIdentificationNumber
topersonalNumber
GermanyCombinedRecognizer
:lastName
tosurname
firstName
togivenNames
identityCardNumber
todocumentNumber
issuingAuthority
toauthority
eyeColor
tocolourOfEyes
JordanCombinedRecognizer
:issuer
toissuedBy
PolandCombinedRecognizer
:issuer
toissuedBy
RomaniaIdFrontRecognizer
:lastName
tosurname
cardNumber
todocumentNumber
fromMrzResult
parentNames
toparentName
nonMRZNationality
tonationality
nonMRZSex
tosex
validFrom
todateOfIssue
validUntil
todateOfExpiry
- removed field
idSeries
- removed field
cnp
- MRZ fields are available through
MrzResult
which can be obtained by using getterRomaniaIdFrontRecognizer.Result.getMrzResult()
SlovakiaCombinedRecognizer
:issuingAuthority
toissuedBy
personalIdentificationNumber
topersonalNumber
SloveniaIdFrontRecognizer
:lastName
tosurname
firstName
togivenNames
SloveniaIdBackRecognizer
:authority
toadministrativeUnit
- MRZ fields are available through
MrzResult
which can be obtained by using getterSloveniaIdBackRecognizer.Result.getMrzResult()
SloveniaCombinedRecognizer
:lastName
tosurname
firstName
togivenNames
identityCardNumber
todocumentNumber
citizenship
tonationality
issuingAuthority
toadministrativeUnit
personalIdentificationNumber
topin
MrtdRecognizer
andMrtdCombinedRecognizer
do not return MRZ image any moreMrtdComginedRecognizer
does not have glare detection options (it does not detect glare anymore)- replaced
PaymentCardFrontRecognizer
,PaymentCardBackRecognizer
andPaymentCardCombinedRecognizer
with single recognizer -BlinkCardRecognizer
- replaced
ElitePaymentCardFrontRecognizer
,ElitePaymentCardBackRecognizer
andElitePaymentCardCombinedRecognizer
with single recognizer -BlinkCardEliteRecognizer
PolandIdBackRecognizer.Result
does not extendMRTDResult
any more, it has gettergetMrzResult
for obtaining MRZ results
- fixed bug in
SlovakiaQrCodeRecognizer
- fixed bug in
IbanParser
for Romanian IBANs - removed incorrect autofocus check that was performed before concrete camera type is chosen
MrtdRecognizer
: result state is now properly invalidated after detection fails- various other bug fixes and improvements
- added support for reading front side of Italy Driver's License - use
ItalyDlFrontRecognizer
- added standalone recognizer for reading front side of Austria Driver's License - use
AustriaDlFrontRecognizer
- added support for reading front and back side of elite Payment / Debit cards - use
ElitePaymentCardFrontRecognizer
,ElitePaymentCardBackRecognizer
andElitePaymentCardCombinedRecognizer
- added standalone recognizer for reading front side of German Driver's License - use
GermanyDlFrontRecognizer
- added support for reading back side of Germany Driver's License (reading of single B10 field - date of issue for B category) - use
GermanyDlBackRecognizer
- added support for reading front side of Mexico Voter ID - use
MexicoVoterIdFrontRecognizer
- added support for reading front and back side of Brunei ID - use
BruneiIdFrontRecognizer
andBruneiIdBackRecognizer
- added support for reading front and back side of Cyprus ID, issued after 2015. - use
CyprusIdFrontRecognizer
andCyprusIdBackRecognizer
- added support for reading front side of Malaysian MyKAS - use
MalaysiaMyKasFrontRecognizer
- added support for reading front side of Malaysian MyPR - use
MalaysiaMyPrFrontRecognizer
- added support for reading front and back side of Brunei Residence Permit - use
BruneiResidencePermitFrontRecognizer
andBruneiResidencePermitBackRecognizer
- enabled capturing high resolution camera frames:
- when custom UI integration is performed, use
RecognizerRunnerView.setHighResFrameCaptureEnabled
andRecognizerRunnerView.captureHighResImage
- 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
. ConcreteUISettings
which implement interfaceHighResSuccessFrameCaptureUIOptions
support this feature.
- when custom UI integration is performed, use
- updated default icons in scan activities/overlays
- improved
CzechiaQrCodeRecognizer
:- support for default currency
- improved
SwitzerlandSlipRecognizer
- improved
SerbiaQrCodePaymentRecognizer
andSerbiaPdf417PaymentRecognizer
:- support for new Serbian QR code standard
- added result members:
identificationCode
,payerAccountNumber
,paymentCode
,merchantCodeCategory
,oneTimePaymentCode
,merchantReference
andrawBarcodeData
- renamed result member: accountNumber to recipientAccountNumber
- improved QR code scanning for images
- improved
MalaysiaDlFrontRecognizer
:- added support for reading Malaysia Dl for foreigners
- improved
UsdlRecognizer
:- added support for reading dates on Nigerian Driver's licenses
- added support for setting full document image extension factors for almost all ID document recognizers, they implement interface
FullDocumentImageExtensionOptions
- added support for setting the number of stable detections threshold on
DocumentFaceRecognizer
and recognizers which use it internally:MrtdCombinedRecognizer
andUsdlCombinedRecognizer
- usesetNumStableDetectionsThreshold(int)
. This can help to avoid returning of blurry images. - improved
EudlRecognizer
:- better reading accuracy for UK Driver's license
- improved reading accuracy for the following recognizers (DeepOCR support):
CroatiaIdFrontRecognizer
CroatiaIdBackRecognizer
HongKongIdFrontRecognizer
IndonesiaIdFrontRecognizer
MalaysiaMyKadFrontRecognizer
MalaysiaMyKadBackRecognizer
MalaysiaMyTenteraFrontRecognizer
MalaysiaDlFrontRecognizer
NewZealandDlFrontRecognizer
SingaporeIdFrontRecognizer
SingaporeIdBackRecognizer
SingaporeDlFrontRecognizer
- improved DeepOCR accuracy
- added support for hiding sensitive parts of images returned by payment card recognizers:
PaymentCardFrontRecognizer
: setAnonymizeOwner, setAnonymizeCardNumberPaymentCardBackRecognizer
: setAnonymizeCvvPaymentCardCombinedRecognizer
: setAnonymizeOwner, setAnonymizeCardNumber, setAnonymizeCvvElitePaymentCardFrontRecognizer
: setAnonymizeOwnerElitePaymentCardBackRecognizer
: setAnonymizeCardNumber, setAnonymizeCvvElitePaymentCardBackRecognizer
: setAnonymizeOwner, setAnonymizeCardNumber, setAnonymizeCvv
SlovakiaIdFrontRecognizer
: improved reading ofpersonalNumber
field- 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
DocumentVerificationActivity
does not extendAppCompatActivity
any more- improved
PaymentCard
recognizers:- better OCR and data extraction
- added support for reading payment card numbers in 4x6x4 and 4x6x5 format
- improveed UAE recognizers:
- glare detection is enabled for all images returned from
UnitedArabEmiratesDlFrontRecognizer
,UnitedArabEmiratesIdBackRecognizer
andUnitedArabEmiratesIdFrontRecognizer
recognizers
- glare detection is enabled for all images returned from
- improved
MrtdRecognizer
:- added option to set extension factors for full document image: use method
setFullDocumentImageExtensionFactors
- added option to encode
fullDocumentImage
andmrzImage
to JPEG and save them toMrtdRecognizer.Result
: usesetEncodeMrzImage
andsetEncodeFullDocumentImage
to enable encoding
- added option to set extension factors for full document image: use method
RecognizerRunnerView
is lifecycle-aware now, it implementsandroid.arch.lifecycle.LifecycleObserver
interface
- renamed methods in
SingaporeIdFrontRecognizer
and itsResult
:bloodType
tobloodGroup
- renamed methods in
GermanyIdFrontRecognizer
and itsResult
:lastName
tosurname
firstName
togivenNames
- renamed
MyTenteraRecognizer
toMalaysiaMyTenteraFrontRecognizer
and methods in recognizer and itsResult
:ownerFullName
->fullName
ownerAddress
->fullAddress
ownerAddressStreet
->street
ownerAddressZipCode
->zipcode
ownerAddressCity
->city
ownerAddressState
->ownerState
ownerBirthDate
->birthDate
ownerSex
->sex
ownerReligion
->religion
nricNumber
->nric
- renamded enum
com.microblink.uisettings.options.ShowOcrResultMode
tocom.microblink.uisettings.options.OcrResultDisplayMode
- for all
UISettings
classes which support setting of OCR result display mode, renamed methodsetShowOcrResultMode
tosetOcrResultDisplayMode
- renamed
IkadRecognizer
toMalaysiaIkadFrontRecognizer
and methods in recognizer and itsResult
:expiryDate
todateOfExpiry
sex
togender
- renamed
MyKadFrontRecogniezer
toMalaysiaMyKadFrontRecognizer
and methods in recognizer and itsResult
:ownerFullName
tofullName
ownerAddress
tofullAddress
addressStreet
tostreet
ownerAddressZipCode
tozipcode
ownerAddressCity
tocity
ownerAddressState
toownerState
ownerBirthDate
tobirthDate
ownerSex
tosex
ownerReligion
toreligion
nricNumber
tonric
MalaysiaMyKadFrontRecognizer
does not extractarmyNumber
anymore, useMalaysiaMyTenteraFrontRecognizer
for scanningMyTentera
- removed
sex
andsignatureImage
fromMalaysiaMyKadBackRecognizer
MrtdRecognizer
:- method
setSaveImageDPI
which has been used to set DPI for full document and MRZ image is replaced with methodssetFullDocumentImageDpi
andsetMrzImageDpi
- method
- renamed methods in
SwitzerlandIdBackRecognizer
and itsResult
:nonMrzDateOfExpiry
todateOfExpiry
nonMrzSex
tosex
- renamed methods in
SwitzerlandPassportRecognizer
and itsResult
:placeOfBirth
toplaceOfOrigin
nonMrzDateOfBirth
todateOfBirth
nonMrzDateOfExpiry
todateOfExpiry
nonMrzSex
tosex
- renamed
GermanyOldIdRecognizer
toGermanyIdOldRecognizer
- renamed methods in
CroatiaCombinedRecognizer
and its result:identityCardNumber
todocumentNumber
address
toresidence
issuingAuthority
toissuedBy
personalIdentificationNumber
tooib
nonResident
todocumentForNonResident
- removed
mrzImage
fromMrtdCombinedRecognizer
and its result - renamed methods in
AustraliaDlFrontRecognizer.Result
:name
tofullName
dateOfExpiry
tolicenceExpiry
- renamed
eyeColour
tocolourOfEyes
inGermanyIdBackRecognizer.Result
- deprecated the following recognizers:
SerbiaIdBackRecognizer
SerbiaIdFrontRecognizer
SerbiaCombinedRecognizer
- deprecated the following result fields:
HongKongIdFrontRecognizer.Result
:commercialCode
IndonesiaIdFrontRecognizer.Result
:bloodType
district
kelDesa
rt
rw
NewZealandDlFrontRecognizer.Result
:donorIndicator
cardVersion
MalaysiaMyKadBackRecognizer.Result
:extendedNric
MexicoVoterIdFrontRecognizer.Result
:electorKey
IrelandDlFrontRecognizer.Result
:driverNumber
SwedenDlFrontRecognizer.Result
:referenceNumber
MalaysiaIkadFrontRecognizer.Result
:passportNumber
AustriaIdBackRecognizer.Result
:principalResidence
height
eyeColour
AustriaPassportRecognizer.Result
:height
GermanyIdBackRecognizer.Result
:colourOfEyes
height
SwitzerlandIdBackRecognizer.Result
:height
SwitzerlandPassportRecognizer.Result
:height
SingaporeIdBackRecognizer.Result
:bloodGroup
ColombiaIdBackRecognizer.Result
:bloodGroup
SwitzerlandPassportRecognizer.Result
:height
PolandIdFrontRecognizer.Result
:familyName
parentsGivenNames
MoroccoIdBackRecognizer.Result
:fathersName
mothersName
RomaniaIdFrontRecognizer.Result
:parentNames
DocumentFaceRecognizer
now correctly applies DPI settings to returned face and full document images- various other bug fixes and improvements
- fixed camera autofocus problems on Samsung S9/S9+ when optimisation for near scanning is enabled
- fixed autofocus problems in
Field by field
scanning on Huawei P20 pro, Huawei P20 and Huawei P20 lite
- 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 Singapore Changi employee ID - use
SingaporeChangiEmployeeIdRecognizer
- added support for reading back side of Morocco ID - use
MoroccoIdBackRecognizer
- 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
- added support for reading front side of Ireland Driver's License - use
IrelandDlFrontRecognizer
- added support for reading front side of Colombia Driver's License - use
ColombiaDlFrontRecognizer
- improved reading of Croatia Pdf417 payment barcode -
CroatiaPdf417Recognizer
- improved
SwitzerlandSlipRecognizer
:- added getter for
currencyCode
to its Result
- added getter for
- 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
NewZealandDlFrontRecognizer
:- better reading of all fields
- improved
SingaporeCombinedRecognizer
:- added support for reading sticker with new address from the back side
BarcodeScanActivity
by default does not show result dialog after scan- improved
MrtdCombinedRecognizer
:- added option to allow unparsed and unverified MRZ results - use
MrtdCombinedRecognizer.setAllowUnparsedResults
andMrtdCombinedRecognizer.setAllowUnverifiedResults
- added option to allow unparsed and unverified MRZ results - use
- improved reading of Malaysian Driver's License
- in
CroatiaIdFrontRecognizer
identityCardNumber
is renamed todocumentNumber
HongKongIdFrontRecognizer.Result.getDateOfBirth()
andHongKongIdFrontRecognizer.Result.getDateOfIssue()
returncom.microblink.results.date.DateResult
instead ofcom.microblink.results.date.Date
- in
SingaporeIdBackRecognizer.Result
gettergetBloodGroup()
is renamed togetBloodType()
- renamed getters in
NewZealandDlFrontRecognizer.Result
renamed getters:getIssueDate()
togetDateOfIssue()
getExpiryDate()
togetDateOfExpiry()
getDonorIndicator()
toisDonorIndicator()
- 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
- renamed methos in
MalaysiaDlFrontRecognizer
and itsResult
:state
toownerState
zipCode
tozipcode
- renamed methos in
IndonesiaIdFrontRecognizer
and itsResult
:validUntil
todateOfExpiry
validUntilPermanent
todateOfExpiryPermanent
- 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:
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
- Added support for reading front side of Morocco identity documents
- Added support for reading front side of Singapore driver's licences
- Added support for reading front side of Swiss driver's licenses
- Slovak payBySquare QR code recognizer now supports returning multiple payment informations with multiple account numbers. This feature was not possible to achieve with the 6.x API.
- Czech payment QR code recognizer now supports returning multiple account numbers, if available within the QR code. This feature was not possible to achieve with the 6.x API.
- improved scanning of United Arab Emirates ID documents
- improved scanning of back side of Colombia ID
- improved recognition of czech and german payment QR codes in case they contained non-ascii characters
- 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
- fixed reading of IBAN and BIC numbers in payment CzechQRCodeRecognizer
- 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 Hong Kong ID - use
HongKongIDFrontRecognizerSettings
- added support for reading front side of Malaysian drivers license - use
MalaysianDLFrontRecognizerSettings
- 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
- 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
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
SlovakSlipRecognizer
:- better reading of payer name and address
- improved
SlovenianSlipRecognizer
:- better reading of amount, reference and BIC from Slovenian payment slip
- 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
- 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
- added support for parsing Malaysian Passport IMM13P MRZ type, reading of special characters must be enabled by using
- 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]
- 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 a crash in Templating API caused by using a
MultiDetector
withDetectorRecognizer
- fixed rare crash in
MRTDRecognizer
- fixed reading of Czech QR codes which contain encoded URLs
- fixed reading of Croatian HUB3 payment PDF417 barcodes:
- added support for reading barcodes whose encoding is not explicitly defined and encoding is cp1250
- 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
- added support for setting DPI for full document images returned by
MRTDRecognizer
,AustralianDLFrontSideRecognizer
,AustralianDLBackSideRecognizer
andEUDLRecognizer
:- use
setFullDocumentImageDPI
on the corresponding recognizer settings
- use
CroatianSlipRecognizer
: added support for Croatian references with models 64, 26, 35, 40, 69- improved parsing of payment QR codes
- improved reading of Malaysian MyKad address
- added support for scanning front side of Swiss ID - use
SwissIDFrontSideRecognizerSettings
- added support for scanning front and back side of Polish ID - use
PolishIDFrontSideRecognizerSettings
,PolishIDBackSideRecognizerSettings
andPolishIDCombinedRecognizerSettings
- added support for reading front side of new Australian Driver's licence for state Victoria - use
AustralianDLFrontSideRecognizerSettings
- added support for Swiss payment QR - use
SwissQRCodeRecognizerSettings
- 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
QuadWithSizeDetectorResult
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
- 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
- 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 more
- 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
- improved reading of issuing authority on Croatian ID back side
- improved parsing of variable symbol on Czech payment slips
- allowed scanning of Czech QR codes which have colon (:) in payment description field
- Italian IBAN parsing now validates the BBAN check digit
DutchSlipRecognizerSettings
- added option to enable or disable reading of recipient name. By default, this is turned off and recipient name will not be returned.
- fixed returning valid data for MRZ based recognizers when not all fields outside of the MRZ have been scanned
- fixed crash in
GermanIDBackSideRecognitionResult
caused by ProGuard obfuscation, when it is not declared in ProGuard rules to keep the result constructor
- fixed amount parsing from German BezahlCode
- 0.8 is now parsed as 80 cents, not as 8 cents anymore
USDLRecognizerSettings
:- removed option to scan 1D Code39 and Code128 barcodes on driver's licenses that contain those barcodes alongside PDF417 barcode
- improved
CroatianIDBackSideRecognizer
:- better extraction of fields on back side of the Croatian ID card
- improved
USDLRecognizer
:- added support for new USDL standard
KosovoCode128Recognizer
returns reference number for new barcode type
- fixed bug in QR code reading
- 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
- added support for scanning Serbian payment QR codes - use
SerbianPdf417RecognizerSettings
- added support for scanning back side of Swiss ID - use
SwissIDBackSideRecognizerSettings
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
BlinkOCRRecognizerSettings
is now deprecated and will be removed inv7.0.0
- use
DetectorRecognizerSettings
to perform scanning of templated documents - use
BlinkInputRecognizerSettings
for segment scan or for full-screen OCR - until
v7.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 classificationSlovak ID Recognizers
:- result getters
getPersonalIdentificationNumber()
andgetIssuingAuthority()
are renamed togetPersonalNumber()
andgetIssuedBy()
- result getters
- Renamed
RomanianIDFrontSideRecognitionResult
element getters for Sex and Nationality outside of the MRZ togetNonMRZNationality()
andgetNonMRZSex()
- 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:
- 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
IKadRecognizer
:- added support for long addresses and employer names
- 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
- for
Austrian ID Recognizers
added options to disable/enable extraction of certain fields in recognizer settings
- 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
- fixed
SlovakQRCodeRecognizer
(Slovak pay by square):- parsing of amounts with less than 2 decimals
- added support for slovenian references without prefix
- Czech payment QR code - improved parsing of amounts with less than 2 decimals
IKadRecognizer
: fixed returning of full document images as metadata
- 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 - fixed crash in TemplatingAPI where classifier interfaces were accidentally removed by ProGuard
- 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 - 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 - added
SerbianPdf417Recognizer
which supports scanning Pdf417 barcodes on Serbian payslips - 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
- added support for new Kosovo code128 payment slips to
KosovoCode128Recognizer
- 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
-
added USDL, MyKad, iKad, EUDL and Singapore ID recognizers
-
although new recognizers have been added, we managed to reduce final binary size a bit
-
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.
-
LibPhotoPay
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
-
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
-
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
- fixed crash when multiple QR code-based recognizers were used together
- improved
TopUpParser
:- added option to enable all prefixes at the same time (generic prefix)
- fixed crash in SlovenianQRCodeRecognizer
- 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
- updated
SlovenianQRCodeRecognitionResult
:- addresses are divided to street and place, now payer address and recipient address can be obtained as four fields: payer place, payer street, recipient place and recipient street
- fixed obtaining of raw results - method getRawResult()
- improved CroReferenceParser
- references in form HRXX-XXXX... are not returned if model is not valid, for example HR22-2360 is not a valid reference because model 22 does not exist
- trailing whitespace is removed from result
- added PhotoPay support for Slovak code 128 barcode
- added PhotoPay support for Slovenian UPN QR payslips
- added support for extraction of beneficiary name and address on Slovak payslips
- improved PhotoPay support for Slovak Data Matrix codes
- fixed layouting of provided
SegmentScanActivity
andRandomScanActivity
in multi-window mode MobileCouponsParser
is renamed toTopUpParser
- added
SimNumberRecognizer
which scans SIM numbers from barcodes
- improved multi-window camera support
- fix layouting of default activities in multi-window mode
- improved recognition of issuing authority on Croatian ID cards
- added support for Android 7 multi-window mode
- added support for Slovenian UPN QR code
- workaround for camera bug on OnePlus 3T
- 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 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
- added Belgian account number check to IBAN parser
- added PhotoPay support for scanning Slovak payslips and Slovak Data Matrix codes
- removed
RecognizerView
methodsetInitialScanningPaused
. For achieving the same functionality, methodpauseScanning
should be used. - updated
SepaQRRecognizer
to process image frames in the same way asZXingRecognizer
. Now,slowThoroughScan
is enabled by default. - improved quality of german ID address recognition
- added support for extracting place of birth on old German IDs
- added support for scanning IBANs that contain spaces and dashes
- support for scanning Croatian slips that have no amount, but have currency in amount field
- fixed camera management on LG X Cam
- added support for scanning Slovenian IDs
- improved IBAN parser
- improved amount parser
- added support for returning optional data beyond the end of SEPA payment QR code
- added support for drawing MRZ detection result
- LibRecognizer.aar renamed to LibPhotoPay.aar
- Czech account number is now separated into first (prefix) and second part. First part is not mandatory on czech payslips.
- added support for scanning Beneficiary name in slovenian payslips
- added support for scanning PayerID from slip (if missing in OCR line) in hungarian payslips
- added support for scanning SEPA QR codes
- improved czech code and symbol parsing
- fixed rare NPE in SegmentScanActivity
- fixed problematic camera management on One Plus 3
- improved
MobileCouponsParser
, added more options to customise parser settings - added support for scanning front and back side of Serbian ID cards
- added option to request setting of
FLAG_SECURE
on activity window, using intent extras, for all built-in scan activities- this flag can be used to prevent users from taking screenshots of the activity window content and to prevent content from being viewed on non-secure displays
- improved support for Czech segment scan:
- added parser for Czech variabilni symbol
- added support for Hungarian segment scan:
- Hungarian account number parser
- Hungarian payer ID parser
- added support for Slovenian segment scan:
- Slovenian reference parser
- 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
MobileCouponsParser
for reading prepaid codes from mobile phone coupons (Croatia) DateParser
returns result as javaDate
object and as original dateString
- added method
getSpecificParsedResult
toTemplatingRecognitionResult
(BlinkOCRRecognitionResult
) which returns specific parser results, e.g. javaDate
forDateParser
- improved
MRTDRecognizer
:- Dates from MRZ are parsed to java
Date
MRTDRecognitionResult
can return dates as javaDate
and as original dateString
- more accurate and faster detection of MRZ zone
- Dates from MRZ are parsed to java
- fixed crashes on LG F6 and HTC One SV
- added support for scanning front and back side of Slovak ID cards
- added support for scanning front and back side of German ID cards
- improved support for scanning Croatian ID cards
- fixed crashes on Nexus 6 (Android 7.0)
- added support for Alberta (Canada) DL
- enabled reading of longer ITF barcodes
- added support for Malaysian visa
- added support for Malaysian work permits
- improved Sweden parsers: SweGiroParser and SweReferenceParser
- improved Macedonian parsers: MkdAccountParser and MkdReferenceParser
- improved CroReferenceParser, reference can be parsed when it is followed by dot character
- added support for scanning Czech IDs
- 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
- fixed CroAmountParser for amounts < 1,00
- improved autofocus support on SGS6 and SGS7
- improved swedish segment scan
- fixed IBAN parser on some slovenian slips
- 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
- added support for scanning front and back side of Austrian ID cards
- improved swedish amount parser (used in swedish segment scan)
- now it is much more robust in cases when text comes into scanning area
- improved support for Croatian ID card scanning
- 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
createFromPreset
to generic AmountParserSettings that creates the settings from one of the available presets (GENERIC
,LARGE_AMOUNT
) - added support for DetectorRecognizer - a recognizer which can perform detection of various documents
- see
PhotoPayDetectorDemo
app for example on how detectors can be used
- see
- initial support for Slovak PAY by square QR codes
- initial support for Czech payment QR codes
- default scan activity for Dutch OCR line has been replaced with
ScanFovWithInfo
activity - Dutch payment slip recognizer now supports scanning of recipient name
- updated
BlinkOCRActivity
, throughScanConfiguration
it is now possible to make some scan field optional (user can skip it) and set the field size - fixed IBAN extraction on slovenian payslips containing barcode in IBAN field
- added parser for Czech account number
- added support for scanning front and back side of Croatian ID cards
- added support for scanning Austrian payslips that do not have form ID printed (SEPA format is assumed)
- austrian reference parser now supports alphanumeric payment references
- IBAN parser now accepts whitelist of allowed countries
- Date parser can now be configured with allowed date formats
- 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
- updated to NDK r11
- 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 new options to BlinkOcrEngineOptions
- added RegexParser which can parse almost any regular expression from OCR result
- fixed user interface problems in provided BlinkOCRActivity on devices with low density screens
- support for parsing PlusGiro numbers in Swedish segment scan
- existing SweBankGiroParserSettings has been renamed to SweGiroParserSettings
- SweGiroParser can now parse both BankGiro and PlusGiro
- two slip code digits are appended to SweGiroParser result
- fixed missing last digit (check digit) in SweReferenceParser result
- fixed ANR on Samsung Galaxy S3 Mini version
- support for scanning custom camera frames via DirectAPI
- fixed bug on some devices causing it to never start scanning if device was not shaken
- improved payment slip detection on low-end devices (fixed regression introduced in v4.6.0)
- increased OCR engine initialisation speed
- fixed hang that occurred in slovenian PhotoPay on some poor quality slips
- improved quality and robustness of slovenian reference number parsing
- improved OCR quality of slovenian slip containing courier condensed font
- 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
- added support for parsing payer address from croatian payment slip barcode
- better support for scanning some german payslips
- added support for Montenegro segment scan
- added support for scanning RF references in slovenian payslips
- support for detecting on activity flip event with OnActivityFlipListener
- this listener can inform you when activity flip has happened. This is a event which is not notified by Android OS and happens when activity with sensor orientation changes its orientation from landscape to reverse landscape or vice versa
- fixed crash in RecognizerCompatibility class on ARMv7 without NEON
- added RecognizerCompatibility class to javadoc
- added Sony Xperia L to OpenGL blacklist
- fixed NPE in BarcodeDetailedData
- improved performance of conversion of Image object into Bitmap
- 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
- support for reading amount in hungarian payslips from slip if not present in OCR line
- support for obtaining payer bank and payer account number from hungarian slips (where available)
- fixed
NullPointerException
that could occur sometimes in recognition result parcelisation - fixed occasional ANR on Nexus 4
- this bug was introduced with Android 5.0.0 update on Nexus 4, it was not present on KitKat and older Android versions
- other devices were not affected
- fixed bug on Sony and HTC which made it impossible to select and copy text scanned with
BlinkOcrActivity
- fixed crash that happened when detection image metadata was being sent from native to Java
- fixed random behaviour of some recognizers caused by improperly default-initialized RecognizerSettings objects
- added support fo STURRA QR version 002 in german QR recognizer
- improved performance and accuracy of hungarian slip recognition
- silenced annoying "Point array is null" debug log output
- fixed bug that caused nondeterministic refusal to scan anything (this bug occurred mostly 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
- fixed wrong icon size on
BlinkOCRActivity
on some devices - when embedding
RecognizerView
into 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 toRecognizerView
and if camera permission is denied, a new callback methodonCameraPermissionDenied
ofCameraEventsListener
will be invoked to give you chance to ask user for permissions- please refer to updated demo apps for example of new callback
- 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
- 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
- removed support for ARMv6 devices
- 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.
- PhotoPay now depends on appcompat-v7 library, instead of full android-support library.
- even older versions of PhotoPay 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 new STUZZA QR codes used in Austria
- newly supported version is STUZZA version 2.0 which allows empty BIC field in QR code
- added support for scanning Austrian reference number with SegmentScan
- supported reference number is 12-digit reference number (Kundendaten) as found on Austrian payment slips
- added support for scanning German reference number with SegmentScan
- supported reference numbers is 13-digit reference number with ISO 7064 checkdigit and RF-reference numbers
- added support for Bosnian SegmentScan
- it is now possible to scan account numbers and reference numbers from bills issued in Bosnia and Herzegovina
- 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 intensive tasks
- fixed issue with Nexus 5X upside down camera
- when using DirectAPI, recognized Bitmap is not recycled anymore so it can be reused
- added support for reading white hungarian slips
- improved performance of Slovenian amount extraction
- fixed bug in slovenian reference parser
- now supporting slovenian references with more than 20 characters
- allow dashes inside slovenian reference number
- fixed autofocus issue on devices that do not support continuous autofocus
- improved OCR quality when scanning documents with Machine Readable Zone
- improved support for belgian payslips
- added support for reading recipient name on belgian payslips
- improved scanning quality of other elements (IBAN, amount, reference) on belgian payslips
- support for defining camera video resolution preset
- to define video resolution preset via Intent, use
ScanActivity.EXTRAS_CAMERA_VIDEO_PRESET
- to define video resolution preset on
RecognizerView
, use methodsetVideoResolutionPreset
- to define video resolution preset via Intent, use
- added support for reading
Recipient name
in Hungary - fixed some bugs in camera2 management
- fixed Nexus 6 auto exposure bug
MRTD
recognizer optimized for speed
- added support for scanning barcodes
- added support for scanning segments with SegmentScan feature
- added support for scanning ID documents
- 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 - when calling
onDisplayOcrResult
callback, make sure OCR char recognition variants are not sent to Java - this is both slow and not required - fixed behaviour of method
getParsedAmount
- it now returns correct decimal value - reorganized integration demo apps
PhotoPayDemo
has been expanded and now also shows how to perform segment scan, ID scan and barcode scan via IntentPhotoPayDemoCustomUI
has remained as it was - it shows how to perform scanning of Croatian payment slips from within custom scanning activityPhotoPayDemoCustomSegmentScan
is a new demo app similar toPhotoPayDemoCustomUI
, except it shows how to perform scanning of segments from within custom scanning activityPhotoPayDirectAPIDemo
shows how to perform scanning of Android Bitmaps without using Camera
- when scanning Croatian QR code, use slower, but more thorough QR code scanning algorithm (this can be disabled via settings)
resumeScanningWithoutStateReset
method does not exist anymore -resumeScanning
now receivesboolean
parameter defining whether or not internal state should be reset- support for using DirectAPI while RecognizerView is active
- new and improved camera management
- use of Camera2 API on devices that support it
- new algorithm for choosing best possible frame to be processed
- support defining camera metering areas on devices that support it
- added support for ARM64 processor ABI
- improved error handling on native library initialization
- device specific lists moved to resource - now it is much easier to add new device to blacklist
- disabled offscreen OpenGL initialization on Samsung Galaxy S4 Mini with Android 4.2.2 because of buggy GPU driver
- support for defining camera zoom level on android
- various bugfixes and performance improvements
- improved Slovenian PhotoPay
- added support for Croatian QRCode with optional data
- disabled OpenGL accelerated image processing algorithms on devices that have buggy OpenGL driver (Sony Xperia Z on Android 4.1.2 and Motorola Lex 755 on Android 4.2.2)
- using SurfaceView instead of TextureView on all devices for displaying camera feed. TextureView does not work on activities that are not HW-accelerated, as is case on some ICS devices.
- dropped support for Android 2.2 because Android NDK r10d deprecated GCC 4.6 and now default GCC 4.8 produces binaries that are incompatible with Android 2.2 (if required by client, we can compile SDK with old NDK while our codebase is still GCC 4.6-compatible)
- german SDK is still built with old GCC
- cleared all occurences of strcpy, strcat, setjmp, longjmp, printf, scanf and similar dangerous functions. Those functions were replaced by safer alternatives.
- NOTE: it is possible that those functions are still in use by 3rd party libraries (iconv, OpenCV, TBB, libJpeg and libPng).
- added segment scan option to Croatian PhotoPay
- option is available only on request
- added support for library license keys
- added direct API that enables direct processing of android bitmaps without the need for camera
- completely rewritten API for defining settings and obtaining results which is easier to use; see README for details
- optimized library size - native library is now 2 MB per platform smaller than before
PhotoPayView
renamed toRecognizerView
- added support for Nvidia Tegra 2 devices, whilst preserving NEON acceleration on other ARMv7 devices
- Android studio and gradle are now recommended - demo apps are now only provided for Android studio, Eclipse is supported only via documentation, see README for details
- support for tablets that have inverse landscape natural display orientation (currently only Sprint Optik 2 supported)
- support for aspect fill camera mode, check README for instructions
- fixed race condition at camera initialization on some Android devices (HTC One M8)
- added support for embedding PhotoPay into custom activity
- PhotoPayView is now just a camera view that can be embedded anywhere, you just need to pass activity's lifecycle events to it, see README for more details
- added workaround for known Android bug
- updated
RecognizerCompatibility.getRecognizerCompatibilityStatus
method - see README for details - added support for devices without autofocus (only some recognizers support that - see README for more details)
- fixed freezing on Samsung Galaxy Nexus
- fixed segfault in OCR flipping process
- support for non-standard fonts in UK OCR line
- New detector for Germany. Besides old non-SEPA slips, new SEPA slips are now supported.
- initial support for OCR of blurred characters applied to ID scanner
- added support for German SEPA payslips
- improvements in German payslip scanner
- Kosovo's Utility ID now no longer returns check digit
- fixed freezing on Samsung Galaxy S3
- fixed Croatian Reference Model 11 extractor
- Fixed whitespace handling in Austrian scanner
- Fixed SIGSEGV on scanning termination when GBuffer is used on Android
- Fixes in Austrian Amount and Bank Account number scanning
- Tweaks to OCR engine and text recognition
- Bugfixes in Austrian OCR recognition
- fixed camera focusing issue on HTC One V
- new OCR line detector for UK Giro slips
- optional support for obtaining multiple scan results from single scan
- API change:
onScanningDone
method in BasePhotoPayActivity now receives a list of scanning results instead of single scanning result- this list can have zero, one or more scan results
- if multiple recognizers are turned on and obtaining of multiple scan results from single image is allowed (can be allowed with method
RecognizerSettings.setAllowMultipleScanResultsOnSingleImage
, by default it is disabled), list can have multipleRecognitionData
elements, otherwise it will have at most one element (similar behaviour as before)
- new key has been added for retrieving list of recognised objects via intent:
BasePhotoPayActivity.EXTRAS_PAYMENT_DATA_LIST
- you can obtain the list with following snippet:
ArrayList<RecognitionData> dataList = getIntent().getExtras().getParcelableArrayList(BasePhotoPayActivity.EXTRAS_PAYMENT_DATA_LIST);
- by default, taking screenshots of camera activity is now allowed (until now it was disabled by default and could be overriden with custom implementation of
onConfigureWindow
) - added support for x86 devices
- fixed model and reference parsing when there was no whitespace between the fields on Croatian payslips
- reduced library size per processor architecture
- added ARMv7 architecture (much faster on newer phones than ARMv6)
- see updated README for information how to exclude ARMv6 or ARMv7 binary from your app and all pros and cons of doing that
RecognitionData.RECOGNITIONDATA_TYPE
constants are now enumerated inStringConstants.RecognitionDataType
interface (see updated README)- support for reading
Payer name
in Croatia - support for turning reading of
Payer name
andPayment description
on or off on Croatian slips - improved algorithm that uses time redundant OCR information for improving OCR quality
- allowing , besides . as amount decimal separator in austrian QR codes
- support for Kosovo OCR line and Code128 barcode scanning
- fixed race condition in focus management
- added support for changing camera activity's background color
- added support for optimizing camera parameters for near slip scanning
- fixed camera orientation bug on Samsung Galaxy Ace GT-S5830i
- fixed ProGuard warnings when building in release mode (added
EnclosingMethod
attribute to library ProGuard obfuscation rules and updated ProGuard documentation and demo) - fixed bug in camera preview resolution chooser: when phone does not support any of the required camera preview resolutions, random resolution was chosen
- Implemented QR code Reading for HUB3 standard
- Croatian reference model now returns HR prefix if it exists on the payslip
- All strings returned by PhotoPay now have ASCII encoding fallback. This means no more "Invalid UTF-8 string" messages should appear in scanning results.
- fixed Austrian STUZZA QR code parsing - now supports both LF and CRLF line endings and does not confuse reference number and payment description
- improved croatian reference extraction
- determining croatian refernence status
- fixed QR code scanning issues when ECI codes were used inside QR code
- Improved OCR for Croatian payslips
- Added new field for Croatian scanning "Reference number insecure"
- Fixed issue with returning completely empty results in some cases when scanning timeout occurs
- this version does not use R class for referencing resources from within binary jar - this means that PhotopaySdk library project can now be repackaged
- support for having title bar and status bar in camera activity
- support for custom activity window configuration (added overridable method
onConfigureWindow
toBaseCameraActivity
)
- new API for custom camera UI
- support for scanning multiple slips without closing camera activity (in custom camera UI only)
- support for controlling torch
net.photopay.ocr.PaymentData
renamed tonet.photopay.recognition.RecognitionData
- removed deprecated getters from
RecognitionData
- detection statuses moved from
net.photopay.ocr.PaymentRecognizerDelegate
tonet.photopay.recognition.DetectionStatus
- new utility method for setting PhotoPay language:
net.photopay.locale.LanguageUtils.setLanguage
- officially supported PhotoPay languages now listed in
net.photopay.locale.Language
enum - bugfixes
- Improved image processing with smarter threshold calculation
- Payment description scanning in croatian slips now more reliable
- Added scanning of recipient address for barcodes on croatian slips
- Faster frame quality estimation
- New ABBYY version
- Other stability improvements and bugfixes
- Major UI refactor
- Viewfinder is now GPU accelerated
- Improved focus management, meaning now frames that are coming to OCR are less blurred which results with faster and more reliable scanning
- New localization files (Slovenian, French)
- new QR code features for Austria
- Hardware accelerated viewfinder
- Focus management bugfix
- Slovenian version now scans payment description
- Bugfix for scanning with sudden movements of the phone
- Updated strings
- Support for Austrian payslips with nonstandard amount printed on the bottom
- Support for arbitrary length austrian reference numbers
- More advanced algorithm for Dictionary
- Added Dictionary checking for tokens returned by Ocr Engine
- Improvements to barcode recognition for Croatian payslips
- Added sound on successful scan
- Whitespace fix for text recognition
- More improvements to Sieve boosting algorithm
- Added help screen with a message to check results
- Fix for Austrian amounts in format like ==3.600,--
- Sieve algorithm improved, results are not boosted between results
- Belegart recognition in Austria improved, detection algorithm for non SEPA slips improved
- Positioning of some elements fixed, especially on wide screen phones
- In Austria, detection frame is now unmovable.
- Multiple recognitions of receiver name in Austrian slips
- Implemented basic Sieve method for video OCR algorithm
- Autoupdate functionality made more reliable
- Testing app more robust, serial dispatch queue used for saving of usage data
- PDF417 update for Croatian payslips
- Added autoupdate functionality
- Reading of Prufziffer and Belegnr. for Austrian slips
- Kundendaten is returned on non-Sepa slips. Otherwise reference number is returned.
- Added Croatian PDF417 barcode reader
- Implemented Slovenian check digit calculators
- Slovenian recognition updated to new image processing algorithm and processing by regions
- Austrian recognition handles tax slips
- Fixed problem with recognition of Austrian BLZs
- Payment description recognized if reference is not present on Austrian slips
- Added polishers which fix some obvious gramatical errors in recognition results
- Additional stability and bug fixes
- Status messages made more logical
- Improvements to Austrian recognition, text block exstractor and camera management
- Upgraded to new ABBYY version.
- Reduced library size
- Javadoc for Sdk project is now available from application projects.
- Added solution to autofocus problem on some phones
- Removed Alert view with partial results from UI - it was unscalable to large amounts of recognition data
- Numerous bugfixes for Austrian recognition
- Implemented support for API 7 phones
- Fixed bug with rendering context accessed from two threads on first run of photopay
- Using new image processing algorithm (A1)
- The whole recognition process now goes field by field
- Tweaked UI (added orientation support, slightly changed help screen)
- Cleaned up localization files and added German localization
- Faster image preprocessing for QR codes
- Fix for hangs in BIC recognition
- Android focus management changes - now focus request come in regular intervals
- QR Code recognition made more robust in combination with OCR
- Tweaked Austrian recognition
- Fixed bug in recognition of empty elements
- Added device specific recognition parameters and camera options
- Added options for controlling camera frame resolution via Extras parameter
- Improved recognition confidence with reusing subsequent recognition results
- Accelerometer control changes - now high pass filter to get more accurate measurements
- Improved detection algorithm generation with internal tools
- Fixed image deformation problem with GPU dewarping
- Fixed bug with ROI in image preprocessing
- Updated to new version of Ocr engine
- License file for ocr engine now needed to initialize Ocr engine
- Added support for reading QR codes
- Using single OpenGL context which additionally speeds up the processing and fixes the hanging bug
- Added arbitrary text block extractor
- Updated ACS algorithm
- Further improvements to adaptive contrast stretching
- Detection algorithm allows more flexibility
- Added adaptive contrast stretching for improving recognition in bad light conditions
- Improved recognition speed with doing ocr by regions
- Fixed a memory leak with patterns file
- Patterns file now use direct memory allocation in Java
- Improved postprocessing of croatian amounts
- Added automatic white balance correction for improving detection
- Small corrections to contrast stretching method
- Rectangle sent to recognition now stretched to allow errors in slip printing
- Improved speed of detection algorithm with non constant number of detection iterations
- Fixed a problem with detection of croatian slips
- Added accelerometer management which now start AF when the phone is shaking
- Upgraded focus management and switched to MACRO mode
- Changed interface to PhotoPaySdk - now uses onActivityResult method.
- Fixed OpenGL shader linking bug on low video memory phones
- Fixed viewfinder lines width on some Android phones
- Alert view for partial recognition now not cancelable
- Added reset of recognition results between consecutive partial recognitions
- Added additional checks fot OpenGL
- GPU processing made stable
- Detection algorithm made more robust
- OCR speed increase
- Timer for partial recognition view now starts on first failed recognition
- Unified strings with iPhone app
- Image preprocessing moved to GPU
- Fixed crashes on partial recognitions and in simulator
- Fixed problem with localization when user closes the app on PhotoPay activity
- Small modifications to text message lifecycle
- HUB3 standard support
- Added detection of payment form and perspective correction
- Added UI animation
- Added support for continuous autofocus on Android 2.3+ devices
- Added tap to focus support
- Workaround for Android bug which prevents simultaneous use of auto white balance and auto focus.
- Removed source from Library project :), replaced with jar and javadoc
- Target SDK now 2.3.3, min SDK still 2.1.
- Basic functionality