日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python 識別登錄驗證碼圖片功能的實現代碼(完整代碼)

瀏覽:236日期:2022-07-18 17:53:35

在編寫自動化測試用例的時候,每次登錄都需要輸入驗證碼,后來想把讓python自己識別圖片里的驗證碼,不需要自己手動登陸,所以查了一下識別功能怎么實現,做一下筆記。

首選導入一些用到的庫,re、Image、pytesseract、selenium、time

import re # 用于正則from PIL import Image # 用于打開圖片和對圖片處理import pytesseract # 用于圖片轉文字from selenium import webdriver # 用于打開網站import time # 代碼運行停頓

首先需要獲取驗證碼圖片,才能進一步識別。

創建類,定義webdriver和find_element_by_selector方法,用來打開網頁和定位驗證碼圖片的元素

class VerificationCode: def __init__(self): self.driver = webdriver.Firefox() self.find_element = self.driver.find_element_by_css_selector

然后打開瀏覽器截取驗證碼圖片

def get_pictures(self): self.driver.get(’http://123.255.123.3’) # 打開登陸頁面 self.driver.save_screenshot(’pictures.png’) # 全屏截圖 page_snap_obj = Image.open(’pictures.png’) img = self.find_element(’#pic’) # 驗證碼元素位置 time.sleep(1) location = img.location size = img.size # 獲取驗證碼的大小參數 left = location[’x’] top = location[’y’] right = left + size[’width’] bottom = top + size[’height’] image_obj = page_snap_obj.crop((left, top, right, bottom)) # 按照驗證碼的長寬,切割驗證碼 image_obj.show() # 打開切割后的完整驗證碼 self.driver.close() # 處理完驗證碼后關閉瀏覽器 return image_obj

未處理前的驗證碼圖片如下:

python 識別登錄驗證碼圖片功能的實現代碼(完整代碼)

未處理的驗證碼圖片,對于python來說識別率較低,仔細看可以發現圖片里有很對五顏六色擾亂識別的點,非常影響識別率。

下面對獲取的驗證碼進行處理。

首先用convert把圖片轉成黑白色。設置threshold閾值,超過閾值的為黑色

def processing_image(self): image_obj = self.get_pictures() # 獲取驗證碼 img = image_obj.convert('L') # 轉灰度 pixdata = img.load() w, h = img.size threshold = 160 # 該閾值不適合所有驗證碼,具體閾值請根據驗證碼情況設置 # 遍歷所有像素,大于閾值的為黑色 for y in range(h): for x in range(w):if pixdata[x, y] < threshold: pixdata[x, y] = 0else: pixdata[x, y] = 255 return img

經過灰度處理后的圖片

python 識別登錄驗證碼圖片功能的實現代碼(完整代碼)

然后刪除一些擾亂識別的像素點。

def delete_spot(self): images = self.processing_image() data = images.getdata() w, h = images.size black_point = 0 for x in range(1, w - 1): for y in range(1, h - 1):mid_pixel = data[w * y + x] # 中央像素點像素值if mid_pixel < 50: # 找出上下左右四個方向像素點像素值 top_pixel = data[w * (y - 1) + x] left_pixel = data[w * y + (x - 1)] down_pixel = data[w * (y + 1) + x] right_pixel = data[w * y + (x + 1)] # 判斷上下左右的黑色像素點總個數 if top_pixel < 10: black_point += 1 if left_pixel < 10: black_point += 1 if down_pixel < 10: black_point += 1 if right_pixel < 10: black_point += 1 if black_point < 1: images.putpixel((x, y), 255) black_point = 0 # images.show() return images

經過去除噪點處理后的圖片

python 識別登錄驗證碼圖片功能的實現代碼(完整代碼)

最后把處理后的圖片轉成文字。

先設置pytesseract的路徑,因為默認路徑是錯的,然后轉換圖片為文字,由于個別圖片中識別會出現處理遺漏,會被識別成空格或則點或則分號什么的,所以增加了一個去除驗證碼中特殊字符的處理。

PS:tesseract文件下載鏈接

def image_str(self): image = self.delete_spot() pytesseract.pytesseract.tesseract_cmd = r'C:Program FilesTesseract-OCRtesseract.exe' # 設置pyteseract路徑 result = pytesseract.image_to_string(image) # 圖片轉文字 resultj = re.sub(u'([^u4e00-u9fa5u0030-u0039u0041-u005au0061-u007a])', '', result) # 去除識別出來的特殊字符 result_four = resultj[0:4] # 只獲取前4個字符 # print(resultj) # 打印識別的驗證碼 return result_four

完整代碼如下:

import re # 用于正則from PIL import Image # 用于打開圖片和對圖片處理import pytesseract # 用于圖片轉文字from selenium import webdriver # 用于打開網站import time # 代碼運行停頓 class VerificationCode: def __init__(self): self.driver = webdriver.Firefox() self.find_element = self.driver.find_element_by_css_selector def get_pictures(self): self.driver.get(’http://123.255.123.3’) # 打開登陸頁面 self.driver.save_screenshot(’pictures.png’) # 全屏截圖 page_snap_obj = Image.open(’pictures.png’) img = self.find_element(’#pic’) # 驗證碼元素位置 time.sleep(1) location = img.location size = img.size # 獲取驗證碼的大小參數 left = location[’x’] top = location[’y’] right = left + size[’width’] bottom = top + size[’height’] image_obj = page_snap_obj.crop((left, top, right, bottom)) # 按照驗證碼的長寬,切割驗證碼 image_obj.show() # 打開切割后的完整驗證碼 self.driver.close() # 處理完驗證碼后關閉瀏覽器 return image_obj def processing_image(self): image_obj = self.get_pictures() # 獲取驗證碼 img = image_obj.convert('L') # 轉灰度 pixdata = img.load() w, h = img.size threshold = 160 # 遍歷所有像素,大于閾值的為黑色 for y in range(h): for x in range(w):if pixdata[x, y] < threshold: pixdata[x, y] = 0else: pixdata[x, y] = 255 return img def delete_spot(self): images = self.processing_image() data = images.getdata() w, h = images.size black_point = 0 for x in range(1, w - 1): for y in range(1, h - 1):mid_pixel = data[w * y + x] # 中央像素點像素值if mid_pixel < 50: # 找出上下左右四個方向像素點像素值 top_pixel = data[w * (y - 1) + x] left_pixel = data[w * y + (x - 1)] down_pixel = data[w * (y + 1) + x] right_pixel = data[w * y + (x + 1)] # 判斷上下左右的黑色像素點總個數 if top_pixel < 10: black_point += 1 if left_pixel < 10: black_point += 1 if down_pixel < 10: black_point += 1 if right_pixel < 10: black_point += 1 if black_point < 1: images.putpixel((x, y), 255) black_point = 0 # images.show() return images def image_str(self): image = self.delete_spot() pytesseract.pytesseract.tesseract_cmd = r'C:Program FilesTesseract-OCRtesseract.exe' # 設置pyteseract路徑 result = pytesseract.image_to_string(image) # 圖片轉文字 resultj = re.sub(u'([^u4e00-u9fa5u0030-u0039u0041-u005au0061-u007a])', '', result) # 去除識別出來的特殊字符 result_four = resultj[0:4] # 只獲取前4個字符 # print(resultj) # 打印識別的驗證碼 return result_four if __name__ == ’__main__’: a = VerificationCode() a.image_str()

看評論有很多人需要tesseract.exe文件,但是由于文件過大,發郵件會出現無法下載的情況,有需要的可以在一下連接里下載tesseract.exe文件

到此這篇關于python 識別登錄驗證碼圖片(完整代碼)的文章就介紹到這了,更多相關python識別登錄驗證碼圖片內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品一区二区免费福利视频 | 亚洲精品九九| 欧美日韩高清| 99国产精品99久久久久久粉嫩| 国产成人免费| 日韩在线视频精品| 久久久久中文| 免费日韩视频| 日韩av不卡一区二区| 久久99久久久精品欧美| 岛国av在线网站| 国产探花一区在线观看| 97精品一区二区| 91久久亚洲| 日本国产亚洲| 97人人精品| 欧美天堂亚洲电影院在线观看| 亚洲精品影视| 国产suv精品一区二区四区视频 | 亚洲一二av| 欧美成人精品午夜一区二区| 欧美日韩视频免费观看| 亚洲黄色影院| 国产剧情一区| 久久视频精品| 啪啪亚洲精品| 日韩大片在线| 日av在线不卡| 高清久久精品| 在线一区二区三区视频| 免费在线日韩av| 久久激情网站| 丝瓜av网站精品一区二区| 国产精品高清一区二区| 激情综合网站| 久久不见久久见免费视频7| 亚洲国产影院| 国产精品观看| 免费在线观看精品| 一区二区三区四区日本视频| 日韩中文字幕无砖| 久久99精品久久久久久园产越南 | 美女视频网站久久| 亚洲一区网站| 国产精品va| 欧美自拍一区| 日韩三区免费| 免费看日韩精品| 精品五月天堂| 亚洲人成在线影院| 久久天堂成人| 国产精品2区| 丝袜美腿亚洲色图| 日韩精品免费一区二区三区| 丁香六月综合| 噜噜噜躁狠狠躁狠狠精品视频 | 美腿丝袜在线亚洲一区| 日本少妇一区| 国产精品一页| 亚洲开心激情| 日韩亚洲在线| 在线视频观看日韩| 欧美激情另类| 麻豆精品av| 欧美另类中文字幕| 免费人成在线不卡| 午夜欧美精品| 久久国产中文字幕| jizzjizz中国精品麻豆| 久久超级碰碰| 日本亚洲最大的色成网站www| 蜜臀av免费一区二区三区| 亚洲永久av| 成人免费一区| 久久丁香四色| 国产精品欧美大片| 日韩国产欧美在线播放| 亚洲理论在线| 日韩 欧美一区二区三区| 亚洲三级av| 亚洲免费专区| 日韩精品免费一区二区夜夜嗨| 亚洲一区激情| 亚洲一区日韩| 中文字幕一区二区av| 黄色亚洲精品| 亚洲欧美视频| 免费日韩一区二区| 丝袜美腿亚洲色图| 亚洲欧美久久精品| 日韩一区二区三区四区五区| 日韩综合小视频| 日韩av不卡一区二区| 国产亚洲字幕| 国产精品欧美日韩一区| 久久香蕉网站| 极品av在线| 在线日韩电影| 蜜臀久久99精品久久久久久9| 免费视频久久| 蜜臀国产一区二区三区在线播放| 亚洲深夜影院| 亚洲综合福利| 国产精品中文字幕亚洲欧美| 国产欧美自拍| 精品高清久久| 日韩专区精品| 国产在线日韩| 日本不卡不码高清免费观看| 国产麻豆精品| av免费不卡国产观看| 久久蜜桃精品| 日韩中文字幕区一区有砖一区| 婷婷成人av| 精品视频亚洲| 少妇精品导航| 欧美在线综合| 国产精品网站在线看| 国产精品xx| 蜜桃久久久久久| 国产极品一区| 久久精品国产99久久| 美女精品在线观看| 久久狠狠亚洲综合| 日韩精品电影| 视频在线观看91| 欧美极品中文字幕| 久久精品亚洲人成影院| 好吊日精品视频| 国产精品magnet| 群体交乱之放荡娇妻一区二区| 欧美日韩国产一区精品一区| 91精品一区| 久久久久.com| 日韩欧美久久| 日韩理论视频| 日韩1区2区3区| 日韩中文影院| 亚洲综合五月| 最近高清中文在线字幕在线观看1| 伊人久久成人| 免费亚洲婷婷| 男人天堂欧美日韩| 国产成人免费精品| 亚洲伊人精品酒店| 精品久久中文| 亚洲一区二区三区四区五区午夜| 久久伊人亚洲| 综合一区二区三区| 欧美日韩国产v| 久久精品 人人爱| 夜夜嗨网站十八久久| 在线观看一区| 成人精品中文字幕| 国产精品99久久免费| 丝袜美腿成人在线| 最新中文字幕在线播放 | 亚洲精品美女91| 亚洲www啪成人一区二区| 蜜桃久久精品一区二区| 国产精品久久久久蜜臀| 在线免费观看亚洲| 久久精品主播| 久久影院一区二区三区| 中文字幕成人| 悠悠资源网久久精品| 日韩大片在线观看| 久久一区精品| 日本亚洲视频在线| 好看不卡的中文字幕| 91欧美国产| 久久99影视| 88久久精品| 亚洲色图网站| 麻豆精品蜜桃| 国产传媒av在线| 麻豆久久一区| 97精品资源在线观看| 蜜桃视频一区二区三区| 红桃视频国产精品| 久久久久欧美精品| av资源中文在线| 精品五月天堂| 欧美黑人做爰爽爽爽| 国产精品视频一区视频二区| 日韩欧美精品一区二区综合视频| 中国女人久久久| 欧美亚洲在线日韩| 日韩在线中文| 日产精品一区二区| 久久久国产精品网站| 国产精品a级| 国产精品v一区二区三区| 国产乱码精品一区二区三区亚洲人| 免费不卡在线视频| 男女性色大片免费观看一区二区 | 久久蜜桃资源一区二区老牛| 国产一区二区精品福利地址| 91福利精品在线观看| 日韩国产欧美三级|