Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
305 lines (214 sloc) 14.3 KB

Release notes


  • Fixed several issues in USDL parsing - implemented special cases for barcodes which don't have keys according to the AAMVA version written in the barcode - implemented heuristics for extraction of firstName, middleName, lastName, address, and other fields, if they can be determined based on the other fields.

  • Bugfixes and tweaks in camera management code - fixed potential deadlock when multiple instances of PPCoordinator objects are instantiated. - exiting from the scanning when user presses "cancel" button is now faster - fixed race condition which potentially crashed the scanner when user exited and entered camera screen consecutively very fast.


  • Added new callback method to PPScanDelegate which is called when license key is invalid: scanningViewController:invalidLicenseKeyWithError:


  • Added bitcode support for Xcode 7

  • Updated USDL parsing. Added better handling of FullName, FullAddress, Height and Weight of cardholder. Added full support for Magnetic PDF417 standard.

  • Small performance improvements in iOS camera management.


  • Added special case for scanning some British Columbia DLs
  • Stability improvements in USDL scanning


  • Improved video frame quality detection: now only the sharpest and the most focused frames are being processed. This improves quality of the results, but at a slight expense of processing time

  • Frame quality estimation can now be enabled using PPScanSettings frameQualityEstimationMode property:

    • when set to PPFrameQualityEstimationModeOn, frame quality estimation is always enabled
    • when set to PPFrameQualityEstimationModeOff, frame quality estimation is always disabled
    • when set to PPFrameQualityEstimationModeDefault, frame quality estimation is enabled internally, if the SDK determines it makes sense
  • iOS 9 introduced new app multitasking features Split View and Slide Over. When the scanner is on screen and one of those features are used, iOS automatically pauses the Camera (this behaviour is default as of iOS 9 beta 5). This SDK version introduces new setting in PPUISettings class, called cameraPausedView, where you can define the UIView which is presented centered on screen when this happens.

  • Known issue on iOS 9: if you use Autorotate overlay feature (settings.uiSetttings.autorotateOverlay), present PPScanningViewController as a modal view controller, and support Split View iOS 9 feature, then autorotation of camera overlays isn't correct. The best way is to opt-out of Split View feature, and wait for SDK fix when iOS 9 comes out of beta.

  • PPScanningViewController methods pauseScanning, isScanningPaused, and resumeScanningAndResetState: should now be called only from Main thread, and they are effective immediately. E.g., if pauseScanning is called and there is a video frame being processed, result of processing of that frame will be discarded, if resumeScanningAndResetState: isn't called in the meantime.

  • Re-introduced property locationOnImage for PPPdf417RecognizerResult objects, which existed prior to v4.0.0. It's now a PPQuadrangle object, with clear properties for obtaining corner points of the barcode on the image.


  • Added support for PPCameraPresetPhoto camera preset. Use this if you need the same zoom level as in iOS Camera app. The resolution for video feed when using this preset is the same as devices screen resolution.


  • Added support for several new special cases of US Driver Licenses in USDL recognizer.

  • Exposed two new properties in PPUsdlRecognizerSettings

    • scanUncertain

      • Set this to YES to scan even barcode not compliant with standards
      • Use only if necessary because it slows down the recognition process
      • Default: NO
    • allowNullQuietZone

      • set this to YES to scan barcodes which don't have quiet zone (white area) around it
      • slightly slows down recognition process
      • Default: YES
  • Disabled Bitcode in Sample apps so that they are buildable with XCode 7 (Bitcode support in the framework coming soon!)

  • Added library dependencies in podspec without which the app after integration couldn't be built


  • Series of bugfixes, performance improvements and API consolidation.

  • API now compatible with other MicroBlink products.

  • Naming changes in API (see Transition guide)

    • PPBaseResult renamed to PPRecognizerResult
    • PPScanningResult is now replaced with 4 different result classes, depending on where the result comes from

      • PPUsdlRecognizerResult for USDL scanning
      • PPPdf417RecognizerResult for PDF417 scanning
      • PPBarDecoderRecognizerResult for Code39 and Code128 scanning
      • PPZXingRecognizerResult for other barcode formats
  • PPScanningViewController's methods resumeScanning and resumeScanningWithoutStateReset merged into one resumeScanningAndResetState:.

    • All calls to resumeScanning replace with resumeScanningAndResetState:YES.
    • All calls to resumeScanningWithoutStateReset replace with resumeScanningAndResetState:NO
  • Added direct processing API which you can use to perform OCR on UIImage objects.

  • Added NoCamera-sample project which shows how to use direct processing API

  • Added didOutputMetadata: callback method to PPOverlayViewControllers

  • This version uses a new license key format. If you had a license key generated prior to v4.0.0, contact us so we can regenerate the license key for you.

  • Each PPRecognizerResult now has implemented description method for easier debugging

  • Fixed orientation handling for case when overlay autorotates.

  • Scanning region is now a property of Scanning view controller, and overlay view controller now delegates to this property.

  • PPBarcodeElementType changed names: From PPTextElement to PPBarcodeElementTypeText From PPByteElement to PPBarcodeElementTypeByte


  • Improvements in USDL parsing


  • Workaround for random crashes when scanning uncertain barcodes


  • Fixed a rare issue with decoding of pdf417 barcodes (when barcode last element was of type byte)


  • Fixed issue with callback cameraViewController:didMakeSuccessfulScanOnImage: not being called


  • USDL License error message which was always displayed is now fixed


  • Bugfixes
  • More internal header files are now part of the API. This makes creation of custom UI easier.


  • Fixed crashing on some iOS8 devices caused by AVFoundation video callback change
  • Added scanning and data extracting of US Drivers licenses. To scan USDL, use the following initialization setting:

    // Set YES/NO for scanning US drivers license barcode standards (default YES, if available by license)
    [coordinatorSettings setValue:@(NO) forKey:kPPRecognizeUSDLKey];
  • USDL results are returned as PPUSDLResult object. See a separate document DriversLicenses for information how to obtain data from USDL barcodes.


  • Each PPBaseResult object now has attached information about it's location on processed video frame.
  • Demo app updated to draw result position on image which resulted with successful scan


  • Removed status bar properties from PPScanningViewController protocol. Replaced with preferredStatusBarStyle and prefersStatusBarHidden in PPOverlayViewController
  • kPPHudOrientation replaced with kPPOverlayShouldAutorotate.
    • HUD orientation is now determined optimally inside pdf417 library
    • Autorotation can now be explicitly disallowed, e.g when presenting camera on UINavigationController or when presenting as FormSheet or PageSheet
  • Removed deprecated methods from PPOverlayViewController
  • Fixed crash when Overlay those orientations which are not supported by the app. Now overlay works in that situations.
  • Completely refactored "Complex Overlay" sample. Basically, it's open sourced implementation of internal pdf417 overlay.
  • Fix for M/F values in Sex field. Now that value is standardized to 1 (male) and 2 (female)
  • Workarounds for crash with nonstandard FullName data and in internal parseSubfile method


  • Added support for Photo camera preset
  • Added option to automatically detect scale of the barcode on the image. This makes sense only when Photo preset is used.
  • Added option to customize the status bar on camera screen
  • Fixed "private selectors" issue which appears when publishing the app to app store
  • Added a callback for obtaining the image which resulted with successful scan: cameraViewController:didMakeSuccessfulScanOnImage:
  • Changes to API method for retrieving scanning results:
  • USDL api modified so that all date fields are in format MMDDYYYY

