在學習python經過接口自動登陸網站時,用戶名密碼、cookies、headers都好解決可是在碰到驗證碼這個時就有點棘手了;因而經過網上看貼,看官網完成了對簡單驗證碼的識別,若是是複雜的請看大神的貼這裏解決不了;python
以上兩張爲網站的上比較簡單的驗證碼,沒有加複雜的干擾線也沒有對字體進行彎曲;cookie
識別的代碼用到的python模塊有pytesseract,PIL;pytesseract在win下須要tesseract-ORC支持,這個須要上網下載安裝,並在win的系統環境變量下配置安裝路徑,運行tesseract –v 顯示當前tesseract版本信息表示設置安裝正常學習
如下是識別驗證碼代碼:字體
import pytesseract from PIL import Image def getcode(image): image = Image.open(image) #image.show() #查看打開的驗證碼 im = image.convert("L") #把圖片轉成L單通道,這樣像素點的值在[0~255]以前,區別於普通的RGC圖片爲三通道像素點的值在[0~255,0~255,0~255] #把圖片的白色邊框設置爲黑色,若是沒有可認忽略這個步驟 #1.把圖片上下兩條邊框設置爲黑色 for x in range(im.size[0]): im.putpixel((x,0),0) im.putpixel((x,im.size[1] - 1),0) #2.把圖片左右兩條邊框設置爲黑色 for y in range(im.size[1]): im.putpixel((0,y),0) im.putpixel((im.size[0] - 1,y),0) #將圖片色像素值在150以上的設置爲白色,不然爲黑色 for i in range(im.size[0]): for j in range(im.size[1]): if(im.getpixel((i,j)) > 150): im.putpixel((i,j),255) else: im.putpixel((i,j),0) #im.show() #查看打開的驗證碼 #im.save("xxxxxxxxxxxx") #保存圖片 code = pytesseract.image_to_string(im) print(code) if __name__ == '__main__': getcode("圖片的路徑")
*注意*若是有邊框的圖片在處理時沒有外理邊框,獲得的圖片以下,在程序識別時就會影響準確度:網站
如下是做者對手機拍的一張圖片直接識別和處理後識別的若是spa
手機圖片:rest
直接識別:(咱們看到程序沒法識別)code
用代碼處理後識別:blog