在应用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()

 

含有杂点或是画线类的短信验证码之后升级。

文章来源于网络 ,如有侵权请联系站长QQ61910465删除
本文版权归趣快排SEO www.SeogurUblog.com 所有,如有转发请注明来出,竞价开户托管,seo优化请联系QQ▶61910465