instead of using

- (void)cameraViewController:(id<PPScanningViewController>)cameraViewController


- (void)cameraViewController:(UIViewController<PPScanningViewController>*)cameraViewController

New method adds an additional layers of abstraction to result obtaining. It makes possible several new features, most importantly, returning more than one recognition result, and returning results other than payslip scanning results (for example, pure OCR or barcode scanning results).

Objects passed in NSArray* results are always of type PPBaseResult. PPScanningResult (object passed in the all callback method) is now a subclass of PPBaseResult.

How to implement the new API?

  1. Rename cameraViewController:didFinishWithResult to, i.e. processScanningResult
  2. Implement cameraViewController:didOutputResults. Commonly, it can be implemented in the following way:

    - (void)cameraViewController:(UIViewController<PPScanningViewController> *)cameraViewController
                didOutputResults:(NSArray *)results {
        [results enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            if ([obj isKindOfClass:[PPBaseResult class]]) {
                PPBaseResult* result = (PPBaseResult*)obj;
                if ([result resultType] == PPBaseResultTypeBarcode && [result isKindOfClass:[PPScanningResult class]]) {
                    PPScanningResult* scanningResult = (PPScanningResult*)result;
                    [self processScanningResult:scanningResult cameraViewController:cameraViewController];
                if ([result resultType] == PPBaseResultTypeUSDL && [result isKindOfClass:[PPUSDLResult class]]) {
                    PPUSDLResult* usdlResult = (PPUSDLResult*)result;
                    [self processUSDLResult:usdlResult cameraViewController:cameraViewController];
  3. Test to see if it works.


  • Improved scanning of Code39 and Code128 barcodes
  • Added (basic) support for Aztec and DataMatrix barcodes
  • Fixed autofocus problem on iPod Touch 4th Gen
  • Package now contains additional file (buildCommit.txt) for easier point version bugfixes
  • Fully updated license key generation and verification formats
  • Improved scanning speed when using "allow null quiet zone" option
  • Updated API for obtaining results in preparation for future API updates: see file, Classic integration step 5.


  • transition to new license key format


  • Various bugfixes and performance improvements, especially when scanning uncertain barcodes


  • Removed all redundant log outputs from iOS build


  • Added feature for setting scanning region. See readme "Setting scanning region" for details on how to use it.


  • iPod touch 5th gen now uses 720p video for scanning instead of 480p


  • Added option to scan barcodes which have inverted intensities
  • Added method [PPBarcodeCoordinator getBuildVersionString] that returns the internal library version string
  • iOS7 deprecated methods are no longer used


  • various bugfixes


  • Added option to scan barcodes which don't have quite zone around them
  • Improved scanning algorithm


  • Added out of the box support for FormSheet/PageSheet presentation styles on iPads
  • Fixed UI issues when presenting CameraViewController on NavigationViewController
  • Refactored default OverlayViewController and provided in demo app. You can use it as a reference in creating your own custom overlays.


  • Added support for arm64 platforms
  • Raised deployment target to iOS 5.1.1. Older versions (up to iOS 4.3) are available on demand.


  • Added support for front facing cameras


  • Some type and naming changes in our API. But everything is still backwards compatible!
  • Added very simple API for customizing camera overlay UI
  • Added option for scanning uncertain barcodes (barcodes which are not encoded according to a standard).
  • API now supports pausing and resuming scanning without dismissing camera screen
  • More advanced scanning library - able to scan barcodes on "worn out" plastic id cards


  • The framework now has an interop feature. Barcode data can be serialized and deserialized in URLs. This means your app can easily subscribe for URL scan requests from other apps and return them scan results.
  • Method name change fix in sample app.


  • Fixed build issues with iOS Simulator when deployment target is set to iOS 7


  • pdf417 framework can now be built for armv7s architecture which means faster performance on iPhone 5, 5C and 5S, and iPad 4.
  • iOS 4.3 is no longer supported


  • new, twice as fast method for scanning of pdf417 barcodes


  • iPad 1 and other devices without camera now properly disabled.


  • Fixed an issue which completely disabled pdf417 scanning on iPad2


  • UI adjustments for iOS 7
  • fixed name clashing with PayPal SDK


  • bugfix for high resolution scanning on iPad mini.


  • support for micro PDF417 standard
  • support for damaged and non-standard PDF417 barcodes
  • support for obtaining raw barcode result
  • high resolution support (1080p)


  • support for case insensitive bundle name matching when checking license key


  • support for reading 1D barcodes


  • Fixes for pdf417 scanning of barcodes with error correction 0 or 1
  • Improved detection algorithm
  • Licensing system fully functional
  • Added Podfile for easier integration


  • Scanning support for pdf417 and QR code
Something went wrong with that request. Please try again.