參考網站: html
http://www.cnblogs.com/wzben/p/5930538.html (第一次) git
http://wangjunle23.blog.163.com/blog/static/117838171201323031458171/ (分析) github
http://blog.csdn.net/a443475601/article/details/9854003 (簡潔) windows
tesseract訓練 wordpress
爲了方便 tif文面命名格式[lang].[fontname].exp[num].tif
lang是語言 fontname是字體
好比咱們要訓練自定義字庫 image 字體名MyFont
那麼咱們把tif文件重命名 image.MyFont.exp0.tif 測試
新建一個font_properties文件 字體
<fontname> <italic> <bold> <fixed> <serif> <fraktur> 網站
裏面內容寫入 normal 0 0 0 0 0 表示默認普通字體。 ui
把目錄下的unicharset、inttemp、pffmtable、shapetable、normproto這五個文件前面都加上normal. google
必須肯定的是第2、4、5、6行的數據不是-1,那麼一個新的字典就算生成了。
字符識別數據集
http://blog.csdn.net/H2008066215019910120/article/details/17126757
使用多張訓練圖片進行訓練。完成
將多個traineddata進行合併。不行。
利用字體文件生成訓練集,進行自動化訓練。Text2image
http://blog.csdn.net/chudongfang2015/article/details/51920191
http://blog.csdn.net/homebei2/article/details/45305897
要訓練一個新的語言(自定義語言或者某種天然語言均可以)對應的traineddata文件,須要產生下列過程文件:
? lang.config
? lang.unicharset
?lang.unicharambigs
? lang.inttemp
? lang.pffmtable
? lang.normproto
? lang.punc-dawg
? lang.word-dawg
?lang.number-dawg
? lang.freq-dawg
在這八個文件中,紅色標示的是必須的,其餘的文件可選。當這些文件都準備好以後,再使用combine_tessdata進行最後的合併工做,生成lang.traineddata ,這個文件就是最終訓練出來語言庫。下面再來講一下如何產生上述的文件:
tesseractlang.fontname.number.tif lang.fontname.number batch.nochop makebox
這一步產生對應的lang.fontname.number.box 文件。
編輯該Box文件,校訂識別出來的字符,若是單個字符識別成了兩個或者多個字符,則要將這些行進行合併。前兩項座標取最小值,後兩項座標取最大值。
tesseractlang.fontname.number.tif lang.fontname.number nobatch box.train
這一步產生三個文件:
(1) tesseract.log記錄該步驟執行結果;
(2) lang.fontname.number.txt;
(3) lang.fontname.number.tr爲特徵文件。
unicharset_extractorlang.fontname.number_1.box
這一步產生字符集文件unicharset。
5、彙集字符特徵(inttemp、pffmtable、normproto)
mftraining -Uunicharset -O lang.unicharset lang.fontname.number_1.tr
使用上一步產生的字符集文件unicharset,來生成當前新語言的字符集文件lang.unicharset。同時還會產生圖形原型文件inttemp和每一個字符所對應的字符特徵數文件pffmtable。附帶還會產生Microfeat文件,可是並無用到該文件。
cntraininglang.fontname.number_1.tr
這一步產生字符形狀正常化特徵文件normproto。
wordlist2dawgfrequent_words_list lang.freq-dawg lang.unicharset
wordlist2dawgwords_list lang.word-dawg lang.unicharset
frequent_words_list存放出現頻率較高的字符;words_list存放全部字符集,至少一個字符。每一個字符佔一行。這樣能夠產生對應語言的字典文件了,共五個。
一樣的方法產生punc-dawg文件(符號)、number-dawg文件(數字)以及user-words文件(用戶自定義字符,一般爲空)。
例如某unicharambigs文件內容以下:
2 ' ' 1 " 1
1 m 2 r n 0
3 i i i 1 m 0
每一行表示一條校訂信息:第一個數字表示接下來有幾個字符,第二個數字也表示後面跟有幾個字符,最後一個數字表示校訂動做的類型。
在這個例子中,第一行表示將連續的兩個單引號(')合併成一個雙引號("),最後的數字1表示強制轉換;第二行、第三行表示一個字母m有可能被識別成兩個字母'r''n',也有可能識別成連續三個字母'i'。
這個校訂文件能夠爲空或者不存在。
combine_tessdata lang.
這是最後一步,產生訓練結果文件lang.traineddata。
注意這一步控制檯執行的結果顯示,有0-9項指示了文件的地址,這十個地址對應了文章前面所提到的十項所須要的文件。其中1、3、4、5這四項(從0開始排序)是必須的,缺乏一項(顯示爲-1)都將不算成功。
9、測試
tesseract image.tifoutput -l lang
使用咱們剛剛訓練好的lang.traineddata文件來識別圖形。識別出來的結果將會存放在output.txt文件中。
在訓練的過程當中,初次接觸的人容易犯一些小錯誤,這些錯誤雖然小,但極可能讓你陷入困惑和痛苦中。下面簡單的羅列一下幾點須要注意的地方:
(1)前面提到的lang能夠被你想要的任何字符串代替,主要是爲了給你訓練的庫取個名字。
(2)第二步產生的Box文件,須要手動修改,必定要以Unicode模式保存。修改的時候要注意方法和含義,詳細的說明Google原文中有說明。
(3)第五步程序自動產生的文件是隻有擴展名的,須要你本身手動將名字改爲前綴一致。後面產生的可選文件也依照此法操做。
(4)全部的這些文件都準備好了以後,須要放到同一目錄下,執行combine_tessdata進行合併的時候,注意要切換到文件所在的目錄執行,不然將會報錯,提示找不到文件。
(5)合併成功以後,要記得將訓練好的文件(lang.traineddata)放到程序的tessdata子目錄下,不然測試就會提示找不到語言庫文件。
好了,到這裏,基本上全部的問題都能解決了。
9、OCR開發中遇到的其餘問題,沒來得及寫文檔,參考網址可以徹底解決:
Vs2013編譯tesseract
http://blog.csdn.net/u013985291/article/details/51009350 (成功)
https://github.com/peirick/VS2015_Tesseract
http://blog.csdn.net/yongshi6/article/details/50616889 (vs中編譯和使用)
http://blog.csdn.net/suninsky_plate/article/details/52820800 (vs配置使用)
https://groups.google.com/forum/#!topic/tesseract-ocr/bD1zJNiDubY (問題1)
tesseract API 文檔
https://fossies.org/dox/tesseract-3.04.01/group__AdvancedAPI.html (tesseract-document)
utf-8問題
http://blog.csdn.net/weiwangchao_/article/details/43453053 (讓VS調試器正確顯示UTF-8字符串)
http://www.111cn.net/sys/Windows7/97046.htm (DOS窗口cmd中顯示UTF-8字符的解決方法)
opencv編譯freeType庫,顯示中文
http://blog.csdn.net/qq_20581563/article/details/50895298 (opencv顯示中文)
http://download.csdn.net/download/zmdsjtu/9680510(在Mat中寫入的類Cv310Text)
openCV文字檢測mser
http://blog.csdn.net/peaceinmind/article/details/49933055 (文字檢測與識別mser)
VS編譯opencv_contrib
http://www.cnblogs.com/jliangqiu2016/p/5597501.html (opencv_contrib配置)
問題:
https://putuyuwono.wordpress.com/2015/04/23/building-and-installing-opencv-3-0-on-windows-7-64-bit/ (解決)