1. 程式人生 > >關於驗證碼識別的兩種方案

關於驗證碼識別的兩種方案

最近在做驗證碼識別的程式,找了不少資料,主要是兩種方法。分別是(我稱之為)“自建庫方法”,“shape context方法”。     這兩種方法,其實是從兩種方式來分析影象,前者的中心思想是切割出單個字元,將之變為一串二進位制的key值,(在php中)以similar_text函式來得到相似度,這種方法,在網上有非常好的例子, 網址分別是: (恕我猜疑,這種方法的源頭,我覺得是來自一篇外國的本科生的畢業論文,裡面詳細敘述了這種方法),不過,這種方法在識別複雜的驗證碼上是有著明顯缺陷的——因為它非常依賴樣本庫,如果字元變化較多(縮放、旋轉、變形),即使能以這種方式識別,可想見庫是非常龐大的,並且沒有什麼普遍性(即一個庫只能對應一種驗證碼)。     雖然有種種“缺陷”,我還是試著去做了個程式。不言而喻,這個程式的核心部分是樣本資料庫,所以我採用一種“用人工識別特別碼”的方法。具體方法是:如果識別錯誤,則將其中相似度(這裡用的是php中的similar_text函式)低於閥值的字元插入待人工審查的資料庫。     另一種方法——“shape context方法”的角度完全不同,它是以形狀的角度出發,偏重於數學的應用(出自balack大學的兩個老師之手),但使用起來比較麻煩。在網上很少能找到相關程式碼,以下資料是找到的為數不多的例項:http://www.cnblogs.com/xiaotie/archive/2009/01/15/1376677.html?page=2#pagedcomment《車牌識別及驗證碼識別的一般思路》。這種方法可能需要藉助更“強大”的語言,正在研究中ing