如何使用PassportEye库使用Python从护照图像中检索机器可读区域

本文概述

  • 要求
  • 1.安装PassportEye
  • 2.从CLI使用PassportEye
  • 3.使用python API
机器可读护照(MRP)是一种机器可读旅行证件(MRTD), 其身份页面上的数据以光学字符识别格式编码。它可以具有2行或3行机器可读数据。此方法允许处理根据ICAO文件9303(由国际标准化组织和国际电工委员会以ISO / IEC 7501-1认可)编写的MRZ。某些应用程序将需要能够以某种方式扫描此类数据, 因此最简单的方法之一就是从图像文件中识别出它。
在本文中, 我们将向你展示如何使用Python的PassportEye库从护照图片中检索MRZ信息。
要求 你将需要在系统上安装OCR引擎Tesseract, 并且可以从PATH获得。你可以在任何系统(unix或Windows)上轻松安装此工具, 因此请在Github上查看官方存储库。
你还可以使用以下命令从cli检查tesseract的可用性:
tesseract --help

1.安装PassportEye PassportEye是一个python库, 用于对使用机器可读旅行格式的身份证件进行图像处理。该软件包提供了一套工具包, 用于从扫描的身份证件中识别机器可读区域(MRZ)。文档可以在页面上任意放置-代码尝试查找类似于MRZ的内容并从那里进行解析。识别过程可能很慢-有些文档大约需要10秒钟或更长时间。它的精度不是很完美, 但是就开发人员可用的测试文档而言似乎还不错。在大约80%的情况下, 只要页面上有清晰可见的MRZ, 系统就会识别出该文本并将其提取到底层OCR引擎(Google Tesseract)的最佳功能。
你可以使用以下命令安装此库:
pip install PassportEye

安装过程将花费一些时间。有关此库的更多信息, 请访问Github上的官方存储库。
2.从CLI使用PassportEye PassportEye库将全局公开mrz命令, 此工具将处理给定的文件名, 提取找到的MRZ信息并以表格形式打印出来。运行mrz – json < 文件名> 将在JSON中输出相同的信息。此外, 运行mrz – save-roi < roi.png> 还将把检测到的MRZ(“ 感兴趣区域” )提取到一个单独的png文件中, 以供进一步探索。请注意, 该工具仅对PDF文件提供有限的支持, 它会尝试从PDF中提取第一个DCT编码的图像并对其进行识别。对于大多数由扫描仪生成的一页PDF来说, 这似乎可以正常工作, 但尚未经过广泛的测试。
该命令的最基本用法如下:
mrz image.jpg

【如何使用PassportEye库使用Python从护照图像中检索机器可读区域】但是, 由于键和值将用单个空格分隔, 因此输出的格式将不正确, 而是可以很好地对其进行格式设置, 并使其可以由某些编程语言使用json格式进行处理。你可以使用以下格式生成输出, 在命令中添加– json标志:
mrz image.jpg --json

例如, 将输出以下图像:
如何使用PassportEye库使用Python从护照图像中检索机器可读区域

文章图片
以下数据:
{"mrz_type": "TD3", "valid_score": 62, "type": "P< ", "country": "PRT", "number": "1700044< < ", "date_of_birth": "740407", "expiration_date": "220616", "nationality": "PRT", "sex": "F", "names": "INES", "surname": "GARCAO DE MAGALHAES", "personal_number": "99999999< < < < < < ", "check_number": "9", "check_date_of_birth": "6", "check_expiration_date": "1", "check_composite": "0", "check_personal_number": "8", "valid_number": false, "valid_date_of_birth": true, "valid_expiration_date": true, "valid_composite": false, "valid_personal_number": true, "method": "direct", "walltime": 2.2025797367095947, "filename": "image.jpg"}

3.使用python API 如果你想将此工具集成到你的python代码中, 那么你将需要遵循一个非常简单的逻辑。从PassportEye库中导入read_mrz函数, 并作为第一个参数提供要处理的图像的路径(它可以是磁盘上文件的路径, 也可以是包含图像数据的字节流)。获得结果之后, 转换to_dict方法以获得mrz数据并使用键(使用上一步中的JSON字符串中提到的键)获得它:
# Import PassportEyefrom passporteye import read_mrz# Process imagemrz = read_mrz("passport_image.jpg")# Obtain imagemrz_data = http://www.srcmini.com/mrz.to_dict()print(mrz_data['country'])print(mrz_data['names'])print(mrz_data['surname'])print(mrz_data['type'])# And so on with the rest of shown properties in the previous JSON string

编码愉快!

    推荐阅读