跳過到頁腳內容
使用 IRONOCR

如何在 C# 中使用 OCR 讀取身份文件

光學字元辨識(OCR)技術已成為自動從圖像中提取文本的不可或缺的工具,實現高效數據檢索和分析,並避免人工錯誤。 此技術可用於讀取駕駛執照、護照、機構官方文件、身份證、居留許可證和多種語言及不同國家的旅行證件,準確到期日期、國籍、出生日期等。提取的所有數據可進一步輸入機器學習和人工智能軟體產品中。

In this article, we will explore how to leverage IronOCR, a powerful OCR library in C# from Iron Software, to read and extract information from identity documents. IronOCR 提供了一種直觀且靈活的 API 形式的 OCR 解決方案,使其成為希望將 OCR 軟體功能集成到其應用程序中的開發人員的絕佳選擇。

IronOCR 使計算機能夠識別並從圖像中提取文本,掃描現有文件或任何其他文本的視覺表示。 要提取數據,需要一系列模仿人類視覺上感知和解釋文字的複雜過程。 此過程涉及圖像預處理、文本檢測、字符分割、特徵提取、字符識別和後處理以糾正錯誤。

如何使用 C# 中的 OCR 讀取身份文件

  1. 在 Visual Studio 中創建一個新的 C# 項目
  2. 安裝 IronOCR .NET 庫並將其添加到您的項目中。
  3. 使用 IronOCR 庫讀取身份文件圖像。
  4. 從 PDF 中讀取身份文件。

由 Iron Software 精心打造和維護的 IronOCR 作為 C# 軟體工程師的強大庫,在 .NET 項目中促進 OCR、條碼掃描和文本提取。

IronOCR 的主要特點

文本讀取的多樣性

能夠從各種格式中讀取相關數據,包括圖像(JPEG、PNG、GIFF、TIFF、BMP)、流和 PDF。

圖像增強

通過一系列濾鏡校正低質量掃描和照片,如去畸、降噪、二值化、增強分辨率、膨脹等。

條碼識別

支持從多種格式中讀取條碼,涵蓋超過 20 種條碼類型,並增加 QR 碼識別。

Tesseract OCR 集成

使用最新構建的 Tesseract OCR,經過精細調整以在從圖像中提取文本時獲得最佳性能。

靈活的輸出選項

允許從圖像文件中匯出可搜索的 PDF、HTML 和文本內容,在管理提取信息時提供靈活性。

現在,讓我們深入開發一個利用 IronOCR 讀取身份文件的演示應用程序。

必要條件

  1. Visual Studio: 確保您已安裝 Visual Studio 或其他任何 C# 開發環境。
  2. NuGet 包管理器:確保可以使用 NuGet 管理項目中的包。

步驟 1:在 Visual Studio 中創建一個新的 C# 項目

首先在 Visual Studio 中創建一個新的 C# 控制檯應用程序,或者使用現有項目。 從菜單中選擇"添加新項目",然後從下面的模板中選擇控制檯應用程序。

如何使用 C# 中的 OCR 讀取身份文件:圖 1

在下方窗口中提供項目名稱和位置。

如何使用 C# 中的 OCR 讀取身份文件:圖 2

選擇所需的 .NET 版本。

如何使用 C# 中的 OCR 讀取身份文件:圖 3

點擊創建按鈕以創建新項目。

步驟 2:安裝 IronOCR 庫並將其添加到您的項目中。

IronOCR 可以在 NuGet 包管理器中找到,並可通過包管理器控制檯使用以下命令安裝:

Install-Package IronOcr

IronOCR 還可以通過 Visual Studio 安裝。 打開 NuGet 包管理器,搜尋 IronOCR 如下,然後點擊安裝。

如何使用 C# 中的 OCR 讀取身份文件:圖 5

安裝完成後,應用程序準備好使用 IronOCR 來讀取任何身份文件以進行數據提取和身份驗證,減少手動數據輸入工作。

步驟 3:使用 IronOCR 庫讀取身份文件圖像

