關於圖文識別功能相關技術的實現html
轉載請註明源地址:http://www.cnblogs.com/funnyzpc/p/8908906.htmlpython
上一章,寫的是SSL證書配置,中間折騰了好一會,在此感謝SSL證書發行商的協助;此次我就講講ocr識別的問題,先說說需求來源吧。。。git
以前由於風控每次須要手動P協議文件和身份證(脫敏),還要識別證件及圖片文件的內容,以爲狠狠狠麻煩,遂就找到了技術總監,技術總監一拍腦殼,額,小鄒啊。。。github
呃,一開始並沒抱太大但願,不過仍是花了些心思作了些需求實現的調研,怎麼辦 google、duckduckgo、github一路找下來就有了幾個工程了,嘿嘿~,惋惜還沒高興到,沒想到的是這些工程一個比一個坑,不是依賴windows系統組件就是代碼bug不斷,做者們,能用點兒心麼算法
日夜操勞,加班啊,總算是將幾個工程全都修得能跑起來了,大費周折。。。可貴啊windows
欸,惋惜效果均不佳;現開始,我總結下一些主流的圖文識別技術,只是淺聊哦。。。網絡
首先,這些工程大體分兩類:機器學習
一類是純算法,不附帶機器學習功能的,且須要依賴於window系統組件的工程,好比tesseract和tess4j,識別效果能夠說是巨差(可能個人技術很菜的緣由),但有一點兒值得讚許,就是識別結果的格式還算不錯,這類圖文識別的特色大體有以下幾點:學習
A>工程代碼量較大優化
B>依賴window組件,須要在window系統下才能運行
C>識別效果沒法經過學習逐漸優化
D>識別出來的文字時常亂碼,中文識別亂碼錯別字較多
E>識別結果一般使用格式化模子來格式化結果,遂,識別結果的格式還算過得去
一類是基於機器學習(好比Tensorflow)的工程,這些工程良莠不齊,存在插件版本問題,尤爲是python插件,實在在太太太難裝了,在一就是工程大多較爲簡陋,因爲機器學習具備不斷改善的趨勢,這是基於機器學習的圖文識別的最大優點,總結起來,基於機器學習的圖文識別的特色兒大體有以下幾點:
A>工程比較簡單,代碼量不是不少
B>依賴的語言插件,如python實在難以安裝
C>有不少優化的方向,好比使用顯卡,優化算法(卷積神經網絡)來提升識別速度及模型準確度
D>十分耗費計算機字段,通常識別一頁A4大小的圖片中的內容,(我使用Macbook Pro) 最快也用了二十多秒
E>識別的結果比較亂,但對於中文,尤爲是圖片較好的中文的文字識別準確率能達到百分之七十網上,可是識別格式和文字準確度不如上者
F>因爲是基於機器學習,遂須要大量的數據餵養以提升識別的準確率,餵養的數據十分可觀
額,總的來講,後者的優點較大,也是趨勢,好比騰訊QQ的圖片識別還有百度大腦AI這些基本都是基於機器學習,我的以爲,若是投入一個團隊去專門研究開發一個圖文識別的產品,也是比較容易實現的,況且這個方向向前走就是人工智能,儘管如今看起來有些智障...。
哦,大體總結完了,我就展現下基於tess4j和chinese-ocr這兩項目的實現效果,個人輸入是身份證:
(注意:源圖片是從github上拉下來的,我的作了些簡陋的脫敏處理!)
下面是基於tess4j實現的結果:
tess4j的實現只能基於windows組件實現,故項目只能在windows下運行,另外tesseract也是windows組件的實現。
一下是基於chinese-ocr的項目的實現的結果:
chinese-orc是基於python語言+tensorflow的實現,結果一目瞭然,須要說的是,一下幾個也是基於=>