如何在 C# 中進行 Tesseract 5 的自定字體訓練

針對 Windows 開發人員的 Tesseract 5 C# 自訂字體培訓

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

Tesseract 5 中的自訂字體訓練可提高特定字體的 OCR 準確率。 此過程會產生訓練數據,用於訓練引擎識別字體特徵。 產生的.traineddata檔案可與 IronOCR 搭配使用,精確辨識裝飾性字體或特殊字體。

快速入門:在 C# 中使用您的 .traineddata 字型檔

只需幾行程式碼,即可在 IronOCR 中使用您自訂訓練的 Tesseract 字體檔案。 非常適合對特殊字體或裝飾字體進行精確的OCR識別。

Nuget Icon立即開始使用 NuGet 建立 PDF 檔案:

  1. 使用 NuGet 套件管理器安裝 IronOCR

    PM > Install-Package IronOcr

  2. 複製並運行這段程式碼。

    var ocr = new IronOcr.IronTesseract();
    ocr.UseCustomTesseractLanguageFile("path/to/YourCustomFont.traineddata");
    string text = ocr.Read(new IronOcr.OcrInput("image-with-special-font.png")).Text;
  3. 部署到您的生產環境進行測試

    立即開始在您的專案中使用 IronOCR,免費試用!
    arrow pointer

如何下載最新版本的IronOCR?

我應該使用哪種安裝方法?

直接將IronOcr DLL下載到您的電腦。

為什麼應該使用 NuGet?

或者,也可以透過NuGet使用以下指令安裝:

Install-Package IronOcr

IronOCR 為Tesseract 5 功能自訂語言實作提供全面支持,使其成為滿足特殊 OCR 需求的理想選擇。


如何安裝和設定 WSL2 和 Ubuntu?

請參閱設定 WSL2 和 Ubuntu 的教學。

請注意自訂字型訓練需要 Linux 系統。

訓練需要 Linux 系統,但產生的.traineddata檔案可以在所有平台上無縫運作。 有關詳細的 Linux 設定說明,請參閱我們的Linux 部署指南

如何在Ubuntu上安裝Tesseract 5?

使用以下命令安裝 Tesseract 5:

sudo apt install tesseract-ocr
sudo apt install libtesseract-dev
sudo apt install tesseract-ocr
sudo apt install libtesseract-dev
SHELL

這些軟體包提供了訓練所需的核心 Tesseract OCR 引擎和開發庫。 有關 Tesseract 的高級配置選項,請參閱我們的詳細配置指南

我應該下載哪種字體用於培訓?

本教學使用 AMGDT 字體。 字型檔案可以是 .ttf 或 .otf 格式。 Windows 檔案總管顯示已下載的 AMGDT Regular.ttf 字型文件,該文件以紅色方塊反白顯示,用於訓練

選擇培訓用字體時:

  • 選擇與標準 Tesseract 模型顯著不同的字體
  • 確保字體擁有合法授權
  • 考慮使用裝飾字體、手寫字體或行業專用字體
  • 使用應用程式在生產環境中遇到的字體進行測試

如何掛載磁碟機進行自訂字體訓練?

使用以下指令將D:碟掛載為工作區:

cd /
cd /mnt/d
cd /
cd /mnt/d
SHELL

這樣,您就可以直接從 Ubuntu WSL2 環境處理儲存在 Windows 磁碟機上的檔案。

如何將字型檔案複製到Ubuntu字型資料夾?

將字型檔複製到以下 Ubuntu 目錄: /usr/share/fonts/usr/local/share/fonts

在 Ubuntu 系統中,可以透過在檔案總管的網址列中輸入\\wsl$來存取檔案。

Windows 檔案總管顯示用於從 Windows 存取 Ubuntu 檔案系統的 \wsl$ 網路路徑

如果出現"目標資料夾存取被拒絕"的錯誤怎麼辦?

如果遇到存取被拒絕的錯誤,請使用命令列複製檔案:

cd /
su root
cd /c/Users/Admin/Downloads/'AMGDT Regular'
cp 'AMGDT Regular.ttf' /usr/share/fonts
cp 'AMGDT Regular.ttf' /usr/local/share/fonts
exit
cd /
su root
cd /c/Users/Admin/Downloads/'AMGDT Regular'
cp 'AMGDT Regular.ttf' /usr/share/fonts
cp 'AMGDT Regular.ttf' /usr/local/share/fonts
exit
SHELL

字體安裝對於培訓過程至關重要。 系統在產生訓練圖像時需要存取字體以進行渲染。

如何從 GitHub 複製tesseract_tutorial

使用以下命令克隆tesseract_tutorial程式碼庫:

git clone https://github.com/astutejoe/tesseract_tutorial.git
git clone https://github.com/astutejoe/tesseract_tutorial.git
SHELL

此儲存庫包含訓練過程中必要的 Python 腳本和設定檔。 這些腳本可以自動完成字體訓練中的許多手動步驟。

如何從 GitHub 複製tesstraintesseract

