跳過到頁腳內容
使用 IRONOCR

OCR C# GitHub:使用 IronOCR 實作文字辨識

在 GitHub 上搜尋 OCR 解決方案,往往會發現零碎的文件、複雜的 Tesseract 設定,以及很久沒有更新的專案。對於需要從圖片和 PDF 中抽取可靠文字的 C# 開發人員而言,瀏覽資源庫可能會耗費許多時間,而這些時間花在編碼上可能會更好。 許多開放原始碼的光學字元識別專案需要手動進行二進位管理、下載 tessdata 檔案以及 Windows 系統故障排除。

本教學示範如何使用 IronOCR在 C# 專案中實作 OCR 功能,IronOCR 是一個精煉的函式庫,可消除原始 Tesseract 實作中常見的令人頭痛的設定問題。 無論是建立文件處理管道,或是將文字識別功能加入現有的應用程式,本指南都提供了工作代碼範例,可隨時用於 OCR C# GitHub 專案。

是什麼讓 IronOCR 成為基於 GitHub 的 C# 程式碼專案的理想選擇?

IronOCR 提供透過 NuGet 發佈的管理式 .NET 函式庫,可直接整合至任何 GitHub 儲存庫。 不像開放原始碼的 Tesseract OCR wrapper 需要手動管理二進位檔和 tessdata 設定,IronOCR 會在內部處理這些相依性,開箱即用。

圖書館在 GitHub 上維護 官方範例儲存庫,開發人員可以克隆和參考。 這些教學示範了真實世界的實作,包括影像到文字的轉換、支援多國語言以及 PDF 處理。 貢獻者可以在克隆後立即測試功能。

要開始使用 Visual Studio,請透過 NuGet 套件管理員安裝 IronOCR:

Install-Package IronOcr
Install-Package IronOcr
SHELL

OCR C# GitHub:使用 IronOCR 實現文字識別:圖像 1 - 安裝

安裝之後,這個單一套件就包含了在 Windows、Linux 和 macOS 環境下進行 OCR 作業所需的一切。 本庫支援 .NET Framework 4.6.2+、.NET Core 和 .NET 5-10,以達到最大的相容性。

如何用 C# 從影像格式中萃取文字?

以下範例使用 IronOCR 的 IronTesseract 類示範基本的文字擷取。 此 OCR 引擎可讀取各種影像格式,包括 PNG、JPG、JPEG、BMP、GIF 和 TIFF:

