赞
踩
名称 | 环境版本 | 说明 |
---|---|---|
ddddocr | linux系统安装;python3版本:3.6.8;命令:python3 -m pip install ddddocr;安装的版本:ddddocr-1.4.3 | /usr/local/lib/python3.6/site-packages/ddddocr-1.4.3-py3.6.egg/ddddocr/init.py中需要注释调项目说明,识别效果较好;见下图: |
pytesseract | linux系统安装;python3版本:3.6.8;需要安装tesseract | 识别效果一般不推荐 |
首先安装ddddocr模块:python3 -m pip install ddddocr
安装过程较为曲折,总是报错,后来按照报错的连带模块进行单独安装后,才安装完成。
from selenium import webdriver import time from PIL import Image,ImageEnhance import ddddocr ocr = ddddocr.DdddOcr() url = "要访问的页面" options = webdriver.ChromeOptions() options.add_argument("--headless") # 开启无界面模式 options.add_argument('--no-sandbox') options.add_argument("--disable-gpu") options.add_argument('--disable-dev-shm-usage') # linux上需要设置上面四项内容。 driver = webdriver.Chrome(chrome_options=options,executable_path='/usr/bin/chromedriver') driver.get(url) # 请求Url driver.maximize_window() # 全屏显示 driver.save_screenshot('m3.png') # 截屏整个页面,并保存为图片 location = driver.find_element_by_xpath('//*[@id="login"]/div[5]/span') # 获取验证码区域的坐标 # print(location.location) size = location.size # 坐标大小 # print(size) rangle = (int(location.location['x']),int(location.location['y']),int(location.location['x'] + size['width']),int(location.location['y'] + size['height'])) # 获取验证码图片的坐标大小 i = Image.open('m3.png') # 通过图像的方式打开保存的图片 imgry=i.crop(rangle) # 截取验证码区域 imgry.save('getVerifyCode1.png') # 保存验证码图片 im=Image.open('getVerifyCode1.png') # 再次打开新截取的验证码图片 sharpness =ImageEnhance.Contrast(im) #对比度增强,是图片中验证码更容易识别 # sharp_img = sharpness.enhance(2.0) # sharp_img.save("newVerifyCode1.png") # 保存优化过的验证码图片 with open('newVerifyCode1.png', 'rb') as f: img_bytes = f.read() # 读取图片 res = ocr.classification(img_bytes) # 获取图片中的字符 print(res)
证明获取的验证码信息和图片中相同。
python3 -m pip install pytesseract
安装详情见:https://blog.csdn.net/weixin_44575268/article/details/117258508
from selenium import webdriver import time from PIL import Image,ImageEnhance import pytesseract tesseract_cmd = r'/usr/local/bin/tesseract' pytesseract.pytesseract.tesseract_cmd =tesseract_cmd url = "要访问的页面" options = webdriver.ChromeOptions() options.add_argument("--headless") # 开启无界面模式 options.add_argument('--no-sandbox') options.add_argument("--disable-gpu") options.add_argument('--disable-dev-shm-usage') # linux上需要设置上面四项内容。 driver = webdriver.Chrome(chrome_options=options,executable_path='/usr/bin/chromedriver') driver.get(url) # 请求Url driver.maximize_window() # 全屏显示 driver.save_screenshot('m3.png') # 截屏整个页面,并保存为图片 location = driver.find_element_by_xpath('//*[@id="login"]/div[5]/span') # 获取验证码区域的坐标 # print(location.location) size = location.size # 坐标大小 # print(size) rangle = (int(location.location['x']),int(location.location['y']),int(location.location['x'] + size['width']),int(location.location['y'] + size['height'])) # 获取验证码图片的坐标大小 i = Image.open('m3.png') # 通过图像的方式打开保存的图片 imgry=i.crop(rangle) # 截取验证码区域 imgry.save('getVerifyCode1.png') # 保存验证码图片 im=Image.open('getVerifyCode1.png') # 再次打开新截取的验证码图片 sharpness =ImageEnhance.Contrast(im) #对比度增强,是图片中验证码更容易识别 # sharp_img = sharpness.enhance(2.0) # sharp_img.save("newVerifyCode1.png") # 保存优化过的验证码图片 # newVerify = Image.open('newVerifyCode1.png') # mm = pytesseract.image_to_string(newVerify,'eng') print(mm)
图片:
结果:
未识别出来。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。