python中識別驗證碼的方法?這個問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!
成都創(chuàng)新互聯(lián)是專業(yè)的汨羅網(wǎng)站建設(shè)公司,汨羅接單;提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行汨羅網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
我們首先識別最簡單的一種驗證碼,即圖形驗證碼。這種驗證碼最早出現(xiàn),現(xiàn)在也很常見,一般由4位字母或者數(shù)字組成。例如,中國知網(wǎng)的注冊頁面有類似的驗證碼,頁面如下所示:

表單中最后一項就是圖形驗證碼,我們必須完全正確輸入圖中的字符才可以完成注冊。
更多有關(guān)驗證碼的知識,可以參考這些文章:
Python3爬蟲進(jìn)階:識別圖形驗證碼
Python3爬蟲進(jìn)階:識別極驗滑動驗證碼
Python3爬蟲進(jìn)階:識別點觸點選驗證碼
Python3爬蟲進(jìn)階:識別微博宮格驗證碼
·本節(jié)目標(biāo)以知網(wǎng)的驗證碼為例,講解利用OCR技術(shù)識別圖形驗證碼的方法。
·準(zhǔn)備工作識別圖形驗證碼需要庫tesserocr,以mac安裝為例:在mac下,我們首先使用Homebrew安裝ImageMagick和tesseract庫: brew install imagemagickbrew install tesseract 接下來再安裝tesserocr即可:pip3 install tesserocr pillow這樣我們就完成了 tesserocr的安裝。
·獲取驗證碼為了便于實驗,我們先將驗證碼的圖片保存到本地。打開開發(fā)者工具,找到驗證碼元素。驗證碼元素是一張圖片,它的ser屬 性是CheckCode.aspk。所以我們直接打開如下鏈接就可以看到一個驗證碼,右鍵保存即可,將其命名為code.jpg:

這樣我們就得到一張驗證碼圖片,以供測試識別使用。
識別測試
接下來新建一個項目,將驗證碼圖片放到項目根目錄下,用tesserocr庫識別該驗證碼,代碼如下所示:

這里我們新建了一個Image對戲那個,調(diào)用了tesserocr的image_to_text( )方法。傳入該Image對象即可完成識別,實現(xiàn)過程非常簡單,結(jié)果如下:

我們可以看到,識別的結(jié)果和實際結(jié)果有偏差,這是因為驗證碼內(nèi)的多余線條干擾了圖片的識別。
另外,tesserocr還有一個更加簡單的方法,這個方法可以直接將圖片文件轉(zhuǎn)為字符串,代碼如下:

不過這種方法的識別效果不如上一種的好。
驗證碼處理
對于上面的圖片,我們可以看到其實并沒有完全識別正確,所以我們需要對圖像作進(jìn)一步的處理,如灰度轉(zhuǎn)換、二值化等操作。
我們可以利用Image對象的convert( )方法參數(shù)傳入L,即可將圖片轉(zhuǎn)化為灰度圖像,代碼如下:

傳入1即可將圖片進(jìn)行二值化處理,如下所示:

我們還可以指定二值化的閾值。上面的方法采用的是默認(rèn)閾值127。不過我們不能直接轉(zhuǎn)化原圖,要將原圖先轉(zhuǎn)化為灰度圖像,然后再指定二值化閾值,代碼如下:

在這里,變量threshold代表二值化閾值,閾值設(shè)置為160,之后我們來看看我們的結(jié)果:

我們可以看到現(xiàn)在的二維碼就比較方便我們進(jìn)行識別了;那么對于一些有干擾的圖片,我們做一些灰度和二值化處理,這會提高圖片識別的正確率。
感謝各位的閱讀!看完上述內(nèi)容,你們對python中識別驗證碼的方法大概了解了嗎?希望文章內(nèi)容對大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
新聞名稱:python中識別驗證碼的方法
地址分享:http://chinadenli.net/article42/jpsjhc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站、品牌網(wǎng)站設(shè)計、動態(tài)網(wǎng)站、標(biāo)簽優(yōu)化、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)