目錄
- 安裝tesseract ocr引擎和jTessBoxEditor
- 安裝jTessBoxEditor
- 開(kāi)始制作box
- 準(zhǔn)備好訓(xùn)練的圖片
- 將圖片轉(zhuǎn)為tif格式的樣本圖片
- 合并樣本圖片
- 修改box文件
- 用腳本生成 或按下面步驟
- 生成font_properties
- 生成
- 訓(xùn)練
- 生成字符集文件
- 生成shape文件
- 生成聚集字符特征文件
- 生成字符正嘲苌埃化特征文件
- 合成最終文件
- 改名
2.合并字庫(kù)文件
在上一篇文章tess_two Android圖片文字識(shí)別中姻乓,使用tess_two完成了簡(jiǎn)單的文字識(shí)別丽啡。
博客地址
但是發(fā)現(xiàn)一個(gè)很明顯的問(wèn)題是杯道,默認(rèn)的識(shí)別速度比較慢编丘。識(shí)別四個(gè)很明顯的字需要將近兩秒买窟。
DemoGitHub可以試試胚迫。
tess_two用的是tesseract ocr引擎
查看用到的官方提供的中文識(shí)別庫(kù)chi_sim.traineddata文件有52M。里面肯定是包含了很多的訓(xùn)練和文字的汇恤。
我用不了那么多字庞钢,然后就按官方和網(wǎng)上的資料自己做了一個(gè)識(shí)別庫(kù),這個(gè)庫(kù)只能識(shí)別訓(xùn)練過(guò)的文字因谎。速度生成的文件應(yīng)該跟訓(xùn)練的字?jǐn)?shù)有關(guān)的基括,我實(shí)驗(yàn)了幾個(gè)字橙数,只有100多k。
看看速度,快了很多潦蝇。
下面大致記錄一下制作訓(xùn)練識(shí)別庫(kù)的方法碍遍。相對(duì)比較簡(jiǎn)單。
安裝tesseract ocr引擎和jTessBoxEditor
在官網(wǎng)上可以找到Window和Mac的安裝方法挫鸽,window的有專(zhuān)門(mén)的額客戶(hù)端。我的是Mac,所以選的是Homebrew安裝患朱。
Homebrew 是一個(gè)包管理器,如果沒(méi)裝的話(huà)炊苫,在終端執(zhí)行ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
就會(huì)自動(dòng)裝好裁厅。
單純的安裝tesseract ocr引擎是可以直接用官網(wǎng)的命令brew install tesseract
但是,我后面要用到訓(xùn)練樣本的命令侨艾,所以我們要用到的安裝命令是brew install --with-training-tools tesseract
,否則后面一些命令會(huì)找不到执虹。
如果初次安裝用了第一個(gè),那么可以先用brew uninstall tesseract
卸載掉唠梨,然后執(zhí)行brew install --with-training-tools tesseract
重新安裝袋励。
裝好之后,找到在上篇文章中下載的chi_sim.traineddata。
然后復(fù)制到/usr/local/Cellar/tesseract/3.05.00/share/tessdata中備用茬故。里面已經(jīng)自帶了eng.traineddata盖灸。 這一步不是必須的,而且我這樣好想還容易出錯(cuò)磺芭。
安裝jTessBoxEditor
這里提供了很多第三方的訓(xùn)練工具赁炎,我選第一個(gè)jTessBoxEditor。
jTessBoxEditor是基于java的钾腺,多以可以跨平臺(tái)徙垫,下載下來(lái)在Mac和Windows上都能運(yùn)行。
下載下來(lái)是這樣的
啟動(dòng)jTessBoxEditor.jar就能打開(kāi)客戶(hù)端垮庐。
這里我有一個(gè)疑問(wèn)松邪,別人電腦上都能雙擊這個(gè)文件打開(kāi),而我的電腦雙擊一閃就沒(méi)了哨查,只能用在終端里打開(kāi)逗抑。。
開(kāi)始制作box
準(zhǔn)備好訓(xùn)練的圖片:
什么格式應(yīng)該沒(méi)關(guān)系寒亥,反正都要轉(zhuǎn)化成tif格式的邮府。
將圖片轉(zhuǎn)為tif格式的樣本圖片
方法有很多,我用的在線(xiàn)轉(zhuǎn)化溉奕。
下載下來(lái)的文件是
要手動(dòng)吧后綴的.html去掉變成.tif文件褂傀,比較麻煩。所以不推薦用這個(gè)轉(zhuǎn)換工具加勤。仙辟。
改名后
合并樣本圖片
大家應(yīng)該注意到有一個(gè)new文件夾,這個(gè)文件夾用來(lái)放之后生成的各種文件的鳄梅,包括最終的traineddata文件叠国。
打開(kāi)jTessBoxEditor.jar,然后點(diǎn)菜單上的Tool->Merge TIFF
保存到new文件夾中戴尸,保存的時(shí)候注意名字sll.normal.exp0.tif
關(guān)于名字 sll.normal.exp0.tif
官網(wǎng)的寫(xiě)法是這樣的
[lang].[fontname].exp[num].tif
[lang]是語(yǔ)言粟焊,隨便起,這里的叫sll
[fontname]是字體孙蒙,隨便起项棠,這里叫 normal
[num]我也不知道啥意思,寫(xiě)的是數(shù)字0
這兩個(gè)都是自定義的挎峦,后面會(huì)用到香追,所以要記住。
點(diǎn)擊保存后坦胶,會(huì)在new文件夾中生成合并的sll.normal.exp0.tif文件
然后執(zhí)行命令翅阵,
如果前面復(fù)制了chi_sim.traineddata文件的話(huà)用下面的
tesseract sll.normal.exp0.tif sll.normal.exp0 -l chi_sim batch.nochop makebox
否則用這個(gè),默認(rèn)的歪玲。上面那個(gè)有時(shí)候會(huì)出錯(cuò)沒(méi)我也不知道為什么。
tesseract sll.normal.exp0.tif sll.normal.exp0 -l eng batch.nochop makebox
會(huì)在當(dāng)前文件夾下生成sll.normal.exp0.box文件
修改box文件
打開(kāi)jTessBoxEditor.jar掷匠,點(diǎn)擊Box Editor->open
然后選上一步的tif文件滥崩,會(huì)自動(dòng)打開(kāi)綁定的box文件。
在里面可以對(duì)他的識(shí)別區(qū)域讹语,識(shí)別結(jié)果進(jìn)行一些修改钙皮,達(dá)到我們正確的識(shí)別目的
全部修改完后點(diǎn)擊save。
用腳本生成
下面的步驟可以寫(xiě)一個(gè)腳本自動(dòng)完成顽决。生成box文件就一行代碼短条,就不用寫(xiě)了。
比如才菠,在new文件夾下創(chuàng)建一個(gè)gettraineddata.shell,里面寫(xiě)
#!/bin/sh
read -p "輸入你語(yǔ)言:" lang
echo ${lang}
read -p "輸入你的字體:" font
echo ${font}
echo "所以完整文件名為:"
echo ${lang}.${font}.exp0.tif
echo "開(kāi)始茸时。。赋访。"
echo ${font} 0 0 0 0 0 >font_properties
tesseract ${lang}.${font}.exp0.tif ${lang}.${font}.exp0 nobatch box.train
unicharset_extractor ${lang}.${font}.exp0.box
shapeclustering -F font_properties -U unicharset ${lang}.${font}.exp0.tr
mftraining -F font_properties -U unicharset -O unicharset ${lang}.${font}.exp0.tr
cntraining ${lang}.${font}.exp0.tr
echo "開(kāi)始重命名文件"
mv inttemp ${font}.inttemp
mv normproto ${font}.normproto
mv pffmtable ${font}.pffmtable
mv shapetable ${font}.shapetable
mv unicharset ${font}.unicharset
echo "生成最終文件"
combine_tessdata ${font}.
echo "完成"
當(dāng)然里面的東西可以改可都,要輸入的語(yǔ)言和字體是根據(jù)tif文件的名字來(lái)的
比如我的文件是sll.normal.exp0.tif
所以就這樣輸入
如果不出錯(cuò),就能看見(jiàn)new里面變成了這樣
有了我們需要的normal.traineddata識(shí)別庫(kù)蚓耽。
生成font_properties
在new文件夾中執(zhí)行下面命令,會(huì)生成一個(gè)font_properties文件渠牲,里面的內(nèi)容是normal 0 0 0 0 0 。
echo normal 0 0 0 0 0 >font_properties
六個(gè)代表的東西是 fontname italic bold fixed serif fraktur
像第一個(gè)是字體名步悠,前面我起的是normal签杈。
后面的值是0或1,可以看一下默認(rèn)的文件font_properties
生成
接下來(lái)就是一條條命令生成一個(gè)個(gè)文件了
訓(xùn)練
tesseract sll.normal.exp0.tif sll.normal.exp0 nobatch box.train
生成字符集文件
unicharset_extractor sll.normal.exp0.box
生成shape文件
shapeclustering -F font_properties -U unicharset sll.normal.exp0.tr
生成聚集字符特征文件
mftraining -F font_properties -U unicharset -O unicharset sll.normal.exp0.tr
生成字符正扯κ蓿化特征文件
cntraining sll.normal.exp0.tr
合成最終文件
改名
上面幾步完成后答姥,會(huì)看到下面五個(gè)文件
然后全部重命名,前面加上normal. 就是字體名谚咬,變成
合并字庫(kù)文件
combine_tessdata normal.
看 哇 拿到了我們需要的normal.traineddata文件鹦付。
必須確定的是第type 1、3序宦、4睁壁、5的數(shù)據(jù)不是-1背苦,才算成功互捌。
然后按上一篇的方法用吧!
參考http://www.cnblogs.com/zhongtang/p/5555950.html?utm_source=tuicool&utm_medium=referral
參考http://www.cnblogs.com/wzben/p/5930538.html