图形验证码的识别

利用OCR技术识别图形验证码

安装tesserocr

识别测试

import tesserocr
from PIL import Image

image = Image.open('code.jpg')
result = tesserocr.image_to_text(image)
print(result)

也可以直接将图片文件转为字符串

import tesserocr
print(tesserocr.file_to_text("image.png"))

验证码处理

利用Image对象的convert()方法参数传入L,即可将图片转化为灰度图像

image = image.convert("L")
image.show()

传入1可将图片进行二值化处理

image = image.convert("1")
image.show()

先将原图转为灰度图像,然后再制定二值化阀值。变量 threshold 代表二值化阈值,阈值设置为 80。

image = image.convert('L')
threshold = 80
table = []
for i in range(256):
    if i < threshold:
        table.append(0)
    else:
        table.append(1)

image = image.point(table, '1')
image.show()

原来验证码中的线条已经去除,整个验证码变得黑白分明。这时重新识别验证码

import tesserocr
from PIL import Image

image = Image.open('code2.jpg')

image = image.convert('L')
threshold = 127
table = []
for i in range(256):
    if i < threshold:
        table.append(0)
    else:
        table.append(1)

image = image.point(table, '1')
result = tesserocr.image_to_text(image)
print(result)

利用专业打码平台识别验证码

日常爬虫工作中,会遇到目标网站有图片验证码的反爬机制,除了手工配置识别图片外,为了提高效率,可以通过专业的打码平台来验证图片。这里用阿里云平台作为例子:

在阿里云市场有很多专业打码商品

https://market.aliyun.com/products/?keywords=%E5%9B%BE%E7%89%87%E8%AF%86%E5%88%AB%E9%AA%8C%E8%AF%81%E7%A0%81

选购成功后,记下你的AppCode

接下来开发代码逻辑:

import urllib.request
import ssl

#修改API说明修改接口地址
url = 'https://imgurlocr.market.alicloudapi.com/urlimages'
method = 'POST'
appcode = '你的AppCode'
querys = ''
bodys = {}

bodys['image'] = '''https://fegine-drug.oss-cn-shanghai.aliyuncs.com/image/urlimage.png'''
post_data = urllib.parse.urlencode(bodys).encode(encoding='UTF8')
request = urllib.request.Request(url, post_data)
#根据API的要求,定义相对应的Content-Type
request.add_header('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8')
request.add_header('Authorization', 'APPCODE ' + appcode)
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
response = urllib.request.urlopen(request, context=ctx)

content = response.read()
if (content):
    print(content.decode('UTF-8'))

返回结果:

{
  "code": "1",
  "msg": "查询成功",
  "result_num": 1,
  "result": [
    {
      "words": "给我跪下唱征服"
    }
  ]
}

原文地址:https://www.cnblogs.com/hankleo/p/12359577.html

时间: 2024-10-08 23:12:08

图形验证码的识别的相关文章

验证码的识别 -01 -图形验证码的识别

验证码的识别 -01 -图形验证码的识别 1. 准备工作 1. 下载安装 tesseract 下载地址 下载完成后双击,安装程序, 可以勾选Additional language data(download)选项来安装 OCR 识别支持的语言包,这样 OCR 便可以识别多国语言 将tesseract 配置环境变量 将tesseract的语言包添加到环境变量中,在环境变量中新建一个系统变量,变量名称为TESSDATA_PREFIX,tessdata是放置语言包的文件夹,一般在你安装tesserac

Python3网络爬虫实战-41、图形验证码的识别

本节我们首先来尝试识别最简单的一种验证码,图形验证码,这种验证码出现的最早,现在也很常见,一般是四位字母或者数字组成的,例如中国知网的注册页面就有类似的验证码,链接为:http://my.cnki.net/elibregister/commonRegister.aspx,页面如图 8-1 所示: 图 8-1 知网注册页面 表单的最后一项就是图形验证码,我们必须完全输入正确图中的字符才可以完成注册. 1. 本节目标 本节我们就以知网的验证码为例,讲解一下利用 OCR 技术识别此种图形验证码的方法.

Python3网络爬虫实战-42、图形验证码的识别

