IRONSOFTWAREHOME

如何在 C#中使用 Tesseract 5 訓練自定義字體

Kannaopat Udonpant
Kannapat Udonpant
Updated: 2026年6月4日

Tesseract 的預設英文模型對於許多實際的輸入容易誤讀:如醫院手寫的錄取表單、復古書籍的數位化、一個遊戲工作室的定製裝飾字體,或是一般 OCR 引擎從未見過的行業專用符號。 解決方法是親自訓練 Tesseract 使用確切的字體,生產一個可以在任何運行 IronOCR 的地方出貨的單一 .traineddata 成果。

本指南逐步介紹如何在 C# 中從頭到尾完成 Tesseract 5 自定義字體的訓練:安裝 WSL2 Ubuntu 工具鏈,從您的 .ttf.otf 渲染 .box.tif 訓練檔案,使用 tesstrain 依據基本 eng.traineddata 建立 .traineddata 模型,然後在 IronOCR 中載入結果。 一旦訓練完成,該文件即可跨 Windows、macOS、Linux 和 Docker 移動。

快速開始:在 C# 中使用您訓練的字體文件

通過將 UseCustomTesseractLanguageFile 指向您訓練的 .traineddata 文件來配置 IronOCR,然後在任何圖像上調用 Read,就像使用預設語言包一樣。

  1. 1Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr

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

    using IronOcr;
    
    var ocr = new IronTesseract();
    ocr.UseCustomTesseractLanguageFile("path/to/YourCustomFont.traineddata");
    string text = ocr.Read(new OcrInput("image-with-special-font.png")).Text;
    C#
  3. 3部署以在您的實時環境中測試

    今天就開始在您的專案中使用IronOCR,透過免費試用
    arrow pointer

如何設置訓練環境?

如何安裝 IronOCR?

通過NuGet安裝 IronOCR:

PM > Install-Package IronOcr

如果您無法使用 NuGet,可以使用這個DLL 包作為手動替代方案。 對於底層引擎,請參閱Tesseract 5 功能指南自定義語言參考

如何安裝和設置 WSL2 和 Ubuntu?

請參閱有關設置 WSL2 和 Ubuntu的教程。

請注意: 自訂字體訓練需要 Linux。

WSL2 就足夠了:一旦完成訓練,生成的 .traineddata 文件可以與您的 IronOCR 應用在 Windows、macOS、Linux 或 Docker 上一起出貨。 有關部署細節,請參閱Linux 部署指南

如何在 Ubuntu 上安裝 Tesseract 5?

使用以下命令安裝 Tesseract 5:

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

tesseract-ocr 包是運行識別的引擎; libtesseract-dev 暴露了 tesstrain 構建模型時需要的標頭文件。 一旦您正在使用訓練過的文件,Tesseract 配置指南涵蓋了運行時調整。

如何準備字體進行訓練?

應下載哪種字體?

本教程使用 AMGDT 字體,格式為 .ttf.otf

Windows 文件瀏覽器顯示已下載的 AMGDT Regular.ttf 字體文件,紅框中突出顯示用於訓練

選擇要訓練的字體時:

  • 選擇預設英文模型已經誤讀的字體。 訓練已被識別的字體浪費時間。
  • 確認字體的授權允許再分發,如果您的 .traineddata 將與應用程式一起運輸。
  • 訓練裝飾性、手寫和行業專用字體(如醫學、法律、制圖等)能提高準確性。
  • 訓練樣本應與實際運行時看到的相符,包括解析度和光線。

如何掛載磁碟?

將磁碟 D: 掛載為您的工作空間:

cd /
cd /mnt/d
SHELL

WSL2 將每個 Windows 軟碟機掛載到 /mnt/<字母> 下,因此您可以在 Windows 上編輯文件,並在同一作業中對其執行訓練命令。

如何將字體文件複製到 Ubuntu 字體資料夾?

Tesseract 會用您的字體渲染示範文字,以構建訓練圖像,因此字體需要安裝在 Linux 上,而不僅是 Windows 上。 將字體文件複製到 Ubuntu 的兩個字體目錄:/usr/share/fonts 和 /usr/local/share/fonts。 最簡單的方法是在文件瀏覽器的地址欄輸入 \wsl$ 以從 Windows 瀏覽 Ubuntu 文件系統,然後將 .ttf 拖入。

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

當字體文件到達 Ubuntu 字體目錄時,這就是整個過程的樣子:

AMGDT 字型檔案被複製到 Ubuntu 字型資料夾並被系統辨識

如果我收到目標文件夾拒絕存取怎麼辦?

