跳至页脚内容
使用 IRONOCR

护照 OCR SDK(开发者教程)

护照是个人的身份证明; 我们使用护照旅行和登记生活中的重要方面。 然而,护照格式并不总是易于阅读。 想象一下,在假日旅游和休闲季节,突然出现了许多旅行者。 移民代理如何通过手动数据录入处理大量数据并手动检索正确信息?

因此,许多应用程序和企业都转向了光学字符识别 (OCR),它允许开发人员快速提取打印文本和数字图像。

同样,护照 OCR 是一种使用 光学字符识别 (OCR) 软件从护照中提取有意义信息的技术; 该项目还利用所有护照的机器可读区检索信息,以快速识别试图通过移民局的个人。 在需要快速识别护照信息的场景中,或者在涉及自动提取护照数据的流程中,护照 OCR 至关重要,是机场和出入境边防部门提高效率和速度的基石。

尽管多年来护照 OCR 软件和技术得到了进一步发展,但各种因素仍会影响文档扫描过程。 护照上有噪点或污点的数字图像会严重影响护照的准确性。 此外,由于机器可读区是一个独特的结构化数据集,OCR 库在对护照进行操作时有时会造成混淆。 开发人员可能能够提取数据,但必须独立对参数进行排序。 然而,使用 IronOCR,专门的方法被优化用于读取护照; 翻译结果要让开发人员能够快速获取和处理信息,这非常适合大批量扫描和自动化。

在本文中,我们将简要讨论使用 IronOCR 获取和操作护照信息以实现数据提取自动化,并进一步详细介绍 IronOCR 如何与护照进行交互。

IronOCR:一个 C# OCR 库

!a href="/static-assets/ocr/blog/passport-ocr-sdk/passport-ocr-sdk-1.webp">Passport OCR SDK(开发人员教程):图 1 - IronOCR:一个 C# OCR 库。

IronOCR是一个 C# 库,为所有与 OCR 相关的需求提供易用的方法和灵活的功能。 除了标准技术外,IronOCR 还允许开发人员充分利用和定制一个版本的 Tesseract 来实现所有相关任务。

以下是其最显著特点的简要介绍:

1.跨平台兼容性: IronOCR 兼容大多数 .NET 平台,包括 .NET 8、7、6 和 5,并支持 .NET Framework 4.6.2 及以上版本。 有了这个库,开发人员就不必担心交叉兼容性问题,因为它还支持从 Windows、macOS 到 Azure 甚至 Linux 等所有操作系统。 2.灵活性: OCR 输入有多种格式,因此库必须能够处理各种格式,才能真正具有灵活性。 IronOCR 可接受所有流行的图像格式(jpg、png 和 gif),同时支持 C# 中的本地 "System.Drawing.Objects",从而可以更轻松地集成到现有代码库中。 3.支持和易用性: IronOCR 文档齐全,有大量的 API 和教程说明各种形式的功能。 此外,还提供 24/5 支持,确保开发人员始终得到支持。 4.支持多种语言: IronOCR 支持多达 125 种语言,还支持自定义语言,是所有国际文档处理的通用工具。

使用 IronOCR 读取护照

许可证密钥

请记住,IronOCR 的运行需要许可密钥。 您可以访问此链接,作为免费试用的一部分获得密钥。

// Replace the license key variable with the trial key you obtained
IronOcr.License.LicenseKey = "REPLACE-WITH-YOUR-KEY";
// Replace the license key variable with the trial key you obtained
IronOcr.License.LicenseKey = "REPLACE-WITH-YOUR-KEY";
' Replace the license key variable with the trial key you obtained
IronOcr.License.LicenseKey = "REPLACE-WITH-YOUR-KEY"
$vbLabelText   $csharpLabel

收到试用密钥后,请在项目中设置此变量。

代码示例

下面的代码展示了 IronOCR 如何使用库中的护照 OCR SDK 获取护照图像并提取所有相关信息。

输入图片

护照 OCR SDK(开发人员教程):图 2 - 输入图像

using IronOcr;
using System;

