如何在 C# 中使用 Tesseract 搭配自訂語言

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronOCR 透過 UseCustomTesseractLanguageFile 方法載入 Tesseract .traineddata 檔案,支援自訂語言、特殊文字或密碼的 OCR 功能,讓您能從任何自訂訓練的語言模型中擷取文字。

快速入門:為 OCR 載入自訂語言

  1. using NuGet 套件管理員安裝 https://www.nuget.org/packages/IronOcr

    PM > Install-Package IronOcr
  2. 請複製並執行此程式碼片段。

    using IronOcr;
    
    // Initialize OCR engine
    var ocr = new IronTesseract();
    
    // Load custom language file
    ocr.UseCustomTesseractLanguageFile("custom.traineddata");
    
    // Process document
    using var input = new OcrInput();
    input.LoadImage("document.png");
    
    // Extract text
    var result = ocr.Read(input);
    Console.WriteLine(result.Text);
  3. 部署至您的生產環境進行測試

    立即透過免費試用,在您的專案中開始使用 IronOCR

    arrow pointer
  1. 透過 NuGet 套件管理員安裝 IronOcr
  2. 載入您的自訂 .traineddata 檔案,並使用 UseCustomTesseractLanguageFile
  3. 建立 OcrInput 並載入您的文件
  4. 呼叫 Read() 以您的自訂語言擷取文字
  5. 儲存或處理提取的文字

光學字元辨識(OCR)有時需要處理自訂語言、特殊文字或密碼。 若要讀取包含自訂語言的輸入影像,必須向 Tesseract 引擎提供該特定語言的訓練資料。 此資料儲存於一個特殊的 .traineddata 檔案中。

雖然建立(訓練)此檔案的複雜流程是透過 Tesseract 自身的工具完成,但 IronOCR 完全支援使用這些自訂語言檔案。 這讓您能夠將訓練好的模型應用於解讀並讀取任何輸入的文字。 本指南將示範如何使用 IronOCR 載入並使用自訂的 .traineddata 檔案。


如何使用 Tesseract 實作自訂語言 OCR?

若要在 Tesseract 中使用自訂語言,請先透過呼叫 UseCustomTesseractLanguageFile 方法載入您的 .traineddata 檔案。 此為關鍵步驟,因為此檔案包含所有訓練資料,使 Tesseract 能識別該自訂語言的獨特字元。

IronOCR 的自訂語言支援範圍超越了標準語言。 無論您處理的是歷史文獻、人工語言,還是專用符號系統,皆適用相同的翻譯流程。 若您的專案需要多語言支援,請參閱我們的多語言閱讀指南,或瞭解我們預設支援的 125 種國際 OCR 語言

接著,請如同執行一般 OCR 操作那樣載入您的輸入文件。 我們正在載入一份使用 LoadPdf 標記的 PDF 檔案,其中包含自訂語言段落。 IronOCR 支援多種輸入格式,包括圖像(jpg、png、gif、tiff、bmp)PDF 檔案

最後,請使用 Read 方法從輸入內容中提取文字。 結果可輸出至控制台,或儲存至文字檔以供參考。

自訂語言需要哪些訓練資料?

我們將使用這份範例 PDF 作為輸入,其中包含以我們自訂語言撰寫的文字。

我們將使用此自訂語言 .traindata 作為範例。

訓練資料的品質與完整性將直接影響 OCR 的準確度。 在準備自訂語言訓練資料時:

  1. 字元涵蓋範圍:請確保您的訓練資料包含所有字元與符號
  2. 字型變體:若文件中的排版風格各異,請包含多種字型樣式
  3. 影像品質:使用與實際生產環境中處理的影像相似的圖片進行訓練
  4. 語境模式:包含常見的詞彙組合與短語

如需進階設定選項,請參閱我們的 Tesseract 詳細設定指南

如何載入並處理自訂語言文件?

:path=/static-assets/ocr/content-code-examples/how-to/ocr-custom-language.cs
using IronOcr;
using System;
using System.IO;

