1.安装py库:pytesseract,PIL
pip install pytesseract pip install PILLOW
如果安装时,出现权限不足:
pip install --user pytesseract pip install --user PILLOW
2.tesseract程序下载安装
2.1 tessercat下载地址:https://digi.bib.uni-mannheim.de/tesseract/ //请依据自己的操作系统下载exe文件安装
2.2 环境变量配置
用户变量,系统变量都添加:PATH C:Program Files (x86)Tesseract-OCR; //这是tesseract的安装目录
系统变量添加:TESSDATA_PREFIX C:Program Files (x86)Tesseract-OCR
//有的博文写到“TESSDATA_PREFIX”目录需要到tessdata,但是我电脑配置到tessdata就会多一级tessdata目录,命令测试时会找不到,所以这里自己依据调试哪个OK用哪个~
2.3 验证是否安装/配置成功
在需识别的图片目录下执行命令:tesseract test.png output_1 –l eng
test.png:徐识别的文件
output_1:识别后存入的文件名(默认txt格式)
-l eng:语言包 英文
3.pycharm验证码登录
验证码图片清晰,不去需要背景去噪(干扰线),转换为灰度图
# 验证码登录 import time from PIL import ImageEnhance from selenium import webdriver # 避免出现系统错误:[WinError 2] 系统找不到指定的文件 try: import Image except ImportError: from PIL import Image import pytesseract pytesseract.pytesseract.tesseract_cmd = r'C:/Program Files (x86)/Tesseract-OCR/tesseract.exe' # 打开浏览器 url = "http://XXX.XX.XX.XX:XXX/SPMTest/login.html" browser = webdriver.Chrome() browser.implicitly_wait(10) browser.maximize_window() browser.get(url) # 用户元素 userElement = browser.find_element_by_id("loginname") passElement = browser.find_element_by_id("password1") codeElement = browser.find_element_by_id("code") lgButton = browser.find_element_by_id("login_value") # 验证码截取+识别(页面验证码地址不是固定连接,所以采用截图方式) # 截取屏幕内容,保存到本地 browser.save_screenshot("D://PyDemo/01.png") # 打开截图,获取验证码位置,截取保存验证码 ran = Image.open("D://PyDemo/01.png") box = (1165, 380, 1240, 415) # 获取验证码位置,手动定位(左,上,右,下)--验证码图片的绝对定位 ran.crop(box).save("D://PyDemo/02.png") # 获取验证码图片,读取验证码 code = pytesseract.image_to_string(Image.open('D://PyDemo/02.png')) print(code) # 输入数据登录 userElement.send_keys('tt') passElement.send_keys('1234') codeElement.send_keys(code) time.sleep(3) lgButton.click()
记录下,这个系统的登录脚本,特殊情况~(场景:密码输入框有两个id处理.....)