2022-03-01|閱讀時間 ‧ 約 8 分鐘

Tesseract OCR - 繁體中文【訓練篇】

GitHub
Tesseract OCRtesseract-ocr/tesseract: Tesseract Open Source OCR Engine (main repository) (github.com)
Tesseract User ManualTesseract User Manual | tessdoc (tesseract-ocr.github.io)
How to train LSTM Tesseracttessdoc/TrainingTesseract-5.md at main ·tesseract-ocr/tessdoc (github.com)
  • 作業系統:win10
  • 版本訊息-命令提示字元(CMD)
C:\Users\user>tesseract --version
tesseract v5.0.1.20220118
leptonica-1.78.0
libgif 5.1.4 : libjpeg 8d (libjpeg-turbo 1.5.3) : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11 : libwebp 0.6.1 : libopenjp2 2.3.0
Found AVX2
Found AVX
Found FMA
Found SSE4.1
Found libarchive 3.5.0 zlib/1.2.11 liblzma/5.2.3 bz2lib/1.0.6 liblz4/1.7.5 libzstd/1.4.5
Found libcurl/7.77.0-DEV Schannel zlib/1.2.11 zstd/1.4.5 libidn2/2.0.4 nghttp2/1.31.0

一、準備資料夾 Git Clone

1、下載GIT:Git (git-scm.com)
git(Download for Wimdows)
git(Download for Wimdows)

2、tesstrainsh-win
  • 桌面右鍵(Git Bash Here)開啟Bash,輸入下面指令
git clone https://github.com/livezingy/tesstrainsh-win.git
備註:shift+INS(位置在9宮格數字鍵的0) 可以貼上

二、準備資料

1、fonts(範例為新細明體)
尋找想訓練的字體(.ttf)檔,放入fonts資料夾中
  • 若字體檔案是(.tcc)檔,可以直接手動變更副檔名
C:\Windows\Fonts
新細明體
  • 修改字體名稱(改成英文)
  由於等等在讀字型名稱時,中文的名稱會出現亂碼(目前還不確定原因),我有嘗試將Bash設定UTF-8但是沒有效果。
字型名稱:細明體
  • 字型編輯器
  底下參考資料附上FontForge的youtube教學影片
FontForge(windows):FontForge on Windows
Step1、Element
Step2、Font Info...
Step3、TFF Names
將新細明體改成英文(PMingLiU)
Step4、File
Step5、Generate Fonts...
Step6、TrueType(取消勾選Vaildata Before Saving)
Step7、Generate

2、langdata_lstm
  • 刪除原先的langdata_lstm,重新下載
  • 資料夾中點選右鍵(Git Bash Here)開啟Bash,輸入下面指令
git clone https://github.com/tesseract-ocr/langdata_lstm.git
備註:shift+INS(位置在9宮格數字鍵的0) 可以貼上

3、tessdata
下載chi_tra.traineddata放入tessdata資料夾中
將configs資料夾複製放入tessdata資料夾中
C:\Program Files\Tesseract-OCR\tessdata

三、修改tesstrainDone.sh

  使用notepad++開啟tesstrainDone.sh修改內容
  • 【CTRL+F】將eng取代為chi_tra
  • 【CTRL+F】將Impact Condensed取代為PMingLiU
  • 【CTRL+F】將Impact取代為PMingLiU
  tesstrainsh-win\langdata_lstm\chi_tra,中的所有文件使用notepad++開啟,並且修改換行格式
  • 編輯
  • 換行格式(E)
  • UNIX格式(LF)

四、執行tesstrainDone.sh

  在tesstrainsh-win中右鍵(Git Bash Here)開啟Bash,輸入下面指令
sh tesstrainDone.sh
  • 訓練結束後,會出現下面訊息
Finished! Selected model with minimal training error rate (BCER) = 2.639
Loaded file output/impact_checkpoint, unpacking...
  • tesstrainsh-win\output,會產生PMingLiU.traineddata

錯誤訊息

  • 如果不能讀取字體名稱,則使用報錯時系統建議的字體名稱
Could not find font named 'Microsoft JhengHei UI Light'.
Pango suggested font 'Microsoft JhengHei UI weight=290'.
報錯顯示:Microsoft JhengHei UI Light 建議改為 Microsoft JhengHei UI weight=290

五、測試

  將PMingLiU.traineddata放入下面路徑中
C:\Program Files\Tesseract-OCR\tessdata
  挑選一張具有文字的圖片(.PNG),於cmd中輸入指令
tesseract XXX.png result_old -l chi_tra
tesseract XXX.png result_new -l output

參考資料

分享至
成為作者繼續創作的動力吧!
C++新手教學正在規畫緩慢更新(圖片、內容增加、程式碼文字)_2023/04/17,文章有錯誤的地方還請留言指正,謝謝各位
© 2024 vocus All rights reserved.