1.需要导入以下包(pytesseract.src里面应该要用notepad++编辑Tesseract-OCR路径,如我的第26行: tesseract_cmd = 'C:\Program Files (x86)\Tesseract-OCR\\tesseract')
from PILimport Image
from pytesseract.srcimport pytesseract
2.代码实现如下:
# 截取当前网页,该网页有我们需要的验证码
driver.save_screenshot('D://aa.png')
# 定位验证码
imgelement = driver.find_element_by_xpath(self.IMAGE_CODE_PATH)
# 获取验证码x,y轴坐标
location = imgelement.location
# 获取验证码的长宽
size = imgelement.size
# 写成我们需要截取的位置坐标
rangle = (int(location['x']), int(location['y']), int(location['x'] + size['width']), int(location['y'] + size['height']))
# 打开截图
i = Image.open("D://aa.png")
# 使用Image的crop函数,从截图中再次截取我们需要的区域
frame4 = i.crop(rangle)
frame4.save('D://frame4.png')
img = Image.open('D://frame4.png')
# 锐化图片,这里很关键
im = img.point(lambda i: i *2.5)
BB = pytesseract.image_to_string(im)
print(u"识别的验证码为:" + BB)
3.用try……except Exception取识别出来的0,2,4,6位,为防止错误,如识别不对,重新执行识别图形码方法。
try:
for iin range(0, 7, 2):
driver.find_element_by_xpath(self.VERIF_CODE).send_keys(BB[i])
sleep(3)
driver.find_element_by_xpath(self.SUMIT).click()
sleep(3)
except Exception:
driver.close()
self.get_streen(user_name,pwd)