如果文件瀏覽器拒絕複製,請改用根 shell 運行:

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 儲存庫,然後建立輸出文件夾:

git clone https://github.com/astutejoe/tesseract_tutorial.git
cd tesseract_tutorial
git clone https://github.com/tesseract-ocr/tesstrain
git clone https://github.com/tesseract-ocr/tesseract
mkdir tesstrain/data
SHELL
  • Tesseract_tutorial 包含 Python 腳本和驅動每個訓練步驟(文字生成、圖像渲染、訓練對建立)的配置文件。
  • tesstrain 包含驅動實際訓練運行的 Makefile。
  • Tesseract 包含 tessdata 文件夾,內有用作自訂訓練的初始模型的 .traineddata 文件。
  • tesstrain/data 是生成的 .box 文件(字元邊界框)、.tif 圖像和中間的 LSTM 檢查點所在的位置。

在終端中,克隆序列應該類似於以下樣子:

終端機執行四個 git clone 指令並建立 tesstrain data 資料夾

要與自訂的一個語言包一起使用多個語言包,請參閱我們的國際語言指南

如何生成訓練文件?

如何運行 split_training_text.py 腳本?

從 Tesseract_tutorial 文件夾運行:

python split_training_text.py
SHELL

腳本會生成每個訓練樣本一個 .box / .tif 對,並寫入資料文件夾。

以下是腳本運行時生成訓練對的樣子:

終端機執行 split_training_text.py 並在 data 資料夾中產生 .box 與 .tif 檔案

如何修復 Fontconfig 警告?

終端顯示有關缺少 Apex 字體和空字體目錄錯誤的 fontconfig 警告

如果您看到警告 Fontconfig warning: "/tmp/fonts.co/nf, line 4: empty font directory name ignored",fontconfig 無法解析字體目錄。 通過編輯 tesseract_tutorial/fonts.co/nf 修復它:

<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.co/nf /etc/fonts
SHELL

然後將 split_training_text.py 指向相同路徑:

fontconf_dir = '/etc/fonts'
Python

應生成多少訓練文件?

預設情況下,腳本會生成 100 個訓練對。 在 split_training_text.py 開頭附近更改數量:

Python 程式碼設置 count=100 並切片行陣列以限制訓練資料大小

規模指導:

  • 100-500 個樣本足以確認管道運行端到端。
  • 1000-5000 個樣本是生產準確性的工作範圍。
  • 訓練文字必須涵蓋字體需要識別的每個字元,理想情況下每個多次。
  • 更多的樣本意味著更長的訓練時間;選擇能達到準確性目標的最小數量。

我從哪裡下載 eng.traineddata 文件?

tessdata_best 儲存庫下載 eng.traineddata,並將其放置在 Tesseract_tutorial/tesseract/tessdata 中。

基本模型為訓練者提供語言背景(哪些字元序列構成可能的單詞),因此準確性比從頭開始訓練要好得多。 選擇與您的訓練文字相同語言的基本模型。 如果您遇到問題,請參閱自订 OCR 語言包故障排除指南

如何構建自訂字體訓練資料文件?

從 tesstrain 文件夾運行:

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
Text

修補程式指向 Makefile 的實際輸出目錄,以便它能定位字典文件。

如何修復"無法載入腳本 Unicharset"?

langdata_lstm下載 Latin.unicharset,並將其放置在 tesstrain/data/langdata 文件夾內。

.unicharset 文件定義了訓練者允許發出的字元。 使用涵蓋您字體中每個字元的文件,例如對於西里爾字母的 Cyrillic.unicharset 或天城文的 Devanagari.unicharset

當 tesstrain 生成 .traineddata 文件時,成功的訓練運行應該類似於以下樣子:

tesstrain 建置管線執行各次訓練迭代並輸出 AMGDT.traineddata 檔案

如何驗證訓練資料文件的準確性?

using 1000 個 .box.tif 文件以及 3000 次訓練迭代,輸出 AMGDT.traineddata 的訓練錯誤率 (BCER) 約為 5.77%。

Tesseract 訓練日誌顯示 BCER 從 6.388% 改善到 5.771%,在 2194-2298 次迭代中

要使用 IronOCR 測試訓練模型,將 UseCustomTesseractLanguageFile 指向文件並讀取一個範例圖像:

using IronOcr;

// Load the trained model; AutoOsd handles orientation
var ocr = new IronTesseract();
ocr.UseCustomTesseractLanguageFile("path/to/AMGDT.traineddata");
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;

