OCR识别技术
OCR中文名称光学识别, tesseract是一个有名的开源OCR识别框架,它与Leptonica图片处理库结合,可以读取各种格式的图像并将它们转化成超过60种语言的文本,可以不断训练自己的识别库,使图像转换文本的能力不断增强。如果团队深度需要,还可以以它为模板,开发出符合自身需求的OCR引擎。那么接下来给大家介绍一下如何使用tessract来识别我们的验证码。
一、安装tesseract,并配置环境变量:
1 ,安装tesseract
Windows安装程序下载:https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-3.05.02-20180621.exe
2 , 下载并加入中文简体
安装包下载地址:https://tesseract-ocr.github.io/tessdoc/Data-Files
下载完成后,将安装包放置“tessdata”目录中。C:\OCR\Tesseract-OCR\tessdata
注:tesseract 默认只能识别英文,如果想要识别其他语言,可下载其他安装包
3 , 配置环境变量
要从任何位置访问tesseract-OCR,您可能必须将tesseract-OCR二进制文件所在的目录添加到Path变量中
C:\OCR\Tesseract-OCR
二、python中识别验证码图片内容(登录案例)
1、安装需要使用到的模块:selenium、pillow、time等
2、chromedriver安装
下载地址:http://chromedriver.storage.googleapis.com/index.html
注:下载和自己电脑浏览器对应的版本
配置环境变量
3、实现步骤
import time
import pytesseract
import PIL.Image
from selenium.webdriver.common.by import By
from selenium import webdriver
from PIL import Image
# 创建一个浏览器
browser = webdriver.Chrome()
# 访问登录页面
url = '访问地址'
browser.get(url)
browser.maximize_window()
time.sleep(2) # 暂停两秒
# 选择账号、密码输入栏,输入对应的账号密码
input_user = browser.find_element(By.XPATH, '账号输入框的Xpath地址').send_keys("账号")
input_pwd = browser.find_element(By.XPATH, '密码输入框的Xpath地址').send_keys("账号对应的密码")
# 对当前页面进行截图
browser.save_screenshot("login.png")
yzm_btn = browser.find_element(By.XPATH, '验证码图片的Xpath地址')
# 获取图片元素的位置
loc = yzm_btn.location
# 获取图片的宽高
size = yzm_btn.size
# 1.5为显示器的缩放和布局
left = loc['x']*1.50 # 计算左边界
top = loc['y']*1.50 # 计算上边界
right = (loc['x']+size['width'])*1.50 # 计算右边界
botom = (loc['y']+size['height'])*1.50 # 计算下边界
# 将上下左右边界值放到元组中(顺序必须是:左、上、右、下)
val = (left,top,right,botom)
# 使用PIL模块对页面图片进行裁剪,将验证码图片保存
login_pic = PIL.Image.open('login.png')
yzm_pic = login_pic.crop(val)
yzm_pic.save('yzm.png')
# 识别验证码,lang为识别的语言
data = pytesseract.image_to_string(yzm_pic,lang="chi_sim")
# 在输入框内输入验证码
yzm_input = browser.find_element(By.XPATH,'验证码输入框的Xpath地址').send_keys(data)
# 点击登录
submit = browser.find_element(By.XPATH,'登录按钮的Xpath地址').send_keys()
time.sleep(10)