使用IronOCR在 C# 中提取護照數據

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。

  1. 使用NuGet套件管理器安裝https://www.nuget.org/packages/IronOcr

    PM > Install-Package IronOcr
  2. 複製並運行這段程式碼。

    var passportInfo = new IronOcr.IronTesseract().ReadPassport(new IronOcr.OcrInput("passport.jpg")).PassportInfo;
  3. 部署到您的生產環境進行測試

    今天就在您的專案中開始使用免費試用IronOCR

    arrow pointer

如何在C#中擷取護照資料?

例如,我們將使用護照影像作為輸入來展示IronOCR的功能。 使用 OcrInput 載入圖片後,您可以利用 ReadPassport 方法識別和提取護照資訊。 此方法傳回一個 OcrPassportResult 對象,其中包含 DateOfBirth@, @@CODE-411@CODE-"屬性。 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);
$vbLabelText   $csharpLabel

ReadPassport 可以輸出什麼內容?

提取的資料以結構化格式返回,以便於與現有系統整合。 OcrResult 類別提供了對所有提取資訊的全面存取。

調試控制台顯示從 OCR 處理中提取的護照資料:姓名、國家/地區、護照號碼和日期

然後我們存取從 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 結構有助於解決提取問題和驗證結果。

美國護照頁,其中機器可讀區 (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的結果,以確認提取的資訊是否準確。 以上面的例子為例,我們可以存取 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);
$vbLabelText   $csharpLabel

VS Code 偵錯控制台顯示護照資料輸出,包含個人資訊、國家/地區和編碼字串

  • Confidence: Confidence 屬性來自 OcrPassportResult,該屬性是浮點數,表示 OCR 統計準確度置信度,即每個字元的平均值。 如果護照照片模糊或包含其他訊息,則此浮動值會降低。 1代表最高且最有信心,0代表最低且最沒有信心。 對於生產應用,可以考慮實施結果置信度閾值來確保資料品質。
  • Text: Text 屬性來自 OcrPassportResult,其中包含從護照圖像中提取的原始、未解析的文本。 開發人員可以在單元測試中使用此功能來驗證從護照圖像中提取的文字。 對於進階場景,您可以將結果匯出為hOCR 格式以進行進一步分析。

護照掃描申請的最佳實踐

在生產環境中部署護照掃描時,請考慮以下其他因素:

1.影像品質:確保輸入影像符合最低品質標準。 濾鏡精靈可以幫助優化影像,從而提高辨識效果。

2.性能:對於大批量處理,實現非同步支援並考慮批量處理多個護照。

3.安全性:由於護照資料敏感,請確保妥善處理數據,並考慮與安全文件管理系統整合。

4.驗證:對擷取的 MRZ 資料實施校驗位驗證,以確保準確性。 MRZ 格式包含多個校驗位,可用於驗證擷取資訊的完整性。

5.錯誤處理:針對護照影像可能損壞、光線不足或包含非標準格式的情況,實施強大的錯誤處理。

常見問題解答

如何使用 C# 從影像中萃取護照資料?

您可以使用 IronOCR 的 ReadPassport 方法提取護照資料。只需使用 OcrInput 載入您的護照影像,並呼叫 ReadPassport() 即可在一行程式碼中取得結構化資料,包括姓名、護照號碼、出生日期和有效日期。

哪些護照資訊可以自動擷取?

IronOCR 的 ReadPassport 方法可從護照影像中抽取 GivenNames、Country、PassportNumber、Surname、DateOfBirth 和 DateOfExpiry。所有資料都會以字串的形式傳回結構化的 PassportInfo 物件中。

我需要複雜的設定才能讀取 passport MRZ 資料嗎?

不需要複雜的設定。IronOCR 提供簡化的 API,只需一行程式碼即可擷取通行證 MRZ 資料,不像傳統的 Tesseract 實作需要更多的設定。

護照閱讀能力由哪些技術提供?

IronOCR 在引擎蓋下利用 Tesseract 5,搭配機器學習增強功能和先進的電腦視覺技術,可自動定位並擷取護照影像中的 MRZ(機器可讀區)區域。

這可以用於機場出入境系統嗎?

是的,IronOCR 是機場移民和安全應用的理想選擇,在機場,代理每天都要處理大量的護照。它提供可靠的關鍵任務旅客資訊擷取,以確保有效率的移民流程。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

審核人
Jeff Fritz
Jeffrey T. Fritz
首席程序经理 - .NET 社群团队
Jeff 也是 .NET 和 Visual Studio 团队的首席程序经理。他是 .NET Conf 虚拟会议系列的执行制作人,并主持“Fritz 和朋友”这一每周两次的開發者的直播节目,在节目上讨论技術并与观众一起编写代碼。Jeff 撰写研讨会、主持演讲,并计划大型 Microsoft 開發者活動(包括 Microsoft Build、Microsoft Ignite、.NET Conf 和 Microsoft MVP Summit)的內容。
準備好開始了嗎?
Nuget 下載 5,525,971 | 版本: 2026.3 剛剛發布
Still Scrolling Icon

還在捲動嗎?

想要快速證明? PM > Install-Package IronOcr
執行範例 觀看您的圖片變成可搜尋的文字。