**
Tesseract-OCR 4.0LSTM訓練流程 (Windows環境下)**
目前網上關於tesseract3.0版本的訓練過程很多,但是基於lstm的4.0版本的訓練幾乎沒有,自己深受困擾,後經過自己努力終於成功訓練,特地寫下來希望可以av幫助需要的人。
首先根據網上的教程安裝tesseract4.0以上的版本,這裏不詳細說明如何安裝。
1. 準備訓練文本.txt格式的文件和字體文件font,裏邊包含.ttf格式的字體文件
2. 利用text2image生成.tif和.box文件
從font和.txt所在的目錄下,通過cmd進入命令窗口,輸入以下內容
text2image --text="D:\new_05\text.txt" --outputbase="D:\new_05\zth.font.exp0" --fontconfig_tmpdir="%temp%"
--font="HGMaruGothicMPRO" --fonts_dir="D:\new_05\font"
其中每個參數的意義爲:
–text=“D:\new_05\text.txt” 是要進行訓練的樣本文件路徑
–outputbase=“D:\new_05\zth.font.exp0” 表示生成的.tif和.box文件的路勁和命名(注意命名方式,可參照3.0的介紹)
–fontconfig_tmpdir="%temp%" 指明configer,這個在windows中默認這麼寫,不寫會報錯
–font=“HGMaruGothicMPRO” font文件夾中的字體名稱
–fonts_dir=“D:\new_05\font” font文件夾的路徑
至此,會在D:\new_05文件夾下生成兩個新的文件,分別爲.tif和.box格式的文件
注:當你的訓練文本只有圖片時,可以利用jTessBoxEditor工具生成.tif和.box格式的文件,可以參照網上3.0訓練的步驟介紹。
3. 利用.tif和.box文件生成.lstmf文件用於lstm訓練
tesseract zth.font.exp0.tif zth.font.exp0 -l jpn --psm 6 lstm.train
其中每個參數的意義爲
zth.font.exp0.tif 上一步生成的.tif 格式的文件
zth.font.exp0 指明要生成的.lstmf文件的名稱
-l jpn 表示用到的語言,這個我訓練的是日語
–psm 6 表示採用的識別模式,通常6 效果會好些
運行後會多出一個zth.font.exp0.lstmf文件
4. 從已有的.traineddata中提取.lstm文件
tessedata_best中的.traineddata文件 從該鏈接中下載所需語言的.traineddata文件
注:一定要用從上述鏈接中下載的.traineddata文件,如果利用原有的下載好的tesseract-OCR中的tessdata文件夾中的.traineddata文件中提取.lstm文件會造成無法進行訓練。
將下載好的.traineddata文件拷貝到上述文件夾下
輸入命令行:
combine_tessdata -e jpn.traineddata jpn.lstm
運行上述代碼,會從.traineddata文件中提取出jpn.lstm 文件
5. 創建jpn.training_files.txt文件,裏邊的內容爲.lstmf文件的路徑地址
6. 進行訓練
lstmtraining --model_output="D:\new_05\output\output" --continue_from="D:\new_05\jpn.lstm"
--train_listfile="D:\new_05\jpn.training_files.txt" --traineddata="D:\new_05\jpn.traineddata"
--debug_interval -1 --max_iterations 800
各個參數的意義:
–modeloutput 模型訓練輸出的路徑(我在new_05文件夾中新建了一個名爲output的文件夾用來存輸出的文件)
–continue_from 訓練從哪裏繼續,這裏指定從第4步中提取的jpn.lstm文件,
–train_listfile 指定上一步創建的文件的路徑
–traineddata 第4步中下載的.traineddata文件的路徑
–debug_interval 當值爲-1時,訓練結束,會顯示訓練的一些結果參數
–max_iterations 指明訓練遍歷次數
此時命令窗口中會有滾動的訓練歷程
訓練結束後,在output文件夾中會生成i一個output_checkpoint文件和多個類似output0.012_3.checkpoint的.checkpoint文件
7. 將checkpoint文件和.traineddata文件合併成新的.traineddata文件
lstmtraining --stop_training --continue_from="D:\new_05\output\output_checkpoint"
--traineddata="D:\new_05\jpn.traineddata" --model_output="D:\new_05\output\zth.traineddata"
各個參數的意義:
–stop_training 默認要有的
–continue_from 上一步生成的output_checkpoint文件路徑
–traineddata 第4步中下載的.traineddata文件的路徑
–model_output zth.traineddata 輸出的路徑
8. 將新生成的zth.traineddata文件拷貝到tesseract-OCR\tessdata文件夾下,通過代碼進行識別