亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

Python網站驗證碼識別

2020-01-04 17:48:39
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Python網站驗證碼識別的相關資料,需要的朋友可以參考下
 

0x00 識別涉及技術

驗證碼識別涉及很多方面的內容。入手難度大,但是入手后,可拓展性又非常廣泛,可玩性極強,成就感也很足。

驗證碼圖像處理

驗證碼圖像識別技術主要是操作圖片內的像素點,通過對圖片的像素點進行一系列的操作,最后輸出驗證碼圖像內的每個字符的文本矩陣。

讀取圖片
圖片降噪
圖片切割
圖像文本輸出

驗證字符識別

驗證碼內的字符識別主要以機器學習的分類算法來完成,目前我所利用的字符識別的算法為KNN(K鄰近算法)和SVM (支持向量機算法),后面我 會對這兩個算法的適用場景進行詳細描述。

獲取字符矩陣
矩陣進入分類算法
輸出結果

涉及的Python庫

這次研究主要使用了以下這三個庫

numpy(數學處理庫)
Image(圖像處理庫)
ImageEnhance(圖像處理庫)

驗證碼識別技術難點

驗證碼識別由兩部分組成,分別是驗證碼圖片處理和驗證碼字符學習。

在編碼過程中,我認為難度最大的部分是識別算法的學習和使用。
在寫文檔的時候,我認為難度最大的部分是圖像處理部分,圖像處理部分需要對抗各種干擾因素,對抗不同類型的驗證碼需要不同的算法支持,因此圖像處理程序需要對各種驗證碼具體問題具體分析,不能抱有大而全的思想,務必注重細節處理。

0x01 學習與識別

驗證碼識別的過程分為學習過程與識別過程

學習

Python網站驗證碼識別

識別

Python網站驗證碼識別

Python網站驗證碼識別

上圖代碼運用的是SVM的識別過程

0x02 圖像處理

驗證碼圖像處理腦圖

Python網站驗證碼識別

如上圖所示,驗證碼圖像處理模塊是一個結構規整、內部分支復雜的模塊,整個驗證碼識別準確率全靠這個模塊,可謂是整個驗證碼識別的根本。如 上文所說,圖像處理模塊玩的是圖片內的每一個像素百度百科:像素,因此這個模塊好上手。

Python網站驗證碼識別

上面這兩句便可以打開一個圖像對象,im對象內置許多方法有興趣可以查看Image庫源碼或者參考Python Imaging Library Handbook 圖片增加對比度、銳化、調整亮度、二值化,這四塊是比較規整的模塊,處理調用庫函數即可。下面主要說說圖片降噪和清楚單像素干擾線。

圖片清除噪點

圖片降噪的原理是利用9宮格內信息點(信息像素,一般經過預處理的信息像素為黑色)。

Python網站驗證碼識別

上圖黑色部分為(x,y),單像素噪點處理時分別驗證周圍的八個點是否為白色,如果為白色即可判斷(x,y)為噪點。同理雙像素噪點需要考慮兩個像 素的排列是橫向還是縱向或者是斜向,之后判斷其周圍10個像素是否均為白色像素即可。同理三像素噪點也是這樣,我嘗試的情況三像素噪點不包括 橫向排列和縱向排列。

圖片清除干擾線

對于單像素的干擾線目前可以解決,但是大寬度干擾線則會產生判斷上的誤差,目前不好解決。

Python網站驗證碼識別

上圖的干擾線為單像素,因此通過算法即可解決。

Python網站驗證碼識別

干擾線處理后的圖片如上圖所示。

圖片切割

對于去噪后的圖片,我們需要對圖片進行切割,切割的目的是為了提取信息,方便把圖片中的數字轉化為01形式的文本。 我所采用的切割方式是投影法.

Python網站驗證碼識別

如上圖所示,對于切割數字3,首先需要找到垂線A和B,判斷步驟是:縱向從左向右掃描圖片,找到第一條含有信息點的直線記為A,繼續向右掃描, 當從A開始,找到第一條無信息點的直線記為B,從投影的角度來看,A與B之間X軸上的投影的信息值均大于0,切割A與B之間的圖像后,以新圖像為 基礎,找出C與D,至此便可切割出數字3。

圖片切割目前可以僅可對非粘連字符進行切割,對于粘連字符,我的程序并沒能很好的處理。

信息輸出

當獲取了切割好的圖片,由于圖片只有黑色與白色,因此遍歷每一個像素點,根據像素點的顏色來進行0,1輸出,一般認為黑色像素輸出1,白色像素 輸出0。

Python網站驗證碼識別

0x03 識別算法概述

