本發(fā)明涉及驗證碼識別領(lǐng)域,具體涉及一種針對字符組合的圖形驗證碼識別方法及裝置。
背景技術(shù):
驗證碼(captcha)是“completelyautomatedpublicturingtesttotellcomputersandhumansapart”(全自動區(qū)分計算機和人類的圖靈測試)的縮寫,是一種區(qū)分用戶是計算機和人的公共全自動程序??梢苑乐箰阂馄平饷艽a、刷票、論壇灌水,有效防止某個黑客對某一個特定注冊用戶用特定程序暴力破解方式進行不斷的登陸嘗試等。但是驗證碼極大的降低了用戶體驗,尤其一些粘連并且模糊的驗證碼,對用戶的操作造成極大的干擾。為批量獲取網(wǎng)站上的數(shù)據(jù),識別驗證碼成為一門比較常見的圖像識別技術(shù)。目前主流的識別方式有三種,第三方平臺的人工打碼,成熟的ocr識別組件,程序識別。人工打碼優(yōu)點是幾乎是萬能的,只要肉眼能識別的驗證碼,都可以獲取驗證碼,缺點是第三方平臺會收費,由于是人工肉眼識別,加上網(wǎng)絡(luò)傳輸,速度會比較慢。ocr識別組件優(yōu)點是簡單,缺點是只能識別簡單的驗證碼,對于噪點或者粘連的復(fù)雜驗證碼,ocr識別率非常低。程序識別相對來說是最優(yōu)的識別方案。
目前對于粘連驗證碼的識別方法基本還是圍繞切割之后單個字符跟樣本做比較,不斷擴充樣本的數(shù)量來提升識別率。但這類做法存在三個問題,一是隨著樣本數(shù)據(jù)的增加,性能會有很大的損耗;二是粘連的字符有時候是很難切割的,切割之后可能把一個字符切割成多個或者兩個字符連在一起沒有切割開,最終導(dǎo)致跟樣本比對的時候由于差別太大,無法匹配到正確的樣本;三是針對不同的驗證碼,需要不同的切割機制,程序的復(fù)用性比較差。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)存在的缺陷,本發(fā)明實施例提出一種針對字符組合的圖形驗證碼識別方法及裝置。
一方面,本發(fā)明實施例提出一種針對字符組合的圖形驗證碼識別方法,包括:
s1、獲取待識別的由字符組合成的圖形驗證碼以及所述圖形驗證碼對應(yīng)的參數(shù)信息,對所述圖形驗證碼依次進行灰度化、二值化、去噪處理,其中,所述參數(shù)信息包括所述圖形驗證碼的去噪方法、組成所述圖形驗證碼的字符數(shù)量以及所述圖形驗證碼切割成單個字符圖形的信息,所述圖形驗證碼切割成單個字符圖形的信息包括能完全切割成單個字符圖形和不能完全切割成單個字符圖形,所述去噪處理采用所述圖形驗證碼的去噪方法進行去噪;
s2、若所述圖形驗證碼不能完全切割成單個字符圖形,則對所述圖形驗證碼進行切割,得到至少一個圖形,其中,所述至少一個圖形由字符組成;
s3、根據(jù)所述至少一個圖形的數(shù)量、寬度和所述組成所述圖形驗證碼的字符數(shù)量確定切割得到的每一個圖形包含的字符數(shù)量;
s4、對于切割得到的每一個包含的字符數(shù)量為1的圖形,通過將該圖形與預(yù)先設(shè)置的樣本集進行匹配,識別出該圖形包含的字符,對于切割得到的每一個包含的字符數(shù)量大于1的圖形,采用雙向滑動加上下偏移匹配的方法,通過將該包含的字符數(shù)量大于1的圖形與所述樣本集進行匹配,識別出該包含的字符數(shù)量大于1的圖形包含的字符,其中,所述樣本集由多個樣本組成,每個樣本為包含一個字符的圖形,每個樣本由一個圖形驗證碼依次進行灰度化、二值化、去噪處理、切割和去邊得到,每個樣本標注有該樣本包含的字符;
s5、將切割得到的所有圖形包含的字符的識別結(jié)果組合起來得到所述圖形驗證碼的識別結(jié)果。
另一方面,本發(fā)明實施例提出一種針對字符組合的圖形驗證碼識別裝置,包括:
預(yù)處理單元,用于獲取待識別的由字符組合成的圖形驗證碼以及所述圖形驗證碼對應(yīng)的參數(shù)信息,對所述圖形驗證碼依次進行灰度化、二值化、去噪處理,其中,所述參數(shù)信息包括所述圖形驗證碼的去噪方法、組成所述圖形驗證碼的字符數(shù)量以及所述圖形驗證碼切割成單個字符圖形的信息,所述圖形驗證碼切割成單個字符圖形的信息包括能完全切割成單個字符圖形和不能完全切割成單個字符圖形,所述去噪處理采用所述圖形驗證碼的去噪方法進行去噪;
第一切割單元,用于若所述圖形驗證碼不能完全切割成單個字符圖形,則對所述圖形驗證碼進行切割,得到至少一個圖形,其中,所述至少一個圖形由字符組成;
計算單元,用于根據(jù)所述至少一個圖形的數(shù)量、寬度和所述組成所述圖形驗證碼的字符數(shù)量確定切割得到的每一個圖形包含的字符數(shù)量;
識別單元,用于對于切割得到的每一個包含的字符數(shù)量為1的圖形,通過將該圖形與預(yù)先設(shè)置的樣本集進行匹配,識別出該圖形包含的字符,對于切割得到的每一個包含的字符數(shù)量大于1的圖形,采用雙向滑動加上下偏移匹配的方法,通過將該包含的字符數(shù)量大于1的圖形與所述樣本集進行匹配,識別出該包含的字符數(shù)量大于1的圖形包含的字符,其中,所述樣本集由多個樣本組成,每個樣本為包含一個字符的圖形,每個樣本由一個圖形驗證碼依次進行灰度化、二值化、去噪處理、切割和去邊得到,每個樣本標注有該樣本包含的字符;
第一組合單元,用于將切割得到的所有圖形包含的字符的識別結(jié)果組合起來得到所述圖形驗證碼的識別結(jié)果。
本發(fā)明實施例提供的針對字符組合的圖形驗證碼識別方法及裝置,特別針對粘連驗證碼(非粘連完全兼容),在原有切割,匹配基本流程的基礎(chǔ)上,對切割以及匹配這兩步做了改進:首先本方案在切割方面做了優(yōu)化,拋棄傳統(tǒng)的切出每個字符,再進行每個字符的比較,而是通過簡單的切割,把不粘連的部分先切割開,再根據(jù)寬度判斷切割出來的是幾個字符,大大減低了切割帶來的圖像缺失或者干擾;其次在匹配上采用了雙向滑動加上下偏移機制,通過該機制能使識別率大大提升;最后,本方案具有很高的通用性,既可以兼容簡單的無粘連的驗證碼,又能適用各種不同粘連情況的驗證碼,即本方案通過一種新的機制來更好的達到識別效果,有更好的性能以及復(fù)用性。
附圖說明
圖1為本發(fā)明針對字符組合的圖形驗證碼識別方法一實施例的流程示意圖;
圖2為識別準備流程示意圖;
圖3為識別運行流程示意圖;
圖4為適用顏色閘值法去噪的驗證碼一實施例的示意圖;
圖5為適用八鄰域去噪和濾波去噪法去噪的驗證碼一實施例的示意圖;
圖6為適用斜率去噪法去噪的驗證碼一實施例的示意圖;
圖7為不能完全切割開的驗證碼圖片的示意圖;
圖8為本發(fā)明針對字符組合的圖形驗證碼識別裝置一實施例的結(jié)構(gòu)示意圖。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
參看圖1,本實施例公開一種針對字符組合的圖形驗證碼識別方法,包括:
s1、獲取待識別的由字符組合成的圖形驗證碼以及所述圖形驗證碼對應(yīng)的參數(shù)信息,對所述圖形驗證碼依次進行灰度化、二值化、去噪處理,其中,所述參數(shù)信息包括所述圖形驗證碼的去噪方法、組成所述圖形驗證碼的字符數(shù)量以及所述圖形驗證碼切割成單個字符圖形的信息,所述圖形驗證碼切割成單個字符圖形的信息包括能完全切割成單個字符圖形和不能完全切割成單個字符圖形,所述去噪處理采用所述圖形驗證碼的去噪方法進行去噪;
s2、若所述圖形驗證碼不能完全切割成單個字符圖形,則對所述圖形驗證碼進行切割,得到至少一個圖形,其中,所述至少一個圖形由字符組成;
s3、根據(jù)所述至少一個圖形的數(shù)量、寬度和所述組成所述圖形驗證碼的字符數(shù)量確定切割得到的每一個圖形包含的字符數(shù)量;
s4、對于切割得到的每一個包含的字符數(shù)量為1的圖形,通過將該圖形與預(yù)先設(shè)置的樣本集進行匹配,識別出該圖形包含的字符,對于切割得到的每一個包含的字符數(shù)量大于1的圖形,采用雙向滑動加上下偏移匹配的方法,通過將該包含的字符數(shù)量大于1的圖形與所述樣本集進行匹配,識別出該包含的字符數(shù)量大于1的圖形包含的字符,其中,所述樣本集由多個樣本組成,每個樣本為包含一個字符的圖形,每個樣本由一個圖形驗證碼依次進行灰度化、二值化、去噪處理、切割和去邊得到,每個樣本標注有該樣本包含的字符;
s5、將切割得到的所有圖形包含的字符的識別結(jié)果組合起來得到所述圖形驗證碼的識別結(jié)果。
本發(fā)明實施例提供的針對字符組合的圖形驗證碼識別方法,特別針對粘連驗證碼(非粘連完全兼容),在原有切割,匹配基本流程的基礎(chǔ)上,對切割以及匹配這兩步做了改進:首先本方案在切割方面做了優(yōu)化,拋棄傳統(tǒng)的切出每個字符,再進行每個字符的比較,而是通過簡單的切割,把不粘連的部分先切割開,再根據(jù)寬度判斷切割出來的是幾個字符,大大減低了切割帶來的圖像缺失或者干擾;其次在匹配上采用了雙向滑動加上下偏移機制,通過該機制能使識別率大大提升;最后,本方案具有很高的通用性,既可以兼容簡單的無粘連的驗證碼,又能適用各種不同粘連情況的驗證碼,即本方案通過一種新的機制來更好的達到識別效果,有更好的性能以及復(fù)用性。
以下結(jié)合整個驗證碼的識別過程,詳細介紹本發(fā)明的具體實現(xiàn)方式。
驗證碼的識別過程主要分為兩個環(huán)節(jié):識別準備環(huán)節(jié)(識別準備流程如圖2所示)和識別運行環(huán)節(jié)(識別運行流程如圖3所示)。
參看圖2,識別準備環(huán)節(jié)主要是確定驗證碼的字符數(shù),是否可切割開,分析驗證碼的特點,確定對該驗證碼的去噪方法,采集并制作出針對此類驗證碼的樣本集。
其中:驗證碼去噪方法t包含:顏色閘值法,八鄰域去噪,濾波去噪法,斜率去噪法的一種或多種組合,根據(jù)驗證碼的實際情況進行傳入。
字符數(shù)n:根據(jù)驗證碼的字符個數(shù)進行傳入。
是否可切割開c:驗證碼是否可以完全切割開。
樣本集s:在驗證碼識別前需要建立基本樣本集,先采樣一定量的驗證碼,將驗證碼進行灰度化,二值化,去噪,切割處理,切割后的圖像單獨保存,之后進行去邊處理,并對相似的樣本進行去重,人工對切割后的圖像進行識別標識為對應(yīng)的字符。建立起每個會出現(xiàn)的字符對應(yīng)的樣本圖像集合,統(tǒng)一加入到樣本集中。
識別運行環(huán)節(jié)將識別準備環(huán)節(jié)分析得出的參數(shù)以及待識別圖片以參數(shù)的形式傳入識別過程進行識別。
識別過程中用到的參數(shù)有:驗證碼去噪方法t,字符數(shù)n,是否可切割開c,樣本集s,待識別圖片p。參看圖3,驗證碼識別主要分以下幾步驟:
1.對p灰度化
灰度化是將驗證碼圖像由真彩色轉(zhuǎn)換為只包含亮度信息的圖片,本方法中采用根據(jù)人眼對光譜波長的適應(yīng)能力而制定的photoshop灰度算法。即對rgb顏色公量分別乘以一定的系數(shù)來達到灰度效果的算法?;叶然蟮膱D像只包含亮度信息進行后續(xù)的處理。
2.將p二值化
二值化過程將p中的每個像素點以合適的閥值進行判斷,對字符和背景進行區(qū)分,字符用黑色0表示,背景用白色1表示。本方法中采用全局閥值進行二值化處理,找到合適的閥值點,區(qū)分出字符和背景。
3.對p去噪處理
去除噪點是識別驗證碼的最基礎(chǔ)的一步,也是極為重要的一步,噪點去除的準確性直接影響到樣本的提取,圖像的分割以及匹配。
根據(jù)驗證碼去噪方法t,采用對應(yīng)的去噪方式進行去噪:
1)顏色閘值法:該方法適用于噪點或者干擾線與實際驗證碼的的顏色差異比較明顯(如圖4所示的驗證碼)。通過有效字符像素點的顏色rgb值與干擾線顏色差值,自動計算出閘值,將噪點過濾掉(需要特別說明的是:在灰度化和二值化前使用該方法)。
2)八鄰域去噪:該方法針對包含分散干擾點的驗證碼(如圖5所示的驗證碼)。如果一個像素是有效字符像素點或者干擾因素的一部分,那么這個像素在二值化結(jié)果中其灰度值一定是0(黑色);如果一個像素是背景,則其灰度值應(yīng)該是255(白色)。因此對于孤立的噪點,其周圍八鄰域(左上、上、右上,左、右,左下,下,右下)應(yīng)該都是白色或者大多數(shù)點都是白色像素;通過這種方法找出孤立的點去掉,達到去噪的效果。
3)濾波去噪法:該方法中采用中值濾波法,可以有效的去除驗證碼背景中的干擾點,特別對于平滑背景中的干擾點有明顯的效果(比如可適用如圖5所示的驗證碼)。
4)斜率去噪法:根據(jù)驗證碼噪點的特征,找出規(guī)律來去噪。如圖6所示的驗證碼,適用于通過干擾線的斜率來去噪。
4.對p進行切割、識別處理
如果參數(shù)是否可切割開c值顯示圖像能夠切割開,則對p進行切割處理,因為匹配單個字符比匹配多個字符性能及識別率都會高很多,即使是無法完全切割開,也可以先切出幾部分,每部分再識別。特別針對粘連驗證碼無法完全切割開的情況,本方法將切割與匹配有效的結(jié)合在一起,再結(jié)合雙向滑動,上下偏移解決了粘連驗證碼的識別問題。
本方法中使用的切割算法有固定等分分割、掃描線分割和滴水算法分割幾種方式。對于完全可以切割開的驗證碼圖片,可直接切割,并通過上下偏移匹配單個字符,最后將匹配結(jié)果進行組合即可得到驗證碼的識別結(jié)果;對于不能完全切割開的驗證碼圖片,則進行部分切割,根據(jù)寬度比例計算出每張圖片的字符數(shù),字符數(shù)為1的圖片可直接通過上下偏移進行單個字符匹配,字符數(shù)大于1的圖片則進行雙向滑動加上下偏移匹配,最后將匹配結(jié)果進行組合即可得到驗證碼的識別結(jié)果。
下面以圖7所示的驗證碼為例說明不能完全切割開的驗證碼圖片的切割、識別過程。對圖7所示的驗證碼進行切割可以得到2張圖片:586j和z。通過切割出來的圖片數(shù)量、切出圖片的寬度和圖7所示的驗證碼包含的字符數(shù)可以判斷出第一張圖片586j包含4個字符,第二張圖片z包含1個字符。當然如果驗證碼圖片不能切出單個字符圖片,則將其作為一個整體來識別。對于包含1個字符的圖片z,可以通過上下偏移方法將其與樣本集s進行匹配繼而識別出圖片z包含的字符z,具體方法為:對于所述樣本集s中的每一個樣本,每次將該樣本向下移動預(yù)設(shè)距離,并將移動位置后的該樣本與該圖片z進行相同位置像素點匹配,統(tǒng)計相同位置處該樣本與該圖片z的像素點的灰度值均為0出現(xiàn)的次數(shù),將相同位置處該樣本與該圖片z的像素點的灰度值均為0出現(xiàn)的次數(shù)的最大值作為該樣本與該圖片z的匹配度;確定出與該圖片z的匹配度最大的樣本,將該樣本標注的字符作為該圖片z包含的字符的識別結(jié)果??梢岳斫獾氖?,所述預(yù)設(shè)距離可以根據(jù)需要設(shè)置,比如可以為1個像素、2個像素等。在將任一樣本與該圖片z進行初次匹配之前,需要將二者進行對齊,在除初次匹配的其它次匹配前,需要在初次匹配對齊的基礎(chǔ)上,向下移動一定的距離。另外,在某一樣本與圖片z匹配的過程中,除了本實施例中將相同位置處該樣本與該圖片z的像素點的灰度值均為0出現(xiàn)的次數(shù)的最大值作為該樣本與該圖片z的匹配度之外,若在某一位置處,該樣本與該圖片z的像素點的灰度值均為0出現(xiàn)的次數(shù)與該圖片z像素點數(shù)量的比值不小于預(yù)設(shè)的數(shù)值,則可以將該比值作為該樣本與該圖片z的匹配度。當然,若每次移動位置得到的相同位置處該樣本與該圖片z的像素點的灰度值均為0出現(xiàn)的次數(shù)與該圖片z像素點數(shù)量的比值均小于所述預(yù)設(shè)的數(shù)值,則將相同位置處該樣本與該圖片z的像素點的灰度值均為0出現(xiàn)的次數(shù)與該圖片z像素點數(shù)量的比值的最大值作為該樣本與該圖片z的匹配度。所述預(yù)設(shè)的數(shù)值可以根據(jù)需要設(shè)置,比如可以為95%、98%等。
對于包含4個字符的圖片586j,可以通過雙向滑動加上下偏移匹配的方法將其與樣本集s進行匹配繼而識別出圖片586j包含的字符5、8、6和j,具體方法為:
先在左側(cè)(當然也可以先在右側(cè)),通過上下偏移方法將圖片586j與樣本集s進行匹配繼而識別出圖片586j包含的字符5,然后將字符5在圖片586j中對應(yīng)的像素點抹掉,這時候圖片586j只剩下86j和左邊的一些空白,接著通過去噪以及去邊剩余只包含有86j的一張沒有噪點和空白的圖片。在利用某一樣本來匹配字符5時,首先需要將該樣本與圖片586j在左側(cè)對齊,對齊后可以通過對該樣本上下偏移的方法確定出該樣本與字符5范圍(圖片586j左側(cè)寬度為樣本寬度的范圍)的匹配度。在得到所有樣本和字符5范圍的匹配度后,即可以確定出字符5的識別結(jié)果,具體過程參見圖片z包含的字符的識別過程,此處不再贅述。之后在右側(cè)按同樣的方法匹配識別包含86j圖片中的字符j,然后抹掉j對應(yīng)的像素點,并且進行去噪以及去邊,剩余包含86圖片。在左側(cè)匹配識別到包含86圖片中的字符8,然后抹掉8對應(yīng)的像素點,并且進行去噪以及去邊,剩余包含6的圖片。最后匹配、識別出最后的字符6。最后把識別出的字符拼接組合進來就是最終的驗證碼識別結(jié)果了。
由上述過程可知,首先本方案在切割方面做了優(yōu)化,拋棄傳統(tǒng)的切出每個字符,再進行每個字符的比較,而是通過簡單的切割,把不粘連的部分先切割開,再根據(jù)寬度比例判斷切割出來的是幾個字符,大大減低了切割帶來的圖像缺失或者干擾。
其次在匹配上采用了雙向滑動加上下偏移機制,過程中不斷降噪,降低了粘連帶來的干擾以及其他字符像素點的影響,并且通過抹掉已經(jīng)匹配字符而不是記錄匹配字符坐標點的方式來識別剩余字符,解決字符交叉扭曲帶來的坐標偏差太大的問題,識別率大大提升,而且在單線程情況下性能達到一秒識別2-5個。
最后,本方案具有很高的通用性,既可以兼容簡單的無粘連的驗證碼,又能適用各種不同粘連情況的驗證碼。
參看圖8,本實施例公開一種針對字符組合的圖形驗證碼識別裝置,包括:
預(yù)處理單元1,用于獲取待識別的由字符組合成的圖形驗證碼以及所述圖形驗證碼對應(yīng)的參數(shù)信息,對所述圖形驗證碼依次進行灰度化、二值化、去噪處理,其中,所述參數(shù)信息包括所述圖形驗證碼的去噪方法、組成所述圖形驗證碼的字符數(shù)量以及所述圖形驗證碼切割成單個字符圖形的信息,所述圖形驗證碼切割成單個字符圖形的信息包括能完全切割成單個字符圖形和不能完全切割成單個字符圖形,所述去噪處理采用所述圖形驗證碼的去噪方法進行去噪;
第一切割單元2,用于若所述圖形驗證碼不能完全切割成單個字符圖形,則對所述圖形驗證碼進行切割,得到至少一個圖形,其中,所述至少一個圖形由字符組成;
計算單元3,用于根據(jù)所述至少一個圖形的數(shù)量、寬度和所述組成所述圖形驗證碼的字符數(shù)量確定切割得到的每一個圖形包含的字符數(shù)量;
識別單元4,用于對于切割得到的每一個包含的字符數(shù)量為1的圖形,通過將該圖形與預(yù)先設(shè)置的樣本集進行匹配,識別出該圖形包含的字符,對于切割得到的每一個包含的字符數(shù)量大于1的圖形,采用雙向滑動加上下偏移匹配的方法,通過將該包含的字符數(shù)量大于1的圖形與所述樣本集進行匹配,識別出該包含的字符數(shù)量大于1的圖形包含的字符,其中,所述樣本集由多個樣本組成,每個樣本為包含一個字符的圖形,每個樣本由一個圖形驗證碼依次進行灰度化、二值化、去噪處理、切割和去邊得到,每個樣本標注有該樣本包含的字符;
本實施例中,所述識別單元,可以包括:
第一識別子單元,用于對于第一圖形的一側(cè)出現(xiàn)的第一個字符范圍,通過采用上下偏移方法將該字符范圍與所述樣本集進行匹配識別出該字符,并將該字符在該第一圖形中的像素點抹掉,對抹掉像素點后的圖形依次進行去噪、去邊處理,得到第二圖形,其中,所述第一識別子單元首次執(zhí)行時所述第一圖形為該包含的字符數(shù)量大于1的圖形,其它次執(zhí)行時所述第一圖形為第二識別子單元得到的圖形;
在一實施例中,所述第一識別子單元,具體可以用于:
對于所述樣本集中的每一個樣本,每次將該樣本向下移動預(yù)設(shè)距離,并將移動位置后的該樣本與該字符范圍進行相同位置像素點匹配,統(tǒng)計相同位置處該樣本與該字符范圍的像素點的灰度值均為0出現(xiàn)的次數(shù),將相同位置處該樣本與該字符范圍的像素點的灰度值均為0出現(xiàn)的次數(shù)的最大值作為該樣本與該字符范圍的匹配度;
確定出與該字符范圍的匹配度最大的樣本,將該樣本標注的字符作為該字符的識別結(jié)果。
在另一實施例中,所述第一識別子單元,具體可以用于:
對于所述樣本集中的每一個樣本,每次將該樣本向下移動預(yù)設(shè)距離,并將移動位置后的該樣本與該字符范圍進行相同位置像素點匹配,統(tǒng)計相同位置處該樣本與該字符范圍的像素點的灰度值均為0出現(xiàn)的次數(shù),若判斷獲知所述相同位置處該樣本與該字符范圍的像素點的灰度值均為0出現(xiàn)的次數(shù)與該字符范圍像素點數(shù)量的比值不小于預(yù)設(shè)的數(shù)值,則將所述相同位置處該樣本與該字符范圍的像素點的灰度值均為0出現(xiàn)的次數(shù)與該字符范圍像素點數(shù)量的比值作為該樣本與該字符范圍的匹配度,或者若每次移動位置得到的相同位置處該樣本與該字符范圍的像素點的灰度值均為0出現(xiàn)的次數(shù)與該字符范圍像素點數(shù)量的比值均小于所述預(yù)設(shè)的數(shù)值,則將相同位置處該樣本與該字符范圍的像素點的灰度值均為0出現(xiàn)的次數(shù)與該字符范圍像素點數(shù)量的比值的最大值作為該樣本與該字符范圍的匹配度;
確定出與該字符范圍的匹配度最大的樣本,將該樣本標注的字符作為該字符的識別結(jié)果。
所述第二識別子單元,用于對于所述第一識別子單元得到的圖形的另一側(cè)出現(xiàn)的第一個字符范圍,通過采用上下偏移方法將該字符范圍與所述樣本集進行匹配識別出該字符,并將該字符在該圖形中的像素點抹掉,對抹掉像素點后的圖形依次進行去噪、去邊處理;
通知子單元,用于在每次所述第一識別子單元和第二識別子單元執(zhí)行完畢后,若判斷獲知該包含的字符數(shù)量大于1的圖形剩余一個字符,則通知第三識別子單元工作,或者若判斷獲知該包含的字符數(shù)量大于1的圖形剩余的字符數(shù)量大于1個,則按照所述第一識別子單元工作和所述第二識別子單元交替工作的設(shè)置通知所述第一識別子單元工作或所述第二識別子單元工作;
所述第三識別子單元,用于通過采用上下偏移方法將該圖形與所述樣本集進行匹配識別出該圖形剩余的最后一個字符。
第一組合單元5,用于將切割得到的所有圖形包含的字符的識別結(jié)果組合起來得到所述圖形驗證碼的識別結(jié)果。
在前述裝置實施例的基礎(chǔ)上,所述裝置還可以包括如下結(jié)構(gòu):
第二切割單元,用于若所述圖形驗證碼能完全切割成單個字符圖形,則對所述圖形驗證碼進行切割,并將得到的每一個圖形與所述樣本集進行匹配識別出該圖形包含的字符;
第二組合單元,用于將切割得到的所有圖形包含的字符的識別結(jié)果組合起來得到所述圖形驗證碼的識別結(jié)果。
本發(fā)明實施例提供的針對字符組合的圖形驗證碼識別裝置,特別針對粘連驗證碼(非粘連完全兼容),在原有切割,匹配基本流程的基礎(chǔ)上,對切割以及匹配這兩步做了改進:首先本方案在切割方面做了優(yōu)化,拋棄傳統(tǒng)的切出每個字符,再進行每個字符的比較,而是通過簡單的切割,把不粘連的部分先切割開,再根據(jù)寬度判斷切割出來的是幾個字符,大大減低了切割帶來的圖像缺失或者干擾;其次在匹配上采用了雙向滑動加上下偏移機制,通過該機制能使識別率大大提升;最后,本方案具有很高的通用性,既可以兼容簡單的無粘連的驗證碼,又能適用各種不同粘連情況的驗證碼,即本方案通過一種新的機制來更好的達到識別效果,有更好的性能以及復(fù)用性。
本方案通過雙向滑動及上下偏移的匹配的算法,與傳統(tǒng)的完全切割,處理之后再進行匹配具有以下優(yōu)點。
1、提高了識別率。本方案結(jié)合了切割,雙向滑動加偏移,具有很高的識別率,目前統(tǒng)計了粘連驗證碼識別率大于80%,普通驗證碼識別率達到95%,目前達到了較高的識別率。
2、提升了識別性能。本方案通過雙向滑動匹配的算法,對樣本的要求會降低很多,只需要一條標準的樣本庫就可以,因此在性能方面有很大的提升。目前識別速度每秒2-5個,完全滿足需求。
3、具有通用性。本方案提出的驗證碼識別的思路,具有極高的通用性。獲取到樣本之后,可以直接套用本方案的算法,識別出驗證碼。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
本申請是參照根據(jù)本申請實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。術(shù)語“上”、“下”等指示的方位或位置關(guān)系為基于附圖所示的方位或位置關(guān)系,僅是為了便于描述本發(fā)明和簡化描述,而不是指示或暗示所指的裝置或元件必須具有特定的方位、以特定的方位構(gòu)造和操作,因此不能理解為對本發(fā)明的限制。除非另有明確的規(guī)定和限定,術(shù)語“安裝”、“相連”、“連接”應(yīng)做廣義理解,例如,可以是固定連接,也可以是可拆卸連接,或一體地連接;可以是機械連接,也可以是電連接;可以是直接相連,也可以通過中間媒介間接相連,可以是兩個元件內(nèi)部的連通。對于本領(lǐng)域的普通技術(shù)人員而言,可以根據(jù)具體情況理解上述術(shù)語在本發(fā)明中的具體含義。
本發(fā)明的說明書中,說明了大量具體細節(jié)。然而能夠理解的是,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。類似地,應(yīng)當理解,為了精簡本發(fā)明公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋呈反映如下意圖:即所要求保護的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權(quán)利要求書由此明確地并入該具體實施方式,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。本發(fā)明并不局限于任何單一的方面,也不局限于任何單一的實施例,也不局限于這些方面和/或?qū)嵤├娜我饨M合和/或置換。而且,可以單獨使用本發(fā)明的每個方面和/或?qū)嵤├蛘吲c一個或更多其他方面和/或其實施例結(jié)合使用。
最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求和說明書的范圍當中。