亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

如何識(shí)別圖片驗(yàn)證碼?

y1chuan / 756人閱讀

摘要:圖片驗(yàn)證碼是目前最常用的一種。神經(jīng)網(wǎng)絡(luò)以上驗(yàn)證碼識(shí)別都依賴于字符切分,切分的好壞幾乎直接決定識(shí)別的準(zhǔn)確程度。目前驗(yàn)證碼識(shí)別最先進(jìn)的是谷歌在識(shí)別街景圖像中門牌號(hào)碼中使用的一套的算法。

全自動(dòng)區(qū)分計(jì)算機(jī)和人類的圖靈測(cè)試(Completely Automated Public Turing test to tell Computers and Humans Apart,簡(jiǎn)稱CAPTCHA),俗稱驗(yàn)證碼,是一種區(qū)分用戶是計(jì)算機(jī)和人的公共全自動(dòng)程序。驗(yàn)證碼的主要目的是強(qiáng)制人機(jī)交互來抵御機(jī)器自動(dòng)化攻擊,為了確保服務(wù)器系統(tǒng)的穩(wěn)定和用戶信息的安全,越來越多的網(wǎng)站采用了驗(yàn)證碼技術(shù)。圖片驗(yàn)證碼是目前最常用的一種。

最近在一個(gè)爬蟲項(xiàng)目中遇到了驗(yàn)證碼,需要機(jī)器自動(dòng)識(shí)別繞過。這些驗(yàn)證碼大都分辨率都較低,本身信息量不大。在網(wǎng)上調(diào)研了資料和文獻(xiàn)后,分別采用OCR識(shí)別和模板庫(kù)匹配方法對(duì)不同類型驗(yàn)證碼進(jìn)行了識(shí)別。主要過程可以分解為三個(gè)步驟:1.圖片清理,2.字符切分,3.字符識(shí)別。以下結(jié)合工作經(jīng)驗(yàn)和調(diào)研內(nèi)容講解一些常用的驗(yàn)證碼識(shí)別方法和過程。

1.圖片清理

圖片清理是為接下來的機(jī)器學(xué)習(xí)或模板匹配階段做準(zhǔn)備的,指通過灰度化、二值化、干擾點(diǎn)清理等過程,得到比較干凈的圖片數(shù)據(jù),具體樣例見下表。

1.1 彩色去噪

在計(jì)算機(jī)中使用最多的 RGB色彩空間,分別對(duì)應(yīng)紅、綠、藍(lán)三種顏色,通過調(diào)配三個(gè)分量的比例來組成各種顏色。以最常見的32位顏色為例,一個(gè)分量是用8位來表示,最大值是255,灰度圖是指組成顏色的三個(gè)分量相等。原始彩色圖片包含的信息量是最大的,如果驗(yàn)證碼圖片中有一些利用顏色反差加的干擾點(diǎn)或者線條,最好能在該階段做初步清理。比較簡(jiǎn)單的一種處理方法是采用33矩陣對(duì)圖像進(jìn)行平滑處理,即對(duì)每個(gè)像素取他所在33矩陣所有點(diǎn)的RGB均值,分別作為新的RGB值。稍微做點(diǎn)優(yōu)化,取3*3矩陣中RGB三維歐式距離最接近均值的點(diǎn)作為新值。

1.2 灰度化

在彩色電視機(jī)系統(tǒng)中,通常使用一種叫 YUV 的色彩空間,其中Y表示亮度信號(hào),對(duì)于人眼來說,亮度信號(hào)(Y)是最敏感的,如果將彩色圖像轉(zhuǎn)換為灰度圖像,僅僅需要轉(zhuǎn)換并保存亮度信號(hào)就可以。從RGB到Y(jié)UV空間的Y轉(zhuǎn)換有一個(gè)很著名的心理學(xué)公式:Y = 0.299R + 0.587G + 0.114B。

而實(shí)際應(yīng)用時(shí),將系數(shù)縮放1000倍來實(shí)現(xiàn)整數(shù)運(yùn)算:Gray = (R299 + G587 + B114 + 500) / 1000 。注意后面那個(gè)除法是整數(shù)除法,所以需要加上500來實(shí)現(xiàn)四舍五入。該公式的另一個(gè)簡(jiǎn)化變種也很流行:Gray = (R30 + G59 + B11 + 50) / 100。更快的算法是采用移位代替除法,所以可以將系數(shù)縮放成 2的整數(shù)冪,再做右移操作。該整數(shù)取7從精度和速度上最合適:Gray = (R0.2992^7 + G0.5872^7 + B0.1142^7)>>7 = (R38 + G75 + B*15)>>7

