更新於 2024/06/21閱讀時間約 4 分鐘

[OCR][Python]tesseract 辨識模型Fine tune

微調(Fine tune)是深度學習中遷移學習的一種方法,其中預訓練模型的權重會在新數據上進行訓練。

本文主要介紹如何使用新的訓練圖檔在tesseract 辨識模型進行Fine tune

有關於安裝的部分可以參考友人的其他文章

Tesseract OCR - 繁體中文【安裝篇】


將所有資料都放在同一資料夾,在用那資料夾 cmd開始工作,環境變數Tesseract資料夾要新增,才可以使用Tesseract指令喔。

使用版本:tesseract v5.3.1.20230401

1.合併圖檔

使用jTessBoxEditor 工具來合併圖檔,可參考這篇文章介紹jTessBoxEditor應用

2.產生box資料 .box

指令:

ocr_1.tif : 圖檔名稱 ​

ocr_1 : 要產生的.box名稱

-l eng_ocr --oem 3 --psm 7 : 指定tesseract的辨識模型,搜尋引擎,頁面分割模式

batch.nochop makebox:產生產生box資料的指令

tesseract ocr_1.tif ocr_1 -l eng_ocr --oem 3 --psm 7 batch.nochop makebox  

產生.box檔案


3.產生模型訓練檔 .lstm

指令:

tesseract ocr_1.tif  ocr_1 -l eng_ocr --psm 7 lstm.train

產生ocr_1訓練檔

4.提取要微調的模型,產生模型訓練檔 eng_ocr.lstm

指令:

-e 可從.traineddata中擷取出lstm檔

combine_tessdata -e eng_ocr.traineddata eng_ocr.lstm

提取要微調的模型

5.新建文件檔 (指定訓練檔路徑) .txt

輸入指定的訓練檔名稱,新的訓練集

新建文件檔


6.模型訓練

參數名稱說明:

eng_ocr.lstm : 指定用這個模型繼續訓練

eng_ocr.traineddata : 指定用這個模型的資料繼續訓練

eng_ocr.training_files.txt : 新增要訓練的資料 文件路徑

0.01 : 錯誤率低於0.01 就停止訓練

指令

Lstmtraining --model_output="train"  --continue_from="eng_ocr.lstm" --traineddata="eng_ocr.traineddata" --train_listfile="eng_ocr.training_files.txt" --target_error_rate=0.01

訓練結果

訓練完產生train_checkpoint


7.模型輸出

複製eng_ocr.traineddata 另外立名新名稱eng_ocr_1.traineddata,最後指令輸入完,eng_ocr_1.traineddata就是訓練好的新模型了。

指令

  1.  --continue_from 輸入剛剛訓練完的checkpoint檔案
  1. --traineddata 輸入要覆蓋的模型名稱
  2. --model_output
lstmtraining --stop_training --continue_from="train_checkpoint" --traineddata="eng_ocr.traineddata" --model_output="eng_ocr_1.traineddata"

輸出模型

大功告成模型傳到Tesseract-OCR\tessdata目錄中就可以使用囉。

更改lang="eng_ocr_1",就可以使用新的模型囉

pytesseract.image_to_boxes(new_image, lang="eng_ocr_1", config=config)



參考文獻



分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.