使用 OCR 處理身份文件涉及許多步驟,詳情如下。

圖像預處理

OCR 身份文件處理始於獲取包含文本的圖像。 這個圖像可以是掃描的身份文件、身份證的照片或任何其他文本的視覺表示。 身份證預處理步驟可能包括調整大小、降噪和增強,以改善圖像的質量和清晰度。

文本檢測

OCR 算法需要定位圖像中存在文本的特定數據區域。 這一步驟涉及識別文本區域或邊界框。

字符分割

一旦識別出文字區域或數據字段,圖像會進一步分析以分割單個字符。 這一步對於使用獨特字符的語言如英語或中文至關重要。

特徵提取

OCR 算法分析分割的字符,以提取有助於區分不同字符的特徵。 這些特徵可能包括筆劃圖案、形狀和元素之間的空間關係。

字符識別

根據提取的特徵,OCR 算法分類每個分割的字符並將其分配給相應的文本表示。 機器學習模型,如神經網絡,通常用於此步驟。

後處理

識別出的字符可能會經過後處理以糾正錯誤或提高準確性。 此步驟可能涉及基於字典的校正、上下文分析或語言建模。

IronOCR 庫處理上述所有步驟,允許我們只需幾行代碼即可執行 OCR,節省繁瑣的耗時任務。

using IronOcr;

class Program
{
    public static void Main()
    {
        // Configure IronTesseract with language and other settings
        var ocrTesseract = new IronTesseract()
        {
            Language = OcrLanguage.EnglishBest,
            Configuration = new TesseractConfiguration()
            {
                ReadBarCodes = false, // Disable reading of barcodes
                BlackListCharacters = "`ë|^", // Blacklist specific characters
                PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd, // Set page segmentation mode
            }
        };

        // Define the OCR input image
        using var ocrInput = new OcrInput("id1.png");

        // Perform OCR on the input image
        var ocrResult = ocrTesseract.Read(ocrInput);

        // Display the extracted text
        Console.WriteLine(ocrResult.Text);
    }
}
using IronOcr;

class Program
{
    public static void Main()
    {
        // Configure IronTesseract with language and other settings
        var ocrTesseract = new IronTesseract()
        {
            Language = OcrLanguage.EnglishBest,
            Configuration = new TesseractConfiguration()
            {
                ReadBarCodes = false, // Disable reading of barcodes
                BlackListCharacters = "`ë|^", // Blacklist specific characters
                PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd, // Set page segmentation mode
            }
        };

        // Define the OCR input image
        using var ocrInput = new OcrInput("id1.png");

        // Perform OCR on the input image
        var ocrResult = ocrTesseract.Read(ocrInput);

        // Display the extracted text
        Console.WriteLine(ocrResult.Text);
    }
}
Imports IronOcr

Friend Class Program
	Public Shared Sub Main()
		' Configure IronTesseract with language and other settings
		Dim ocrTesseract = New IronTesseract() With {
			.Language = OcrLanguage.EnglishBest,
			.Configuration = New TesseractConfiguration() With {
				.ReadBarCodes = False,
				.BlackListCharacters = "`ë|^",
				.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd
			}
		}

		' Define the OCR input image
		Dim ocrInput As New OcrInput("id1.png")

		' Perform OCR on the input image
		Dim ocrResult = ocrTesseract.Read(ocrInput)

		' Display the extracted text
		Console.WriteLine(ocrResult.Text)
	End Sub
End Class
$vbLabelText   $csharpLabel

輸入圖像

下圖顯示用作程式輸入的示例圖像。

如何使用 C# 中的 OCR 讀取身份文件:圖 6

輸出

如何使用 C# 中的 OCR 讀取身份文件:圖 7

代碼解釋

上述代碼使用 IronOCR 庫從身份文件中讀取所有文本字段。 我們使用 IronOCR 庫中的IronTesseract類並將其配置為使用英語和一些黑名單中的字符。 然後,我們使用OcrInput類聲明 OCR 輸入,並從圖像中讀取文本。 提取的文本字段可以在控制臺輸出中看到。

