- We moved
MBBlinkIdRecognizerResult
memberscolorStatus
andmoireStatus
to the result'simageAnalysisResult
(frontImageAnalysisResult
andbackImageAnalysisResult
inMBBlinkIDCombinedRecognizerResult
). - We moved all resources inside framework, we are not shipping
Microblink.bundle
anymore
- No changes
- No changes
- No changes
- No changes
- No changes
- Minor API changes:
MBBlinkIdRecognizer
andMBBlinkIdCombinedRecognizer
- methods
setDewarpedImageDelegate
andsetClassifierDelegate
are now propertiesdewarpedImageDelegate
andclassifierDelegate
- methods
- No changes
- Minor API changes:
- methods
pauseScanning
andresumeScanningAndResetState
inMBRecognizerRunnerViewController
do not return anymoreBOOL
- use
isScanningPaused
to check if scanning is paused
- use
- methods
- No changes
-
Major API changes:
-
removed all country specific recognizers
-
MBBlinkIdRecognizer
andMBBlinkIdCombinedRecognizer
are recognizers that classify and extract data from all country specific recognizers available in 4.x.x versions -
not country specific recognizers that are staying are:
MBPassportRecognizer
MBVisaRecognizer
MBDocumentFaceRecognizer
MBMrtdRecognizer
MBMrtdCombinedRecognizer
MBUsdlRecognizer
MBUsdlCombinedRecognizer
-
parsers and detectors are removed from this version onward
-
Swift Module has been renamed from
MicroBlink
toMicroblink
- this will cause Swift project to crash at compile time so please do
import Microblink
from now on
- this will cause Swift project to crash at compile time so please do
-
- Minor API changes:
MBDocumentFaceRecognizer
- removed thetryBothOrientations
option (improved scan in all directions is enabled by default)
- No changes
- No changes
- Minor API changes:
partialRecognitionTimeout
inMBRecognizerCollection
default value has been changed to 0 which means no timeout will be reported in which partial scanning results will be returned to the user
- Minor API changes:
-
all recognizers for Serbia have been removed from this version
-
fields that are not deprecated anymore:
- Sweden DL - reference number
- Ireland DL - driver number
- Malaysia iKad - passport number
- Hong Kong ID - commercial code
-
deprecated recocgnizer methods (they have been replaced with properties):
-
MBUsdlRecognizerResult
:getField:(MBUsdlKeys)usdlKey
optionalElements
-
-
added new recognizer properties:
-
MBUsdlRecognizerResult
:firstName
lastName
fullName
address
dateOfBirth
dateOfIssue
dateOfExpiry
documentNumber
sex
restrictions
endorsements
vehicleClass
-
MBMrzResult
:sanitizedOpt1
sanitizedOpt2
sanitizedNationality
sanitizedIssuer
-
-
renamed properties in
MBCzechiaCombinedRecognizerResult
:lastName
tosurname
firstName
togivenNames
identityCardNumber
todocumentNumber
address
topermanentStay
issuingAuthority
toautohority
personalIdentificationNumber
topersonalNumber
-
renamed properties in
MBGermanyCombinedRecognizerResult
:lastName
tosurname
firstName
togivenNames
identityCardNumber
todocumentNumber
issuingAuthority
toautohority
eyeColour
tocolourOfEyes
-
renamed properties in
MBJordanCombinedRecognizerResult
:issuer
toissuedBy
-
renamed properties in
MBSlovakiaCombinedRecognizerResult
:identityCardNumber
todocumentNumber
issuingAuthority
toissuedBy
personalIdentificationNumber
topersonalNumber
-
renamed properties in
MBRomaniaIdFrontRecognizerResult
:lastName
tosurname
identityCardNumber
todocumentNumber
nonMrzNationality
tonationality
nonMrzSex
tosex
validFrom
todateOfIssue
validUntil
todateOfExpiry
cardNumber
is now part ofMrzResult
asdocumentNumber
-
renamed properties in
MBSloveniaCombinedRecognizerResult
:lastName
tosurname
firstName
togivenNames
identityCardNumber
todocumentNumber
address
topermanentStay
issuingAuthority
toadministrativeUnit
personalIdentificationNumber
topin
citizenship
tonationality
-
renamed properties in
MBSloveniaIdBackRecognizerResult
:issuingAuthority
toadministrativeUnit
-
renamed properties in
MBPolandCombinedRecognizerResult
:issuer
toissuedBy
-
removed properties in
MBRomaniaIdFrontRecognizer
:idSeries
cnp
-
- Minor API changes:
-
MBPolandIdBackRecognizerResult
has propertymrzResult
that contains the results -
removed mrz image extraction from
MBMrtdRecognizer
andmrzImage
property inMBMrtdRecognizerResult
-
removed mrz image extraction from
MBMrtdCombinedRecognizer
andmrzImage
property inMBMrtdCombinedRecognizerResult
-
removed glare detection from
MBMrtdCombinedRecognizer
-
MBPaymentCardFrontRecognizer
,MBPaymentCardBackRecognizer
andMBPaymentCardCombinedRecognizer
have been replaced withMBBlinkCardRecognizer
MBBlinkCardRecognizer
is equivalent toMBPaymentCardCombinedRecognizer
, to scan only front side setextractCVV
tofalse
-
MBElitePaymentCardFrontRecognizer
,MBElitePaymentCardBackRecognizer
andMBElitePaymentCardCombinedRecognizer
have been replaced withMBBlinkCardEliteRecognizer
MBBlinkCardEliteRecognizer
is equivalent toMBElitePaymentCardCombinedRecognizer
-
-
Minor API changes
-
removed
sex
andsignatureImage
properties fromMBMalaysiaMyKadBackRecognizer
-
renamed properties in
MBCroatiaCombinedRecognizerResult
:identityCardNumber
todocumentNumber
address
toresidence
issuingAuthority
toissuedBy
personalIdentificationNumber
tooib
nonResident
todocumentForNonResident
-
removed
mrzImage
fromMBMrtdCombinedRecognizer
andMBMrtdCombinedRecognizerResult
-
renamed properties in
MBAustraliaDlFrontRecognizerResult
:name
tofullName
dateOfExpiry
tolicenceExpiry
-
renamed
eyeColour
tocolourOfEyes
inMBGermanyIdBackRecognizerResult
-
recognizers that are deprecated:
MBSerbiaIdBackRecognizer
andMBSerbiaIdBackRecognizerResult
MBSerbiaIdFrontRecognizer
andMBSerbiaIdFrontRecognizerResult
MBSerbiaCombinedRecognizer
andMBSerbiaCombinedRecognizerResult
-
all properties that are deprecated for recognizers:
-
MBHongKongIdFrontRecognizerResult
:commercialCode
-
MBIndonesiaIdFrontRecognizerResult
:bloodType
district
kelDesa
rt
rw
-
MBNewZealandDlFrontRecognizerResult
:donorIndicator
cardVersion
-
MBMalaysiaMyKadBackRecognizerResult
:extendedNric
-
MBMexicoVoterIdFrontRecognizerResult
:electorKey
-
MBIrelandDlFrontRecognizerResult
:driverNumber
-
MBSwedenDlFrontRecognizerResult
:referenceNumber
-
MBMalaysiaIkadFrontRecognizerResult
:passportNumber
-
MBAustriaIdBackRecognizerResult
:principalResidence
height
eyeColour
-
MBAustriaPassportRecognizerResult
:height
-
MBGermanyIdBackRecognizerResult
:colourOfEyes
height
-
MBSwitzerlandIdBackRecognizerResult
:height
-
MBSwitzerlandPassportRecognizerResult
:height
-
MBSingaporeIdBackRecognizerResult
:bloodGroup
-
MBColombiaIdBackRecognizerResult
:bloodGroup
-
MBSwitzerlandPassportRecognizerResult
:height
-
MBPolandIdFrontRecognizerResult
:familyName
parentsGivenNames
-
MBMoroccoIdBackRecognizerResult
:fathersName
mothersName
-
MBRomaniaIdFrontRecognizerResult
:parentNames
-
-
- Minor API changes
-
renamed
MBIkadRecognizer
toMBMalaysiaIkadFrontRecognizer
and methods in recognizer and itsResult
:expiryDate
todateOfExpiry
sex
togender
-
renamed
MBMyKadFrontRecogniezer
toMBMalaysiaMyKadFrontRecognizer
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
-
MBMalaysiaMyKadFrontRecognizer
does not extractarmyNumber
anymore, useMBMalaysiaMyTenteraFrontRecognizer
for scanningMyTentera
-
MBMrtdRecognizer
:- method
saveImageDPI
which has been used to set DPI for full document and MRZ image is replaced with methodsfullDocumentImageDpi
andmrzImageDpi
- method
-
renamed methods in
MBSwitzerlandIdBackRecognizer
and itsResult
:nonMrzDateOfExpiry
todateOfExpiry
nonMrzSex
tosex
-
renamed methods in
MBSwitzerlandPassportRecognizer
and itsResult
:placeOfBirth
toplaceOfOrigin
nonMrzDateOfBirth
todateOfBirth
nonMrzDateOfExpiry
todateOfExpiry
nonMrzSex
tosex
-
- Minor API changes
-
renamed
MBMyTenteraRecognizer
toMBMalaysiaMyTenteraFrontRecognizer
-
renamed
MBMyTenteraRecognizerResult
toMBMalaysiaMyTenteraFrontRecognizerResult
and propertiesnricNumber
tonric
ownerAddress
tofullAddress
ownerAddressCity
tocity
ownerAddressState
toownerState
ownerAddressZipCode
tozipcode
ownerAddressStreet
tostreet
ownerBirthDate
tobirthDate
and it is now of typeMBDateResult
ownerFullName
tofullName
ownerReligion
toreligion
ownerSex
tosex
-
renamed properties in
MBGermanyIdFrontRecognizerResult
firstName
togivenNames
lastName
tosurname
dateOfBirth
adndateOfExpiry
are now of typeMBDateResult
-
- Minor API changes
-
renamed properties in
MBMalaysiaDlFrontRecognizerResult
:state
toownerState
zipCode
tozipcode
-
renamed properties in
MBIndonesiaIdFrontRecognizerResult
:validUntil
todateOfExpiry
validUntilPermanent
todateOfExpiryPermanent
-
renamed property in
MBSingaporeIdFrontRecognizerResult
:bloodType
tobloodGroup
-
renamed property in
MBSingaporeCombinedRecognizerREsult
:bloodType
tobloodGroup
-
- Minor API changes
-
Renamed properties in
MBCroatiaIdBackRecognizerResult
:address
toresidence
documentForNonResident
toisDocumentForNonResident
issuingAuthority
toissuedBy
- MRZ fields are available through
MBMrzResult
which can be obtained by using propertymrzResult
-
Renamed properties in
MBSingaporeIdFrontRecognizerResult
:cardNumber
toidentityCardNumber
-
Renamed properties in
MBSingaporeCombinedRecognizerResult
:cardNumber
toidentityCardNumber
bloodGroup
tobloodType
-
isScanningUnsupportedForCameraType:
is now class method ofMBMicroblinkSDK
-
-
Minor API changes
identityCardNumber
property has been renamed todocumentNumber
onMBCroatiaIdFrontRecognizerResult
- No changes
Please check README and updated demo applications for more information, but the gist of it is:
PPScanningViewController
has been renamed toMBRecognizerRunnerViewController
andMBCoordinator
toMBRecognizerRunner
PPBarcodeOverlayViewController
has been renamed toMBBarcodeOverlayViewController
- previously internal
MBRecognizer
objects are not internal anymore - instead of having opaqueMBRecognizerSettings
andMBRecognizerResult
objects, you now have statefulMBRecognizer
object that contains itsMBResult
within and mutates it while performing recognition. For more information, see README and updated demo applications - introduced
MBFieldByFieldOverlayViewController
that can be used for easy integration of the field-by-field scanning feature (previously known as segment scan) - introduced
MBDocumentVerificationController
that can be used for easy integration of ID verification scanning feature (previously available only in BlinkID AppStore app - introduced
MBProcessor
concept. For more information, check updated code samples, README and this blog post
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
- No changes
- No changes
- No changes
- No changes
- No changes
- No changes
- No changes
- No changes
- No changes
- Renamed
PPMyKadRecognizerSettings
andPPMyKadRecognizerResult
toPPMyKadFrontRecognizerSettings
andPPMyKadFrontRecognizerResult
- Removed
imageDPI
property onPPTemplatingRecognizerSettings
PPDocumentDetectorResult
does not contain information about screen orientation any more
- There is no more option in
PPUsdlRecognizerSettings
to scan 1D barcodes. Previously this setting did nothing - it's OK to just delete the setter call if you use it. PPBlinkOcrRecognizerResult
andPPBlinkOcrRecognizerSettings
are now deprecated. UsePPDetectorRecognizerResult
andPPDetectorRecognizerSettings
for templating orPPBlinkInputRecognizerResult
andPPBlinkInputRecognizerSettings
for segment scan
- No changes
PPAztecRecognizerResult
andPPAztecRecognizerSettings
are now deprecated. UsePPBarcodeRecognizerResult
andPPBarcodeRecognizerSettings
PPBarDecoderRecognizerResult
andPPBarDecoderRecognizerSettings
are now deprecated. UsePPBarcodeRecognizerResult
andPPBarcodeRecognizerSettings
PPZXingRecognizerResult
andPPZXingRecognizerSettings
are now deprecated. UsePPBarcodeRecognizerResult
andPPBarcodeRecognizerSettings
extractAddress
property inPPSlovakIDBackRecognizerSettings
is now removed since previously wasn't used
- Since Microblink.framework is a dynamic framework, you also need to add it to embedded binaries section in General settings of your target.
- Library size was reduced by removing all unnecessary components. One of the components removed was internal libz library. You now need to add libz.tbd into "Linked frameworks and binaries" setting.
- Microblink.framework is a dynamic framework which contains slices for all architectures - device and simulator. If you intend to extract .ipa file for ad hoc distribution, you'll need to preprocess the framework to remove simulator architectures.
Ideal solution is to add a build phase after embed frameworks build phase, which strips unused slices from embedded frameworks.
Build step is based on the one provided here: http://ikennd.ac/blog/2015/02/stripping-unwanted-architectures-from-dynamic-libraries-in-xcode/
APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
# This script loops through the frameworks embedded in the application and
# removes unused architectures.
find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
do
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
EXTRACTED_ARCHS=()
for ARCH in $ARCHS
do
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
done
echo "Merging extracted architectures: ${ARCHS}"
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
rm "${EXTRACTED_ARCHS[@]}"
echo "Replacing original executable with thinned version"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
done
-
Deprecated
PPHelpDisplayMode
. It still works, but ideally, you should replace it with a custom logic for presenting help inside the application using the SDK. -
Simplified
PPOcrLayout
class (removed properties which were not used). If you used it previously, simply remove that code because it does not provide any value. -
If you're using PPGermanIDMrzRecognizer, it's functionality is now split into two recognizers:
- one for back side of the new ID (PPGermanIDBackRecognizer)
- one for front side of the old ID (PPGermanOldIDRecognizer)
-
If you have problems in naming of the classes with "ID" in the name, we now use uppercase "ID" in all filenames and all class names. Update accordingly. This gets rid of the Clang's warning about the case insensitivity.
-
If you're using PPGermanIDMrzRecognizer, it's functionality is now split into two recognizers:
- one for back side of the new ID (PPGermanIDBackRecognizer)
- one for front side of the old ID (PPGermanOldIDRecognizer)
-
Add libz into link binary with libaries. We removed internally used libz library to make the SDK smaller.
-
If you're using PPSingaporeIdRecognizer, you should now decide which side of the ID you want to use, and use either PPSingaporeIDBackRecognizer, or PPSingaporeIDFrontRecognizer
-
PPMobileCouponsOcrParserFactory
changed name toPPTopUpOcrParserFactory
- Default
PPIDCardOverlayViewController
implementation changed. Now it no longer uses viewfinder overlay subview, instead it places an UIImageView in the center of the view, which shows the frame inside which the user should place the document. This improves positioning, and in turn - increases the success rate of the scanning - Nullability attributes have been fixed. Basically, properties in the result classes are no longer consider nonnull (this was wrong!). You should always consider an option that the result property is nil, which means it doesn't exist at all on the scanned document.
-
PPMrtdRecognizerResult
now returnsNSDate
in methodsdateOfBirth
anddateOfExpiry
. PreviouslyNSString
was returned and user had to parse the string to get the date. If you want old behaviour, use methodsrawDateOfBirth
andrawDateOfExpiry
which will return strings in same format as in previous versions. -
this also applies for all recognizer results that inherit
PPMrtdRecognizerResult
-
although
PPDateOcrParser
now returnsPPDateResult
object (which contains bothNSDate
and originalNSString
from which date was parsed), when obtaining parser result viaparserResultForName:
orparserResultForName:parserGroup:
methods, you will be provided with string just like in previous versions. If you wantNSDate
, you should use methodsspecificParsedResultForName:
orspecificParsedResultForName:parserGroup:
and castNSObject
they return intoNSDate
. -
all recognizer results (classes that derive
PPRecognizerResult
) now have annotated nullability for their getters. Some of them used to assume non-null, while still returningnil
sometimes. This has now been corrected and all getters are_Nullable
- No backwards incompatible changes. See Release notes for new features.
- No backwards incompatible changes. See Release notes for new features.
- No backwards incompatible changes. See Release notes for new features.
- Removed PPOcrEngineOptions property from PPRegexOcrParserFactory and PPRawOcrParserFactory. Replaced property with setter method.
- No backwards incompatible changes. See Release notes for new features.
PPCameraCoordinator
now assumes the role ofPPCoordinator
. If you do not use your own camera management or Direct API you can rename all instances ofPPCoordinator
toPPCameraCoordinator
PPCoordinator
methodcameraViewControllerWithDelegate:
has been removed. To createPPScanningViewControllers
you can now use[PPViewControllerFactory cameraViewControllerWithDelegate: coordinator: error:]
- Direct API is now located in
PPCoordinator
. To process image use 'processImage:' method and be sure to set 'PPCoordinatorDelegate' when creating 'PPCoordinator' to recieve scanning results and events. You can se processing image roi and processing orientation on 'PPImage' object. - Methods of 'PPOverlayContainerViewController' protocol should now be called after camera view has appeared.
- If you implement custom camera UI and handle
cameraViewController:didFindLocation:withStatus
, this method was changed tocameraViewController:didFinishDetectionWithResult:
.PPDetectorResult
object now contains all information previosusly passed to this method. Simply update the code to use the new method signature. Verify the exact type of the passed detectorResult object, cast it to this class, and use provided getters to obtain all information. - PPOverlayViewController changed the way Overlay Subviews are added to the view hierarchy. Instead of calling
addOverlaySubview:
(which automatically added a view to view hierarachy), you now need to callregisterOverlaySubview:
(which registers subview for scanning events), and manually add subview to view hierarchy usingaddSubview:
method. This change gives you more flexibility for adding views and managing autolayout and autoresizing masks. So, replace all calls to (assuming self is aPPOverlayViewController
instance)
[self addOverlaySubview:subview];
with
[self registerOverlaySubview:subview];
[self.view addSubview:subview];
- If you use DetectorRecognizer, designated initializer of
PPDocumentDecodingInfoEntry
objects changed. Instead ofinitWithLocation:dewarpedHeight:
useinitWithLocation:dewarpedHeight:uniqueId:
. As Unique ID pass any unique string which you'll use to identify the decoding info object. - Localization Macros MB_LOCALIZED and MB_LOCALIZED_FORMAT can now be overriden in your app to provide completely custom localization mechanisms.
-
Remove the old .embeddedframework package completely from your project
-
Add new .framework and .bundle package to your project. Verify that Framework search path really contains a path to the .framework folder.
-
replace all occurrences of
PPCoordinator
's methodisScanningUnsupported:
toisScanningUnsupportedForCameraType:error:
. If you use Back facing camera, usePPCameraTypeBack
, otherwisePPCameraTypeFront
. -
Rename
PPMetadataSettings
propertiessuccessfulScanFrame
rename tosuccessfulFrame
currentVideoFrame
rename tocurrentFrame
- You can now enable Bitcode support in your project.
- If you used
mrtdRoi
anddetectMachineReadbleZonePosition
, just delete the lines of code where you used them. MRTD is now automatically detected - Renamed
PPUkdlRecognizerResult
's propertyownerAdress
toownerAddress
(fixed typo) - You now need to link your app with
Accelerate.framework
system library. This is due to new optimizations in character recognition.
- No backwards incompatible changes. See Release notes for new features.
- No backwards incompatible changes
- If you're using direct API, just delete all calls to
PPCoordinator initializeRecognizers
andPPCoordinator terminateRecognizers
. These calls are now performed internally rotatedImage
property ofPPImageMetadata
no longer exists. Useimage
property instead, it correctly handles rotation.PPApp
class is no longer a part of the API.PPMetadataSettings
was cleaned up - use the alternative names provided listed in the header file.
- No backwards incompatible changes
- No backwards incompatible changes
- No backwards incompatible changes
- This version uses a new license key format. If you had a license key generated prior to v0.9.3, contact us so we can regenerate the lincense key for you.
- UK Driver's license support added. To scan them, add PPUkdlRecognizerSettings to
settings.scanSettings
[settings.scanSettings addRecognizerSettings:[[PPUkdlRecognizerSettings alloc] init]];
- To collect UKDL results, look for
PPUkdlRecognizerResult
object inscanningViewController:didOutputResults:
callback
for (PPRecognizerResult *result in results) {
if ([result isKindOfClass:[PPUkdlRecognizerResult class]]) {
PPUkdlRecognizerResult* ukdlResult = (PPUkdlRecognizerResult*)result;
[self processUkdlResult:ukdlResult scanningViewController:scanningViewController];
}
}
PPCoordinator
class now exposes fewer public methods and properties.
- Classes representing scanning results were renamed. Renaming was performed to match naming convention of
PPRecognizerSettings
hierarcy: now eachPPRecognizerSettings
class has it's matchingPPRecognizerResult
. Replace all existing references to old class names with the new ones: PPBaseResult
was renamed toPPRecognizerResult
.PPOcrResult
(class representing a result of the OCR process, with individual characters, lines and blocks), was renamed toPPOcrLayout
. Name change was introduced to further distinguish the class fromPPRecognizerResult
classes.- Remove all references to
updateScanningRegion
method since it's now being called automatically insetScanningRegion setter
.
- Framework was renamed to MicroBlink.embeddedframework. Remove the existing .embeddedframwork package from your project, and drag&drop MicroBlink.embeddedframework in the project explored of your Xcode project.
- If necessary, after the update, modify your framework search path so that it points to the MicroBlink.embeddedframework folder.
- Main header of the framework was renamed to
<MicroBlink/Microblink.h>
. Change all references to previous header with the new one. - method
[PPCoordinator isPhotoPaySupported]
was renamed to[PPCoordinator isScanningSupported]
. Change all occurances of the method name.