Skip to main content

Machine readable zone (MRZ) reading SDK for passport, Visa, ID card and travel document.

Project description

Python Extension: MRZ Scanner SDK

The goal of this project is to provide a Python-C++ binding for Dynamsoft Label Recognizer, enabling developers to create MRZ scanner applications for both Windows and Linux platforms using Python.

License Key

Get a 30-day FREE trial license to activate the SDK.

Supported Python Edition

  • Python 3.x

Install Dependencies

pip install mrz opencv-python

Command-line Usage

$ scanmrz <file-name> -l <license-key>

# Show the image with OpenCV
$ scanmrz <file-name> -u 1 -l <license-key>

python mrz scanner

Quick Start

import mrzscanner
from mrz.checker.td1 import TD1CodeChecker
from mrz.checker.td2 import TD2CodeChecker
from mrz.checker.td3 import TD3CodeChecker
from mrz.checker.mrva import MRVACodeChecker
from mrz.checker.mrvb import MRVBCodeChecker

def check(lines):
    try:
        td1_check = TD1CodeChecker(lines)
        if bool(td1_check):
            return "TD1", td1_check.fields()
    except Exception as err:
        pass
    
    try:
        td2_check = TD2CodeChecker(lines)
        if bool(td2_check):
            return "TD2", td2_check.fields()
    except Exception as err:
        pass
    
    try:
        td3_check = TD3CodeChecker(lines)
        if bool(td3_check):
            return "TD3", td3_check.fields()
    except Exception as err:
        pass
    
    try:
        mrva_check = MRVACodeChecker(lines)
        if bool(mrva_check):
            return "MRVA", mrva_check.fields()
    except Exception as err:
        pass
    
    try:
        mrvb_check = MRVBCodeChecker(lines)
        if bool(mrvb_check):
            return "MRVB", mrvb_check.fields()
    except Exception as err:
        pass
    
    return 'No valid MRZ information found'

# set license
mrzscanner.initLicense("DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAxLTE2NDk4Mjk3OTI2MzUiLCJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSIsInNlc3Npb25QYXNzd29yZCI6IndTcGR6Vm05WDJrcEQ5YUoifQ==")

# initialize mrz scanner
scanner = mrzscanner.createInstance()

# load MRZ model
scanner.loadModel(mrzscanner.load_settings())

print('')
# decodeFile()
s = ""
results = scanner.decodeFile("images/1.png")
for result in results:
    print(result.text)
    s += result.text + '\n'
print('')
print(check(s[:-1]))
print('')

Methods

  • mrzscanner.initLicense('YOUR-LICENSE-KEY') # set the license globally

    mrzscanner.initLicense("DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAxLTE2NDk4Mjk3OTI2MzUiLCJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSIsInNlc3Npb25QYXNzd29yZCI6IndTcGR6Vm05WDJrcEQ5YUoifQ==")
    
  • mrzscanner.createInstance() # create a MRZ scanner instance

    scanner = mrzscanner.createInstance()
    
  • scanner.loadModel(<model configuration file>) # load MRZ model

    scanner.loadModel(mrzscanner.load_settings())
    
  • decodeFile(<image file>) # recognize MRZ from an image file

    results = scanner.decodeFile(<image-file>)
    for result in results:
        print(result.text)
    
  • decodeMat(<opencv mat data>) # recognize MRZ from OpenCV Mat

    import cv2
    image = cv2.imread(<image-file>)
    results = scanner.decodeMat(image)
    for result in results:
        print(result.text)
    
  • addAsyncListener(callback function) # start a native thread and register a Python function for receiving the MRZ recognition results

  • decodeMatAsync(<opencv mat data>) # recognize MRZ from OpenCV Mat asynchronously

    def callback(results):
        s = ""
        for result in results:
            print(result.text)
            s += result.text + '\n'
    
        print('')
        print(check(s[:-1]))
    
    import cv2
    image = cv2.imread(<image-file>)
    scanner.addAsyncListener(callback)
    for i in range (2):
        scanner.decodeMatAsync(image)
        sleep(1)
    

How to Build the Python MRZ Scanner Extension

  • Create a source distribution:

    python setup.py sdist
    
  • setuptools:

    python setup.py build
    python setup.py develop 
    
  • Build wheel:

    pip wheel . --verbose
    # Or
    python setup.py bdist_wheel
    

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mrz-scanner-sdk-1.1.0.tar.gz (21.4 MB view hashes)

Uploaded Source

Built Distributions

mrz_scanner_sdk-1.1.0-cp311-cp311-win_amd64.whl (10.1 MB view hashes)

Uploaded CPython 3.11 Windows x86-64

mrz_scanner_sdk-1.1.0-cp310-cp310-win_amd64.whl (10.1 MB view hashes)

Uploaded CPython 3.10 Windows x86-64

mrz_scanner_sdk-1.1.0-cp39-cp39-win_amd64.whl (10.1 MB view hashes)

Uploaded CPython 3.9 Windows x86-64

mrz_scanner_sdk-1.1.0-cp38-cp38-win_amd64.whl (10.1 MB view hashes)

Uploaded CPython 3.8 Windows x86-64

mrz_scanner_sdk-1.1.0-cp37-cp37m-win_amd64.whl (10.1 MB view hashes)

Uploaded CPython 3.7m Windows x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page