Machine readable zone (MRZ) reading SDK for passport, Visa, ID card and travel document.
Project description
Python Extension: MRZ Scanner SDK
The project is a Python-C++ binding of Dynamsoft Label Recognizer. It aims to help developers build Python MRZ scanner apps on Windows and Linux.
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>
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.get_model_path())
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 globallymrzscanner.initLicense("DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAxLTE2NDk4Mjk3OTI2MzUiLCJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSIsInNlc3Npb25QYXNzd29yZCI6IndTcGR6Vm05WDJrcEQ5YUoifQ==")
-
mrzscanner.createInstance()
# create a MRZ scanner instancescanner = mrzscanner.createInstance()
-
scanner.loadModel(<model configuration file>)
# load MRZ modelscanner.loadModel(mrzscanner.get_model_path())
-
decodeFile(<image file>)
# recognize MRZ from an image fileresults = scanner.decodeFile(<image-file>) for result in results: print(result.text)
-
decodeMat(<opencv mat data>)
# recognize MRZ from OpenCV Matimport 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 asynchronouslydef 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for mrz_scanner_sdk-1.0.8-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1a386629fbc83b8e83827b22ea710d36f93b453619718755d9476e5ba6745546 |
|
MD5 | b7b76a45cd2b2302ceed4cd0ef3f6b55 |
|
BLAKE2b-256 | e4844435edf7d684e3a1d9e1c031012185f1f6f425fc27f0e8cd456e3f118756 |
Hashes for mrz_scanner_sdk-1.0.8-cp310-cp310-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 48394e598d63860815b07476b7604eaae691454c553d2f05af9e367ffe03e5cd |
|
MD5 | 75e0fb1ab419aa99cfe3455da9933657 |
|
BLAKE2b-256 | b94f24991d3e7e17729e89679c6b0752cd18a2e9204bb95c3a410c639246f821 |
Hashes for mrz_scanner_sdk-1.0.8-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 94c0584cb142fafe9b74a88c048c911da8e9d3c74336be51361f2a85f6cd2d5a |
|
MD5 | 589c488b3127c8563a971bb62613d230 |
|
BLAKE2b-256 | fa0a3cce6d7e1e96375a8d95a056ad3cd7adb8c7adc8cf9b5457328d3478f6e2 |
Hashes for mrz_scanner_sdk-1.0.8-cp39-cp39-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ab7bb90a111450ac54036dfcce4715bb3afe5451b054efd1500c3409b57ec524 |
|
MD5 | b9ecdb632d7372066493ab382cebb820 |
|
BLAKE2b-256 | b487304241bd2185eca1ff500d7b3dfb825785428091901e8ae4d47e8b84c8fa |
Hashes for mrz_scanner_sdk-1.0.8-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c7b812a001d37b3c635dd7c339ecee6e793031f21f94a427a1e930438c02b3b7 |
|
MD5 | ff1b77e92315837c5419e844d46e5c13 |
|
BLAKE2b-256 | 26bf06968ec915adc92542128f737284abe851e78c12dab0930077857623f88f |
Hashes for mrz_scanner_sdk-1.0.8-cp38-cp38-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 541a283760eea19605273a2d8333980929c32cecb12cd809a5c67560556d997a |
|
MD5 | 177d6b4c6365fc0624a7123680fbbd4e |
|
BLAKE2b-256 | b622c15e947dd04955e2ec4b4935dcb2f8c4151b66f3bb95f816c69b6ca45b8e |
Hashes for mrz_scanner_sdk-1.0.8-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 247b61fce5980da7cd1e299896c552b86502599eab4db7fa744f649aa58b6ae4 |
|
MD5 | fff8d23c6cee599d0a66b2172daa604e |
|
BLAKE2b-256 | e4c296675318ac3ece74f65b791fdd2be7327b77ca7eeb2bac1852127f2f5648 |
Hashes for mrz_scanner_sdk-1.0.8-cp37-cp37m-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 801533577a2d35e85ee9af015841da8cf5720590da48f37d7190ccd1e55fe091 |
|
MD5 | 6ad21f7e48c18a723e651c8453f1adf4 |
|
BLAKE2b-256 | 4838022cc414caba837479dde8db224415c03c1a38a136d1f6a52ab048dd7ef4 |
Hashes for mrz_scanner_sdk-1.0.8-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d4ad35c5e0ddf6a30c98599ec6748eabc32ed7ef6d8402e63a1554717654ed33 |
|
MD5 | 93fbb6d98524e0e4bae9891526a0905b |
|
BLAKE2b-256 | 87c18d021192f04bb89883e7e51992c4152b3a49ea1b4ac65e65da244e60905b |
Hashes for mrz_scanner_sdk-1.0.8-cp36-cp36m-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 814eb2224e8f4c45a7cdd6c56abc91fa4ce14f1622b6d2803b4dbbf04685ca27 |
|
MD5 | afbcc9151f75a7e20ac615b5853139e0 |
|
BLAKE2b-256 | 5d565788bb26608f45e96fb581dfd41e0d8a66a37c8315674ee2e5d912e6e400 |