如何使用 IronOCR 提取护照数据
在机场柜台值机和安检等应用和系统中,工作人员每天都要处理大量护照,因此拥有一个能够准确提取旅客关键信息的可靠系统对于确保高效、简化的出入境流程至关重要。
IronOCR 是一款可靠的工具,可以毫不费力地从护照中提取和读取数据。 只需简单调用 ReadPassport
方法,翻译过程就会变得简单明了。
如何使用 IronOCR 提取护照数据
- 下载读取护照的 C# 库
- 导入护照图像进行阅读
- 确保文件只包含护照图像,不包含页眉或页脚
- 使用
读取护照
从图像中提取数据的方法 - 访问 OcrPassportResult 查看和进一步处理提取的护照数据的属性
立即在您的项目中开始使用IronOCR,并享受免费试用。
要使用此功能,您还必须安装IronOcr.Extension.AdvancedScan包装
提取护照数据示例
举例来说,我们将使用一张护照图片作为输入,来展示 IronOCR 的功能。 使用 OcrInput 加载图像后,您可以使用 ReadPassport
方法来识别和提取护照信息。 该方法返回一个OcrPassportResult对象,其中包含GivenNames、Country、PassportNumber、Surname、DateOfBirth和DateOfExpiry等属性。 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)
输出
然后,我们访问从 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 数据由两行数据组成,每组位置包含唯一的信息。 下面是一个简表,说明哪些信息与行文索引相对应; 所有例外情况和唯一标识符请参考国际民航组织文档标准。
护照输入示例:
第一行
职位 | 领域 | 说明 |
---|---|---|
文件类型 | 通常 "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
对象的 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)
控制台输出:
- 信心:OcrPassportResult "中的 "Confidence "属性是一个浮点数,表示作为每个字符平均值的 OCR 统计准确性置信度。 如果护照图像模糊或包含其他信息,则浮动率会降低。 其中,"1 "表示信心最高,"0 "表示信心最低,"1 "表示信心最大,"0 "表示信心最小。
- 文本:OcrPassportResult
中的
Text` 属性包含从护照图像中提取的未经解析的原始文本。 开发人员可以将其用于单元测试,以验证提取的护照图像文本。