1.3 二值化

為了簡(jiǎn)化接下來的計(jì)算,需要把灰度圖片轉(zhuǎn)化成黑白二值圖。默認(rèn)情況下值大于127的像素點(diǎn)被設(shè)置為白色,其余像素點(diǎn)設(shè)置為黑色。當(dāng)然,這個(gè)閾值也需要根據(jù)圖片的實(shí)際情況計(jì)算調(diào)整。一般采用直方圖統(tǒng)計(jì)確定動(dòng)態(tài)閾值的方法比較靠譜,白底黑字的取直方圖靠左邊的波谷位置作為閾值,黑底白字則取直方圖右邊的波谷位置作為閾值,將背景和字符作很好的區(qū)分。

1.4 底色統(tǒng)一

如果是黑底白字的圖片,需要轉(zhuǎn)換成白底黑字,如以上圖B。

1.5 干擾點(diǎn)清理

在黑白二值圖片去噪階段,常用的去噪方法為聯(lián)通性去噪,通常采用8向聯(lián)通來計(jì)算連通點(diǎn)個(gè)數(shù),若某個(gè)點(diǎn)的連通點(diǎn)數(shù)目小于預(yù)設(shè)的閥值,則認(rèn)為這些點(diǎn)都是噪聲點(diǎn)。這一簡(jiǎn)單粗暴的清理方法,通常情況下是非常有效的。

2 字符切分

該階段對(duì)前期預(yù)處理后的圖片進(jìn)行切割處理,定位和分離出整幅圖片中的每個(gè)孤立的字符主體部分。主要采用X軸和Y軸投影的方法,即統(tǒng)計(jì)對(duì)應(yīng)坐標(biāo)上黑色像素點(diǎn)的個(gè)數(shù)。對(duì)于圖片

得到的X軸和Y軸投影分別如下。利用X軸投影可以切割出多帶帶的字符,再分別利用Y軸投影,裁剪掉頂部和底部的空白部分。

OCR軟件識(shí)別

我們使用的是開源的OCR識(shí)別引擎Tesseract,初期由HP實(shí)驗(yàn)室研發(fā),后來貢獻(xiàn)給了開源軟件業(yè),后經(jīng)由Google進(jìn)行優(yōu)化并重新發(fā)布。調(diào)用代碼以及識(shí)別效果如下:

api = tesseract.TessBaseAPI()
api.Init(".","eng",tesseract.OEM_TESSERACT_ONLY) #初始化
api.SetPageSegMode(tesseract.PSM_SINGLE_LINE) #設(shè)置為單行字符串模式
api.SetVariable("tessedit_char_whitelist", whitelist) #設(shè)置白名單
stringOCR = tesseract.ProcessPagesBuffer(mBuffer, len(mBuffer), api)

該方法的優(yōu)點(diǎn)是:開發(fā)量少;比較通用,適合于各種變形較少的驗(yàn)證碼;對(duì)于扭曲不嚴(yán)重的字母和數(shù)字識(shí)別率高。缺點(diǎn)也很明顯:對(duì)于扭曲的字母和數(shù)字識(shí)別率大大降低;對(duì)于字符間有粘連的驗(yàn)證碼幾乎難以正確識(shí)別;很難針對(duì)特定網(wǎng)站的驗(yàn)證碼做定制開發(fā)。

4.模板庫(kù)匹配

4.1 建立字符模板庫(kù)

首先需要針對(duì)目標(biāo)網(wǎng)站收集大量的驗(yàn)證碼;然后根據(jù)上一章節(jié)的方法,進(jìn)行圖片清理;最后按照固定的長(zhǎng)寬值切分出字符模板圖,保存文件名帶上對(duì)應(yīng)字符的標(biāo)記。

4.2 字符匹配

首先,把目標(biāo)驗(yàn)證碼圖片按字符個(gè)數(shù)切分,這里的圖片切分方法必須與模板制作時(shí)的切分方法一致,得到與模板圖同樣大小的字符圖。接下來通常的做法是使用漢明距離或編輯距離定義相似度,并用KNN方法得到K個(gè)最相似的字符,最后從K個(gè)字符中選取出現(xiàn)次數(shù)最多的那個(gè)作為匹配結(jié)果。參考了文獻(xiàn)[1]中K取值和字符識(shí)別率的變化關(guān)系(如下圖)。