class Program {
    public static void Main() {
        // Instantiate OCR engine
        var ocr = new IronTesseract();
        using var inputPassport = new OcrInput();
        inputPassport.AddImage("Passport.jpg");

        // Perform OCR to read the passport
        OcrResult result = ocr.Read(inputPassport);

        // Output passport information
        Console.WriteLine("Given Names: " + result.Passport?.GivenNames);
        Console.WriteLine("Country: " + result.Passport?.Country);
        Console.WriteLine("Passport Number: " + result.Passport?.PassportNumber);
        Console.WriteLine("Surname: " + result.Passport?.Surname);
        Console.WriteLine("Date of Birth: " + result.Passport?.DateOfBirth.ToString("yyyy-MM-dd"));
        Console.WriteLine("Date of Expiry: " + result.Passport?.DateOfExpiry.ToString("yyyy-MM-dd"));
    }
}
using IronOcr;
using System;

class Program {
    public static void Main() {
        // Instantiate OCR engine
        var ocr = new IronTesseract();
        using var inputPassport = new OcrInput();
        inputPassport.AddImage("Passport.jpg");

        // Perform OCR to read the passport
        OcrResult result = ocr.Read(inputPassport);

        // Output passport information
        Console.WriteLine("Given Names: " + result.Passport?.GivenNames);
        Console.WriteLine("Country: " + result.Passport?.Country);
        Console.WriteLine("Passport Number: " + result.Passport?.PassportNumber);
        Console.WriteLine("Surname: " + result.Passport?.Surname);
        Console.WriteLine("Date of Birth: " + result.Passport?.DateOfBirth.ToString("yyyy-MM-dd"));
        Console.WriteLine("Date of Expiry: " + result.Passport?.DateOfExpiry.ToString("yyyy-MM-dd"));
    }
}
Imports IronOcr
Imports System

Friend Class Program
	Public Shared Sub Main()
		' Instantiate OCR engine
		Dim ocr = New IronTesseract()
		Dim inputPassport = New OcrInput()
		inputPassport.AddImage("Passport.jpg")

		' Perform OCR to read the passport
		Dim result As OcrResult = ocr.Read(inputPassport)

		' Output passport information
		Console.WriteLine("Given Names: " & result.Passport?.GivenNames)
		Console.WriteLine("Country: " & result.Passport?.Country)
		Console.WriteLine("Passport Number: " & result.Passport?.PassportNumber)
		Console.WriteLine("Surname: " & result.Passport?.Surname)
		Console.WriteLine("Date of Birth: " & result.Passport?.DateOfBirth.ToString("yyyy-MM-dd"))
		Console.WriteLine("Date of Expiry: " & result.Passport?.DateOfExpiry.ToString("yyyy-MM-dd"))
	End Sub
End Class
$vbLabelText   $csharpLabel

代码解释

  1. 导入库: 首先将 IronOCR 和其他必要库导入代码库。 2.初始化 OCR 引擎:我们创建一个新的 IronTesseract 对象来初始化 OCR 引擎。 3.加载护照图像:然后,我们创建一个新的 OcrInput 并使用 AddImage() 加载包含护照的图像。 4.使用 OCR 阅读护照: 我们使用 Read() 方法对输入图像执行 OCR 操作并保存结果。 5.输出结果:我们输出提取的护照信息,如姓名、国家、护照号码、姓氏、出生日期和到期日期。

控制台输出

护照 OCR SDK(开发人员教程):图 3 - 控制台输出

机器可读区域

IronOCR 可以按照国际民用航空组织(ICAO)的标准,从任何护照的最下面两行提取机器可读区域(MRZ)信息。 MRZ 数据由两行组成,每行包含唯一的信息。

下面是一个简表:

护照 OCR SDK(开发人员教程):图 4 - MRZ 表

护照 OCR 和调试的挑战

扫描数字图像时,图像质量始终是个问题。 失真的图像质量会模糊信息,增加确认数据准确性的难度。 此外,在处理护照等关键任务信息时,开发人员必须考虑数据的安全性和合规性。

IronOCR 还提供了一种调试和展示交互信息概念的方法。 这些方法可以让开发人员排除故障,并对提取的数据充满信心。

下面是一个简单的例子:

using IronOcr;
using System;

class DebugExample {
    public static void Main() {
        // Instantiate OCR engine
        var ocr = new IronTesseract();
        using var inputPassport = new OcrInput();
        inputPassport.AddImage("Passport.jpg");

        // Perform OCR
        OcrResult result = ocr.Read(inputPassport);

        // Output Confidence level and raw extracted text
        Console.WriteLine("OCR Confidence: " + result.Confidence);
        Console.WriteLine("Extracted Text: ");
        Console.WriteLine(result.Text);
    }
}
using IronOcr;
using System;