var ocrTesseract = new IronTesseract();

// Load the traineddata file for the custom language
ocrTesseract.UseCustomTesseractLanguageFile("AMGDT.traineddata");

using var ocrInput = new OcrInput();
// Load the PDF containing text in the custom language
ocrInput.LoadPdf("custom.pdf");

var ocrResult = ocrTesseract.Read(ocrInput);

// Print text to the console
Console.WriteLine("--- OCR Result ---");
Console.WriteLine(ocrResult.Text);
Console.WriteLine("------------------");

// Pipe text to a .txt file
string outputFilePath = "ocr_output.txt";
File.WriteAllText(outputFilePath, ocrResult.Text);

Console.WriteLine($"\nSuccessfully saved text to {outputFilePath}");
Imports IronOcr
Imports System
Imports System.IO

Dim ocrTesseract As New IronTesseract()

' Load the traineddata file for the custom language
ocrTesseract.UseCustomTesseractLanguageFile("AMGDT.traineddata")

Using ocrInput As New OcrInput()
    ' Load the PDF containing text in the custom language
    ocrInput.LoadPdf("custom.pdf")

    Dim ocrResult = ocrTesseract.Read(ocrInput)

    ' Print text to the console
    Console.WriteLine("--- OCR Result ---")
    Console.WriteLine(ocrResult.Text)
    Console.WriteLine("------------------")

    ' Pipe text to a .txt file
    Dim outputFilePath As String = "ocr_output.txt"
    File.WriteAllText(outputFilePath, ocrResult.Text)

    Console.WriteLine(vbCrLf & "Successfully saved text to " & outputFilePath)
End Using
$vbLabelText   $csharpLabel

上述程式碼展示了自訂語言 OCR 的基本工作流程。 針對更複雜的場景,請考慮以下增強方案:

優化效能:針對大型文件或批次處理,應實作多執行緒與非同步支援以提升效能。

影像預處理:若原始文件存在畫質問題,請在進行 OCR 處理前套用影像修正濾鏡。 "篩選精靈"可協助您找出最佳的預處理設定。

區域特定 OCR:對於內容混雜的文件,請使用"影像區域 OCR"技術,專注於包含您指定語言的特定區域。

自訂語言 OCR 能帶來什麼樣的成效?

Tesseract OCR 輸出結果,顯示從終端介面擷取的《Apex Legends》遊戲功能相關文字

此輸出內容展示我們自訂語言模型的翻譯結果。 透過提供正確的訓練資料,IronOCR 成功解讀了文本,並以通俗易懂的英文呈現結果。 此外,這是程式碼所產生的 txt 輸出檔。

自訂語言 OCR 的準確性取決於以下幾個因素:

  • 訓練資料品質:更優質的訓練資料能帶來更佳的成果
  • 文件一致性:與訓練資料相符的文件表現最佳
  • 圖片解析度:DPI 較高的圖片能產生更精確的結果 — 請參閱我們的 DPI 設定指南

自訂語言實作的最佳實踐

在生產環境中實作自訂語言 OCR 時,請參考以下最佳實務:

錯誤處理與驗證:在嘗試載入 .traineddata 檔案之前,請務必先驗證該檔案是否存在且可存取。 針對自訂語言檔可能遺失或損毀的情況,應實作適當的錯誤處理機制。

效能優化:自訂語言模型的體積可能比標準語言套件更大。 為獲得最佳效能:

  • 處理多份文件時,請將載入的語言模型存入快取
  • 使用進度追蹤功能來監控長時間執行的 OCR 作業
  • 建議針對處理大型文件的情況設定超時機制

結合標準語言:若您的文件同時包含自訂語言與標準語言,您可以同時載入多種語言。 這對於內容混合的文件特別有用。

測試與驗證:建立測試框架以驗證 OCR 準確性:

進階應用案例

自訂語言 OCR 開創了無數的可能性:

歷史文件保存:將古籍手稿或使用已廢棄文字書寫的文本進行數位化
專業符號系統:處理數學方程式、樂譜或技術圖表——請參閱我們的方程式疑難排解指南
安全應用:解碼專有編碼系統或密碼
無障礙:將專用的點字或觸覺書寫系統轉換為標準文字

若需處理更複雜的場景,請參閱我們詳盡的程式碼範例,這些範例展示了 IronOCR 結合 Tesseract 5 的各項功能。

常見問題

如何對使用自訂語言或字元的文件執行 OCR?

IronOCR 透過 `UseCustomTesseractLanguageFile` 方法載入 Tesseract 的 .traineddata 檔案,從而實現自訂語言的 OCR 功能。這使您能夠從任何自訂訓練的語言模型中擷取文字,包括特殊文字、歷史文本或密碼。

自訂語言辨識需要什麼檔案格式?

IronOCR 需要一個包含您自訂語言訓練資料的 .traineddata 檔案。此檔案透過 UseCustomTesseractLanguageFile 方法載入,並包含 Tesseract 識別您自訂語言特有字元所需的所有必要資訊。

我可以在單次 OCR 操作中使用多種自訂語言嗎?

是的,IronOCR 支援多語言辨識。您可以載入多個自訂語言檔案,或將自訂語言與 IronOCR 預設支援的 125 種國際語言任意組合使用。

可識別哪些類型的自訂腳本?

IronOCR 能夠識別任何已透過 .traineddata 檔案進行適當訓練的自訂文字系統,包括歷史文字、人造語言、特殊符號系統及密碼。其靈活性更延伸至任何可透過 Tesseract 工具進行訓練的書寫系統。

如何在我的 C# 應用程式中實作自訂語言 OCR?

要使用 IronOCR 實作自訂語言 OCR:1) 初始化 IronTesseract 實例,2) 使用 UseCustomTesseractLanguageFile 載入您的自訂 .traineddata 檔案,3) 建立 OcrInput 物件並載入您的文件,4) 呼叫 Read() 方法以擷取文字,以及 5) 根據需要處理擷取的文字。

IronOCR 是否支援多種語言?

IronOCR 支援多種語言,使其成為適用於需要識別不同語言文字的全球應用程式的多功能工具。

IronOCR 能否整合至現有應用程式中?

IronOCR 設計上可輕鬆透過 C# 整合至現有應用程式中,讓開發人員能以最少的努力,為其軟體增添 OCR 功能。

使用 IronOCR 進行文件管理有哪些好處?

使用 IronOCR 進行文件管理,可將掃描文件轉換為可搜尋且可編輯的文字,從而簡化工作流程,減少人工資料輸入的需求,並提升文件的可存取性。

IronOCR 如何提升資料準確性?

IronOCR 透過其先進的辨識演算法與影像校正功能來提升資料準確性,確保文字擷取過程既可靠又精確。

IronOCR 是否有提供免費試用版?

是的,Iron Software 提供 IronOCR 的免費試用版,讓使用者能在決定購買前測試其功能與效能。

Curtis Chau
技術撰稿人

Curtis Chau 擁有卡爾頓大學(Carleton University)的電腦科學學士學位,專精於前端開發,並精通 Node.js、TypeScript、JavaScript 及 React。他熱衷於打造直觀且美觀的用戶介面,喜歡運用現代框架,並創建結構完善、視覺上吸引人的手冊。

除了開發工作之外,Curtis 對物聯網(IoT)抱有濃厚興趣,致力於探索整合硬體與軟體的創新方法。閒暇時,他喜歡玩遊戲和開發 Discord 機器人,將對科技的熱愛與創意相結合。

準備開始了嗎?
Nuget 下載 5,896,332 | 版本: 2026.5 just released
Still Scrolling Icon

還在往下捲動嗎?

想要快速確認成果嗎? PM > Install-Package IronOcr
執行範例 觀看您的圖片轉為可搜尋文字。