步驟 4:從 PDF 中讀取身份文件。

我們還可以從 PDF 文檔中讀取。 為此,我們可以使用 IronSoftware 的 IronPDF 庫。 首先,像下面這樣安裝庫:

Install-Package IronOcr
using IronOcr;
using IronPdf;

class Program
{
    public static void Main()
    {
        // Load the PDF document
        var pdfReader = new PdfDocument("id1.pdf");

        // Initialize IronTesseract for OCR
        var ocrTesseract = new IronTesseract();

        // Create OCR input from the PDF stream
        using var ocrInput = new OcrInput();
        ocrInput.AddPdf(pdfReader.Stream);

        // Perform OCR on the PDF input
        var ocrResult = ocrTesseract.Read(ocrInput);

        // Display the extracted text
        Console.WriteLine(ocrResult.Text);
    }
}
using IronOcr;
using IronPdf;

class Program
{
    public static void Main()
    {
        // Load the PDF document
        var pdfReader = new PdfDocument("id1.pdf");

        // Initialize IronTesseract for OCR
        var ocrTesseract = new IronTesseract();

        // Create OCR input from the PDF stream
        using var ocrInput = new OcrInput();
        ocrInput.AddPdf(pdfReader.Stream);

        // Perform OCR on the PDF input
        var ocrResult = ocrTesseract.Read(ocrInput);

        // Display the extracted text
        Console.WriteLine(ocrResult.Text);
    }
}
Imports IronOcr
Imports IronPdf

Friend Class Program
	Public Shared Sub Main()
		' Load the PDF document
		Dim pdfReader = New PdfDocument("id1.pdf")

		' Initialize IronTesseract for OCR
		Dim ocrTesseract = New IronTesseract()

		' Create OCR input from the PDF stream
		Dim ocrInput As New OcrInput()
		ocrInput.AddPdf(pdfReader.Stream)

		' Perform OCR on the PDF input
		Dim ocrResult = ocrTesseract.Read(ocrInput)

		' Display the extracted text
		Console.WriteLine(ocrResult.Text)
	End Sub
End Class
$vbLabelText   $csharpLabel

以上代碼使用 IronPDF 加載id1.pdf文檔,PDF 作為流傳遞至OcrInputocrTesseract

輸出

如何使用 C# 中的 OCR 讀取身份文件:圖 9

許可(可用免費試用版)

要使用 IronOCR,您需要一個許可鑰匙。 此鑰匙需要放在appsettings.json。

{
    "IRONOCR-LICENSE-KEY": "your license key"
}

提供用戶電子郵件 ID 以獲取試用許可。

如何使用 C# 中的 OCR 讀取身份文件:圖 10

使用案例

1. 金融服務中的身份驗證:

  • 使用案例: 銀行和金融機構在客戶入職和 KYC 流程中利用 OCR 讀取諸如護照、駕駛執照和身份證等身份文件。
  • 好處: 確保準確高效的身份驗證,用於開戶、貸款申請和其他金融交易。

2. 邊境管理和移民:

  • 使用案例: 移民當局利用 OCR 技術在邊境檢查點讀取和驗證護照和簽證中的信息。
  • 好處: 簡化移民流程、提升安全性並減少手動數據輸入錯誤。

3. 訪問控制和安全性:

  • 使用案例: OCR 用於訪問控制系統中以讀取身份卡、員工徽章或面部識別掃描中的信息,以便安全進入建築物或受限區域。
  • 好處: 通過確保只有授權人士進入增強安全性,並提供進入的數字記錄。

4. 電子政府服務:

  • 使用案例: 政府機構利用 OCR 處理和驗證上傳的身份文件,例如駕照續訂、報稅和許可申請。
  • 好處: 提高效率、減少文書工作,並優化市民體驗。

5. 醫療身份驗證:

  • 使用案例: 醫療機構利用 OCR 讀取患者身份證、保險卡和其他身份文件中的信息,以準確地保存患者記錄。
  • 好處: 促進精確的患者身份確認,確保妥善的醫療記錄管理並支持賬單流程。

