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
     
  • 相关阅读:
    vue 表单 enter 键触发默认事件
    img找不到图片时,去除默认边框
    Javascript 计算
    Azure 上SQL Database(PaaS)Time Zone时区问题处理
    c#: 颜色选择控件之实现
    hive建库,建表,删表,删库,添加静或动态分区
    仿写一个 nodejs 中 queryString 的 parse 方法
    数独小游戏
    tnpm
    《翻页时钟特效》或者《日历翻页效果》的 css 部分原理实现
  • 原文地址:https://www.cnblogs.com/mtfan01/p/9077760.html
Copyright © 2011-2022 走看看