安装:
1.安装pytesseract:
pip install pytesseract
2.安装pill
PIL较多用于2.7版本的Python中,到python3版本已经用Pillow代替PIL了。
3.安装Tesseract-OCR(很重要)
Tesseract-OCR包链接:https://pan.baidu.com/s/15I7DFe5tmHzG9vbmcosPnw
提取码:e2r9
Tesseract-OCR安装步骤:
直接执行下载好的tesseract-ocr-setup-4.0.0-alpha.20180109.exe,下一步、下一步安装。安装过程中,会让你安装额外的语言包,可根据选择下载。
第三步:配置环境变量
我的是安装在C:\Program Files (x86)\Tesseract-OCR,界面如下:
将“F:\Tesseract-OCR”添加到环境变量中。如图:
增加一个TESSDATA_PREFIX变量名,变量值还是我的安装路径F:\Tesseract-OCR\tessdata这是将语言字库文件夹添加到变量中;
然后:找到python的安装路径下的pytesseract: 例如我的是 E:\Python3.7.1\Lib\site-packages\pytesseract
2.用文本编辑器打开,查找tesseract_cmd
将原来的 tesseract_cmd = ‘tesseract’ 改为: tesseract_cmd = ‘OCR的安装路径下的tessract.exe’
例如我的是 tesseract_cmd = ‘C:\Program Files\Tesseract-OCR\tesseract.exe’
注意有的地方需要转义 例如 \tesseract.exe,或者也可直接加r转义
tesseract_cmd = r’C:\Program Files\Tesseract-OCR\tesseract.exe
就可以运行了,要不然会找不到路径,超级麻烦。
比如测试获取登录链接的验证码:
http://localhost:8080/jpress/user/register
代码如下:
from time import sleep
from selenium import webdriver
import pytesseract
from PIL import Image
import os
from time import sleep, strftime, localtime, time
#解决简单验证码问题
def test_koutu():
"""先把验证码图片扣取下来"""
#打开谷歌
browser=webdriver.Chrome()
browser.get('http://localhost:8080/jpress/user/register')
browser.maximize_window()
#获取验证码图片
st = strftime("%Y-%d-%H-%M-%S", localtime(time()))
fime_time = st + '.png'
path = os.path.abspath('screenshopts')
file_path = path + '/' + fime_time
browser.get_screenshot_as_file(file_path)
ce = browser.find_element_by_xpath('/html/body/div[1]/div/form/div[6]/img')
print(ce.location)
left = ce.location['x']
top = ce.location['y']
right = ce.size['width'] + left
height = ce.size['height'] + top
im = Image.open(path + '/' + fime_time)
# 抠图
img = im.crop((left, top, right, height))
st = strftime("%Y-%d-%H-%M-%S", localtime(time()))
fime_time2 = st + '.png'
path = os.path.abspath('screenshopts')
file_path = path + '/' + fime_time2
img.save(file_path) # 这里就是截取到的验证码图片
browser.close()
#由于这种方式不能获取这种复杂的验证码 所以就只能自己传了一个test.jpg图片来获取了
def test_yanzhengma():
path = os.path.abspath('screenshopts')
print(path)
image1 = Image.open(path + '/' + 'test.jpg')
str = pytesseract.image_to_string(image1)
print(str)
紧接着我会再更新一篇利用第三方库来获取复杂验证码的方法。