IronOCR 操作指南 读取护照 使用 IronOCR 在 C# 中提取护照数据 Curtis Chau 已更新:2026年1月10日 下载 IronOCR NuGet 下载 DLL 下载 Windows 安装程序 免费试用 法学硕士副本 法学硕士副本 将页面复制为 Markdown 格式,用于 LLMs 在 ChatGPT 中打开 向 ChatGPT 咨询此页面 在双子座打开 向 Gemini 询问此页面 在 Grok 中打开 向 Grok 询问此页面 打开困惑 向 Perplexity 询问有关此页面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 复制链接 电子邮件文章 This article was translated from English: Does it need improvement? Translated View the article in English IronOCR 的 ReadPassport 方法只需一行 C# 代码即可从护照图像中提取结构化数据,包括姓名、护照号码、出生日期和有效期,因此非常适合移民和安全应用。 在机场值机柜台和安检等应用和系统中,工作人员每天都要处理大量护照,因此拥有一个能够准确提取关键旅客信息的可靠系统对于确保高效、简化的出入境流程至关重要。 IronOCR 库提供先进的 OCR 功能,专门针对护照读取进行了优化,其底层采用Tesseract 5 ,并结合了机器学习增强技术。 快速入门:一行提取护照 MRZ 信息 本示例展示了如何使用 OcrInput 加载护照图像,使用 ReadPassport() 提取数据,并从返回的 PassportInfo 中访问姓名、编号和日期等结构化字段。 无需复杂的设置,只需一行简单明了的文字。与传统的 Tesseract 实现不同,IronOCR 提供了专门用于文档提取的简化 API。 立即开始使用 NuGet 创建 PDF 文件: 使用 NuGet 包管理器安装 IronOCR PM > Install-Package IronOcr 复制并运行这段代码。 var passportInfo = new IronOcr.IronTesseract().ReadPassport(new IronOcr.OcrInput("passport.jpg")).PassportInfo; 部署到您的生产环境中进行测试 立即开始在您的项目中使用 IronOCR,免费试用! 免费试用30天 ### 最小工作流程(5 个步骤) 下载一个用于读取护照的 C# 库。 导入护照图像进行读取 确保文件仅包含护照图像,没有页眉或页脚 使用ReadPassport方法从图像中提取数据 访问OcrPassportResult属性以查看和进一步操作提取的护照数据 如何在 C# 中提取护照数据? 例如,我们将使用护照图像作为输入来展示 IronOCR 的功能。 使用OcrInput加载图像后,您可以利用ReadPassport方法识别和提取护照信息。 此方法返回一个OcrPassportResult对象,其中包含GivenNames 、 Country 、 PassportNumber 、 Surname 、 DateOfBirth和DateOfExpiry等属性。 PassportInfo对象的所有成员均为字符串。 ReadPassport 方法是 IronOCR 专业文档阅读功能的一部分,该功能还包括用于读取车牌、MICR 支票和其他结构化文档的方法。 该方法使用先进的计算机视觉技术来自动定位和提取 MRZ(机器可读区域)区域。 请注意 该方法目前仅适用于基于英语的护照。 在 .NET Framework 上使用高级扫描功能需要项目在 x64 架构上运行。 Mac 用户请注意, ReadPassport方法目前不会自动旋转输入内容。 使用输入时,请确保 MRZ 始终位于文件底部;否则,处理将失败。 我应该使用哪种护照图片格式? IronOCR 支持各种 图像格式,包括 JPG、PNG、TIFF 和 BMP。为获得最佳效果,请确保您的护照图像具有足够的分辨率(至少 300 DPI)和适当的光照。 如果扫描质量较低,可以调整 DPI 设置。 提取护照数据需要哪些代码? 下面的示例演示了提取护照数据的完整过程。 对于处理多本护照的应用程序,请考虑实施多线程支持以提高性能。 您还可以跟踪OCR进度,以了解长期运行的操作。 :path=/static-assets/ocr/content-code-examples/how-to/read-passport-read-passport.cs using IronOcr; using System; // Instantiate OCR engine var ocr = new IronTesseract(); using var inputPassport = new OcrInput(); inputPassport.LoadImage("passport.jpg"); // Perform OCR OcrPassportResult result = ocr.ReadPassport(inputPassport); // Output passport information Console.WriteLine(result.PassportInfo.GivenNames); Console.WriteLine(result.PassportInfo.Country); Console.WriteLine(result.PassportInfo.PassportNumber); Console.WriteLine(result.PassportInfo.Surname); Console.WriteLine(result.PassportInfo.DateOfBirth); Console.WriteLine(result.PassportInfo.DateOfExpiry); Imports IronOcr Imports System ' Instantiate OCR engine Private ocr = New IronTesseract() Private inputPassport = New OcrInput() inputPassport.LoadImage("passport.jpg") ' Perform OCR Dim result As OcrPassportResult = ocr.ReadPassport(inputPassport) ' Output passport information Console.WriteLine(result.PassportInfo.GivenNames) Console.WriteLine(result.PassportInfo.Country) Console.WriteLine(result.PassportInfo.PassportNumber) Console.WriteLine(result.PassportInfo.Surname) Console.WriteLine(result.PassportInfo.DateOfBirth) Console.WriteLine(result.PassportInfo.DateOfExpiry) $vbLabelText $csharpLabel ReadPassport 可以提供哪些输出? 提取的数据将以结构化格式返回,以便于与现有系统集成。 OcrResult 类提供了对所有提取信息的全面访问。 然后我们访问从OcrPassportResult对象获得的PassportInfo数据成员。 提取过程可自动处理各种护照布局和格式,在不同的签发国家提供一致的结果。 GivenNames : PassportInfo的一个属性,以字符串形式返回护照输入的姓名。 这相当于 MRZ 数据行的第一行,位置 4 至 44。 Country : PassportInfo的一个属性,以字符串形式返回护照输入的国家/地区。 这相当于 MRZ 数据行的第一行,位置 2 至 3。 返回的字符串拼出了发行国的全名,而不是缩写。 在我们的例子中,USA 返回 "美利坚合众国"。 PassportNumber : PassportInfo的一个属性,以字符串形式返回护照输入的护照号码。 这相当于 MRZ 数据行的第二行,位置 1 至 9。 Surname : PassportInfo的一个属性,以字符串形式返回护照输入的姓氏。 这相当于 MRZ 数据行的第一行,位置 4 至 44。 DateOfBirth : PassportInfo的一个属性,以 YYYY-MM-DD 格式的字符串返回护照输入的出生日期。 这相当于 MRZ 数据行的第二行,位置 14 至 19。 DateOfExpiry : PassportInfo的一个属性成员,以 YYYY-MM-DD 格式的字符串返回护照输入的到期日期。 这相当于 MRZ 数据行的第二行,位置 22 至 27。 我可以从护照中提取哪些 MRZ 信息? IronOCR 可读取任何遵循(国际民用航空组织)ICAO标准的护照底部两行中包含的 MRZ 信息。 MRZ 数据由两行数据组成,每组位置包含唯一的信息。 下面的简表显示了哪些信息与该行的索引相对应。 IronOCR 中的 MRZ 解析功能旨在处理打印质量和图像方向的变化。 对于具有挑战性的文档,您可以应用图像校正过滤器来提高识别准确性。 MRZ 部分看起来像什么? MRZ 通常位于护照页面的底部,由两行标准化文本组成。 了解 MRZ 结构有助于排除提取问题和验证结果。 第一排 职位 字段 说明 1文档类型通常"P"代表护照。 2-3签发国三字母国家代码(ISO 3166-1 alpha-3) 4-44姓氏和名字姓氏后跟"<<",名字后跟"<"分隔。 第二排 职位 字段 说明 1-9护照号码唯一护照号码 10校验位(护照号码)护照号码校验位 11-13国籍三字母国籍代码(ISO 3166-1 alpha-3) 14-19出生日期出生日期(YYMMDD格式) 20校验位(出生日期)出生日期校验位 21性别性别('M' 代表男性,'F' 代表女性,'X' 代表未指定) 22-27到期日期到期日期(YYMMDD 格式) 28校验位(到期日期)有效期校验位 29-42个人号码可选的个人号码(通常为国民身份证号码) 43校验位(个人号码)个人号码的校验位 44校验位(复合)总体校验位 如何调试和验证护照提取结果? 我们还可以通过获取从护照图像中提取的原始文本和置信度来验证 IronOCR 的结果,从而确认提取的信息是否准确。 以上述示例为例,我们可以访问OcrPassportResult对象的Confidence和Text属性。 出于调试目的,您可能需要高亮显示文本区域,以便直观地验证哪些区域已被识别。 该功能在排除提取问题或优化扫描区域时特别有用。 :path=/static-assets/ocr/content-code-examples/how-to/read-passport-debug.cs using IronOcr; using System; // Instantiate OCR engine var ocr = new IronTesseract(); using var inputPassport = new OcrInput(); inputPassport.LoadImage("passport.jpg"); // Perform OCR OcrPassportResult result = ocr.ReadPassport(inputPassport); // Output Confidence level and raw extracted text Console.WriteLine(result.Confidence); Console.WriteLine(result.Text); Imports IronOcr Imports System ' Instantiate OCR engine Private ocr = New IronTesseract() Private inputPassport = New OcrInput() inputPassport.LoadImage("passport.jpg") ' Perform OCR Dim result As OcrPassportResult = ocr.ReadPassport(inputPassport) ' Output Confidence level and raw extracted text Console.WriteLine(result.Confidence) Console.WriteLine(result.Text) $vbLabelText $csharpLabel !VS 代码调试控制台显示护照数据输出,包括个人详细信息、国家和编码字符串。 Confidence : OcrPassportResult的Confidence属性是一个浮点数,表示 OCR 统计准确度置信度,即每个字符的平均值。 如果护照图像模糊或包含其他信息,该浮动值会降低。 1 表示信心最高,0 表示信心最低。 对于生产应用程序,请考虑实施 结果置信度阈值,以确保数据质量。 Text : OcrPassportResult的Text属性包含从护照图像中提取的原始、未解析的文本。 开发人员可将其用于单元测试,以验证提取的护照图像文本。 对于高级场景,您可以将结果导出为 hOCR 格式,以便进一步分析。 护照扫描应用程序的最佳实践 在生产环境中实施护照扫描时,还应考虑以下因素: 1.图像质量:确保输入图像符合最低质量标准。 Filter Wizard 可帮助优化图像以提高识别率。 2.性能:对于大批量处理,请实施 async 支持,并考虑批量处理多本护照。 3.安全性:由于护照数据是敏感数据,因此要确保妥善处理数据,并考虑与安全的文档管理系统集成。 4.验证:对提取的 MRZ 数据实施校验码验证,以确保准确性。 MRZ 格式包含多个校验码,可用于验证提取信息的完整性。 5.错误处理:针对护照图像可能损坏、光线不足或包含非标准格式的情况,实施强大的错误处理功能。 常见问题解答 如何用 C# 从图像中提取护照数据? 您可以使用 IronOCR 的 ReadPassport 方法提取护照数据。只需使用 OcrInput 加载护照图像,然后调用 ReadPassport() 即可在一行代码中获取包括姓名、护照号码、出生日期和有效期在内的结构化数据。 哪些护照信息可以自动提取? IronOCR 的 ReadPassport 方法可从护照图像中提取姓名、国家、护照号码、姓氏、出生日期和到期日期。所有数据都以字符串形式返回到结构化的 PassportInfo 对象中。 读取护照 MRZ 数据需要复杂的设置吗? 无需复杂设置。IronOCR 提供简化的 API,只需一行代码即可提取护照 MRZ 数据,不像传统的 Tesseract 实现需要更多的配置。 护照阅读功能由什么技术提供? IronOCR 在引擎盖下利用 Tesseract 5 的机器学习增强功能和先进的计算机视觉技术,自动定位和提取护照图像中的 MRZ(机器可读区)区域。 能否用于机场出入境系统? 是的,IronOCR 是机场移民和安全应用的理想选择,在这些应用中,工作人员每天都要处理大量的护照。它能可靠地提取对任务至关重要的旅客信息,确保高效的出入境流程。 Curtis Chau 立即与工程团队聊天 技术作家 Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。 审核者 Jeffrey T. Fritz 首席项目经理 - .NET 社区团队 Jeff 也是 .NET 和 Visual Studio 团队的首席项目经理。他是 .NET Conf 虚拟会议系列的执行制片人,并主持“Fritz and Friends”直播节目,每周两次与观众一起谈论技术并编写代码。Jeff 撰写研讨会、演示文稿并计划包括 Microsoft Build、Microsoft Ignite、.NET Conf 和 Microsoft MVP 峰会在内的最大型微软开发者活动的内容。 准备开始了吗? Nuget 下载 5,384,824 | 版本: 2026.2 刚刚发布 免费 NuGet 下载 总下载量:5,384,824 查看许可证