{"id":15998220,"url":"https://github.com/yushulx/python-mrz-scanner-sdk","last_synced_at":"2025-03-17T16:30:28.927Z","repository":{"id":54612755,"uuid":"521571184","full_name":"yushulx/python-mrz-scanner-sdk","owner":"yushulx","description":"Python MRZ scanner SDK built with Dynamsoft Label Recognizer","archived":false,"fork":false,"pushed_at":"2024-10-17T08:21:21.000Z","size":94643,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-26T01:16:08.669Z","etag":null,"topics":["cpython","idcard","machine-readable-zone","mrz","ocr","passport","python","python-extension","python3","visa","wheel"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/mrz-scanner-sdk/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yushulx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-05T09:01:07.000Z","updated_at":"2024-11-13T08:41:26.000Z","dependencies_parsed_at":"2024-10-19T02:44:42.862Z","dependency_job_id":null,"html_url":"https://github.com/yushulx/python-mrz-scanner-sdk","commit_stats":{"total_commits":36,"total_committers":1,"mean_commits":36.0,"dds":0.0,"last_synced_commit":"55c806a383fb7dfca459e64f051cfe11511a5d9c"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yushulx%2Fpython-mrz-scanner-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yushulx%2Fpython-mrz-scanner-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yushulx%2Fpython-mrz-scanner-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yushulx%2Fpython-mrz-scanner-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yushulx","download_url":"https://codeload.github.com/yushulx/python-mrz-scanner-sdk/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243870975,"owners_count":20361284,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpython","idcard","machine-readable-zone","mrz","ocr","passport","python","python-extension","python3","visa","wheel"],"created_at":"2024-10-08T08:08:12.716Z","updated_at":"2025-03-17T16:30:23.918Z","avatar_url":"https://github.com/yushulx.png","language":"C++","readme":"# Python MRZ Scanner SDK\nThis project provides a Python-C++ binding for the [Dynamsoft Label Recognizer v2.x](https://www.dynamsoft.com/label-recognition/overview/), allowing developers to build **MRZ (Machine Readable Zone)** scanner applications on both **Windows** and **Linux** platforms using Python.\n\n\u003e 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](https://pypi.org/project/dynamsoft-capture-vision-bundle/) page on PyPI for more details.\n\n## About Dynamsoft Capture Vision Bundle\n- Activate the SDK with a [30-day FREE trial license](https://www.dynamsoft.com/customer/license/trialLicense/?product=dcv\u0026package=cross-platform).\n- Install the SDK via `pip install dynamsoft-capture-vision-bundle`.\n\n### Comparison Table\n| Feature | Unofficial Wrapper (Community) | Official Dynamsoft Capture Vision SDK |\n| --- | --- | --- |\n| Support | Community-driven, best effort | Official support from Dynamsoft |\n| Documentation | README only | [Comprehensive Online Documentation](https://www.dynamsoft.com/capture-vision/docs/server/programming/python/?lang=python) |\n| API Coverage | Limited | Full API coverage |\n|Feature Updates| May lag behind the official SDK | First to receive new features |\n| Compatibility | Limited testing across environments| Thoroughly tested across all supported environments|\n| OS Support | Windows, Linux | Windows, Linux, **macOS** |\n\n## Supported Python Versions\n* Python 3.x\n\n## Installation\nInstall the required dependencies:\n```bash \npip install mrz opencv-python\n```\n\n## Command-line Usage\n- Scan MRZ from an image file:\n    ```bash \n    scanmrz \u003cfile-name\u003e -l \u003clicense-key\u003e\n    ```\n- Scan MRZ from a webcam:\n    ```bash \n    scanmrz \u003cfile-name\u003e -u 1 -l \u003clicense-key\u003e\n    ```\n\n    ![python mrz scanner](https://www.dynamsoft.com/codepool/img/2022/08/python-mrz-scanner.png)\n\n## Quick Start\n```python\nimport mrzscanner\nfrom mrz.checker.td1 import TD1CodeChecker\nfrom mrz.checker.td2 import TD2CodeChecker\nfrom mrz.checker.td3 import TD3CodeChecker\nfrom mrz.checker.mrva import MRVACodeChecker\nfrom mrz.checker.mrvb import MRVBCodeChecker\n\ndef check(lines):\n    try:\n        td1_check = TD1CodeChecker(lines)\n        if bool(td1_check):\n            return \"TD1\", td1_check.fields()\n    except Exception as err:\n        pass\n    \n    try:\n        td2_check = TD2CodeChecker(lines)\n        if bool(td2_check):\n            return \"TD2\", td2_check.fields()\n    except Exception as err:\n        pass\n    \n    try:\n        td3_check = TD3CodeChecker(lines)\n        if bool(td3_check):\n            return \"TD3\", td3_check.fields()\n    except Exception as err:\n        pass\n    \n    try:\n        mrva_check = MRVACodeChecker(lines)\n        if bool(mrva_check):\n            return \"MRVA\", mrva_check.fields()\n    except Exception as err:\n        pass\n    \n    try:\n        mrvb_check = MRVBCodeChecker(lines)\n        if bool(mrvb_check):\n            return \"MRVB\", mrvb_check.fields()\n    except Exception as err:\n        pass\n    \n    return 'No valid MRZ information found'\n\n# set license\nmrzscanner.initLicense(\"LICENSE-KEY\")\n\n# initialize mrz scanner\nscanner = mrzscanner.createInstance()\n\n# load MRZ model\nscanner.loadModel(mrzscanner.load_settings())\n\nprint('')\n# decodeFile()\ns = \"\"\nresults = scanner.decodeFile(\"images/1.png\")\nfor result in results:\n    print(result.text)\n    s += result.text + '\\n'\nprint('')\nprint(check(s[:-1]))\nprint('')\n```\n\n## API Reference\n- `mrzscanner.initLicense('YOUR-LICENSE-KEY')`: Initialize the SDK with your license key.\n    \n    ```python\n    mrzscanner.initLicense(\"LICENSE-KEY\")\n    ```\n\n- `mrzscanner.createInstance()`: Create an instance of the MRZ scanner.\n    \n    ```python\n    scanner = mrzscanner.createInstance()\n    ```\n- `scanner.loadModel(\u003cmodel configuration file\u003e)`: Load the MRZ model configuration.\n    \n    ```python\n    scanner.loadModel(mrzscanner.load_settings())\n    ```\n- `decodeFile(\u003cimage file\u003e)`: Recognize MRZ from an image file.\n\n    ```python\n    results = scanner.decodeFile(\u003cimage-file\u003e)\n    for result in results:\n        print(result.text)\n    ```\n- `decodeMat(\u003copencv mat data\u003e)`: Recognize MRZ from an OpenCV Mat.\n    ```python\n    import cv2\n    image = cv2.imread(\u003cimage-file\u003e)\n    results = scanner.decodeMat(image)\n    for result in results:\n        print(result.text)\n    ```\n- `addAsyncListener(callback function)`: Register a callback function to receive MRZ recognition results asynchronously.\n- `decodeMatAsync(\u003copencv mat data\u003e)`: Recognize MRZ from OpenCV Mat asynchronously.\n    ```python\n    def callback(results):\n        s = \"\"\n        for result in results:\n            print(result.text)\n            s += result.text + '\\n'\n    \n        print('')\n        print(check(s[:-1]))\n    \n    import cv2\n    image = cv2.imread(\u003cimage-file\u003e)\n    scanner.addAsyncListener(callback)\n    for i in range (2):\n        scanner.decodeMatAsync(image)\n        sleep(1)\n    ```\n\n## How to Build the Python MRZ Scanner Extension\n- Create a source distribution:\n    \n    ```bash\n    python setup.py sdist\n    ```\n\n- setuptools:\n    \n    ```bash\n    python setup.py build\n    python setup.py develop \n    ```\n- Build wheel:\n    \n    ```bash\n    pip wheel . --verbose\n    # Or\n    python setup.py bdist_wheel\n    ```\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyushulx%2Fpython-mrz-scanner-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyushulx%2Fpython-mrz-scanner-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyushulx%2Fpython-mrz-scanner-sdk/lists"}