http://blog.youkuaiyun.com/conmajia/article/details/7649551
光學圖像識別(OCR)是非常有用的技術。在驗證碼識別、車牌號識別、文字識別方面,基於字符的識別技術算是比較容易上手的了(相比圖文識別)。
閒來看到有朋友研究驗證碼識別,一時手癢,野比自己動手來做做驗證碼識別。當然,肯定只是簡單的驗證碼。
名為驗證碼,實際上並不限於,還可以識別車牌號、身份證號、門牌號等各種亂七八糟的內容。
識別的流程很明確:
1、預處理圖像
2、做y軸的投影
3、分析直方圖分區
4、根據分區拆分圖像為多個字符(很關鍵,拆得越好,後續識別率越高)
5、丟棄空白或無效字符
6、自動旋轉字符(如果有傾斜),識別字符
如果樣本中個圖像有粘連,則可能造成分區不准確。這種情況下,需要進行旋轉,但是怎樣自動旋轉,是個難題。
目前已可拆分出字符,下一步准備研究如何識別。(如果單個字符比較規范,可以利用現成的OCR控件)
這裡有一些例子。
普通的驗證碼(毫無難度)
帶干擾的驗證碼
較高強度干擾(目前使用的分區算法不能解決,需要更好的算法,比如動態閾值)
优快云的驗證碼(毫無壓力)
身份證號碼
車牌號
補充個QQ驗證碼,用單一閾值方法,識別很困難,需要結合字符寬度進行判斷
這是單一閾值分區的結果(沒有限制寬度),可以看到效果很差。
繼續研究如何優化分區算法,如何識別單個文字(可以考慮多重識別+樣本訓練)。
© 野比 2012