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.9-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba08589827b29289a53cbd9d5d7be5c2a75cd13d4ae7647a53cf1210963dee99 |
|
MD5 | 69391baa019f47b6b10db2a7c9d5e5dd |
|
BLAKE2b-256 | 37d9be761e6fe4758c6d13ce622b0e64d45709b7916535091363fc084ba9e048 |
Hashes for mrz_scanner_sdk-1.0.9-cp310-cp310-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5755f46f6a73768f74dff0399c6c964a3bafeac85735164d7147d475fb1ec7a0 |
|
MD5 | d92843cbce901efba9f41b4b52d89337 |
|
BLAKE2b-256 | bad003afbec2db2ccbb7c9b506f6ec7a6ef42ce0752a1916388539c07f719e78 |
Hashes for mrz_scanner_sdk-1.0.9-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3ef8a465012602fcd94e75568529de9e489d48de8b7bf6c2c29d4bc876df8d6e |
|
MD5 | 2bd5a4786c7607ecb25eec1dbff7a16c |
|
BLAKE2b-256 | 5d59971447607c94a26d320cd41aa436cf06073f572f47c3939069de95e554ce |
Hashes for mrz_scanner_sdk-1.0.9-cp39-cp39-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 731e9047d82478f2943c176cbefd36467a3a61206bf5dda0b1e847f56dd23f0b |
|
MD5 | 29c66ad05151b931d62e06be4ab98229 |
|
BLAKE2b-256 | 31f7e948b18121ea61051cc6f5071d67103247ce552fcb7d9dc4c09840735399 |
Hashes for mrz_scanner_sdk-1.0.9-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c30e72e9ac23b44408a43c92a5a94fab76e42f162164fd7ead82191e830f7d8b |
|
MD5 | b133f1ff7961070d4d7b4fdc52f1ce11 |
|
BLAKE2b-256 | 68af85d5da7ec75fe9e633e892437b7f641a331c4c50135dd2bf4a8250df8288 |
Hashes for mrz_scanner_sdk-1.0.9-cp38-cp38-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1449e6b8a73b4af08be9b4fd6c36a5623dc951a8dc652d048a05e8c8a393499d |
|
MD5 | 90fa78ff23e5d2d90613b4758e3a7750 |
|
BLAKE2b-256 | 5154019bc1d3ee59c82133599268e57e8fcdc842a2ab825c9d6c2e06f83c9690 |
Hashes for mrz_scanner_sdk-1.0.9-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 91e1f1d22aea12f7e34ec4a23de01ce1e7e39d5e99d23cb4f24f40a535f907ee |
|
MD5 | 5bc03c2a990251a09ebd8061b4894edc |
|
BLAKE2b-256 | 78022628d659b7f06ca14b6bcedd84a28ff3e1b74be979fea07cf6a622d7c54e |
Hashes for mrz_scanner_sdk-1.0.9-cp37-cp37m-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1cebee082dfcbac6f7480785bef09a097ebcfdf60c213040d3485fea3b82deea |
|
MD5 | dfa7d71c82acf8ebb4d10217b538315f |
|
BLAKE2b-256 | 3379fb90fb11dcf41ae81dc12655bd4c29907907a157a668ef1d1d17f49532c5 |
Hashes for mrz_scanner_sdk-1.0.9-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f3703d01275450fac9a290c4003ff386649fa080702d47dc3a8c48173ee8c988 |
|
MD5 | d9ebdd15fc440a1a7d6deda598826ac3 |
|
BLAKE2b-256 | 825dfb05b4f9c0943cbf3f570e821ba5bae1871da50d258963029e741e4e917a |
Hashes for mrz_scanner_sdk-1.0.9-cp36-cp36m-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eccf766eff61d9d71ff6045780349745379655e54d1462106dc98d599d381433 |
|
MD5 | c2881f3b69ce5aff2a1f4e6e5fdec683 |
|
BLAKE2b-256 | bee4fb4342f083b59ce71cf555dc264071c99b930378833b1fa201ade7d01aae |