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

本文概述

机器可读护照(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

但是, 由于键和值将用单个空格分隔, 因此输出的格式将不正确, 而是可以很好地对其进行格式设置, 并使其可以由某些编程语言使用json格式进行处理。你可以使用以下格式生成输出, 在命令中添加–json标志:

mrz image.jpg --json

例如, 将输出以下图像:

PassportEye示例

以下数据:

{
  "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 PassportEye
from passporteye import read_mrz

# Process image
mrz = read_mrz("passport_image.jpg")

# Obtain image
mrz_data = 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

编码愉快!

来源:

https://www.srcmini02.com/61657.html

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?