一、創(chuàng)建培訓(xùn)數(shù)據(jù)
training/tesstrain.sh?
--fontlist 'font1' 'font2'?#要訓(xùn)練的字體名稱列表。
--fonts_dir /path/to/fonts? ?#字體文件的路徑。
--lang LANG_CODE?
--linedata_only??#僅為訓(xùn)練生成訓(xùn)練數(shù)據(jù)。
--noextract_font_properties?
--langdata_dir /path/to/langdata?# / langdata目錄的路徑。
?--tessdata_dir /path/to/tessdata??#指定現(xiàn)有的受訓(xùn)數(shù)據(jù)文件的位置,如果沒(méi)有指定會(huì)從TESSDATA_PREFIX定義的路徑中查找)
--output_dir ~/path/to/output?#輸出的訓(xùn)練數(shù)據(jù)文件的位置。
--wordlist? /path/to/wordlist file#排序的語(yǔ)言的單詞列表?
--training_text /path/to/text file?#要用于訓(xùn)練的文本。(如果 沒(méi)有指定wordlist和trainingtext,tesseract會(huì)從langdata里查找)
還有一些其他的參數(shù)可以在這里看到。
1.字體
在使用tesstrain.sh創(chuàng)建訓(xùn)練數(shù)據(jù)的時(shí)候,必須先安裝所需字體!!
所需要的字體可以在字體 tesseract/training/language-specific.sh?文件中看到,比如想知道訓(xùn)練中文字典的時(shí)候需要哪些字體,在這個(gè)文件中找到以下的代碼(296行):
CHI_SIM_FONTS=( \
"AR PL UKai CN"\
"AR PL UMing Patched Light"\
"Arial Unicode MS"\
"Arial Unicode MS Bold"\
"WenQuanYi Zen Hei Medium"\
)
上面列出來(lái)的字體就是你系統(tǒng)中必須有的字體,不然在創(chuàng)建訓(xùn)練數(shù)據(jù)的時(shí)候會(huì)報(bào)無(wú)法加載字體的錯(cuò)誤。
想要知道自己的系統(tǒng)里已有的字體可以使用text2image --fonts_dir /usr/share/fonts --list_available_fonts命令來(lái)查看。
上面的字體列表你可以刪除其中的任一字體,也可以往里添加你想要的字體,如果添加了一種字體,比如SIMSUN(簡(jiǎn)體宋),還需要在langdata/font_properties文件中添加一行數(shù)據(jù):SIMSUN 0 0 0 0 0(如果langdata/font_properties文件中沒(méi)有關(guān)于SIMSUN的配置的話)
2.langdata文件
tesstrain.sh在培訓(xùn)過(guò)程中會(huì)使用到某些文件,比如 [lang] .training_text (要訓(xùn)練的文本,也可以通過(guò)--training_text /路徑/文件.txt指定)、[lang].wordlist等等都在langdata文件夾里,下載地址:https://github.com/tesseract-ocr/langdata
每個(gè)文件具體的意義可以在這里查看。
(其實(shí)我并不知道這個(gè)文件夾下的那些文件到底是不是必須的,官網(wǎng)上只說(shuō)必須有[lang].training_text這個(gè)文件,其他文件有沒(méi)有不知道會(huì)不會(huì)有什么影響阿。。還有就是如果我自己指定了一個(gè)--training_text,那是不是連[lang].training_text都可以不要了。。)
3.訓(xùn)練文本太大
在training/tesstrain_utils.sh文件中,代碼215行:common_args+=" --outputbase=${outbase} --max_pages=3"
--max_pages=3 限制了在創(chuàng)建訓(xùn)練數(shù)據(jù)的時(shí)候最多只能生成3頁(yè)的文檔圖像,如果訓(xùn)練文本很大,超過(guò)3頁(yè)的內(nèi)容就會(huì)沒(méi)了,可以自己修改這個(gè)值,例如修改為--max_pages=100。
(似乎有一個(gè)設(shè)置圖像大小的參數(shù),暫時(shí)想不起來(lái)了)
還有一次在訓(xùn)練的時(shí)候,成功的生成訓(xùn)練數(shù)據(jù)后開(kāi)始訓(xùn)練的時(shí)候報(bào)了一個(gè)圖片尺寸太大什么的錯(cuò)誤,記不得了。。原因是訓(xùn)練的文本每行的文字太多,行寬太長(zhǎng),截成幾行就好了。。
4.字典
在創(chuàng)建訓(xùn)練數(shù)據(jù)的時(shí)候,如果還沒(méi)有從官網(wǎng)上下載任何字典,那么會(huì)報(bào)一個(gè)
Failed loading language 'eng'
Tesseract couldn't load any languages!
Could not initialize tesseract.
的錯(cuò)誤(雖然我訓(xùn)練的是中文)。。似乎是eng.traineddata這個(gè)字典是默認(rèn)需要加載的。。反正下一個(gè)就好了。。
還有一個(gè) Failed loading language 'chi_sim_vert'
這。。。我看了一下。。。langdata/chi_sim/chi_sim.config這個(gè)文件打開(kāi),第一句:tessedit_load_sublangs chi_sim_vert
如果把這一句注釋掉了,就沒(méi)問(wèn)題了。。或者你再下一個(gè)chi_sim_vert.traineddata。。
所以問(wèn)題又來(lái)了。。為什么要加載這個(gè)字典。。
5.亂七八糟的提示
在創(chuàng)建訓(xùn)練文本的時(shí)候還會(huì)有很多不是很明白的提示,雖然看上去好像不影響(因?yàn)椴](méi)有因?yàn)檫@些提示而停止創(chuàng)建),但心里很方。。
比如:
Fontconfig error: line 1: no element found
Fontconfig error: Cannot load default config file
這個(gè)好像是最近剛跑出來(lái)的(之前沒(méi)注意過(guò)。。),不知道是為什么。。
還有:
Setting unichar properties
Other case a of A is not in unicharset
Other case t of T is not in unicharset?
........
Setting script properties
Warning: properties incomplete for index 727 = +
Warning: properties incomplete for index 808 = =
Warning: properties incomplete for index 956 = ,
Config file is optional, continuing...
Null char=2
之類的。。似乎沒(méi)有什么影響。。
好了,創(chuàng)建數(shù)據(jù)這個(gè)步驟就到這里,進(jìn)行下一步。
二、Training From Scratch
開(kāi)心,可以開(kāi)始訓(xùn)練了!!
先是按照官網(wǎng)上的教程訓(xùn)練了英文,過(guò)程和結(jié)果與官網(wǎng)的差不多,然后就想試著去訓(xùn)練中文。
結(jié)果?。。。≈形牡挠?xùn)練效果極差?。。?!同樣的訓(xùn)練數(shù)據(jù)比官方的中文字典差的不知道哪里去了!??!
命令:
mkdir -p ~/tesstutorial/chisimoutput
training/lstmtraining --debug_interval 100 \?
(使用這個(gè)參數(shù)要先構(gòu)建ScrollView.jar工具)
--traineddata ~/tesstutorial/chisimtrain/chi_sim/chi_sim.traineddata \
--net_spec '[1,48,0,1Ct3,3,16Mp3,3Lfys64Lfx96Lrx96Lfx512O1c1]' \
--model_output ~/tesstutorial/chisimoutput/base --learning_rate 20e-4 \
--train_listfile ~/tesstutorial/chisimtrain/chi_sim.training_files.txt \
--eval_listfile ~/tesstutorial/chisimeval/chi_sim.training_files.txt \
--max_iterations 5000 &>~/tesstutorial/chisimoutput/basetrain.log
迭代5000次后發(fā)現(xiàn),非常的差!??!無(wú)敵的差!?。?/p>
因?yàn)橹形牡挠?xùn)練樣本字符比較多,我想可能是訓(xùn)練的次數(shù)太少所以效果才太差,
所以我就把 --max_iterations 改成了--target_error_rate 0.01讓它繼續(xù)訓(xùn)練
然后在迭代了13萬(wàn)次之后,效果依舊非常的差。。而且花費(fèi)的時(shí)間非常的多。。所以我放棄了。。放棄了。。棄了。。了。。
然后在tesseract群里面看見(jiàn) 有人說(shuō)訓(xùn)練了250W次效果都比官方的差很多,所以不要糾結(jié)的去開(kāi)啟新的篇章吧。
三、Fine Tuning
Fine tuning 訓(xùn)練就是從現(xiàn)有的訓(xùn)練語(yǔ)言開(kāi)始,訓(xùn)練特定的附加數(shù)據(jù)。