如何在 C# 中使用 Tesseract 的自訂語言
IronOCR 透過UseCustomTesseractLanguageFile方法載入 Tesseract .traineddata文件,從而實現對自訂語言、專用腳本或密碼的 OCR 功能,讓您可以從任何自訂訓練的語言模型中提取文字。
快速入門:載入自訂語言進行 OCR
立即開始使用 NuGet 建立 PDF 檔案:
使用 NuGet 套件管理器安裝 IronOCR
複製並運行這段程式碼。
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);部署到您的生產環境進行測試
- 透過 NuGet 套件管理器安裝 IronOCR
- 使用
UseCustomTesseractLanguageFile載入您的自訂.traineddata文件 - 建立
OcrInput並載入您的文檔 - 呼叫
Read()函數提取自訂語言的文本 - 儲存或處理擷取的文本
光學字元辨識 (OCR) 有時需要處理自訂語言、專用腳本或密碼。 若要讀取包含自訂語言的輸入影像,必須向 Tesseract 引擎提供該特定語言的訓練資料。 這些資料儲存在一個名為.traineddata特殊檔案中。
雖然創建(訓練)此文件的複雜過程是使用 Tesseract 自己的工具完成的,但 IronOCR 完全支援使用這些自訂語言檔案。 這樣,您就可以應用訓練好的模型來破解和讀取任何輸入文字。 本指南示範如何使用 IronOCR 載入和使用自訂的.traineddata檔案。
開始使用 IronOCR
如何在 Tesseract 中使用自訂語言
- 下載用於讀取自訂語言的 C# 程式庫
- 初始化 OCR 引擎
- 使用
UseCustomTesseractLanguageFile載入自訂語言訓練數據 - 使用
LoadImage載入輸入影像。 - 使用
Read讀取並提取自訂語言輸入圖像
如何使用 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.csusing 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}");以上程式碼示範了自訂語言 OCR 的基本工作流程。 對於更複雜的場景,請考慮以下增強功能:
優化效能:對於大型文件或批次處理,實現多執行緒和非同步支援以提高效能。
影像預處理:如果您的來源文件有品質問題,請在 OCR 處理之前套用影像校正濾鏡。 篩選精靈可以幫助您找到最佳的預處理設定。
區域特定 OCR :對於混合內容的文檔,使用影像的 OCR 區域技術來專注於包含自訂語言的特定區域。
自訂語言OCR能帶來哪些結果?

此輸出結果顯示了我們自訂語言模型的運行結果。 透過提供正確的訓練數據,IronOCR 成功破解了文本,結果為純英文。 此外,這是程式碼產生的txt輸出。
自訂語言OCR的準確性取決於以下幾個因素:
-訓練資料品質:更好的訓練資料帶來更好的結果
-文檔一致性:與訓練資料相符的文件表現最佳。
-影像解析度:更高的 DPI 影像可產生更精確的結果 - 請參閱我們的DPI 設定指南
自訂語言實現的最佳實踐
在生產環境中實施自訂語言OCR時,請考慮以下最佳實務:
錯誤處理和驗證:在嘗試載入.traineddata檔案之前,請務必驗證該檔案是否存在且可存取。 對於自訂語言檔案缺失或損壞的情況,應實施適當的錯誤處理。
效能最佳化:自訂語言模型可能比標準語言套件更大。 為了獲得最佳性能:
與標準語言結合使用:如果您的文件同時包含自訂語言和標準語言,您可以同時載入多種語言。 這對於包含混合內容的文件尤其有用。
測試與驗證:建立測試框架以驗證OCR準確性:
進階用例
自訂語言OCR技術開啟了許多可能性:
歷史文獻保存:將古代手稿或用已廢棄文字書寫的文本數位化
專用記譜系統:處理數學方程式、樂譜或技術圖表 - 請參閱我們的方程式故障排除指南
安全應用:解碼專有編碼系統或密碼
無障礙功能:將專用點字或觸覺書寫系統轉換為標準文本
對於更高級的應用程式場景,請瀏覽我們全面的程式碼範例,其中展示了 Tesseract 5 的各種 IronOCR 功能。
常見問題解答
如何在具有自訂語言或腳本的文件上執行 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)根據需要處理擷取的文字。






