跳過到頁腳內容
使用 IRONOCR

護照 OCR SDK 開發者教學

護照是個人的身分證明; 我們使用護照旅行,並登記我們生活中的重要資訊。 然而,護照格式並非總是易於閱讀。 想像一下,在假日期間,突然有許多遊客湧入,進行旅遊休閒活動。 移民官員如何透過人工輸入處理如此龐大的資料量,並手動檢索正確的資訊?

因此,許多應用程式和企業正在轉向光學字元辨識 (OCR),它允許開發人員快速提取印刷文字和數位影像。

同樣,護照 OCR 是一種利用光學字元辨識(OCR) 軟體從護照中提取有意義資訊的技術; 它還利用所有護照的機讀區來檢索訊息,以便快速識別試圖通過移民局的個人。 在需要快速識別護照資訊或涉及自動提取護照資料的場景中,護照 OCR 至關重要,是機場和移民邊境效率和速度的基石。

雖然護照 OCR 軟體和技術多年來不斷發展,但各種因素仍會影響文件掃描過程。 護照上的數位照片如果有雜訊或污漬,會嚴重影響護照的準確性。 此外,在處理護照時,OCR 庫有時會造成混淆,因為機器可讀區域是一個獨特的結構化資料集。 開發人員或許能夠擷取數據,但必須獨立對參數進行排序。 然而, IronOCR採用專門的方法對讀取護照進行了最佳化; 其結果使開發人員能夠快速獲取和處理訊息,這對於大批量掃描和自動化來說非常理想。

在本文中,我們將簡要討論如何使用 IronOCR 獲取和處理護照資訊以實現資料提取自動化,並提供有關 IronOCR 如何與護照互動的更多詳細資訊。

IronOCR:AC# OCR庫

護照 OCR SDK(開發者教學):圖 1 - IronOCR:AC# 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

護照OCR技術透過自動化資料擷取和提高操作效率,顯著增強了文件處理能力。 它簡化了身份驗證和 KYC 流程,確保在處理敏感個人資訊時具有高度準確性。 移民邊境和機場可以透過選擇 IronOCR 作為其護照 OCR API 來縮短處理時間並提高工作流程效率。

IronOCR 透過其易於使用的方法,為開發人員提供了靈活性和可擴展性。 它允許開發人員透過OcrResult物件快速對資訊進行排序。 此外,IronOCR 還提供偵錯工具,包括置信度等級和原始未解析文本,供開發人員在產品單元測試中使用。 IronOCR 還可以手動最大限度地減少數位噪聲,以便在更高級的用途中實現,方法是在將護照影像輸入通過該方法之前清除影像雜訊。

歡迎使用 IronOCR 的免費試用許可證頁面。

常見問題解答

如何在 C# 中使用 OCR 從護照中擷取資訊?

您可以使用 IronOCR 擷取護照資訊,方法是處理護照影像,並利用其強大的 OCR 功能從機器可讀區擷取資料。

使用 OCR 處理護照資料有什麼好處?

用於護照資料處理的 OCR 可自動擷取資訊,大幅提升機場和邊境管制等高流量區域的效率和精確度。

是否可以使用 OCR 技術處理多種語言?

是的,IronOCR 支援多達 125 種語言,並允許新增自訂語言,使其成為處理國際文件的多面手。

IronOCR 如何確保從護照中準確擷取資料?

IronOCR 在 OcrResult 中提供了一個「Confidence」屬性來顯示統計準確度,讓開發人員可以驗證擷取資料的可靠性。

IronOCR 護照掃描支援哪些影像格式?

IronOCR 支援所有常用的圖像格式,包括 jpg、png 和 gif,它也可以與原生的 C# System.Drawing.Objects 搭配使用,以方便整合。

開發人員在實作 Passport 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 上打游戏或重看《The Last of Us》。