<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用Python機器學習解決驗證碼的資料說明

馬哥Linux運維 ? 來源:未知 ? 2019-05-03 13:43 ? 次閱讀

寫爬蟲有一個繞不過去的問題就是驗證碼,現在驗證碼分類大概有4種:

圖像類

滑動類

點擊類

語音類

今天先來看看圖像類,這類驗證碼大多是數字、字母的組合,國內也有使用漢字的。在這個基礎上增加噪點、干擾線、變形、重疊、不同字體顏色等方法來增加識別難度。相應的,驗證碼識別大體可以分為下面幾個步驟:

灰度處理

增加對比度(可選)

二值化

降噪

傾斜校正分割字符

建立訓練庫

識別

由于是實驗性質的,文中用到的驗證碼均為程序生成而不是批量下載真實的網站驗證碼,這樣做的好處就是可以有大量的知道明確結果的數據集。當需要真實環境下需要獲取數據時,可以使用結合各個大碼平臺來建立數據集進行訓練。

生成驗證碼這里我使用Claptcha這個庫,當然Captcha這個庫也是個不錯的選擇。

為了生成最簡單的純數字、無干擾的驗證碼,首先需要將claptcha.py的285行_drawLine做一些修改,我直接讓這個函數返回None,然后開始生成驗證碼:

這里需要注意ubuntu的字體路徑,也可以在網上下載其他字體使用。生成驗證碼如下:

可以看出,驗證碼有形變。對于這類最簡單的驗證碼,可以直接使用谷歌開源的tesserocr來識別。

首先安裝:

然后開始識別:

可以看出,對于這種簡單的驗證碼,基本什么都不做識別率就已經很高了。有興趣的小伙伴可以用更多的數據來測試,這里我就不展開了。

接下來,在驗證碼背景添加噪點來看看:

生成驗證碼如下:

識別:

效果還可以。接下來生成一個字母數字組合的:

生成驗證碼如下:

第3個為小寫字母o,第4個為大寫字母O,第5個為數字0,第6個為小寫字母z,第7個為大寫字母Z,最后一個是數字2。人眼已經跪了有木有!但現在一般驗證碼對大小寫是不做嚴格區分的,看自動識別什么樣吧:

人眼都跪的計算機當然也廢了。但是,對于一些干擾小、形變不嚴重的,使用tesserocr還是十分簡單方便的。然后將修改的claptcha.py的285行_drawLine還原,看添加干擾線的情況。

加了條干擾線就完全識別不出來了,那么有沒有什么辦法去除干擾線呢?

雖然圖片看上去是黑白的,但還需要進行灰度處理,否則使用load()函數得到的是某個像素點的RGB元組而不是單一值了。處理如下:

處理后的圖片如下:

可以看出處理后圖片銳化了很多,接下來嘗試去除干擾線,常見的4鄰域、8鄰域算法。所謂的X鄰域算法,可以參考手機九宮格輸入法,按鍵5為要判斷的像素點,4鄰域就是判斷上下左右,8鄰域就是判斷周圍8個像素點。如果這4或8個點中255的個數大于某個閾值則判斷這個點為噪音,閾值可以根據實際情況修改。

處理后的圖片如下:

好像……根本沒卵用???!確實是這樣的,因為示例中的圖片干擾線的寬度和數字是一樣的。對于干擾線和數據像素不同的,比如Captcha生成的驗證碼:

從左到右依次是原圖、二值化、去除干擾線的情況,總體降噪的效果還是比較明顯的。另外降噪可以多次執行,比如我對上面的降噪后結果再進行依次降噪,可以得到下面的效果:

再進行識別得到了結果:

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器學習
    +關注

    關注

    66

    文章

    8164

    瀏覽量

    130826
  • python
    +關注

    關注

    52

    文章

    4695

    瀏覽量

    83551