然后,我們把K取值為5。并且把相似度重新定義為:matchScore = dotMatch^2 / (dotCaptcha * dotTemplate),其中dotMatch為驗(yàn)證碼字符圖與模板圖對(duì)應(yīng)位置都是黑色點(diǎn)的個(gè)數(shù),dotCaptcha為驗(yàn)證碼字符圖中黑色點(diǎn)個(gè)數(shù),而dotTemplate為模板圖中黑色點(diǎn)個(gè)數(shù)。取這個(gè)分母是為了防止某些黑色點(diǎn)較多的模板圖在匹配度計(jì)算中始終得到較大值。識(shí)別效果如下表:

該方法的優(yōu)點(diǎn)是:原理簡(jiǎn)單直觀;可以針對(duì)不同網(wǎng)站定制優(yōu)化;對(duì)于扭曲的字母和數(shù)字識(shí)別率較高。缺點(diǎn)是:開發(fā)量大,需要定制開發(fā);需要收集大量的字符圖片庫(kù);字符變化很多的情況,匹配次數(shù)增加速度下降;對(duì)于字符有粘連的圖片識(shí)別率低;

支持向量機(jī)

支持向量機(jī)通俗來講是一種二類分類模型,其基本模型定義為特征空間上的間隔最大的線性分類器,其學(xué)習(xí)策略便是間隔最大化,最終可轉(zhuǎn)化為一個(gè)凸二次規(guī)劃問題的求解。實(shí)際應(yīng)用上,往往遇到的是非線性可分得情況,因此通過核函數(shù)把低維向量映射到更高維空間,使得樣本滿足線性可分。

驗(yàn)證碼識(shí)別問題實(shí)際上是其中單個(gè)字符識(shí)別問題,而在字符可窮舉的情況下,比如只有英文字符和數(shù)字,單個(gè)字符識(shí)別問題其實(shí)是一個(gè)分類問題。一個(gè)英文字母或數(shù)字表示一類,而驗(yàn)證碼中切分后得到的單個(gè)字符需要被機(jī)器自動(dòng)分到某一類。一般情況下,把單個(gè)字符的灰度圖片轉(zhuǎn)成整形數(shù)組,數(shù)組的每一個(gè)元素表示圖片的一個(gè)像素,即一個(gè)特征維度。我們切分得到的圖片大小為10x16=160像素,即有160個(gè)特征,當(dāng)特征數(shù)量多且特征之間關(guān)系不明確時(shí),采用支持向量機(jī)分類比較合適。

神經(jīng)網(wǎng)絡(luò)

以上驗(yàn)證碼識(shí)別都依賴于字符切分,切分的好壞幾乎直接決定識(shí)別的準(zhǔn)確程度。而對(duì)于有字符粘連的圖片,往往識(shí)別率就會(huì)低很多。目前驗(yàn)證碼識(shí)別最先進(jìn)的是谷歌在識(shí)別“街景”圖像中門牌號(hào)碼中使用的一套的算法。該算法將定位、分割和識(shí)別等幾個(gè)步驟統(tǒng)一起來,采用一種“深度卷積神經(jīng)網(wǎng)絡(luò)”(deep convolutional neural network)方法進(jìn)行識(shí)別,準(zhǔn)確率可以達(dá)到99%以上。谷歌拿自有的reCAPTCHA驗(yàn)證碼做了測(cè)試,結(jié)果發(fā)現(xiàn),對(duì)于難度最大的reCAPTCHA驗(yàn)證碼,新算法的準(zhǔn)確率都達(dá)到 99.8%,這可能也好于大多數(shù)人為驗(yàn)證。

驗(yàn)證碼作為一種輔助安全手段在Web安全中有著特殊的地位,了解驗(yàn)證碼識(shí)別的方法和原理,不僅有利于繞過驗(yàn)證碼抓取網(wǎng)站內(nèi)容,而且有利于設(shè)計(jì)更安全合理的驗(yàn)證碼。

網(wǎng)易云安全(易盾)行為式驗(yàn)證碼超10億次完美驗(yàn)證,堅(jiān)固守衛(wèi)網(wǎng)站安全第一道防線。網(wǎng)易云易盾提供新一代網(wǎng)站驗(yàn)證碼,包括智能驗(yàn)證碼、滑動(dòng)驗(yàn)證碼等形式,驗(yàn)證碼接口穩(wěn)定性 99.9%,感知威脅可智能切換驗(yàn)證難度,告別繁瑣驗(yàn)證,保護(hù)業(yè)務(wù)安全,點(diǎn)擊可免費(fèi)試用。

文章來源: 網(wǎng)易云社區(qū)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/25404.html