字符識別算法整體流程很好理解,舉個例子,字符像素文本A進入識別算法,通過對算法的結果進行判斷,便可以完成識別過程。我實踐了兩種識別算 法,第一種是KNN算法,第二種是SVM算法,下面我將以個人的角度來闡述下這兩種算法的原理以及適用場景,個人水平有限,算法細節可以參考我 之后給出的鏈接。

KNN(K鄰近算法)

KNN算法是一種簡單的算法,KNN算法基本思想是把數據轉化為點,通過計算兩點之間的距離來進行判斷。 在n維度下,兩點間距離可以表示為 S = math.sqrt((x1-y1)^2+(x2-y2)^2+.+(xn-yn)^2)。

SVM(支持向量機)

SVM算法相比較KNN算法來說,原理上要復雜復雜的多,SVM算法基本思想是把數據轉化為點,通過把點映射到n維空間上,通過n-1維的超平面 切割,找到最佳切割超平面,通過判斷點在超平面的哪一邊,來判斷點屬于哪一類字符。

Python網站驗證碼識別

但是SVM算法的特點只能在兩類中間比較,因此把字符識別運用到該算法上,還需要在比較過程中加以一個遍歷算法,遍歷算法可以減少大量無效計 算,遍歷的場景是一個有向無環圖。

算法細節文檔鏈接

jerrylead 的blog : Machine Learning
支持向量機通俗導論(理解SVM的三層境界)

0x04 識別算法適用場景

?KNN與SVM的適用場景存在一定區別。

KNN算法在運行過程上來說,并不存在學習過程,只是遍歷已知分類進行距離上的判斷,根據待測數據與已知分類進行比較,找出與待測距離最近的n個數據來進行匹配,因此當已分類的樣本越來越多,KNN算法的運算時間會越來越長。

SVM算法在運行過程中,是存在學習的過程的,通過對已知分類標簽進行兩兩組合,找出每個組合的切割方程。待測數據只需要一個一個計算切割方程,根據切割方程的返回值來判斷下一個執行的是哪個方程即可。0-9數字的判斷,只需要執行9次方程計算即可。SVM多類分類方法

因此如果大規模識別驗證碼,我建議適用SVM作為識別算法。

0x05 實踐細節注意事項

這部分內容是我所遇到的問題。

規則化圖像

當切割的驗證碼以數字呈現在文本里,他們的像素是各不相同的,需要把這些標準化,我選擇標準化在27*30像素是一個經驗值。此外,還需要把新圖 像放置在標準化像素的正中央。

Python網站驗證碼識別

使用SVM構建超平面方程

SVM算法的重點是尋找切割方程,首先需要把待判斷的兩種元素存入到dataArr和labelArr中,通smoP方程尋找b和alphas。

Python網站驗證碼識別

利用方程組預測——遍歷dag圖

由于svm是二分類器,只能判斷是或者不是,只需要使用k一1個決策函數即可得出結果,不存在誤分、拒分區域;另外,由于其特殊的結構,故有一定的容錯性,分類精度較一般的二叉樹方法高。

對于0123456789 共10個字符 共有45種非重復組合。利用dag只需判斷9次即可找出目標。

Python網站驗證碼識別

0x06 實踐總結

運用機器學習算法時,如果不理解實現原理,先直接套接口,總之先實現功能,不必強求對算法的徹底理解。 2. 識別算法是通用的。

處理不同驗證碼,應該有不同的處理策略。

測試發現,主要耗時發生在構建方程過程中,構建方程耗時105s,識別1s。

