適用於 Windows 使用者的 Tesseract 5 自定義字體訓練 (C#)
利用自定字體訓練 Tesseract 5,提高 OCR 引擎在處理特定字體或字體樣式時的準確度和識別能力,特定字體或字體樣式可能預設情況下不太支援。
該過程涉及向 Tesseract 提供訓練數據,如字體樣本和相應文本,以便它能夠學習自定字體的特定特徵和模式。
如何在 C# 中使用 Tesseract 自定義字體
- 下載一個 C# 程式庫以使用 Tesseract 訓練自定義字體
- 準備用於訓練的目標字體檔案
- 按照文章中的步驟操作
- 包含常見錯誤的解決方案
- 導出訓練數據文件以供進一步使用
第一步:下載最新版本的 IronOCR
立即開始在您的專案中使用IronPDF,並享受免費試用。
查看 IronOCR 上 Nuget 快速安裝和部署。已被下載超過800萬次,它正用C#改變OCR。
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/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
文件的容器,用於自訂字體訓練的參考。
第九步:建立「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
中插入這些代碼行來解決。
和
請提供內容以進行翻譯。
然後將其複製到 /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.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` 更準確。
![](/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
文件夹中来解决
- 可以在以下网址找到
Latin.unicharset
; https://github.com/tesseract-ocr/langdata_lstm
步驟13:生成的 .traineddata
的準確性
透過1000個 .box
和 .tif
文件以及3000次訓練迭代,輸出的 .traineddata
(AMGDT.traineddata) 具有最低的訓練錯誤率 (BCER) 約 5.77
如需更多閱讀和進一步參考:參考:https://www.youtube.com/watch?v=KE4xEzFGSU8ustom