class DebugExample {
    public static void Main() {
        // Instantiate OCR engine
        var ocr = new IronTesseract();
        using var inputPassport = new OcrInput();
        inputPassport.AddImage("Passport.jpg");

        // Perform OCR
        OcrResult result = ocr.Read(inputPassport);

        // Output Confidence level and raw extracted text
        Console.WriteLine("OCR Confidence: " + result.Confidence);
        Console.WriteLine("Extracted Text: ");
        Console.WriteLine(result.Text);
    }
}
Imports IronOcr
Imports System

Friend Class DebugExample
	Public Shared Sub Main()
		' Instantiate OCR engine
		Dim ocr = New IronTesseract()
		Dim inputPassport = New OcrInput()
		inputPassport.AddImage("Passport.jpg")

		' Perform OCR
		Dim result As OcrResult = ocr.Read(inputPassport)

		' Output Confidence level and raw extracted text
		Console.WriteLine("OCR Confidence: " & result.Confidence)
		Console.WriteLine("Extracted Text: ")
		Console.WriteLine(result.Text)
	End Sub
End Class
$vbLabelText   $csharpLabel

调试代码说明

1.置信度:OcrResult 中的 Confidence 属性是一个浮点数,代表 OCR 的统计精度置信度,以每个字符的平均值计算。 较低的值表示护照图像可能模糊或包含额外信息。 1 代表最高置信度,0 代表最低置信度。 2.文本: OcrResult 中的 Text 属性包含从护照图像中提取的未处理文本。 开发人员可以在单元测试中使用它,通过等价断言来验证从护照图像中提取的文本。

结论

护照 OCR SDK(开发人员教程):图 5 - IronOCR

Passport OCR 技术通过自动提取数据和提高操作效率,大大增强了文档处理能力。 它可以简化身份验证和 KYC 流程,在处理敏感个人信息的同时确保高准确性。 移民边境和机场选择 IronOCR 作为其护照 OCR API,可以缩短处理时间,提高工作流程效率。

IronOCR 通过其简单易用的方法为开发人员提供了灵活性和可扩展性。 它允许开发人员通过 OcrResult 对象快速对信息进行分类。 此外,IronOCR 还提供了调试工具,包括置信度和未经解析的原始文本,供开发人员在产品单元测试中使用。 IronOCR 还通过在传递护照图像输入到该方法之前手动减少数字噪声,以便于更高级的用法。

随时可以利用 IronOCR 的 免费试用许可证 页面。

常见问题解答

如何在C#中使用OCR提取护照信息?

您可以使用IronOCR通过处理护照图像,从可机读区提取数据来提取护照信息。

使用OCR处理护照数据有哪些好处?

护照数据处理的OCR自动化信息提取,大大提高了高流量区域(如机场和边境管制)的效率和准确性。

采用OCR技术可以处理多种语言吗?

是的,IronOCR支持多达125种语言,并允许添加自定义语言,使其在处理国际文件时非常通用。

IronOCR如何确保从护照中准确提取数据?

IronOCR在OcrResult中提供了一个“Confidence”属性,以指示统计准确性,允许开发人员验证提取数据的可靠性。

IronOCR支持哪些图片格式用于护照扫描?

IronOCR支持所有流行的图片格式,包括jpg、png和gif,它还可以与本机C#System.Drawing.Objects一起使用,以便于集成。

开发人员在实现护照OCR时可能面临哪些挑战?

挑战包括处理低质量图像、确保数据安全、以及遵守处理敏感护照信息的合规性。

开发人员如何开始使用IronOCR进行护照OCR?

开发人员可以通过从提供商的网站获取试用许可证密钥,并遵循详细文档将其集成到C#应用程序中开始使用IronOCR。

IronOCR兼容哪些平台?

IronOCR与大多数.NET平台兼容,包括.NET 8,7,6和5,以及.NET Framework 4.6.2及以上,并支持Windows、macOS、Azure和Linux等主要操作系统。

Kannaopat Udonpant
软件工程师
在成为软件工程师之前,Kannapat 在日本北海道大学完成了环境资源博士学位。在攻读学位期间,Kannapat 还成为了车辆机器人实验室的成员,隶属于生物生产工程系。2022 年,他利用自己的 C# 技能加入 Iron Software 的工程团队,专注于 IronPDF。Kannapat 珍视他的工作,因为他可以直接从编写大多数 IronPDF 代码的开发者那里学习。除了同行学习外,Kannapat 还喜欢在 Iron Software 工作的社交方面。不撰写代码或文档时,Kannapat 通常可以在他的 PS5 上玩游戏或重温《最后生还者》。