Skip to main content

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

Project description

Python MRZ Scanner SDK

This project provides a Python-C++ binding for the Dynamsoft Label Recognizer v2.x, allowing developers to build MRZ (Machine Readable Zone) scanner applications on both Windows and Linux platforms using Python.

Note: This project is an unofficial, community-maintained Python wrapper for the Dynamsoft Label Recognizer SDK. For those seeking the most reliable and fully-supported solution, Dynamsoft offers an official Python package. Visit the Dynamsoft Capture Vision Bundle page on PyPI for more details.

About Dynamsoft Capture Vision Bundle

Comparison Table

Feature Unofficial Wrapper (Community) Official Dynamsoft Capture Vision SDK
Support Community-driven, best effort Official support from Dynamsoft
Documentation README only Comprehensive Online Documentation
API Coverage Limited Full API coverage
Feature Updates May lag behind the official SDK First to receive new features
Compatibility Limited testing across environments Thoroughly tested across all supported environments
OS Support Windows, Linux Windows, Linux, macOS

Supported Python Versions

  • Python 3.x

Installation

Install the required dependencies:

pip install mrz opencv-python

Command-line Usage

  • Scan MRZ from an image file:

    scanmrz <file-name> -l <license-key>
    
  • Scan MRZ from a webcam:

    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("LICENSE-KEY")

# 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('')

API Reference

  • mrzscanner.initLicense('YOUR-LICENSE-KEY'): Initialize the SDK with your license key.

    mrzscanner.initLicense("LICENSE-KEY")
    
  • mrzscanner.createInstance(): Create an instance of the MRZ scanner.

    scanner = mrzscanner.createInstance()
    
  • scanner.loadModel(<model configuration file>): Load the MRZ model configuration.

    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 an OpenCV Mat.

    import cv2
    image = cv2.imread(<image-file>)
    results = scanner.decodeMat(image)
    for result in results:
        print(result.text)
    
  • addAsyncListener(callback function): Register a callback function to receive MRZ recognition results asynchronously.

  • 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
    

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.2.tar.gz (21.4 MB view details)

Uploaded Source

Built Distribution

mrz_scanner_sdk-1.1.2-cp310-cp310-win_amd64.whl (10.1 MB view details)

Uploaded CPython 3.10 Windows x86-64

File details

Details for the file mrz-scanner-sdk-1.1.2.tar.gz.

File metadata

  • Download URL: mrz-scanner-sdk-1.1.2.tar.gz
  • Upload date:
  • Size: 21.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for mrz-scanner-sdk-1.1.2.tar.gz
Algorithm Hash digest
SHA256 c88f323cc5b5f21b1f9b245ae5897bb25ecebf1697376d78988a9519d29292d8
MD5 fb5e2f31f6b1b53965505deeb86bfb1c
BLAKE2b-256 e90afe383bc32b1835adcec77be2f15bb0eb0b48b1b8a50a763a8afc7ba9da28

See more details on using hashes here.

File details

Details for the file mrz_scanner_sdk-1.1.2-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for mrz_scanner_sdk-1.1.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 40a614970eae7ce047f680e040bc1f6518f47bb489af54552dfa137feb8f42a7
MD5 53e21f2cc2aad45b7270899cd0211ffd
BLAKE2b-256 5bf122d71705b15ebffcb3e6e867ec4066370797a4662a70aa61b66321f58f34

See more details on using hashes here.

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