導覽至tesseract_tutorial目錄,然後複製tesstraintesseract程式碼庫:

git clone https://github.com/tesseract-ocr/tesstrain
git clone https://github.com/tesseract-ocr/tesseract
git clone https://github.com/tesseract-ocr/tesstrain
git clone https://github.com/tesseract-ocr/tesseract
SHELL
  • tesstrain包含用於建立.traineddata檔案的 Makefile 文件
  • tesseract包含 tessdata 資料夾,其中包含在自訂字體訓練期間用作參考的原始.traineddata文件

有關使用多個語言包和自訂訓練資料的更多信息,請參閱我們的國際語言指南

如何建立用於儲存輸出結果的"資料"資料夾?

tesseract_tutorial/tesstrain下建立資料資料夾:

mkdir tesseract_tutorial/tesstrain/data
mkdir tesseract_tutorial/tesstrain/data
SHELL

此資料夾儲存所有產生的訓練文件,包括 .box、.tif 和中間訓練工件。

如何運行split_training_text.py

返回tesseract_tutorial資料夾並執行以下命令:

python split_training_text.py
python split_training_text.py
SHELL

運行split_training_text.py後,它會在資料資料夾中建立.box.tif檔案。

如何解決 Fontconfig 警告?

終端機顯示 fontconfig 警告,提示缺少 Apex 字型和字型目錄為空。 如果您看到警告Fontconfig warning: "/tmp/fonts.conf, line 4: empty font directory name ignored" ,則表示缺少字體目錄。 請透過編輯tesseract_tutorial/fonts.conf檔案並新增以下內容來解決此問題:

<dir>/usr/share/fonts</dir>
<dir>/usr/local/share/fonts</dir>
<dir prefix="xdg">fonts</dir>
<!-- the following element will be removed in the future -->
<dir>~/.fonts</dir>
<dir>/usr/share/fonts</dir>
<dir>/usr/local/share/fonts</dir>
<dir prefix="xdg">fonts</dir>
<!-- the following element will be removed in the future -->
<dir>~/.fonts</dir>
XML

使用以下命令將其複製到/etc/fonts

cp fonts.conf /etc/fonts
cp fonts.conf /etc/fonts
SHELL

此外,更新split_training_text.py

fontconf_dir = '/etc/fonts'
fontconf_dir = '/etc/fonts'
PYTHON

我應該產生多少個訓練文件?

目前配置會產生 100 個訓練文件。 您可以在split_training_text.py中修改此設定。

Python 程式碼設定 count=100 並對 lines 陣列進行切片,以限制訓練資料的大小。

針對生產品質培訓:

  • 先取100-500個樣本進行測試。
  • 使用 1000-5000 個樣本以提高準確性
  • 提供涵蓋所有必需字元的各種文字樣本
  • 平衡訓練時間和準確度要求

我應該在哪裡下載eng.traineddata

從該儲存庫下載eng.traineddata並將其放置在tesseract_tutorial/tesseract/tessdata中。

基礎模型提供語言上下文,從而提高辨識準確度。 選擇與目標語言相符的基礎模型。 如需解決自訂語言包問題,請參閱我們的自訂 OCR 語言包指南

如何建立自訂字體.traineddata

導航至tesstrain資料夾,並在 WSL2 中使用以下命令:

TESSDATA_PREFIX=../tesseract/tessdata make training MODEL_NAME=AMGDT START_MODEL=eng TESSDATA=../tesseract/tessdata MAX_ITERATIONS=100
TESSDATA_PREFIX=../tesseract/tessdata make training MODEL_NAME=AMGDT START_MODEL=eng TESSDATA=../tesseract/tessdata MAX_ITERATIONS=100
SHELL
  • MODEL_NAME是您的自訂字體名稱
  • START_MODEL是原始的.traineddata引用
  • MAX_ITERATIONS定義迭代次數(迭代次數越多,準確率越高)

如果我在 Makefile 中遇到"讀取資料失敗"的錯誤怎麼辦?

若要解決"讀取資料失敗"的問題,請修改 Makefile 檔案:

WORDLIST_FILE := $(OUTPUT_DIR2)/$(MODEL_NAME).lstm-word-dawg
NUMBERS_FILE := $(OUTPUT_DIR2)/$(MODEL_NAME).lstm-number-dawg
PUNC_FILE := $(OUTPUT_DIR2)/$(MODEL_NAME).lstm-punc-dawg

此修改可確保 Makefile 在正確的輸出目錄結構中尋找檔案。

如何解決"無法載入腳本 Unicharset"錯誤?

Latin.unicharset插入tesstrain/data/langdata資料夾。 在這裡找到Latin.unicharset

unicharset 檔案定義了您的語言或腳本的字元集。 確保它與你的字體字元覆蓋範圍相符。

如何驗證創建的.traineddata的準確性?

使用 1000 個.box.tif檔案以及 3000 次訓練迭代,輸出的AMGDT.traineddata實現了約 5.77% 的最小訓練錯誤率 ( BCER )。

