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.7-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f75926ffc95fbaf525a0a0784d2751538a1af082c33ec68d8fe5bf269a46369a |
|
MD5 | 5edc050ea61d260ba1c88fa860315dbb |
|
BLAKE2b-256 | 7e8026318b47925c5a91067172a6b82b8bb4ef19f97f841e8aef8f3934a7150f |
Hashes for mrz_scanner_sdk-1.0.7-cp310-cp310-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bee61ced9c594fecb90a79fbfcdaf5a0818b4847d060bc37b4d8b2165435532e |
|
MD5 | c8f0b0061fba55648753783bdb5aa4de |
|
BLAKE2b-256 | 1a37923b9580b62166c72942a8361424eee44e48bcb85937e4427028fa6031f0 |
Hashes for mrz_scanner_sdk-1.0.7-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e366d04a530ce55bbedf698edc695d76ed3d5d05a0a9edfd3e1912da88feae8f |
|
MD5 | c9280ab749a1597b090a8f9cf0a7a65b |
|
BLAKE2b-256 | f40cc2d07354fa66ee92a391ad5f87187b78266a72837cfc6947de0b3ca1e63c |
Hashes for mrz_scanner_sdk-1.0.7-cp39-cp39-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 035a6414a671d240eca9f8539cb3a9c4621880e2a7f215201802f5cb0d3c2068 |
|
MD5 | cf7998cb80b68a7417fdbfe5ec5499e2 |
|
BLAKE2b-256 | 81665084eef164dceaa7b9920c6d0646776efb4f89f52c2ea7ff38bc108c98c0 |
Hashes for mrz_scanner_sdk-1.0.7-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c1711da6b042ee78ec04fd66f4226c93500fdc6c743b08e4caadd92fade11a2b |
|
MD5 | 21185eb82c33cc184d99060ef04fb8c2 |
|
BLAKE2b-256 | 68cbbc6b1cc17226bdbf570fb6b227f96ad232df638c5370e35d7bbc483a0f4c |
Hashes for mrz_scanner_sdk-1.0.7-cp38-cp38-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8130a887407db05e8390154c0419a2c99320c56820a7e837cd504d85ba3ed866 |
|
MD5 | d088a0e0401c95dfdad183f6782cd7ca |
|
BLAKE2b-256 | efb25ef102668c5f79f26db7050eefa4f9c19942ce7edc5959206cd1705f4824 |
Hashes for mrz_scanner_sdk-1.0.7-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d6b1fd9b446d3b885dfc5eed70b293ff4d4cd1d2f0c471919b41b47655525297 |
|
MD5 | 74b63667cd854ddded8ee03e1aa626d2 |
|
BLAKE2b-256 | fd698ad067854b7c3c5b768afcc08bf7a7c609214eda20679c21c84caedce898 |
Hashes for mrz_scanner_sdk-1.0.7-cp37-cp37m-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6ffb029f362a14ba2dfbcec874f57e2999df5691112ce8f15849f0b2841e9e80 |
|
MD5 | 0b5bb9a82c2df736e8eeef01caf3f743 |
|
BLAKE2b-256 | 695cc47bc29a95187c360a4422cd37b73f39a1f70b9a777a410e8ca5095008d3 |
Hashes for mrz_scanner_sdk-1.0.7-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a1980d77e1569e2226653a81c4127a35fd2b227a5cb3245fa61083e32d9e4761 |
|
MD5 | 03ec5610bed99ed812c2109e0c293b5b |
|
BLAKE2b-256 | f38043ef0842092d3270db90090f3c0c00c0932dbbb2246e442ec5dafa68add5 |
Hashes for mrz_scanner_sdk-1.0.7-cp36-cp36m-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1871f10635e71a3763dee68f21f89466f7de4dd782f799789f48d11d3ba682af |
|
MD5 | ac722e8fa5147f1a5e8e27768d006f1e |
|
BLAKE2b-256 | 4eebec6b52f3ebf1c394aac7a2917b6579a729c67591dd162902012e4b2dd8b0 |