15.Python實現識別登陸驗證碼(入門)

1.若想識別登陸驗證碼,須要安裝:Tesseract-OCR,其下載地址爲:http://jaist.dl.sourceforge.net/project/tesseract-ocr-alt/tesseract-ocr-setup-3.02.02.exe,安裝後一直下一步便可。html

2.前提:python

A==已安裝PIL(3.6版本爲Pillow)web

B==電腦已安裝Tesseract-OCR函數

C==若使用工具爲Pycharm,須在Pycharm - setting引入pytesseract包工具

3.代碼以下所示:post

from selenium import webdriver
import time
import unittest
from PIL import Image
from PIL import ImageEnhance
import pytesseract

driver = webdriver.Ie()
driver.get('https://passport.baidu.com/?getpassindex')
driver.implicitly_wait(3)

driver.maximize_window()
driver.save_screenshot('E:\\password.png')   #截取當前網頁,該網頁有咱們須要的驗證碼
imagelement = driver.find_element_by_xpath(".//*[@id='forgotsel']/div/div[3]/img")

location = imagelement.location  #獲取驗證碼的x,y軸座標
size = imagelement.size          #獲取驗證碼的長寬

coderange=(int(location['x']),int(location['y']),int(location['x']+size['width']),
           int(location['y']+size['height'])) #寫成咱們須要截取的位置座標


i = Image.open('E:\\password.png')   #打開截圖
fram4 = i.crop(coderange)   #使用Image的crop函數,從截圖中再次截取咱們須要的區域
fram4.save('E:\\fram4.png')

i2 = Image.open('E:\\fram4.png')
imgry = i2.convert('L')
sharpness = ImageEnhance.Contrast(imgry)  #對比度加強

i3 = sharpness.enhance(3.0)  #3.0爲圖像的飽和度
i3.save('E:\\image_code.png')

i4 = Image.open('E:\\image_code.png')
text = pytesseract.image_to_string(i2).strip()   #使用image_to_string識別驗證碼
print(text)

4.編寫代碼成功後,右鍵運行後報錯,報錯信息以下:url

5.查閱資料後,其解決方法以下:找到pytesseract.py文件,修改內容以下所示:.net

再次運行成功(注:我的以爲OCR後的驗證碼不夠清晰)code

參考博客爲:https://www.cnblogs.com/VseYoung/p/code.htmlhtm

相關文章
相關標籤/搜索