Tesseract 訓練日誌顯示,在第 2194 到 2298 次迭代中,BCER 從 6.388% 降低到 5.771%

使用 IronOCR 測試您訓練好的模型:

using IronOcr;

// Initialize IronOCR with custom trained data
var ocr = new IronTesseract();

// Load your custom trained font
ocr.UseCustomTesseractLanguageFile(@"path\to\AMGDT.traineddata");

// Configure for optimal results
ocr.Configuration.BlackListCharacters = "";
ocr.Configuration.WhiteListCharacters = "";
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;

// Process an image with your custom font
using var input = new OcrInput();
input.LoadImage("test-image-with-amgdt-font.png");

// Optional: Apply filters if needed
input.EnhanceResolution(300);
input.DeNoise();

// Perform OCR
var result = ocr.Read(input);
Console.WriteLine($"Recognized Text: {result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
using IronOcr;

// Initialize IronOCR with custom trained data
var ocr = new IronTesseract();

// Load your custom trained font
ocr.UseCustomTesseractLanguageFile(@"path\to\AMGDT.traineddata");

// Configure for optimal results
ocr.Configuration.BlackListCharacters = "";
ocr.Configuration.WhiteListCharacters = "";
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;

// Process an image with your custom font
using var input = new OcrInput();
input.LoadImage("test-image-with-amgdt-font.png");

// Optional: Apply filters if needed
input.EnhanceResolution(300);
input.DeNoise();

// Perform OCR
var result = ocr.Read(input);
Console.WriteLine($"Recognized Text: {result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
$vbLabelText   $csharpLabel

若要在生產應用程式中實作自訂字體,請參閱我們關於使用自訂語言檔案的指南。

如需進一步閱讀和參考,請觀看教學: YouTube 影片

常見問題解答

如何在 C# 中使用自訂訓練的字型檔案?

只需幾行程式碼,您就可以在 IronOCR 中使用自訂訓練的 Tesseract 字型檔案。只需建立一個 IronTesseract 範例,以您的 .traineddata 檔案路徑呼叫 UseCustomTesseractLanguageFile(),然後使用 Read() 方法對包含您特殊字型的影像執行 OCR。

訓練 OCR 自訂字型有哪些要求?

自訂字型訓練需要 Linux 環境 (Windows 使用者建議使用 Ubuntu 的 WSL2)、已安裝開發函式庫的 Tesseract 5,以及您想要訓練的字型檔案 (.ttf或 .otf 格式)。在 Linux 中建立的 .traineddata 檔案可在所有平台上與 IronOCR 無縫搭配使用。

為何要訓練自訂字型而非使用標準 OCR?

訓練自訂字型可提高特定字型的 OCR 準確度,尤其是與標準 Tesseract 模型有顯著差異的裝飾字型或特殊字型。IronOCR 就可以使用這些訓練過的字型檔案,準確辨識包含這些獨特字型的影像中的文字,否則標準 OCR 模型就很難讀取這些文字。

我可以在不同的平台上使用自訂訓練的字型嗎?

是的,雖然訓練過程需要使用 Linux,但所產生的 .traineddata 檔案可透過 IronOCR 在所有平台上無縫運作。這表示您可以在 Linux 上訓練一次,然後在 Windows、macOS 或 Linux 部署上使用訓練好的資料檔案。

建議使用何種安裝方式開始使用?

為了快速安裝,您可以直接下載 IronOCR DLL 或透過 NuGet Package Manager 安裝。建議使用 NuGet,因為它會自動處理相依性,讓更新更容易。IronOCR 提供對 Tesseract 5 功能和自訂語言實作的全面支援。

坎納奧帕特·烏東潘特
軟體工程師
在成為軟體工程師之前,Kannapat 在日本北海道大學完成了環境資源專業的博士學位。在攻讀博士學位期間,他還加入了生物生產工程系下屬的車輛機器人實驗室。 2022 年,他憑藉 C# 技能加入了 Iron Software 的工程團隊,專注於 IronPDF 的開發。 Kannapat 非常珍惜這份工作,因為他可以直接向 IronPDF 大部分程式碼的編寫者學習。除了與同事學習之外,Kannapat 也享受在 Iron Software 工作的社交氛圍。工作之餘,Kannapat 通常會玩 PS5 遊戲或重溫《最後生還者》。
經審核
傑夫·弗里茨
傑弗裡·T·弗里茨
.NET 社群團隊首席專案經理
Jeff 同時也是 .NET 和 Visual Studio 團隊的首席專案經理。他是 .NET Conf 虛擬會議系列的執行製片人,並主持每週兩次的開發者直播節目“Fritz and Friends”,在節目中他會與觀眾一起探討技術並編寫程式碼。 Jeff 也為包括 Microsoft Build、Microsoft Ignite、.NET Conf 和 Microsoft MVP Summit 在內的微軟大型開發者活動撰寫研討會、簡報並策劃內容。
準備好開始了嗎?
Nuget 下載 5,299,091 | 版本: 2025.12 剛剛發布