在应用Python做自动化技术情况下碰到登陆必须鉴别短信验证码难题,这时选用pytesseract控制模块 ,碰到出现异常:
pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your PATH. See README file for more information.
处理方法:
1、免费下载相匹配版本号的“Tesseract-OCR ”,下载链接:https://github.com/tesseract-ocr/tesseract/wiki 或是 https://github.com/UB-Mannheim/tesseract/wiki
下载文件名字:tesseract-ocr-w64-setup-v5.0.0-alpha.20201127.exe
2 、安裝Tesseract-OCR,请记牢安装路径 。
3、配备环境变量:
(1)配备Tesseract-OCR环境变量:
将Tesseract-OCR的安装路径配备在环境变量Path中。D:\Program Files\python38\Lib\site-packages\Tesseract-OCR 。如下图:
(2)配备tessdata环境变量:
增加一个用户标识符:TESSDATA_PREFIX 。变量类型为安裝的Tesseract-OCR途径下的tessdata的途径 。即 ,在Tesseract-OCR的安装路径后增加tessdata。D:\Program Files\python38\Lib\site-packages\Tesseract-OCR\tessdata。如下图
4、随后将pytesseract.py源代码中
tesseract_cmd = 'tesseract'
改动为:
tesseract_cmd = r'D:\Program Files\python38\Lib\site-packages\Tesseract-OCR\tesseract.exe'
再次运作脚本制作 ,OK
如下图所显示的登陆页面 。
附加鉴别短信验证码编码:
from selenium import webdriver from PIL import Image import pytesseract def readvcode(): dr = webdriver.Chrome("D:\softwarePro\BrowserDriver\chromedriver.exe") dr.maximize_window() dr.get(url) dr.save_screenshot('All.png') # 提取当今网页页面,该网页页面有大家必须的短信验证码 imgelement = dr.find_element_by_class_name('imgcode') location = imgelement.location # 接收验证码x,y轴座标 size = imgelement.size # 接收验证码的宽度 rangle = (int(location['x']), int(location['y']), int(location['x'] size['width']), int(location['y'] size['height'])) # 写出大家必须提取的部位座标 i = Image.open("All.png") # 打开截图 result = i.crop(rangle) # 应用Image的crop涵数,从截屏中再度提取大家必须的地区 result.save('result.png') text = pytesseract.image_to_string('result.png', 'eng').strip() dr.find_element_by_name("username").send_keys("admin") dr.find_element_by_name("password").send_keys("admin123") dr.find_element_by_name("validateCode").send_keys(text) dr.find_element_by_id("btnSubmit").click() if __name__ == '__main__': readvcode()
含有杂点或是画线类的短信验证码之后升级。