C#自訂字體訓練適用於Tesseract 5(適用於Windows使用者)
使用 Tesseract 5 的自定義字體訓練來提高 OCR 引擎在處理可能不被默認支持的特定字體或字體樣式時的準確性和識別能力。
該過程包括為 Tesseract 提供訓練數據,例如字體樣本和相應的文字,以便它能學習自定義字體的特定特徵和模式。
開始使用IronOCR
立即在您的專案中使用IronOCR,並享受免費試用。
如何在 C# 中使用 Tesseract 自定義字體
- 下載 C# 函式庫以使用 Tesseract 訓練自定義字體
- 準備用於訓練的目標字體檔案
- 按照文章中的步驟操作
- 包含常見錯誤的解決方案
- 導出訓練數據文件以供進一步使用
步驟一:下載最新版本的 IronOCR
透過 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
步驟5:掛載您工作空間中的磁碟機以進行自定義字體訓練
以下指令顯示如何將磁碟機D:
掛載為工作空間。
cd /
cd /mnt/d
步驟 6:將字體文件複製到 Ubuntu 字體資料夾
這是 Ubuntu 字型資料夾的目錄; Ubuntu/usr/share/fonts
和 Ubuntu/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/tesstrain 和 https://github.com/tesseract-ocr/tesseract
tesstrain
包含「Makefile」檔案,用於創建 .traineddata 檔案(本教程的目標)。tesseract
包含 "tessdata" 資料夾,該資料夾是用作自定義字體訓練參考的原始 .traindata 文件的容器。
步驟 9:建立「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
中插入這些程式碼行來解決。
和
<dir>/usr/share/字體</dir>
<dir>/usr/local/share/字體</dir>
<dir prefix="xdg">字體</dir>
<!-- the following element will be removed in the future -->
<dir>~/.字體</dir>```
然後將其複製到`/etc/fonts`
```bash
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.traineddata
比 tessdata
資料夾中的原始文件更佳。
步驟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
的準確性越高)
「無法從:」讀取數據的問題可以透過編輯 Makefile 中的代碼行來解決
Before:
After:
和
make - 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
可以透過將 Latin.unicharset
插入到 tesstrain/data/langdata
資料夾中來解決「Failed to load script unicharset from:data/langdata/Latin.unicharset」的問題
Latin.unicharset
可以在以下網址找到; https://github.com/tesseract-ocr/langdata_lstm
步驟 13:創建的.traineddata
的準確性
透過1000個.box
和.tif
文件以及3000次訓練迭代,輸出的.traineddta
(AMGDT.traineddata)具有約5.77的最低訓練錯誤率(BCER)。
欲了解更多內容和參考資料:參考:https://www.youtube.com/watch?v=KE4xEzFGSU8ustom