摘 要:驗證碼識別對網(wǎng)絡輿情、采集敏感信息具有十分重要的意義。首先對國內(nèi)主流論壇驗證碼進行統(tǒng)計分類,接著針對簡單驗證碼提出基于模板匹配的識別方法,針對復雜驗證碼提出基于SIFT特征和ISOMAP降維技術的識別方法,最終在主流論壇上測試獲得較優(yōu)的識別結果。
關鍵詞:驗證碼;模板匹配;SIFT特征;降維
中圖分類號:TP391.41
驗證碼的識別是進入網(wǎng)站搜索網(wǎng)絡輿情、采集敏感信息的一個前提,對驗證碼的識別技術已成為當前的一個重要研究方向。驗證碼的英文CAPTCHA,即全自動區(qū)分計算機和人類的圖靈測試,它是為區(qū)別對方到底是人類還是計算機程序而設置的一種驗證措施,主要是用來防止網(wǎng)絡機器人的一些惡意行為。
2003年,在Mori和Malik[1]提出的基于形狀上下文匹配的識別方法中,對當前普遍使用的EZ-Gimpy類型驗證碼有83%的識別率和Gimpy類型驗證碼有33%的識別率。Moy[2]等提出扭曲估計技術,對EZ-Gimpy類型驗證碼有99%的識別率和Gimpy-r類型驗證碼有78%的識別率。Chellapilla和Simard[3]利用機器學習算法,對很多網(wǎng)站上的視覺驗證碼有4.89%-66.2%的識別率。
國內(nèi)關于驗證碼識別的論文相對較少,如蘇磊[4]等應用形狀上下文在理論,對驗證碼圖像進行識別,取得很好的效果;張淑雅[5]等利用預處理算法和選擇合適的分類器對驗證碼進行識別;王虎[6]等設計了基于模板匹配算法的形變數(shù)字驗證碼識別系統(tǒng),識別率達到100%。
論文針對過驗證碼識別的特點,首先對國內(nèi)網(wǎng)絡論壇和博客展開調(diào)研統(tǒng)計,接著針對簡單驗證碼和復雜驗證碼分別設計對應的識別方法,最終在各大網(wǎng)絡論壇和博客試驗所提的驗證碼識別系統(tǒng)具有較高的識別率。
1 驗證碼分類
目前網(wǎng)絡論壇和博客使用的驗證碼中,有一些會根據(jù)人類視覺的完形規(guī)則來設計的,或者利用知覺恒常的優(yōu)勢,適度的扭曲文字,也有些部分會改變字體顏色設計的。雖然驗證碼設計的原則都不盡相同,但歸納出一些常見的設計原則。我們將這些設計原則分為辨識主體設計和非辨識主體設計。辨識主體設計包括:字符扭曲、隨機中英文字母或數(shù)字、字符的位置、字符旋轉、字符類型、字符斷裂、字符大小、字符顏色、字符材質(zhì)、字符串長度。非辨識主體設計又分為背景部分和雜訊部分,其中背景部分包括:單色背景、特定背景、彩色隨機背景;雜訊部分包括色彩、大小、密度。
我們總結了目前在國內(nèi)論壇排行榜上靠前的30個論壇的驗證碼,共分為3類。第一類驗證碼的特點:字體位置固定,無扭曲和旋轉,字體顏色隨機,字體不發(fā)生斷裂,單色背景,少量干擾點或干擾線。第二類驗證碼的特點:字體位置不固定,輕微扭曲和變形,特定背景,字體間粘連程度低,彩色隨機背景顏色。第三類驗證碼是關于中文驗證碼,主流的網(wǎng)站有兩個,網(wǎng)易社區(qū)和天涯社區(qū),網(wǎng)易社區(qū)的驗證碼只有兩個中文漢字,背景顏色固定,字體位置固定,字體輕微傾斜。
2 驗證碼識別技術
2.1 簡單驗證碼
對簡單的驗證碼,論文采用模板匹配的方法,從統(tǒng)計學的可信度方面討論了加權模板,分析了字符圖像的網(wǎng)格特征,交叉點特征,并由此構造相應的模板向量,使用改進的活動模板部分結構分析算法,減弱字體形變的干擾。具體如下:(1)對圖片進行前端處理,利用利用濾波器對原圖片進行濾波,消除部分噪聲;(2)對圖片進行直方圖統(tǒng)計,計算圖像的直方圖,取出直方圖中最大的峰值,將其定為背景,對余下的峰均進行連通片檢測;(3)若連通片像素小于某個值,則將其拋棄,這樣可以得到4個連通片。將4個連通篇存放于恰好的大小圖上,并進行縮放,和模板大小相同;(4)模板匹配部分,首先制固定大小的圖片,每種字符足夠數(shù)量的模板,設62個字符,然后進行匹配,對每個子圖,分別和每個字符的20個模板進行相減,將結果的每個像素值的絕對值相加,然后去最小值,這樣進行62次循環(huán)后,再取最小值,即相應模板的字符。
2.2 復雜驗證碼
對于復雜驗證碼,論文主要研究字體的扭曲、字體選擇、字體粘連三個部分。
(1)字符旋轉。對于具有旋轉而尺寸不變的驗證碼,通過引入SIFT特征及其優(yōu)化方法來處理。SIFT算法首先在尺度空間進行特征檢測,并確定關鍵點的位置和關鍵點所處的尺度,然后使用關鍵點鄰域梯度的主方向作為該點的方向特征,以實現(xiàn)算子對尺度和方向的無關性。
由于SIFT特征處理速度較慢,直接引入可能不滿足識別效率的要求,論文采用基于SIFT的簡化算法,采用基于圓形窗口的12維向量有效地表示一個特征點,這樣可以減低算法的時間復雜度。
(2)字符變形。為了提高識別的準確性,首先需要得到可以準確表達每個字符的基本特征,不受或受到字體變化的影響較小,線性降維的方法簡單、處理速度相對較快,但是在應用中未能取得滿意的效果。而非線性降維方法有較好的理論基礎,在字體識別中有較好的效果。而典型的非線性降維算法是Isomap算法,該算法的核心是估計兩點間的測地距離,離得很近的點間的測地距離用歐式距離代替,離得較遠的點間的測地距離用最短路徑來逼近。
(3)字符粘連。驗證碼存在粘連后,利用一般的圖像處理方法無法對其進行準確的分割獲取單個待識別字符所在區(qū)域,從而無法準確分類。因此可以采用一個固定長寬比的滑動窗口去掃描,利用可以進行多類劃分的組合分類器對每個滑動窗口進行分類檢測。
3 實驗
數(shù)據(jù)集來源于各大網(wǎng)絡論壇和博客,隨機采集1萬個簡單驗證碼和1萬個復雜驗證碼進行測試試驗。簡單驗證碼首先建立模板庫,數(shù)字和字母共62個模板。復雜驗證碼識別挑選QQ論壇、百度貼吧和貓撲社區(qū)典型論壇進行針對性試驗,包括字符旋轉、字符變形和字符粘連處理等處理。測試結果如表1所示。
表1 識別結果表
從表1可以看出,簡單驗證碼的識別率可以達到100%,這是因為簡單驗證碼的字體單一,位置固定,沒有背景干擾,采用模板匹配方法可以滿足要求。由于QQ論壇和百度貼吧的驗證碼字體旋轉變形,且存在部分粘連,故難度較大,識別率較低,而貓撲社區(qū)驗證碼相對簡單,且都是字母,通過論文所提方法識別就可以得到滿意的識別結果。
4 結束語
論文通過分析主流國內(nèi)論壇驗證碼的類別,分為簡單驗證碼和復雜驗證碼。根據(jù)簡單驗證碼的特點,提出基于特征和模板匹配的識別方法。根據(jù)復雜驗證碼的特點,對字符旋轉、字符變形和字符粘連分別提出對應的處理方法。通過國內(nèi)主流論壇測試得到滿意的識別結果。
參考文獻:
[1]G Mori and J Malik. Recognizing objects in adversarial cluster: breaking a visual CAPTCHA. IEEE Conference on Computer Vision Pattern Recognition(CVPR),2003.
[2]G Moy, N Jones,C Harkless and R Potter.Distortion estimation techniques in solving visual CAPTCHAs,IEEE CVPR,2004.
[3]K Chellapilla and P Simard, Using Machine Learning to Break Visual Human Interaction Proofs.Neural Information Processing Systems (NIPS),MIT Press,2004.
[4]蘇磊,馬良.形狀上下文在驗證碼識別中的應用[J].微計算機信息,2007(23):252-254.
[5]張淑雅,趙一鳴.認證碼字符識別方法的研究[J].寧波大學學報,2007(20):429-433.
[6]王虎,馮林.數(shù)字驗證碼識別算法的研究和設計[J].計算機工程與應用,2007(32):86-88.
作者簡介:汪中(1984-),男,安徽人,工程師,博士,主要研究方向:網(wǎng)絡安全,模式識別。
作者單位:中國電子科技集團公司第三十八研究所,合肥 230088