- Improved performance of photocopy detection model
- Adjusted thresholds for screen detection model in order to decrease FAR and FRR of existing model
- added privacy manifest
- added support for license keys that support multiple application IDs
- Improved scanning performance and added support for virtually any card layout
- Improved IBAN parser which now supports more IBAN formats
- Added option
allowInvalidCardNumber
which allows reading invalid card numbers to avoid endless scanning on samples and test cards:- use with care as it might reduce accuracy in certain situations in production
- for invalid card number the flag
cardNumberValid
inBlinkCardRecognizerResult
will be set tofalse
- Better support for RTL languages in our default UX
- Removed legacy recognizers:
LegacyBlinkCardRecognizer
andLegacyBlinkCardEliteRecognizer
- Added reticle customizations in
MBCBlinkCardOverlayTheme
:- UIImage
defaultReticleImage
- - UIImage
errorReticleImage
- UIImage
reticleColor
- UIColor
reticleDefaultColor
- UIImage
- Internal improvements
- Included hand, photocopy, and screen detection models to achieve liveness functionality
- Added anonymization info on which side was anonymized. String data is anonymized using an asterisk instead of blanking the result.
- Expanded the number of supported credit card types by 100%.
- Improved data extraction, including a 30% reduction in incorrect processing of CVV field.
- Added new properties
handScaleThreshold
,handDocumentOverlapThreshold
,screenAnalysisMatchLevel
,photocopyAnalysisMatchLevel
. These settings define behaviour of the new liveness features. - Added a new delegate
BlinkCardRecognizerDelegate
with a callbacklivenessStatusCallback
that is called when each side of a card is scanned. It is called with one parameter, aLivenessStatus
enum.
- Two new booleans:
firstSideAnonymized
andsecondSideAnonymized
. - New property
DocumentLivenessCheckResult
which has new liveness model results.
- Improved support for diverse credit card designs.
- More detailed instructions on how to scan credit cards, via an intro tutorial or tooltip during scanning, leading to improved success rates in credit card scanning and data extraction.
- The scanning screen now shows a reticle in the center with scanning instruction.
- Added a new property
fallbackAnonymization
inAnonymizationSettings
. If true, anonymization is applied on all fields of the image if extraction is uncertain. - Improved anonymization performance.
- We’ve added support for 1000+ new credit card types.
- Decrease of wrongly PAN field processing by 30% for horizontal credit cards, and by 60% for vertical credit cards.
- Improvements in the Anonymization functionality for Quick Read formats on VISA credit cards, as well as general improvements for all other credit card types.
- We’ve updated Microblink logo and colors
- Improved date extraction from partial dates.
- Fixed broken anonymization in result screen when the PAN number was anonymized but the image was not. We now correctly anonymize the image too.
- We now support landscape orientation on BlinkCardEditViewController screen
- From now on, BlinkCard reads and extracts the expiry date in MM/YYYY format
- 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.
- To use BlinkCard SDK with Carthage, please update to Carthage v0.38.0.
- We've added XCFramework support
- Run
carthage update --use-xcframeworks
- Run
- We've added support for even more horizonal card layouts
- We've added anonymization options for string and image results:
- Anonymization is available for these fields:
- Card number
- Card number prefix
- CVV
- Owner
- IBAN
- Choose the
MBCBlinkCardAnonymizationMode
for each field:None
ImageOnly
- Black boxes will cover chosen dataResultFieldsOnly
- String data is redacted from the result, images are not anonymizedFullResult
- Both images and string data are anonymized
- Card number has further anonymization options available through
MBCCardNumberAnonymizationSettings
: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
- Anonymization is available for these fields:
- We've fixed missing
CFBundleVersion
andCFBundleShortVersionString
fromInfo.plist
bug
- We have full support for Apple Silicon!
- Use
.xcframework
as we now have full Apple Silicon and Intel support. - We are still supporting
fat binary .framework
format, but we’ve removed simulator slices from it.
- Carthage still doesn't support
binary .xcframework
, so there is no support for simulator slices anymore.
- We’ve updated our default UI with new error messages that appear when a user doesn’t place the card within a frame.
- We’re no longer hiding the security code on the edit results screen.
- We’re now displaying whatever data we manage to extract before a user chooses to enter card details by hand.
- We're proud to announce our AI-driven BlinkCard v2.0! Extract the card number (PAN), expiry date, owner information (name or company title), IBAN, and CVV, from a large range of different card layouts.
As of this version, BlinkCard SDK is fully compatible with other Microblink SDKs, which means that you can use it with other Microblink SDKs in the same application.
-
BlinkCard v2.0 now scans and extracts data from payment cards with all the information on the back side!
-
MBCBlinkCardRecognizer 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, BlinkCard doesn’t require scanning of the back side. In that case, you'll receive results after scanning the side that contains all the information. 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
MBCBlinkCardRecognizer
:- 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.
-
MBCBlinkCardRecognizerResult 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 editMBCBlinkCardRecognizer
scan results:- This screen allows users to edit scanned data and input data that wasn't scanned.
- Enable it by setting
enableEditScreen
toYES/true
onMBCBlinkCardOverlaySettings
. - Configure which fields should be displayed on this screen by using
fieldConfiguration
property onMBCBlinkCardOverlaySettings
. - Set your custom theme with
MBCBlinkCardOverlayTheme
class - Change default strings - follow our Localization guide.
- To get user-edited fields, implement
blinkCardOverlayViewControllerDidFinishEditing
method fromMBCBlinkCardOverlayViewControllerDelegate
protocol - This feature is available only for
MBCBlinkCardRecognizer
. - If you are using custom UI, you can launch edit screen by initializing
MBCBlinkCardEditNavigationController
and setting initializedMBCBlinkCardEditViewController
as root view controller
-
We updated the default
MBCBlinkCardOverlayController
scanning screen:- Instructions on how to reduce glare wil be displayed when user enables flashlight, you can disable it with
showFlashlightWarning
property onMBCBlinkCardOverlaySettings
. - If edit screen is enabled, new button will show up after 5 seconds of unsuccessful scanning to allow user to go directly to edit screen.
- Instructions on how to reduce glare wil be displayed when user enables flashlight, you can disable it with
-
We added disableMicroblinkLogging method to MBLogger for easier implementation
- This also enables disabling Microblink logging in Swift.
-
We added
Carthage
support- For now,
Carthage
is supported for fat binaries,.framework
. We will support.xcframework
as soonCarthage
is updated. - Please check out our guide for implementation
- For now,
-
We added
Swift Package Manager
support- Please check out our guide for implementation.
- We are supporting
ARM64 Device
slice through our.xcframework
format. - We are still in development supporting
ARM64 Simulator
slice for newly released ARM Macs and we will update our SDK withARM64 Simulator
support as soon as development is done.
- From now on, we are not supporting iOS 8 version.
- We are updating our Cocoapods with
.xcframework
format from now on. Please download Cocoapods 1.10.0 or newer to use our SDK.
- We have translated complete SDK to following languages: Arabic(UAE), Chinese simplified, Chinese traditional, Croatian, Czech, Dutch, English, Filipino, French, German, Hewrew, Hungarian, Indonesian, Italian, Malay, Portuguese, Romanian, Slovak, Spanish, Slovenian, Thai and Vietnamese.
- We have improved recognition timeout logic when using
MBCBlinkCardRecognizer
.- When credit card has multiple sides to scan, 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
partialRecognitionTimeout
onMBCRecognizerCollection
- To ensure compatibilty with other Microblink SDKs, we have reprefixed all classes. All classes have
MBC
prefix instead ofMB
- We have renamed framework from
Microblink
toBlinkCard
- We added error callback when setting license keys on
MBCMicroblinkSDK
- You will be getting error callback and reason why you could not unlock SDK - see
MBCLicenseError
- You will be getting error callback and reason why you could not unlock SDK - see
- We moved all resources inside framework, we are not shipping bundle anymore.
- We have renamed old
MBBlinkCardRecognizer
andMBBlinkCardEliteRecognizer
recognizers toMBCLegacyBlinkCardRecognizer
andMBCLegacyBlinkCardEliteRecognizer
. They are now deprecated. - We renamed
MBRecogitionMode
toMBCRecognitionDebugMode
inMBCRecognizerCollection
. - Swift:
- We renamed all
sharedInstance
toshared
- All enums are now
Int
- All
unsigned integers
are nowInt
- We renamed all
- We fixed race conditions and camera asserts that could sometimes cause crashes.
- We removed OpenGL entirely which was causing unexpected crashes.
- We added a nullable attribute to the
recognizerRunnerViewControllerWithOverlayViewController
to fix a force unwrapping issue in Swift that could occur if the camera is broken or not working.
- Introducing support for new framework format - XCFramework:
- it contains all the necessary device and simulator architecture slices
- no neeed to remove simulator slices before distributing your app to the App Store as described here
- for now, only available from this repo, not available on Cocoapods
- Added presets for camera - Preset1080p, and 4K; Optimal always chooses the highest quality
- We added the option to disable Microblink logs in the console output. Use
MBLogger
class and conform toMBLoggerDelegate
inAppDelegate
. To disable logs, implement delegate method- (void)log:(MBLogLevel)level format:(const char *)format arguments:(va_list)arguments
. 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 are now delivering the complete list of open source dependencies used in the SDK. Please check the
open-source-software-used
directory
- When using
MBPermissionDeniedViewController
, it will preferCFBundleDisplayName
overCFBundleName
- Fixed missing umbrella headers - you can now use
MBCustomOverlayViewController
to create custom scanning views - Large memory consumption introduced in v1.1.1 is due to 4K video session on all 4K eligible iPhones; we introduced new camera presets 1080p and 4K, so to reduce your app memory consumption set camera preset on 1080p or 720p
- Fixed catching exceptions as setting license key from
MBMicroblinkSDK
- Bugfixes:
- added missing
extractIban
property which says it should extract the payment card's IBAN - fixed Torch activation for all iOS versions
- fixed OpenGL code which was fragile and sensitive to crashes if used from multiple threads
- added missing
-
Major API changes:
- Swift Module has been renamed from
MicroBlink
toMicroblink
- Swift Module has been renamed from
-
Minor API changes:
- methods
pauseScanning
andresumeScanningAndResetState
inMBRecognizerRunnerViewController
do not return anymoreBOOL
- use
isScanningPaused
to check if scanning is paused
- use
- methods
-
Improvements in ID scanning performance:
- improved
MBBlinkCardRecognizer
: - now extracts IBAN from the Payment / Debit card - in
MBBlinkCardRecognizerResult
andMBBlinkCardEliteRecognizerResult
,documentDataMatch
value is now returned asMBDataMatchResult
enum with three possible values:NotPerformed
,Failed
andSuccess
- improved
-
Bugfixes:
- fixed bug in
MBBlinkCardRecognizer
:anonymizeCvv
now works independently of any other anonymization setting
- fixed memory leaks that could cause crashes in some cases
- fixed turning on/off flashlight on iOS 13.1.3
- fixed bug in
- fixed bug in
MBBlinkCardOverlayViewController
which caused memory issues
- BlinkCard framework that includes only the capability to scan payment cards.