6. 自動化酒店入住:

  • 使用案例: 酒店利用 OCR 自動掃描客人的身份文件,簡化登記過程。
  • 好處: 增強客戶體驗、減少入住時間並縮減客戶信息收集中的錯誤。

7. 智慧城市及公共服務:

  • 使用案例: OCR 在智慧城市項目中被應用於讀取身份文件,以提供如公共交通出入、圖書館會員資格和城市活動註冊等服務。
  • 好處: 提升公共服務效率、便捷進出,並增強城市生活體驗。

8. 教育管理:

  • 使用案例: 教育機構利用 OCR 處理並驗證入學、考試和學術證書發放過程中的 ID 文件。
  • 好處: 確保准確的學生記錄,減少行政負擔並增強學術流程的整體性。

結論

將 OCR 技術集成至使用 IronOCR 的 C# 應用程序,允許您有效地從身份文件中提取信息。 這份完整的指南提供設置您的項目並使用 IronOCR 讀取和處理身份文件圖像所需的步驟。 試驗這些代碼示例,以根據您的具體需求調整提取過程,提供處理身份文件數據的無縫和自動化解決方案。

常見問題解答

如何使用C#從身份文件中提取文本?

通過使用IronSoftware的專用OCR庫IronOCR,您可以從各種身份文件中提取文本,例如護照、身份證和駕駛執照。您可以在Visual Studio中通過NuGet包管理器安裝IronOCR,並使用其方法來從圖像和PDF中讀取文本。

使用OCR處理身份文件有哪些好處?

如IronSoftware的IronOCR等OCR技術自動化了身份文件中的文本提取,減少了人為錯誤,提高了數據檢索效率。它支持多種語言和文件格式,使其非常適合金融、醫療和邊境管制等應用。

在C#項目中設置OCR涉及哪些步驟?

要在C#項目中設置OCR,您需要在Visual Studio中創建一個新項目,通過NuGet包管理器安裝IronOCR,並利用其API從文件中讀取文本。IronOCR提供全面的文檔和示例,幫助您集成OCR功能。

如何提高圖片質量以獲得更好的OCR結果?

IronOCR包含去斜、降噪、二值化、提高分辨率和膨脹等功能來提高圖像質量。這些過濾器提高了從低質量圖像中進行文本識別的準確性,確保了可靠的數據提取。

OCR技術能否從身份文件中讀取條碼?

是的,IronOCR支持從身份文件中識別條碼。它可以讀取超過20種條碼類型,包括QR碼,適用於需要同時提取文本和條碼數據的應用。

OCR在身份驗證中有任何特定的使用場景嗎?

OCR在身份驗證中的應用廣泛,如自動登記、訪問控制和電子政務服務。IronOCR提供必要的工具來從身份文件中提取和驗證文本,提升安全性並優化流程。

如何用OCR處理多語言文本提取?

IronOCR提供多語言支持,允許您從各種語言的文件中提取文本。這一功能對於需要高效處理不同語言文件的國際應用特別有用。

是否有可供使用的OCR庫試用版本?

IronSoftware的IronOCR提供免費試用版。您可以通過提供電子郵件地址獲取試用許可密鑰,以便在購買前探索庫的功能。

Kannaopat Udonpant
軟體工程師
在成為软件工程師之前,Kannapat 從日本北海道大學完成了環境資源博士學位。在追逐學位期间,Kannapat 還成為了生產工程系一部份——汽車机器人实验室的成員。2022 年,他利用他的 C# 技能加入 Iron Software 的工程團隊, 專注於 IronPDF。Kannapat 珍惜他的工作,因为他直接向编写大部分 IronPDF 使用的代码的开发者学习。除了同行学习,Kannapat 还喜欢在 Iron Software 工作的社交十环。当他不编写代码或文档时,Kannapat 通常在他的 PS5 上打游戏或重看《The Last of Us》。