// Preprocess so the model sees clean glyphs
using var input = new OcrInput();
input.LoadImage("test-image-with-amgdt-font.png");
input.EnhanceResolution(300);
input.DeNoise();

// Confidence reflects training quality
var result = ocr.Read(input);
Console.WriteLine($"Text: {result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");

Confidence 屬性是每個文件的得分; 如果即使在乾淨的輸入上也保持較低,最常見的原因是訓練樣本太少或基本模型與腳本不匹配。 一旦驗證您的 .traineddata,請參閱我們的自訂語言指南以了解載入任何自訂語言文件的一般工作流程。

自訂字體訓練的關鍵要點有哪些?

訓練自訂字體是一個一次性的設置:從目標字體生成 .box / .tif 對,使用 tesstrain 構建 .traineddata 模型,然後通過 UseCustomTesseractLanguageFile 載入它。 從那裡 IronOCR 以同樣的方式讀取新模型中的圖像,就像讀取預設的英文一樣。

使用自訂 Tesseract 模型的 IronOCR 的關鍵優勢:

  • 重用標準 Tesseract 文件:您可以使用 tesstrain 建立的任何 .traineddata 文件,在 IronOCR 中無需轉換即可使用。
  • 跨平台輸出:訓練過程需要 Linux(或 WSL2),但訓練過的文件可以隨您的應用程式在 Windows、macOS、Linux 和 Docker 中出貨。
  • 與 API 其餘部分完美整合:可以結合自訂字體與多個次要語言圖像質量修正以及DPI 調整,而不改變識別路徑。
  • 可調整準確性:錯誤率是訓練樣本次迭代次數的函式。 兩者均公開(腳本的樣本數加上 MAX_ITERATIONS),因此您可以在不離開 Tesseract 的情況下,調整訓練時間和 BCER 之間的權衡。

對於較大的管道,請考慮在跨多個文件應用您的訓練模型時進行進度追蹤異步處理

常見問題

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

您可以在IronOCR中使用自訂訓練的Tesseract字型文件,只需幾行程式碼。簡單建立IronTesseract實例,使用UseCustomTesseractLanguageFile()方法指定.traineddata文件路徑,然後使用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套件管理器安裝。推薦使用NuGet,因為它可以自動處理依賴關係並簡化更新。IronOCR提供全面的Tesseract 5功能支援和自訂語言實現。

Can I deploy my custom-trained Tesseract model on multiple platforms?

Yes, once trained on a Linux environment, the `.traineddata` file is portable and can be used in applications running on Windows, macOS, Linux, and Docker.

What accuracy can I expect from a custom-trained font model in IronOCR?

The accuracy depends on training samples and iterations during the training process. More samples and iterations generally enhance accuracy, and IronOCR provides confidence scores to evaluate the model.

How can I troubleshoot 'Failed to Read Data' errors during training?

This error can often be resolved by patching the Makefile to correctly point it toward the output directory for dictionary files.

What is the role of the `eng.traineddata` file in custom font training?

`eng.traineddata` serves as the base language model providing linguistic context, which improves the accuracy of the custom-trained font over models built entirely from scratch.

What should I do if I encounter permission issues copying font files during setup?

If you receive a 'Destination Folder Access Denied' message, perform the file copy operation from a root shell in the terminal to ensure proper permissions.

準備開始了嗎?

Nuget Downloads 6,236,385版本:2026.9剛剛發布

立即獲取免費

立即獲取 30天試用金鑰

bullet_checked無需信用卡或註冊帳號
bullet_test在生產
環境中進行測試,且不顯示浮水印
bullet_calendar30 天全
功能產品
bullet_support試用期間提供 24/5 技術
支援
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立
C# PDF的NuGet程式庫
使用NuGet安裝

版本: 2026.9

PM > Install-Package IronOcr
nuget.org/packages/IronOcr/
  1. 在解決方案資源管理器中,右鍵點擊參考,管理NuGet包
  2. 選擇瀏覽並搜尋"IronOCR"
  3. 選擇包並安裝
C# PDF DLL
下載 DLL

版本: 2026.9

這裡下載Windows安裝程式。

  1. 下載並解壓IronOCR至您的方案目錄下的~/Libs等位置
  2. 在Visual Studio解決方案資源管理器中,右鍵點擊參考。選擇瀏覽,"IronOCR.dll"

授權從$999

有問題嗎?聯絡我們的開發團隊。

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
獲取您的無義務諮詢
填寫以下表格或發送電子郵件至sales@ironsoftware.com
您的詳細資訊將始終保密。
被全球數百萬工程師信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立