適用於 Windows 使用者的 Tesseract 5 自定義字體訓練 (C#)

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

甘那拍·烏多潘

利用自定字體訓練 Tesseract 5,提高 OCR 引擎在處理特定字體或字體樣式時的準確度和識別能力,特定字體或字體樣式可能預設情況下不太支援。

該過程涉及向 Tesseract 提供訓練數據,如字體樣本和相應文本,以便它能夠學習自定字體的特定特徵和模式。


第一步:下載最新版本的 IronOCR

C# NuGet 程式庫用于 OCR

安裝與 NuGet

Install-Package IronOcr
Java PDF JAR

下載 DLL

下載DLL

手動安裝到您的項目中

C# NuGet 程式庫用于 OCR

安裝與 NuGet

Install-Package IronOcr
Java PDF JAR

下載 DLL

下載DLL

手動安裝到您的項目中

立即開始在您的專案中使用IronPDF,並享受免費試用。

第一步:
green arrow pointer

查看 IronOCRNuget 快速安裝和部署。已被下載超過800萬次,它正用C#改變OCR。

C# NuGet 程式庫用于 OCR nuget.org/packages/IronOcr/
Install-Package IronOcr

請考慮安裝 IronOCR DLL 直接下載並手動安裝到您的專案或GAC表單: IronOcr.zip

手動安裝到您的項目中

下載DLL

透過 DLL 安裝

下載 IronOcr DLL 直接到您的機器。

透過NuGet安裝

或者,您可以通過安裝 NuGet .

Install-Package IronOcr

步驟 2:安裝和設置 WSL2 和 Ubuntu

這裡 是設定WSL2和Ubuntu的教程

**目前,自訂字型訓練只能在Linux上完成

步驟3:在Ubuntu上安裝Tesseract 5

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

步驟 4:下載您想要訓練的字體

在本教程中我們使用的是 AMGDT 字體。字體文件可以是 .ttf 或 .otf 格式。

第五步:掛載工作空間的磁碟機以進行自訂字型訓練

以下命令展示如何將磁碟機 D: 掛載為工作空間。

cd /
cd /mnt/d

第六步:將字體檔案複製到 Ubuntu 字體資料夾

這是 Ubuntu 字體資料夾的目錄:Ubuntu/usr/share/fontsUbuntu/usr/local/share/fonts

** 要在 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
su username

步驟 7:從 Github 複製 tesseract_tutorial

tesseract_tutorial 資源庫可以從以下網址複製; https://github.com/astutejoe/tesseract_tutorial.git 透過使用以下指令;

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

第8步:從Github克隆tesstrain和tesseract

請進入tesseract_tutorial文件目錄,然後git clone https://github.com/tesseract-ocr/tesstrainhttps://github.com/tesseract-ocr/tesseract

  • tesstrain 包含“Makefile”文件,用於創建.traineddata文件 (本教程的目標)
  • tesseract 包含 “tessdata” 資料夾,其中是原始 .traindata 文件的容器,用於自訂字體訓練的參考。

第九步:建立「data」資料夾來儲存輸出

「data」資料夾應建立在tesseract_tutorial/tesstrain

步驟 10:運行 split_training_text.py

返回 tesseract_tutorial 資料夾目錄,然後執行以下命令;

python split_training_text.py

運行 split_training_text.py 後,它會在“data”文件夾中創建 .box.tif 文件。

疑難排解:Fontconfig 警告:“/tmp/fonts.conf,第 4 行:忽略空的字型目錄名稱"

此問題是由於在 Ubuntu 資料夾中找不到字體目錄,並且可以透過在tesseract_tutorial/fonts.conf中插入這些代碼行來解決。

請提供內容以進行翻譯。

/usr/share/字體/usr/local/share/字體字體~/.fonts

然後將其複製到 /etc/fonts

cp fonts.conf /etc/fonts

最後,將這些程式碼添加到 split_training_text.py

fontconf_dir = '/etc/fonts'

請提供內容以進行翻譯。

注意:訓練次數 (.box 和 .tif) 文件

目前訓練文件的數量是100。可以通過編輯或刪除 split_training_text.py 中的這些代碼行來修改訓練文件的數量。

第11步:下載 eng.traineddata

eng.traineddata 可以從以下網址找到: https://github.com/tesseract-ocr/tessdata_best下載到 tesseract_tutorial/tesseract/tessdata 中,因為這個在 tessdata_best 裡的 eng.traineddatatessdata 資料夾中的原始版本更好。

第12步:建立自定義字體的 .traineddata

進入 tesstrain 資料夾目錄,在WSL2中輸入這條命令行

TESSDATA_PREFIX=../tesseract/tessdata make training MODEL_NAME=AMGDT START_MODEL=eng TESSDATA=../tesseract/tessdata MAX_ITERATIONS=100
-  執行訓練 = 在 `tesstrain/Makefile` 中運行代碼
-  MODEL_NAME = 自定義字體的名稱    
-  START_MODEL = 原始 `.traineddata` 的名稱    
-  MAX_ITERATIONS = 迭代次數
``` (較大的數字意味著 `.traineddata` 更準確。

![](/static-assets/ocr/how-to/ocr-custom-font-training/makefile_issues.png)

###「無法從:」讀取數據的錯誤可以透過編輯Makefile中的代碼行來解決

之前:

![](/static-assets/ocr/how-to/ocr-custom-font-training/makefile_sol_before.png)

後:

![](/static-assets/ocr/how-to/ocr-custom-font-training/makefile_sol_after.png)

和

make - Makefile

WORDLIST_FILE := $ ```(輸出目錄2)/$(模型名稱).lstm-word-dawg

NUMBERS_FILE := $(輸出目錄2)/$(模型名稱).lstm-number-dawg

PUNC_FILE := $(輸出目錄2)/$(模型名稱).lstm-punc-dawg

請提供內容以進行翻譯。

“无法从:data/langdata/Latin.unicharset 加载脚本 unicharset” 的问题可以通过将 Latin.unicharset 插入到 tesstrain/data/langdata 文件夹中来解决

步驟13:生成的 .traineddata 的準確性

透過1000個 .box.tif 文件以及3000次訓練迭代,輸出的 .traineddata (AMGDT.traineddata) 具有最低的訓練錯誤率 (BCER) 約 5.77

如需更多閱讀和進一步參考:參考https://www.youtube.com/watch?v=KE4xEzFGSU8ustom

坎納帕特·烏頓潘

軟體工程師

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