圖像去噪時對于大寬度的干擾線沒有好的解決辦法(干擾線寬度大于3像素)。 6. 圖像切割在面臨圖像粘連時,目前無很好的處理方法。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人黄色影片在线| 爽爽爽爽爽爽爽成人免费观看| 国产丝袜一区二区三区| 久久精品精品电影网| 日韩大陆欧美高清视频区| 国产精品久久久亚洲| 国内精品小视频在线观看| 中文字幕亚洲第一| 91久久久久久久久久| 一区二区在线视频播放| 国产精品爽爽ⅴa在线观看| 91精品国产乱码久久久久久蜜臀| 欧美精品日韩www.p站| 最近2019中文免费高清视频观看www99| 亚洲激情自拍图| 亚洲**2019国产| 亚洲欧美国产一本综合首页| 亚洲国产成人爱av在线播放| 国产精品99蜜臀久久不卡二区| 欧美片一区二区三区| 日本精品一区二区三区在线播放视频| 亚洲91精品在线| 欧美成人中文字幕在线| 日韩电影中文字幕在线观看| 亚洲网站在线看| 亚洲一区国产精品| 在线视频国产日韩| 中文字幕久热精品在线视频| 国产精品一区二区三区在线播放| 91老司机精品视频| 国产欧美精品va在线观看| 亚洲最新在线视频| 国产精品美女av| 亚洲欧美日本另类| 久久精品久久久久久国产 免费| 国产丝袜视频一区| 九九热这里只有精品免费看| 国产精品视频在线观看| 亚洲一区二区久久| 日韩毛片中文字幕| 成人免费黄色网| 精品久久久久久亚洲精品| 成人在线视频网站| 国模精品系列视频| 亚洲女人被黑人巨大进入| 精品国产乱码久久久久酒店| 久久69精品久久久久久国产越南| 国产成人一区二区三区电影| 久久夜色撩人精品| 欧美精品久久久久久久| 欧美激情精品在线| 国产精品久久久久久av下载红粉| 日韩中文在线中文网三级| 亚洲精品久久在线| 日韩福利伦理影院免费| 亚洲免费人成在线视频观看| 91视频88av| 欧美乱大交xxxxx| 国产精品免费在线免费| 亚洲精品99久久久久中文字幕| 亚洲已满18点击进入在线看片| 91性高湖久久久久久久久_久久99| 欧美日韩免费网站| 欧美精品电影在线| 色av吧综合网| 尤物yw午夜国产精品视频明星| 欧美影院在线播放| 久久久久久久久久久久久久久久久久av| 欧美精品做受xxx性少妇| 久久精品国产2020观看福利| 欧美日韩免费在线观看| 国产一区二区三区在线播放免费观看| 国产亚洲精品一区二区| 亚洲精品自拍第一页| 成人福利视频网| 一区二区三区四区在线观看视频| 性日韩欧美在线视频| 丁香五六月婷婷久久激情| 亚洲a∨日韩av高清在线观看| 欧美日韩xxxxx| 91wwwcom在线观看| 欧美成人精品xxx| 色yeye香蕉凹凸一区二区av| 高清亚洲成在人网站天堂| 九九久久综合网站| 国产日韩欧美日韩| 欧美日韩第一视频| 亚洲自拍av在线| 伊人激情综合网| 国产精品成人va在线观看| 久久久久久中文| 欧美超级乱淫片喷水| 亚洲最大av网| 亚洲国产毛片完整版| 久久久久久久久久久亚洲| 国产一区二区在线免费视频| 日本成人黄色片| 国产一区二区三区四区福利| 色久欧美在线视频观看| 18性欧美xxxⅹ性满足| 亚洲精选一区二区| 欧美视频在线免费看| 国产精品白嫩美女在线观看| 日韩成人在线播放| 欧美激情一二三| 国产精品亚洲网站| 91成人国产在线观看| 亚洲福利在线播放| 在线一区二区日韩| 亚洲美女av在线| 中文字幕日韩在线视频| 91亚洲精品视频| 精品久久久久久国产| 国产精品影院在线观看| 97人洗澡人人免费公开视频碰碰碰| 亚洲成人黄色在线观看| 精品在线小视频| 精品二区三区线观看| 这里只有精品视频| 91精品国产高清自在线看超| 日韩在线欧美在线国产在线| 97碰碰碰免费色视频| 久久久久久久久久婷婷| 尤物yw午夜国产精品视频明星| 欧美精品免费播放| 亚洲精品日韩激情在线电影| 福利二区91精品bt7086| 日韩美女免费线视频| 亚洲色图狂野欧美| 欧美劲爆第一页| 成人免费淫片aa视频免费| 亚洲精品中文字幕有码专区| zzijzzij亚洲日本成熟少妇| 国产97在线|日韩| 精品国产一区二区三区久久久狼| 亚洲欧美色婷婷| 国产97在线播放| 久久久欧美一区二区| 亚洲一区二区中文字幕| 不卡伊人av在线播放| 国产欧美久久久久久| 国产日韩欧美视频在线| 久久视频在线免费观看| 国产精品夜间视频香蕉| 亚洲一区二区三区久久| 欧美性猛xxx| 久久久噜噜噜久久| 国内精品国产三级国产在线专| 欧美日韩电影在线观看| 中文字幕最新精品| 久久69精品久久久久久久电影好| 欧美精品电影在线| 亚洲iv一区二区三区| 日韩欧美在线视频观看| 国产日韩欧美在线视频观看| 国产精品wwwwww| 欧美激情亚洲自拍| 性亚洲最疯狂xxxx高清| 97免费中文视频在线观看| 欧美精品九九久久| 日韩成人在线播放| 欧美黄色三级网站| 精品国内自产拍在线观看| 国产精品嫩草影院久久久|