本节我们首先来尝试识别最简单的一种验证码,图形验证码,这种验证码出现的最早,现在也很常见,一般是四位字母或者数字组成的,例如中国知网的注册页面就有类似的验证码,链接为:http://my.cnki.net/elibregister/commonRegister.aspx,页面如图 8-1 所示: 图 8-1 知网注册页面 表单的最后一项就是图形验证码,我们必须完全输入正确图中的字符才可以完成注册. 1. 本节目标 本节我们就以知网的验证码为例,讲解一下利用 OCR 技术识别此种图形验证码的方法.

Python验证码识别--利用pytesser识别简单图形验证码

一.探讨 识别图形验证码可以说是做爬虫的必修课,涉及到计算机图形学,机器学习,机器视觉,人工智能等等高深领域…… 简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形.以及利用计算机进行图形的计算.处理和显示的相关原理与算法.图形通常由点.线.面.体等几何元素和灰度.色彩.线型.线宽等非几何属性组成.计算机涉及到的几何图形处理一般有 2维到n维图形处理,边界区分,面积计算,体积计算,扭曲变形校正.对于颜色则有色彩空间的计算与转换,图形上色,阴影,色差处理等等. 在破解验证码中需要用

验证码识别——图形验证码

先找了一个简单的图形验证码进行测试,比如知网,从网页里把验证码下载到本地 进行简单的灰度处理和二值化处理,能够提高不少识别正确率 验证码: 代码: 1 import tesserocr 2 from PIL import Image 3 4 image = Image.open('code.jpg') 5 #灰度处理 6 image = image.convert('L') 7 #阈值 8 threshold = 127 9 table = [] 10 #阈值处理 11 for i in ran

Python验证码识别:利用pytesser识别简单图形验证码

一.探讨 识别图形验证码可以说是做爬虫的必修课,涉及到计算机图形学,机器学习,机器视觉,人工智能等等高深领域--    简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形.以及利用计算机进行图形的计算.处理和显示的相关原理与算法.图形通常由点.线.面.体等几何元素和灰度.色彩.线型.线宽等非几何属性组成.计算机涉及到的几何图形处理一般有 2维到n维图形处理,边界区分,面积计算,体积计算,扭曲变形校正.对于颜色则有色彩空间的计算与转换,图形上色,阴影,色差处理等等. 在破解验证码中

12306 图形验证码分析

验证码是一个非常有意思的问题,它的目的是区分输入者是人还是机器,这个问题本质上是一个图灵测试(推荐电影<模仿游戏>),验证码即是一种简单高效的验证方法,由CMU的教授于2000年左右创造,后来此牛人又将零星的验证码收集起来,转化为巨大的生产力,成功将上千万篇纸质文章数字化,目前Google还用其识别门牌号,路牌等(一个神人创造了验证码,又让验证码做出了巨大贡献).12306昨天改用了图形验证码,而事实上,图形验证码已经不是新鲜事了,早在几个月钱,Google就换成了图形验证(谷歌让验证码更简单

python爬虫中图形验证码的处理

使用python爬虫自动登录时,遇到需要输入图形验证码的情况,一个比较简单的处理方法是使用打码平台识别验证码. 使用过两个打码平台,打码兔和若快,若快的价格更便宜,识别率相当.若快需要注册两个帐号:开发者帐号与用户帐号,用户帐号用于发送识别请求,开发者帐号可以注册软件id,并于识别请求进行绑定,可以参与识别收入的分成返现. 获取图形验证码目前发现的有两种方式: 0x01 在抓包中可以直接获得图片:发送get请求可以直接获取图片(png或jpg格式),这种情况可以使用request.get()返回

短信验证码、图形验证码、邮件验证的自动化测试

短信验证码.图形验证码.邮件验证问题在自动化测试中是一个很常见的问题,也是一个很棘手的问题.设计的初衷其实就是为了防自动化,防止一些人利用自动工具恶意攻击网站,而很不幸的是,我们所使用的一些自动化测试工具也包含在内.聊一聊最好用的接口方法. 接口法思路: 不管短信验证码.图形验证码还是邮件验证,都需要都auth中去认证.(auth与会员进行分离,auth只负责认证).那么在auth中提供一些后面借口就可以进行自动化测试了. 如根据手机号插入一个新的短信校验,但安全问题就比较突出了,我想到的解决方