如何在 C# 中使用 OCR 讀取身份文件
光學字元識別(OCR)技術已成為自動化從圖像中提取文字的寶貴工具,有助於高效的資料檢索和分析,並避免人為錯誤。 此技術可用於閱讀駕照、護照、機構官方文件、身份證、居留許可證和多國多語言的旅遊文件以獲取確切的到期日期、國籍、出生日期等。所有提取的資料可以進一步用於機器學習和人工智慧軟體產品。
在本文中,我們將探討如何利用IronOCR這個由Iron Software提供的強大C# OCR程式庫來閱讀和提取身份證件資訊。 IronOCR提供了一個簡便且靈活的OCR解決方案,透過API執行OCR任務,使其成為希望將OCR軟體功能整合到應用程式中的開發者的理想選擇。
IronOCR使計算機能夠識別並從圖像中提取文字,掃描現有文件或任何其他文字的視覺呈現。 為了提取資料,涉及一系列複雜的流程,模仿人類視覺上感知和解釋文字的方式。 此流程包括圖像預處理、文字檢測、字元分割、特徵提取、字元識別和後處理以糾正錯誤。
如何使用C#中的OCR讀取身份證件
- 在Visual Studio中建立一個新的C#專案
- 安裝IronOCR .NET程式庫並將其新增到您的專案中。
- 使用IronOCR程式庫閱讀身份證件圖像。
- 從PDF中閱讀身份證件。
由Iron Software精心製作和維護的IronOCR是一個強大的C#程式庫,方便在.NET專案中執行OCR、條碼掃描和文字提取。
IronOCR的關鍵特點
文字閱讀的多樣性
能夠從各種格式中閱讀相關資料,包括圖像(JPEG、PNG、GIFF、TIFF、BMP)、流和PDF。
圖像增強
透過一系列過濾器如去斜、降噪、二值化、增強解析度、膨脹等來糾正低質量的掃描和照片。
條碼識別
支持從廣泛格式中讀取條碼,包括超過20種條碼型別,並新增QR碼識別。
Tesseract OCR整合
利用最新的Tesseract OCR構建,經過精細調整以最佳性能從圖像中提取文字。
靈活的輸出選項
允許從圖像文件中匯出可搜索的PDF、HTML以及文字內容,提供在管理提取資訊上的靈活性。
現在,我們來深入開發一個利用IronOCR閱讀身份證件的演示應用程式。
先決條件
- Visual Studio: 確保您已安裝Visual Studio或其他任何C#開發環境。
- NuGet套件管理器: 確保您可以使用NuGet來管理專案中的套件。
步驟1:在Visual Studio中建立一個新的C#專案
首先在Visual Studio中建立一個新的C#控制台應用程式,或者可以使用現有專案。 從選單中選擇"新增專案",然後從下面的範本中選擇控制台應用程式。

在以下窗口中提供專案名稱和位置。

選擇所需的.NET版本。

點擊"建立"按鈕以建立新的專案。
步驟2:安裝IronOCR程式庫並將其新增到您的專案中
IronOCR可以在NuGet套件管理器中找到,並且可以使用套件管理器控制台以下命令安裝:
Install-Package IronOcr
IronOCR也可以使用Visual Studio安裝。 打開NuGet套件管理器,搜索IronOCR如下所示,然後點擊安裝。

安裝完成後,應用程式即可使用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
輸入圖像
以下是作為程式輸入的樣本圖像。

輸出

程式碼解釋
以上程式碼使用IronOCR程式庫從身份證件中讀取所有文字欄位。 我們使用IronOCR程式庫中的IronTesseract類,並將其配置為使用英語和一些黑名單字元。 然後我們使用OcrInput類宣告OCR輸入並從圖像中讀取文字。 提取出的文字欄位可以在控制台輸出中看到。
步驟4:從PDF中讀取身份證件
我們也可以從PDF文件中讀取。 為此,我們可以使用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
以上程式碼使用IronPDF載入ocrTesseract。
輸出

授權(提供免費試用)
要使用IronOCR,您需要一個授權金鑰。 此金鑰需放置在appsettings.json中。
{
"IRONOCR-LICENSE-KEY": "your license key"
}
提供使用者電子郵箱ID以獲取試用授權。

使用案例
1. 金融服務中的身份驗證:
- 使用案例: 銀行和金融機構於客戶入職和KYC過程中,使用OCR來讀取如護照、駕照和身份證件。
- 好處: 確保帳戶建立、貸款申請和其他財務交易中的身份驗證準確和高效。
2. 邊境管制和移民:
- 使用案例: 移民當局在邊境檢查點使用OCR技術讀取和驗證護照和簽證資訊。
- 好處: 簡化移民過程,增強安全性,及減少手動資料輸入錯誤。
3. 存取控制和安全:
- 使用案例: 在存取控制系統中,OCR被用於讀取許可卡、員工徽章或臉部識別掃描的資訊,以便安全進入建築或限制區域。
- 好處: 通過確保只有授權人員可以進入,增強了安全性,並提供進入記錄的數位化記錄。
4. 電子政府服務:
- 使用案例: 政府機構使用OCR處理和驗證用於在線提交的文件,以提供駕照續期、報稅和許可申請等服務。
- 好處: 提高效率,減少文書工作,並提升整體公民體驗。
5. 醫療身份驗證:
- 使用案例: 醫療服務提供者使用OCR讀取患者身份證、保險卡和其他身份文件以確保準確的患者記錄保存。
- 好處: 促進精確的患者識別,確保正確的醫療記錄管理,及支持計費流程。
6. 自動化酒店入住:
- 使用案例: 酒店利用OCR自動化辦理入住手續,通過掃描客人的身份文件來簡化註冊流程。
- 好處: 提升客人體驗,縮短入住時間,並減少客人資訊錄入錯誤。
7. 智慧城市和公共服務:
- 使用案例: 在智慧城市計畫中應用OCR以讀取身份文件提供服務,如公共交通存取、圖書館會員和城市活動註冊。
- 好處: 提高公共服務效率,促進無縫存取,並增強城市生活體驗。
8. 教育管理:
- 使用案例: 教育機構在學生入學、考試和學術憑證的發放期間使用OCR處理和驗證身份文件。
- 好處: 確保準確的學生記錄,減少行政負擔,並增強學術流程的完整性。
結論
在您的C#應用程式中整合OCR技術使用IronOCR,可以有效地從身份文件中提取資訊。 本全面指南提供了設置專案並使用IronOCR讀取和處理身份文件圖像的必要步驟。 通過實驗程式碼範例以調整提取流程來滿足您的特定需求,提供處理身份文件資料的無縫自動化解決方案。
常見問題
我如何使用C#從身分證件提取文字?
使用IronOCR,來自IronSoftware的專用OCR程式庫,您可以從各種身分證件(如護照、身分證和駕照)中提取文字。您可以通過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程式庫的試用版可供使用?
來自Iron Software的IronOCR提供免費試用版。您可以通過提供電子郵件地址獲得試用授權金鑰,讓您在購買之前探索程式庫的功能。



