前期准备
tesseract-OCR下载、配置及基本使用
- 下载tesseract-OCR
下载地址:
下载源:https://digi.bib.uni-mannheim.de/tesseract/
根据自身硬件情况下载对应版本即可
- 配置环境变量
1.将安装包直接一路安装
2.打开 计算机-->邮件-->高级系统设置-->环境变量
在 系统变量-Path中添加tesseract的安装路径
新建系统变量
变量名:TESSDATA_PREFIX
值:D:\Tesseract-OCR\tessdata
验证是否配置成功,可使用cmd命令,如下结果即为成功
C:\XXX\XXX>tesseract --version
tesseract v5.0.0.20190623
leptonica-1.78.0
libgif 5.1.4 : libjpeg 8d (libjpeg-turbo 1.5.3) : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11 : libwebp 0.6.1 : libopenjp2 2.3.0
Found AVX2
Found AVX
Found SSE
- tesseract的基本使用
1.打开cmd命令窗口
2.验证码提取的输入格式:tesseract 图片路径 输出文件(是个TXT文件)
例:tesseract D:\待使用图片路径\image.png D:\待输出文件路径\result.txt
注:图片格式支持JPG、png,其他格式没试过,不清楚
- tesseract其他资料
https://github.com/tesseract-ocr/tessdoc
# 官方语言包下载地址,根据安装的版本选择对应的语言包
https://tesseract-ocr.github.io/tessdoc/Data-Files
# 下载完成后,直接放到安装位置的tessdata文件夹下即可
Python安装PyTesseract
- 本人使用的pycharm,以pycharm为例
开始操作
from selenium import webdriver
from PIL import Image # PIL:Python Imaging Library,Python图像处理标准库
import PyTesseract # tesseract-OCR:开源识别框架
import time
if __name__ == '__main__':
driver = webdriver.Chrome() # 加载浏览器驱动
driver.maximize_window() # 设置浏览器窗口为全屏
driver.get(url) # 网址
time.sleep(3)
driver.save_screenshot('D:\\Study\\img\\printscreen.png') # 全屏截图及存放路径
imgelement = driver.find_element_by_xpath('xpath') # 定位元素位置
location = imgelement.location # 获取验证码x,y坐标
size = imgelement.size # 获取验证码高宽
# 计算验证码的上下左右位置,此处需要确认下电脑显示的缩放比例,即开始前准备工作中所查信息
# 若未乘以相对显示比例系数,则默认为*1.00,代码与实际比例不相对时,其定位结果会不准确
left = location['x']*1.25 # 计算左边界
top = location['y']*1.25 # 计算上边界
right = (location['x'] + size['width'])*1.25 # 计算右边界
botom = (location['y'] + size['height'])*1.25 # 计算下边界
# 将上下左右边界值放到元祖中(注意顺序:左 上 右 下)
local = (left, top, right, botom)
i = Image.open("D:\\Study\\img\\printscreen.png") # 打开截图
result = i.crop(local) # 使用Image的crop函数,从截图中再次截取我们需要的区域
result = result.convert('RGB')
result.save('D:\\Study\\img\\save.jpg') # 保存我们接下来的验证码图片 进行打码
text = PyTesseract.image_to_string(Image.open('D:\\Study\\img\\save.jpg'))
print(text) # 此处即以文本形式打印出识别后的验证码
driver.find_element_by_xpath('xpath').send_keys(text) # 输入验证码
# 注意事项
# tesseract识别出来的字符串可能需要截取一下才能用
# 识别精准率还不错,即使失败,多尝试几次即可
# 我所截取的为简易的 字母 + 数字 验证码
# 若要识别含有中文的验证码,需要下载相应的语言包
- 参考文章及资料
http://www.manongjc.com/detail/6-qexgtqevkuctzzh.html
https://blog.csdn.net/qq_42278240/article/details/90573652
感谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。