上篇文章簡單的學習了tesseract-ocr識別圖片中的英文(連接地址以下:http://www.javashuo.com/article/p-dwilyquz-ev.html),看起來效果還不錯,因此這篇文章繼續深刻學習tesseract-ocr識別圖片中的中文。html
下載chi_sim.traindata字庫。要有這個才能識別中文。下好後,放到Tesseract-OCR項目的tessdata文件夾裏面。(注意下載字庫,必定要看庫對應的tesseract版本下載)java
爲何強調版本呢 ,小編這裏講本身作的愚蠢的事情附上,但願你們別入坑了。git
上一篇學習Tesseract-ocr中,識別的是英文,而後小編下載了中文庫,以下github
不知道是什麼緣由,老是報錯。報錯以下:windows
我找了多種方法,包括從新安裝庫,配置環境變量,仍然沒有解決問題,因此在這裏,我又考慮到Tesseract的版本問題,因此打算從新最新版 w64-v4.0.0,繼續試試。附上下載連接地址瀏覽器
下載Tesseract的地址:https://digi.bib.uni-mannheim.de/tesseract/oracle
下載Tesseract-ocr包的地址:https://github.com/tesseract-ocr/tesseract/wiki/Data-Filesapp
下載Tesseract的Git地址:https://github.com/tesseract-ocr/tesseract/wiki工具
通過一天的折騰,在tesseract的GitHub中,我偶然發現了問題的所在,能夠說本身是很是的蠢,請看下圖學習
也就是不一樣的版本,安裝的中文包是不一樣的,而我亂安裝了包,因此一直報錯,尚未解決問題,下次必定不能這麼粗心。
下載jTessBoxEditor,這個是用來訓練字庫的。
以上的在百度都能找到下載,就不詳細講了(要是找不到的,能夠留言給我),下載好以後就是這樣的。
若是你剛剛接觸Java語言,而且對它興趣很大,想繼續研究。那麼這節就來給你說說怎麼安裝Java工具JDK,它是你進行Java的第一步。
首先你要下載Java的JDK(JDK的全稱是:Java Development Kit即Java語言軟件工具開發包),目前最新的JDK版本是1.8,Java最初是SUN公司,因後來被oracle公司收購,故你須要到oracle官網上下載JDK網址是:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html。輸入這個網址你就能夠看到下面圖片
其中圖片中現實的上面是oracle公司提供的Java JDK,上面有兩個按鈕,默認是不接受License,你須要接受之後就能夠下載Java的JDK,這裏你須要根據本身電腦的類型,以及操做系統的位數,下載對應的JDK。下面的一個是oracle公司對JDK提供的demos和Samples即簡單的例子,能夠供咱們學習,感興趣的能夠下載下來學習。
這裏我選擇下載JDK的Windows的64位JDK,下面圖片是下載的JDK的安裝包。
雙擊JDK安裝包,點擊下一步。
這裏選擇不安裝公共JRE,由於公共JRE是一個獨立的JRE系統,它是單獨的安裝在windows系統下的其餘路徑下。公用的JRE會向瀏覽器和系統中註冊Java運行時的環境。經過向瀏覽器和系統中註冊運行時的環境,系統中的任何應用程序均可以使用公用JRE。可是如今在瀏覽器網頁上執行applet的機會幾乎沒有,而且JDK目錄下JRE徹底能夠勝任,因此通常選擇不安裝公用JRE。這裏若是你不想安裝在默認路徑下,能夠選擇更改目錄。
單擊下一步,會出現以下安裝條。
輸入Java -version能夠查看本身的Java版本。這樣你的JDK就安裝成功了。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
從結果來看,效果不太理想,因此咱們要想獲得更好的結果,那麼就須要訓練本身的字庫,下面小編開始訓練本身的字庫。
更改圖片名字,這個是有要求的
1 2 3 4 5 6 7 |
|
1 |
|
box文件和對應的tif必定要在相同的目錄下,否則後面打不開。
打開train.bat
用jTessBoxEditor.jar打開tif文件,而後根據實際狀況修改box文件
找到tif圖,打開,並校訂。
只要在命令行輸入命令便可。
1 |
|
生成一個unicharset文件
1 |
|
在這我明明已經矯正好了,可是仍是有1個字符不能識別出來,報的錯跟實際上徹底沒有相關性,不知道是否是bug,到後面的結果就是「一」字沒有識別出來。
1 |
|
運行命令
1 |
|
1 |
|
1 |
|
目錄下會生成對應下列五個文件,在這五個文件前加上normal.進行重命名
合併五個文件,此時目錄下的normal.traineddata 就是訓練好的字庫文件
1 |
|
獲得訓練好的字庫以下:
1 |
|
下面文件中會保存你識別到的數據;
這個其實網上資料不少,但大都描述的不夠詳細和完整,這裏我一步一步把使用tesseract-ocr 訓練字庫的方法和步驟進行了描述,親測是沒有問題。
Tesseract生成.box文件後,須要用到jTessBoxEditor工具對其進行糾正,如下是jTessBoxEditor的使用步驟。
box文件的內容也同時會加載到jTessBoxEditor,若是這部分的內容爲空,則是沒有生成.box文件的!以下圖:
此處借用的是網友的圖片,方便,若有侵權,請聯繫小編及時刪除。
當一個字被識別爲兩個時,按住Ctrl鍵選中兩個,而後點擊Merge,便可進行合併!
進行矯正 主要就是座標 位置的調整,注意 添加須要選擇上一個文字才能分離
有些空白處可能也會被jTessBoxEditor誤認爲是字體,用藍色框框住,
這個能夠直接選中,delete掉就行了!
正常狀況下是每一個字體都會有藍色框框住,若是說有其中的兩個相鄰的字都沒有被框住,這時候即便採用insert後加上藍色框,可是最後識別仍是有問題,這個不懂是否是我操做不對! 最後發現原來是兩個字體挨的太近的,致使區別不開了,在老大的建議下,把兩個字的距離隔開點來,就能夠正常的框出來了!(若是有更好的方法,請指出,謝謝)
修改完成後保存便可!這裏我是一張張樣本圖片進行修改的,可是我這樣作每張都有作一樣的糾正,不知道有沒有批量修改的方法呢?
在對圖片進行訓練以前,最好先用Opencv進行下處理,好比說二值化,這樣就能夠去掉一些干擾!可是要注意的是在識別以前一樣的也對圖片先進行相同效果的處理!這樣的識別率會有所提升!