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
     
  • 相关阅读:
    R语言实战实现基于用户的简单的推荐系统(数量较少)
    MapReduce计数器
    MapReduce的Shuffle过程介绍
    R语言两种方式求指定日期所在月的天数
    ggplot2作图详解:入门函数qplot
    R语言中的数据处理包dplyr、tidyr笔记
    Metronic_下拉列表Select2插件的使用
    Linux_使用Linux之安装jdk 7
    HttpClient_HttpClient 4.3.6 HTTP状态管理
    HttpClient_HttpClient 对 cookie的处理
  • 原文地址:https://www.cnblogs.com/mtfan01/p/9077760.html
Copyright © 2011-2022 走看看