如何使用 IronOCR 提取护照数据

This article was translated from English: Does it need improvement?
Translated
View the article in English

作者:Curtis Chau

在机场柜台值机和安检等应用和系统中,工作人员每天都要处理大量护照,因此拥有一个能够准确提取旅客关键信息的可靠系统对于确保高效、简化的出入境流程至关重要。

IronOCR 是一款可靠的工具,可以毫不费力地从护照中提取和读取数据。 只需简单调用 ReadPassport 方法,翻译过程就会变得简单明了。

立即在您的项目中开始使用IronOCR,并享受免费试用。

第一步:
green arrow pointer

要使用此功能,您还必须安装IronOcr.Extension.AdvancedScan包装

提取护照数据示例

举例来说,我们将使用一张护照图片作为输入,来展示 IronOCR 的功能。 使用 OcrInput 加载图像后,您可以使用 ReadPassport 方法来识别和提取护照信息。 该方法返回一个OcrPassportResult对象,其中包含GivenNamesCountryPassportNumberSurnameDateOfBirthDateOfExpiry等属性。 PassportInfo 对象的所有成员都是字符串。

请注意

  • 该方法目前仅适用于英文版护照。
  • 使用高级扫描在 .NET Framework 上需要项目运行在 x64 架构上。

护照输入

图片样本

代码

: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)
VB   C#

输出

结果输出

然后,我们访问从 OcrPassportResult 对象中获取的 PassportInfo 数据成员。

  • GivenNames:PassportInfo`的一个属性,以字符串形式返回输入的护照的给定名称。 这相当于 MRZ 数据行的第一行,位置从 4 到 44。
  • 国家:PassportInfo "的一个属性,以字符串形式返回输入护照的国家。 这相当于 MRZ 数据行的第一行,位置从 2 到 3。 返回的字符串将拼出发行国的全名,而不是缩写。 在我们的例子中,USA 返回美利坚合众国。
  • PassportNumber:PassportInfo "的一个属性,以字符串形式返回输入的护照名称。 这相当于 MRZ 数据行的第二行,位置从 1 到 9。
  • :PassportInfo "的一个属性,以字符串形式返回输入的护照姓氏。 这相当于 MRZ 数据行的第一行,位置从 4 到 44。
  • DateOfBirth:护照信息"(PassportInfo)的一个属性,以 YYYY-MM-DD 格式的字符串返回输入的护照出生日期。 这相当于 MRZ 数据行的第二个位置 14 至 19。
  • DateOfExpiry:PassportInfo "的一个属性成员,以 YYYY-MM-DD 格式的字符串返回护照输入的到期日期。 这相当于 MRZ 数据行的第二个位置 22 至 27。

了解 MRZ 信息

IronOCR 可读取任何护照底部两行中包含的 MRZ 信息,这些信息遵循的标准是(国际民用航空组织) 国际民航组织. MRZ 数据由两行数据组成,每组位置包含唯一的信息。 下面是一个简表,说明哪些信息与行文索引相对应; 所有例外情况和唯一标识符请参考国际民航组织文档标准。

护照输入示例:

MRZ 所在地

第一行

职位 领域 说明
文件类型通常 "P "代表护照
-3签发国家三字母国家代码(ISO 3166-1 alpha-3)
-44姓氏和名字姓氏后加''。<<' and then given names separated by '<'

第二行

职位 领域 说明
-9护照号码唯一护照号
0校验码(护照号码)护照号码的校验数位
1-13国籍三字母国籍代码(ISO 3166-1 alpha-3)
4-19出生日期出生日期(YYMMDD 格式
0校验码(出生日期)出生日期的校验数位
1性别性别("M "代表男性,"F "代表女性,"X "代表未指定性别)
2-27到期日期有效期(YYMMDD 格式
8校验码(到期日期)检查有效日期的数字
9-42个人编号可选的个人编号(通常是身份证号码)
3校验码(个人编号)个人编号的校验码
4校验数位(复合)总体校验码

调试

我们还可以通过获取从护照图像中提取的原始文本以及置信度来验证 IronOCR 的结果,从而确认提取的信息是否准确。 使用上面的示例,我们可以访问 OcrPassportResult 对象的 ConfidenceText 属性。

: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)
VB   C#

控制台输出

调试
  • 信心:OcrPassportResult "中的 "Confidence "属性是一个浮点数,表示作为每个字符平均值的 OCR 统计准确性置信度。 如果护照图像模糊或包含其他信息,则浮动率会降低。 其中,"1 "表示信心最高,"0 "表示信心最低,"1 "表示信心最大,"0 "表示信心最小。
  • 文本:OcrPassportResult中的Text` 属性包含从护照图像中提取的未经解析的原始文本。 开发人员可以将其用于单元测试,以验证提取的护照图像文本。