使用 Dynamsoft C++ Capture Vision SDK 开发护照、身份证和签证的桌面 MRZ 扫描仪

💡 原文英文,约2600词,阅读约需10分钟。
📝

内容提要

本文介绍了如何使用Dynamsoft Capture Vision C++ SDK开发桌面MRZ扫描仪,从各种旅行文件中准确识别和提取持有人的个人信息。文章提供了在Windows和Linux上使用CMake项目实现MRZ识别的步骤指南,并提供了两个示例:一个是从文件加载图像,另一个是从摄像头捕获和处理图像。文章还介绍了如何设置MRZ识别模板,并实现了MRZ数据解析的示例代码。

🔎

延伸解读

MRZ识别模板的配置要点

文章提供的MRZ.json模板定义了多种旅行文件的识别参数,包括护照(TD3)、签证(TD2/TD3)和身份证(TD1/TD2)。每种类型通过正则表达式和字符串长度范围来匹配MRZ行,例如护照TD3要求44字符,身份证TD1要求30字符。模板还配置了易混淆字符校正(如0/O、1/I、5/S)和图像二值化参数,这些设置直接影响识别准确率。开发者可根据实际文档类型调整这些参数。

从文件与从摄像头识别的实现差异

文章提供了两个示例:从文件加载图像和从摄像头捕获图像。文件示例使用同步的Capture方法,适合静态图像处理;摄像头示例则通过回调机制异步接收识别结果,并利用OpenCV实时显示视频流和识别框。摄像头示例中,图像通过自定义的CImageSourceAdapter添加到缓冲区,并设置了缓冲区溢出保护模式,确保处理实时性。开发者需根据应用场景选择合适的方式。

MRZ数据解析与验证状态处理

MRZResult类负责从解析结果中提取字段,如文档号、姓名、国籍等。代码中通过GetFieldValidationStatus检查字段验证状态,仅当验证通过时才提取值,否则字段留空。对于原始文本行,如果验证失败会在行末添加“Validation Failed”标记。这种处理方式有助于开发者识别识别质量,但需注意验证失败的字段可能仍包含有用信息,可根据需求调整逻辑。

构建与部署的注意事项

CMake项目配置支持Windows和Linux,通过ENABLE_OPENCV选项切换文件或摄像头示例。构建后,需将Dynamsoft的动态库、模板文件(MRZ.json、DLR-PresetTemplates.json)、字符模型和解析资源复制到输出目录,否则运行时可能找不到资源。在Linux上还需设置RPATH以确保库加载。开发者应确保所有依赖文件正确部署,避免运行时错误。

❓

Q&A

什么是机器可读区(MRZ)?

机器可读区(MRZ)是护照、身份证、签证等旅行文件上的一部分,编码持有人的个人信息。

如何使用Dynamsoft Capture Vision SDK开发MRZ扫描仪?

可以通过设置CMake项目并使用Dynamsoft Capture Vision SDK来开发MRZ扫描仪,具体步骤包括创建源文件和配置CMakeLists.txt。

在Windows和Linux上如何配置CMake项目?

在CMake项目中,需要设置操作系统检测、库路径和包含目录,并根据是否启用OpenCV来选择编译的源文件。

如何从文件加载图像并识别MRZ数据?

可以通过初始化SDK并加载MRZ识别模板文件,然后从文件中读取图像并调用识别函数来识别MRZ数据。

如何从摄像头捕获图像并进行MRZ识别?

通过使用OpenCV打开摄像头,注册回调函数来处理捕获的图像,并调用MRZ识别函数来识别数据。

MRZ识别模板文件的作用是什么?

MRZ识别模板文件定义了识别过程中的参数和配置,包括文本长度范围和正则表达式模式。

🏷️

标签

➡️

继续阅读