using IronOcr;
// Initialize the OCR engine
var ocr = new IronTesseract();
// Load and process an image
using var input = new OcrInput("document-scan.png");
// Perform OCR and retrieve results
var result = ocr.Read(input);
// Output the extracted text to console
Console.WriteLine($"Extracted Text:\n{result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
using IronOcr;
// Initialize the OCR engine
var ocr = new IronTesseract();
// Load and process an image
using var input = new OcrInput("document-scan.png");
// Perform OCR and retrieve results
var result = ocr.Read(input);
// Output the extracted text to console
Console.WriteLine($"Extracted Text:\n{result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
Imports IronOcr

' Initialize the OCR engine
Dim ocr As New IronTesseract()

' Load and process an image
Using input As New OcrInput("document-scan.png")
    ' Perform OCR and retrieve results
    Dim result = ocr.Read(input)
    ' Output the extracted text to console
    Console.WriteLine($"Extracted Text:{vbCrLf}{result.Text}")
    Console.WriteLine($"Confidence: {result.Confidence}%")
End Using
$vbLabelText   $csharpLabel

IronTesseract 類別是主要的 OCR 引擎,建構在最佳化的 Tesseract 5 實作上。 建立實體後,OcrInput 物件會從磁碟、URL 或位元組陣列載入目標影像。 Read 方法會處理輸入,並傳回一個 OcrResult 包含擷取的純文字,以及表示辨識準確度的置信百分比。 較高的置信度值 (90% 以上) 通常表示原始文件乾淨且格式良好。

輸入

OCR C# GitHub:使用 IronOCR 實現文字識別:圖像 2 - 樣本輸入

輸出

OCR C# GitHub:使用 IronOCR 實現文字識別:圖像 3 - 控制台輸出

OcrResult物件提供結構化存取認可的內容。 除了純文字之外,開發人員還可以存取個別字詞、行、段落和字元,以及它們的位置和置信度分數。 每個 Word 都包含邊界矩形座標,對於需要精確文字位置資料的應用程式非常有用,例如文件註釋或表單欄位擷取。

OCR C# GitHub:使用 IronOCR 實現文字識別:圖像 4 - 功能

影像預處理如何提高光學字元識別的精確度?

掃描的文件通常會有偏差、雜訊或解析度不佳。 IronOCR 包含 內建的預處理篩選器,可在 OCR 引擎處理影像之前修正這些問題:

using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput("skewed-receipt.jpg");
// Apply preprocessing filters to enhance scan quality
input.Deskew();           // Straighten rotated images
input.DeNoise();          // Remove digital artifacts
input.EnhanceResolution(225);  // Optimize DPI for OCR
var result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput("skewed-receipt.jpg");
// Apply preprocessing filters to enhance scan quality
input.Deskew();           // Straighten rotated images
input.DeNoise();          // Remove digital artifacts
input.EnhanceResolution(225);  // Optimize DPI for OCR
var result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr

Dim ocr = New IronTesseract()
Using input = New OcrInput("skewed-receipt.jpg")
    ' Apply preprocessing filters to enhance scan quality
    input.Deskew()           ' Straighten rotated images
    input.DeNoise()          ' Remove digital artifacts
    input.EnhanceResolution(225)  ' Optimize DPI for OCR
    Dim result = ocr.Read(input)
    Console.WriteLine(result.Text)
End Using
$vbLabelText   $csharpLabel

Deskew 方法可自動偵測並修正影像旋轉,最高可達 15 度。 DeNoise 過濾器可去除攝影文件或舊式掃描中常見的斑點和人工物。 EnhanceResolution 可將低 DPI 影像升頻至 200-300 DPI 的範圍,是光學字元識別的最佳選擇。 這些功能可以串連在一起並在記憶體中執行,而不需要臨時檔案。 在許多情況下,多重預處理可以大幅改善有嚴重品質問題的文件的文字辨識結果。

您可以在提取文字的同時提取 BarCode 和 QR 碼嗎?

IronOCR 可以在同一個文件中同時辨識文字和 掃描條碼。 這種雙重功能對於處理發票、運送標籤和庫存文件非常有價值:

using IronOcr;
var ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;  // Enable barcode detection
using var input = new OcrInput("shipping-label.png");
var result = ocr.Read(input);
// Access extracted text
Console.WriteLine($"Text: {result.Text}");
// Access any barcodes found in the image
foreach (var barcode in result.Barcodes)
{
    Console.WriteLine($"Barcode ({barcode.Format}): {barcode.Value}");
}
using IronOcr;
var ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;  // Enable barcode detection
using var input = new OcrInput("shipping-label.png");
var result = ocr.Read(input);
// Access extracted text
Console.WriteLine($"Text: {result.Text}");
// Access any barcodes found in the image
foreach (var barcode in result.Barcodes)
{
    Console.WriteLine($"Barcode ({barcode.Format}): {barcode.Value}");
}
Imports IronOcr

Dim ocr As New IronTesseract()
ocr.Configuration.ReadBarCodes = True ' Enable barcode detection
Using input As New OcrInput("shipping-label.png")
    Dim result = ocr.Read(input)
    ' Access extracted text
    Console.WriteLine($"Text: {result.Text}")
    ' Access any barcodes found in the image
    For Each barcode In result.Barcodes
        Console.WriteLine($"Barcode ({barcode.Format}): {barcode.Value}")
    Next
End Using
$vbLabelText   $csharpLabel

ReadBarCodes 啟用並設為 true 時,條碼偵測會啟動,而不會顯著影響處理時間。結果中的 Barcodes 集合包含每個偵測到的條碼的值和格式類型,支援 QR 碼、Code 128、EAN-13 和 UPC 等標準格式。 在處理同時包含人類可讀文字和機器可讀程式碼的文件時,此雙重功能可省去單獨使用 BarCode 掃描程式庫的需要。

輸入

OCR C# GitHub:使用 IronOCR 實現文字識別:圖像 5 - 範例 BarCode 圖像

輸出

OCR C# GitHub:使用 IronOCR 實現文字識別:圖像 6 - Console BarCode 文字輸出

如何從掃描影像產生可搜尋的 PDF?

將掃描的文件轉換為searchable PDFs可以進行文字選擇、複製和全文檢索。 此工作可使用各種影像格式作為輸入:

using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput("scanned-contract.tiff");
var result = ocr.Read(input);
// Export as searchable PDF - create new document from scan
result.SaveAsSearchablePdf("contract-searchable.pdf");
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput("scanned-contract.tiff");
var result = ocr.Read(input);
// Export as searchable PDF - create new document from scan
result.SaveAsSearchablePdf("contract-searchable.pdf");
Imports IronOcr

Dim ocr As New IronTesseract()
Using input As New OcrInput("scanned-contract.tiff")
    Dim result = ocr.Read(input)
    ' Export as searchable PDF - create new document from scan
    result.SaveAsSearchablePdf("contract-searchable.pdf")
End Using
$vbLabelText   $csharpLabel

SaveAsSearchablePdf 方法嵌入了一個與已識別內容相匹配的隱形文字層,保留了原始文件的外觀,同時啟用了文字操作。 這可建立 PDF/A 相容的文件,適用於歸檔和企業文件管理系統。 您也可以將結果匯出為 JSON 格式,以便與其他系統整合。

GitHub 專案中的 OCR 有哪些最佳實作?

在 GitHub 上維護 OCR 專案時,請考慮這些建議以建立您的儲存庫:

  • 大型測試影像使用 Git LFS,以避免儲存庫變大
  • 將授權金鑰儲存於環境變數或 GitHub Secrets 中,切勿儲存於已提交的 C# 程式碼中 - 請參閱授權金鑰設定指南
  • 在專用的測試資料夾中包含範例圖片,以供撰稿人驗證 OCR 功能。
  • 在 README 檔案中記錄支援的影像格式,以設定明確的期望並回答常見問題
  • 在 CI 管道中建立並執行測試,以確保程式庫能在每個版本中正確運作

對於 GitHub Actions 工作流程,IronOCR 可在 Windows 和 Linux 上的容器化環境中執行。 針對非 Windows 執行者時,請參閱 Linux 部署指南,以瞭解組態細節。

IronOCR 也支援 多國語言,包括英文、西班牙文、法文、中文和其他 120 種以上的語言。 透過 NuGet 下載語言套件,以啟用英文以外語言的文字辨識功能。 這為您的系統所需的幾乎所有語言提供免費的 OCR 存取。

結論

IronOCR 透過其直覺的 API、自動影像預處理以及可靠的跨平台支援,簡化了 C# GitHub 專案中的 OCR 實作。 上面的程式碼範例提供了建立文件處理應用程式的基礎,這些應用程式可與基於 GitHub 的開發工作流程順利整合。 本庫可與 .NET Framework、.NET Core 和現代 .NET 版本一起使用,為任何類型的專案提供廣泛的相容性。

開始免費試用以探索完整功能,或檢視授權選項以進行生產部署。

OCR C# GitHub:使用 IronOCR 實現文字識別:圖像 7 - 授權

常見問題解答

什麼是 IronOCR?

IronOCR 是一個功能強大的 C# 光學字元識別 (OCR) 函式庫,可簡化從影像和 PDF 中提取文字的程序。

開發人員為何要選擇 IronOCR 而非 GitHub OCR 解決方案?

IronOCR 提供可靠且最新的 OCR 功能,不需要複雜的設定或手動二進位管理,與許多零散的 GitHub 專案不同。

IronOCR 可以同時處理圖片和 PDF 文件嗎?

是的,IronOCR 旨在從影像和 PDF 文件中有效率地抽取文字。

使用 IronOCR 時需要管理 tessdata 檔案嗎?

不,IronOCR 不需要手動管理 tessdata 檔案,簡化了 OCR 實作流程。

IronOCR 與 Windows 系統相容嗎?

是的,IronOCR 與 Windows 系統完全相容,提供無縫安裝和使用體驗,無需大量的故障排除。

IronOCR 如何改善開發人員的工作流程?

IronOCR 簡化了 OCR 整合流程,讓開發人員可以更專注於編碼,而不是處理零碎的文件和配置。

IronOCR 是針對何種程式語言設計的?

IronOCR 專為 C# 開發人員設計,提供專為 C# 語言生態系統量身打造的強大 OCR 解決方案。

Kannaopat Udonpant
軟體工程師
在成為軟體工程師之前,Kannapat 完成了日本北海道大學的環境資源博士學位。在攻讀學位期間,Kannapat 也成為生物製造工程系車輛機器人實驗室的成員。2022 年,他利用自己的 C# 技能加入 Iron Software 的工程團隊,主要負責 IronPDF 的開發。Kannapat 非常重視他的工作,因為他可以直接向撰寫 IronPDF 使用的大部分程式碼的開發者學習。除了同儕學習之外,Kannapat 也很享受在 Iron Software 工作的社交生活。不寫程式碼或文件時,Kannapat 通常會用 PS5 玩遊戲或重看《最後的我們》。