1、安裝PIL
window鍵+r打開cmd,在cmd輸入:pip install PIL
錯誤提示:
Could not find a version that satisfies the requirement PIL (from versions: )
No matching distribution found for PIL

先安裝wheel。選擇相應版本下載后,打開cmd(win+r),你要先安裝pip,具體pip安裝百度一下怎么安裝,然后pip install wheel,然后直接打開PyCharm就可以直接使用了。
2、安裝tesseract-ocr
github地址: https://github.com/tesseract-ocr/tesseract
windows:
The latest installer can be downloaded here: tesseract-ocr-setup-3.05.01.exe and tesseract-ocr-setup-4.00.00dev.exe (experimental).
pip install pytesseract
遇到問題及解決:
FileNotFoundError: [WinError 2] 系統找不到指定的文件
解決方案:
1[推薦]: 將tesseract.exe添加到環境變量PATH中,
例如: D:\Tesseract-OCR,默認路徑為C:\Program Files (x86)\Tesseract-OCR
注意: 為了使環境變量生效,需要關閉cmd窗口或是關閉pycharm等ide重新啟動
方法2: 修改pytesseract.py文件,指定tesseract.exe安裝路徑
# CHANGE THIS IF TESSERACT IS NOT IN YOUR PATH, OR IS NAMED DIFFERENTLY tesseract_cmd = 'C:\\Program Files (x86)\\Tesseract-OCR\\tesseract.exe‘
3、用Pycharm自動化測試,驗證碼登陸,代碼如下:
# -*- coding: utf-8 -*- # -*- author: hjd -*- #coding:utf-8 from selenium import webdriver from time import sleep import unittest from PIL import Image from PIL import ImageEnhance import pytesseract from selenium.webdriver.common.keys import Keys #測試Image類 # im=Image.open('D:\\Pictures\\Camera Roll\\xuanku_chahua.jpg') # w,h = im.size # print(w,h) #打開登陸界面 driver = webdriver.Firefox() url = "需要登陸的網址" driver.get(url) driver.maximize_window() #點擊顯示驗證碼 sleep(2) driver.switch_to.default_content() driver.find_element_by_css_selector("input#captcha").clear() #截取當前網頁中我們需要的驗證碼 sleep(2) driver.save_screenshot(r"E:\aa.png") img = driver.find_element_by_id("codeimage") #定位驗證碼 location = img.location #獲取驗證碼x,y軸坐標 size = img.size #獲取驗證碼的長寬 coderange = (int(location['x']),int(location['y']),int(location['x']+size['width']),int(location['y']+size['height'])) #寫成我們需要截取的位置坐標 i = Image.open(r"E:\aa.png")#打開截圖 frame4 = i.crop(coderange)#使用Image的crop函數,從截圖中再次截取我們需要的區域 frame4.save(r"E:\frame4.png") i2=Image.open(r"E:\frame4.png") imgry = i2.convert('L') #圖像加強,二值化,PIL中有九種不同模式。分別為1,L,P,RGB,RGBA,CMYK,YCbCr,I,F。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(i4) #使用image_to_string識別驗證碼 print(text) #admin登陸 sleep(5) driver.switch_to.default_content() driver.find_element_by_id('user_name').send_keys('用戶名') driver.find_element_by_id('password').send_keys('密碼') driver.find_element_by_css_selector("input#captcha").send_keys(text)
需要考慮驗證碼的圖片復雜度問題,如果是有干擾線和噪點的驗證碼圖片,這段代碼無法實現。