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处理.....)

  

最新文章

  1. 基于腾讯手Q样式规范Frozen UI
  2. Block 使用注意点
  3. Linux下安装mysql-5.6.4 的图文教程
  4. 解决SecureCRT中文显示乱码
  5. BUG修改纪录
  6. Android使用pull解析xml
  7. 动态规划——数位dp
  8. Log4net 配置注意事项
  9. Sicily 1931. 卡片游戏
  10. vuex构建笔记本应用学习
  11. Install cv2.so for Anaconda
  12. Delphi 重启应用程序(创建Bat文件的Process)
  13. setenv 和 set
  14. C# XmlDocument操作XML
  15. python——re模块
  16. springMVC 使用ajax 出现No serializer found for class异常
  17. sqlserver 常见的表名修改
  18. asp.net Ajax调用Aspx后台方法
  19. ICMP与ping:投石问路的侦察兵
  20. [luogu P4230]连环病原体

热门文章

  1. Android学习_内容提示器
  2. Vue使用Axios实现http请求以及解决跨域问题
  3. shell编程-定时删除(30天)文件
  4. 12 Linux ACL权限
  5. C# 防火墙操作之开启与关闭
  6. 关于排查python内存泄露的简单总结
  7. GDAL OGR Tools
  8. dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib
  9. Android和jS互调技术Demo实现
  10. JSP 简单标签extends SimpleTagSupport