原文標題:用Python機器學習搞定驗證碼

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    鴻蒙原生應用/元服務開發-Serverless賬戶驗證碼的問題

    在應用/元服務早期使用過程中,-Serverless賬戶驗證碼的格式是[AGC][應用/元服務名稱],如下圖。 但是,在最近,[應用/元服務]名稱直接變成了【default】,用戶收到這種驗證碼后,心里存有疑慮的,這是哪里配置或者設置的問題嗎?大家有遇到同樣的問題嗎?如何
    發表于 12-27 15:55

    織夢dedecms登陸提示“驗證碼不正確”的完整解決方案

    很多朋友碰到了網站登陸的時候遇到了驗證碼不正確,考慮到剛剛設置了網站文件夾的權限,估計是權限不夠造成的,后來經過了解,dedecms的驗證碼是data目錄的session文件夾,在服務器上把
    發表于 03-10 23:53

    10種意想不到的驗證碼風格設計

    本帖最后由 A670521546 于 2011-5-5 14:05 編輯 10種意想不到的驗證碼風格設計2011-04-29 09:34 | 15611次閱讀 | 來源:開源中國社區 【已有
    發表于 05-05 14:03

    什么時候才能發帖不需要驗證碼?

    每次發帖都要驗證碼,什么時候才能發帖不需要驗證碼?
    發表于 06-04 19:17

    12306圖片驗證碼難倒了誰?

    不認識型驗證碼:圣女果、奇異果、鳳梨、抄手、火龍果等  有網友表示,圖片驗證碼的初衷本是為了防止各種搶票軟件,區別人工和機器,更方便普通用戶買票,但是因為圖片信息不夠貼近生活常識,像素不清晰,輸入
    發表于 12-08 10:29

    論壇注冊時不顯示驗證碼

    論壇注冊時不顯示驗證碼啊,提交時提示驗證碼錯誤,希望早點解決,這是用別人的號發的?。。。。。。。。。?!
    發表于 03-01 21:45

    無法驗證郵箱,總是提示驗證碼錯誤,驗證碼明明是正確的。

    `無法驗證郵箱,總是提示驗證碼錯誤,驗證碼明明是正確的。是不是系統的bug?`
    發表于 05-12 10:41

    為什么短信驗證碼在我們生活中頻頻出現

    隨著時代的進步和科學技術的發展,越來越多的企業已經離不開短信驗證碼發送平臺了,因為它可以幫助企業處理大量的用戶信息,提高接收短信驗證碼的經驗意識。大型網站提供了短信驗證碼功能,更準確、更安全地保證了
    發表于 04-16 23:12

    一文解析驗證碼與打平臺的攻防對抗

    1、驗證碼與打平臺的攻防對抗  眾所周知,驗證碼的出現是為了區分人和機器,但隨著科技的發展,黑產從業者的可圖之利增多,驗證碼的戰場也進入了
    發表于 09-28 11:02

    java圖形驗證碼生成的設計實現

    今天來學習下圖形驗證碼的生成,首先依賴開源組件:<dependency><groupId>com.github.penggle<
    發表于 10-21 14:42

    平臺是如何高效的破解市面上各家驗證碼平臺的各種形式驗證碼的?

    ,比如說引入機器學習和神經網絡等人工智能相關技術來智能識別圖片中的驗證碼要素,提高識別驗證要素的準確率等。以下是某個打平臺相關人工智能技術
    發表于 11-01 15:21

    【國民技術N32項目移植】手機驗證碼項目移植4--手機驗證碼計算

    概述:前面3篇已經完成了所有的準備工作,本篇是最后的攻堅。TOTP驗證碼算法實際是使用HOTP算法,只是傳給HOTP算法的參數counter是基于時間算出來的,本項目采用HOTP算法算出5位密碼
    發表于 02-24 14:45

    簡單地描述了如何用機器學習繞過E-ZPass New York網站的驗證碼

    ,來防止電腦自動填寫表單。但是隨著深度學習和計算機視覺的興起,它們現在往往很容易被攻破。我在讀Adrian Rosebrock的優秀的著作《Python計算機視覺深度學習》。在書中,Adrian簡單地描述了他如何用
    的頭像 發表于 01-22 09:15 ?6070次閱讀
    簡單地描述了如何用<b class='flag-5'>機器</b><b class='flag-5'>學習</b>繞過E-ZPass New York網站的<b class='flag-5'>驗證碼</b>

    如何利用機器學習破解驗證碼的源代碼教程

    驗證碼的設計是為了防止計算機自動填寫表格,驗證你是一個真實的“人”。但隨著深度學習和計算機視覺的興起,現在他們往往容易被擊敗。
    的頭像 發表于 04-30 17:42 ?5614次閱讀
    如何利用<b class='flag-5'>機器</b><b class='flag-5'>學習</b>破解<b class='flag-5'>驗證碼</b>的源代碼教程

    python機器學習筆記資料免費下載

    本文檔的主要內容詳細介紹的是python機器學習筆記資料免費python機器
    發表于 03-01 10:09 ?37次下載
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>