zoukankan      html  css  js  c++  java
  • python+selenium+PIL+tesseract验证码识别

    一段简单的验证码识别,不过tesseract验证码识别很差,试了十几次只成功过两次,对结果不满意就当是学会一样新的技术吧

     1 from selenium import webdriver
     2 from time import sleep
     3 import unittest
     4 from PIL import Image
     5 from PIL import ImageEnhance
     6 import pytesseract
     7 driver=webdriver.Firefox()
     8 url="https://passport.baidu.com/?getpassindex"
     9 driver.get(url)
    10 driver.maximize_window()
    11 driver.save_screenshot(r"E:aa.png")  #截取当前网页,该网页有我们需要的验证码
    12 imgelement = driver.find_element_by_xpath(".//*[@id='forgotsel']/div/div[3]/img")
    13 #imgelement = driver.find_element_by_id("code")  #定位验证码
    14 location = imgelement.location  #获取验证码x,y轴坐标
    15 print (location)
    16 size=imgelement.size  #获取验证码的长宽
    17 print(size)
    18 coderange=(int(location['x']),int(location['y']),int(location['x']+size['width']),
    19            int(location['y']+size['height'])) #写成我们需要截取的位置坐标
    20 i=Image.open(r"E:aa.png") #打开截图
    21 frame4=i.crop(coderange)  #使用Image的crop函数,从截图中再次截取我们需要的区域
    22 frame4.save(r"E:frame4.png")
    23 i2=Image.open(r"E:frame4.png")
    24 imgry = i2.convert('L')   #图像加强,二值化,PIL中有九种不同模式。分别为1,L,P,RGB,RGBA,CMYK,YCbCr,I,F。L为灰度图像
    25 sharpness =ImageEnhance.Contrast(imgry)#对比度增强
    26 i3 = sharpness.enhance(3.0)  #3.0为图像的饱和度
    27 i3.save("E:\image_code.png")
    28 i4=Image.open("E:\image_code.png")
    29 text=pytesseract.image_to_string(i4)#使用image_to_string识别验证码
    30 print (text)
    code
     
  • 相关阅读:
    HDU 2013(递归)
    紫书搜索 习题7-6 UVA
    紫书搜索 习题7-4 UVA
    紫书搜索 习题7-3 UVA
    紫书搜索 习题7-2 UVA
    紫书搜索 习题7-1 UVA
    紫书搜索 例题7-10 UVA
    紫书搜索 例题7-13 UVA
    紫书搜索 例题7-12 UVA
    紫书搜索 例题7-9 UVA
  • 原文地址:https://www.cnblogs.com/mtfan01/p/9077760.html
Copyright © 2011-2022 走看看