相關(guān)文章

  • node識(shí)別驗(yàn)證

    摘要:驗(yàn)證碼的識(shí)別成功率跟圖片質(zhì)量關(guān)系密切,一般拿到后的驗(yàn)證碼都得經(jīng)過灰度化,二值化,去噪,利用就可以很方便的做到。 了解驗(yàn)證碼 什么是驗(yàn)證碼? 所謂驗(yàn)證碼,就是將一串隨機(jī)產(chǎn)生的數(shù)字或符號(hào),生成一幅圖片,圖片里加上一些干擾象素(防止OCR),由用戶肉眼識(shí)別其中的驗(yàn)證碼信息,輸入表單提交網(wǎng)站驗(yàn)證,驗(yàn)證成功后才能使用某項(xiàng)功能,通俗說就是一種區(qū)分用戶是計(jì)算機(jī)和人的公共全自動(dòng)程序 驗(yàn)證碼的作用 可以...

    levy9527 評(píng)論0 收藏0
  • Python圖像處理之圖片驗(yàn)證識(shí)別

    摘要:在上一篇博客圖像處理之圖片文字識(shí)別中我們介紹了在中如何利用軟件來識(shí)別圖片中的英文與中文,本文將具體介紹如何在中利用軟件來識(shí)別驗(yàn)證碼數(shù)字加字母。 ??在上一篇博客Python圖像處理之圖片文字識(shí)別(OCR)中我們介紹了在Python中如何利用Tesseract軟件來識(shí)別圖片中的英文與中文,本文將具體介紹如何在Python中利用Tesseract軟件來識(shí)別驗(yàn)證碼(數(shù)字加字母)。??我們?cè)诰W(wǎng)...

    kk_miles 評(píng)論0 收藏0
  • 驗(yàn)證識(shí)別

    摘要:下面我們便來講種驗(yàn)證碼的識(shí)別方式和一些思路。哈哈庫(kù)其實(shí),驗(yàn)證碼識(shí)別歸根到底還是對(duì)各種各樣圖片的識(shí)別和操作,中有很對(duì)圖像處理的庫(kù),其中就是其中之一。所以在處理驗(yàn)證碼識(shí)別之前,必須先了解庫(kù)和。第五步,按照規(guī)定軌跡進(jìn)行拖動(dòng),完成驗(yàn)證。 寫在前面 現(xiàn)在,很多網(wǎng)站采取各種各樣的措施來反爬蟲,其中之一就是使用驗(yàn)證碼。當(dāng)我們?cè)L問網(wǎng)頁(yè)時(shí),必須先通過驗(yàn)證碼才能夠訪問頁(yè)面。下面我們便來講2種驗(yàn)證碼的識(shí)別方...

    keke 評(píng)論0 收藏0
  • 驗(yàn)證識(shí)別

    摘要:下面我們便來講種驗(yàn)證碼的識(shí)別方式和一些思路。哈哈庫(kù)其實(shí),驗(yàn)證碼識(shí)別歸根到底還是對(duì)各種各樣圖片的識(shí)別和操作,中有很對(duì)圖像處理的庫(kù),其中就是其中之一。所以在處理驗(yàn)證碼識(shí)別之前,必須先了解庫(kù)和。第五步,按照規(guī)定軌跡進(jìn)行拖動(dòng),完成驗(yàn)證。 寫在前面 現(xiàn)在,很多網(wǎng)站采取各種各樣的措施來反爬蟲,其中之一就是使用驗(yàn)證碼。當(dāng)我們?cè)L問網(wǎng)頁(yè)時(shí),必須先通過驗(yàn)證碼才能夠訪問頁(yè)面。下面我們便來講2種驗(yàn)證碼的識(shí)別方...

    willin 評(píng)論0 收藏0
  • 驗(yàn)證識(shí)別

    摘要:下面我們便來講種驗(yàn)證碼的識(shí)別方式和一些思路。哈哈庫(kù)其實(shí),驗(yàn)證碼識(shí)別歸根到底還是對(duì)各種各樣圖片的識(shí)別和操作,中有很對(duì)圖像處理的庫(kù),其中就是其中之一。所以在處理驗(yàn)證碼識(shí)別之前,必須先了解庫(kù)和。第五步,按照規(guī)定軌跡進(jìn)行拖動(dòng),完成驗(yàn)證。 寫在前面 現(xiàn)在,很多網(wǎng)站采取各種各樣的措施來反爬蟲,其中之一就是使用驗(yàn)證碼。當(dāng)我們?cè)L問網(wǎng)頁(yè)時(shí),必須先通過驗(yàn)證碼才能夠訪問頁(yè)面。下面我們便來講2種驗(yàn)證碼的識(shí)別方...

    k00baa 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<