OCR 工具

如何使用Tesseract從圖像中提取文本

Kannaopat Udonpant
坎納帕特·烏頓潘
2023年6月6日
已更新 2024年1月28日
分享:

利用像 IronOCR 和 Tesseract 這樣的庫,開發者可以利用先進的算法和機器學習技術,從圖像和掃描文件中提取文本信息。 此教學將向讀者展示如何使用 Tesseract 庫來執行從圖像中提取文字,最後將介紹 IronOCR 的獨特方法。

使用 Tesseract 的 OCR

1.1. 安裝 Tesseract

使用 NuGet 套件管理器主控台,輸入以下命令。

Install-Package Tesseract

或透過 NuGet 套件管理器下載套件。

如何獲取OCR文字識別,圖1:在NuGet套件管理器中安裝Tesseract套件

在 NuGet 包管理器中安裝Tesseract套件

在安裝 NuGet 套件後,您必須手動將語言檔案安裝並儲存在專案資料夾中。 這可以被認為是這個特定庫的一個缺點。

請造訪以下網站來下載語言檔案。 下載後,解壓縮文件,然後將 "tessdata" 資料夾添加到專案的 debug 資料夾中。

1.2. 使用 Tesseract(快速開始)

可以使用以下源代碼對給定圖像進行 OCR:

using Tesseract;

var ocrEngine = new TesseractEngine(@"tessdata", "eng", EngineMode.Default);
var img = Pix.LoadFromFile("Demo.png");
var res = ocrEngine.Process(img);
Console.WriteLine(res.GetText());
Console.ReadKey();
using Tesseract;

var ocrEngine = new TesseractEngine(@"tessdata", "eng", EngineMode.Default);
var img = Pix.LoadFromFile("Demo.png");
var res = ocrEngine.Process(img);
Console.WriteLine(res.GetText());
Console.ReadKey();
Imports Tesseract

Private ocrEngine = New TesseractEngine("tessdata", "eng", EngineMode.Default)
Private img = Pix.LoadFromFile("Demo.png")
Private res = ocrEngine.Process(img)
Console.WriteLine(res.GetText())
Console.ReadKey()
$vbLabelText   $csharpLabel

首先,必須創建一個TerreractEngine物件並將語言數據加載到引擎中。然後,使用Tesseract Pix加載所需的圖像文件。 然後這張圖片被傳遞到TerreractEngine中,通過使用TesseractEngine中可用的GetText方法來提取正確的識別文字。 這是程式碼的輸出。

如何獲取OCR文字識別,圖2:從圖片中提取的文本

從圖像提取的文字

1.3 Tesseract 考量因素

  1. Tesseract 從 3.00 版開始支持輸出文本格式化、OCR 位置數據和頁面佈局分析。

  2. Tesseract 可用於 Windows、Linux 及 Mac OS X。 然而,由於開發支持有限,Tesseract 目前僅被確認能夠在 Windows 和 Ubuntu 上按預期運作。

  3. Tesseract 可以區分等寬字體和比例字體。

  4. 使用像 OCRopus 這樣的前端,Tesseract 非常適合作為後端使用,並且可以用於更具挑戰性的 OCR 任務,例如版面分析。

  5. Tesseract 的一些缺點:

    • 最新的版本尚未設計為在 Windows 上編譯。

    • Tesseract 的 C# API 包裝器維護不頻繁,且與 Tesseract 的新版本相差多年。

    若要了解更多關於 C# 中的 Tesseract,請造訪Tesseract 教程

2. 使用 IronOCR 進行光學字符識別 (OCR)

2.1. 安裝 IronOCR

在 NuGet 封裝管理器主控台輸入下一個命令。

Install-Package IronOcr

或通過NuGet Package Manager安裝IronOCR庫,還有其他語言的附加包,這些都簡單且方便使用。

如何獲取OCR文字識別,圖3:透過NuGet套件管理器安裝IronOCR和語言套件

透過NuGet套件管理器安裝IronOCR和語言套件

2.2. 使用 IronOCR

以下是從給定圖像識別文字的示例代碼。

var ocr = new IronTesseract();
ocr.Language = OcrLanguage.EnglishBest;
ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
using (var input = new OcrInput())      
{          
    input.LoadImage(@"Demo.png");
    var result = ocr.Read(input);
    Console.WriteLine(result.Text);
    Console.ReadKey();
}
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.EnglishBest;
ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
using (var input = new OcrInput())      
{          
    input.LoadImage(@"Demo.png");
    var result = ocr.Read(input);
    Console.WriteLine(result.Text);
    Console.ReadKey();
}
Dim ocr = New IronTesseract()
ocr.Language = OcrLanguage.EnglishBest
ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5
Using input = New OcrInput()
	input.LoadImage("Demo.png")
	Dim result = ocr.Read(input)
	Console.WriteLine(result.Text)
	Console.ReadKey()
End Using
$vbLabelText   $csharpLabel

上面的代碼實例化了一個IronTesseract對象。 此外,正在創建一個OcrInput物件,以便新增一個或多個影像檔案,並透過LoadImage方法提供本地文件路徑。 您可以自由上傳任意數量的圖片。 在物件IronTesseract中的功能Read將解析圖像檔案並將結果提取到OCR結果中。

如何獲取OCR文字識別,圖4:使用IronOCR庫提取的文字輸出

使用 IronOCR 程式庫提取的文字輸出

2.3 IronOCR 考量因素

  1. IronOCR 是 Tesseract 函式庫的擴展,提供更高的穩定性和準確性。

  2. IronOCR 可以從 PDF 檔案 和照片中讀取文本內容,IronOCR 也可以讀取超過 20 種不同類型的 條碼 和 QR 碼。

  3. 輸出可以以純文字、結構化數據、條碼或 QR 碼的形式呈現。

  4. 該庫可識別全球127種語言

  5. IronOCR 在所有 .NET 環境中靈活運行(控制台、網頁、桌面等),還支持最新的行動框架,如 Mono、Xamarin、AzureMAUI

  6. IronOCR 提供免費試用,並有價格較低的開發版本。 了解更多關於授權的信息

    有關 IronOCR 的詳細教程,請參閱此文章以 C# 從影像中讀取文字

Kannaopat Udonpant
坎納帕特·烏頓潘
軟體工程師
在成為軟體工程師之前,Kannapat 在日本北海道大學完成了環境資源博士學位。在攻讀學位期間,Kannapat 也成為了車輛機器人實驗室的成員,該實驗室隸屬於生物生產工程學系。2022 年,他利用自己的 C# 技能,加入了 Iron Software 的工程團隊,專注於 IronPDF 的開發。Kannapat 珍視這份工作,因為他可以直接向負責撰寫大部分 IronPDF 程式碼的開發人員學習。除了同儕學習外,Kannapat 還享受在 Iron Software 工作的社交方面。當他不在撰寫程式碼或文件時,Kannapat 通常會在 PS5 上玩遊戲或重看《最後生還者》。
< 上一頁
OCR C# 開源(開發人員列表)
下一個 >
最佳 OCR API(更新列表比較)