图片识别之验证码识别

许多网站在进行某些操作前会要求输入验证码以此来抵御爬虫和***。此篇主要讲述如何通过代码来识别一些常见的验证码。以此探究图片识别的过程以及如何避免生成容易被识别的验证码。

理论

图片识别的过程

  1. 取样本
  2. 清洗区分样本
  3. 提取样本特征
  4. 提取目标的特征与样本进行对比

    操作过程

    Java有丰富的图片处理类,本次操作使用java语言。
    一、取目标网站的验证码样本。在web页面中查看验证码请求的地址。通过http请求批量获取验证码并保存在本地。

    二、区分样本。对每张验证码图片进行人工识别区分,重命名为该图片的验证码。

    三、清洗切割样本,提取样本特征。图片识别需要尽可能细地区分出特征点。我们观察上图的验证码图片可以发现多个信息:
    ● 验证码的背景存在着许多干扰线。

● 每个数字分明,所占的位置几乎是均等的。

● 验证码的数字颜色比较深,干扰因素颜色较浅。

我们可以尝试通过颜色的深浅去除干扰因素。先通过灰度处理,将验证码中颜色较浅的点置换成白色,颜色较深的点置换成黑色。

通过改变灰度阈值grayValue不断尝试去除干扰点。最后得到干净的验证码。

接下来通过识别图片中的黑色点,使用下面的trainData()方法。

沿着黑色点进行矩形切割,得到单个数字的特征样本。


得到的验证码特征样本训练集合如下:

四、提取目标验证码的特征,与训练集合做对比,识别目标验证码图片

通过上面的三步,我们已经得到了一组样本特征,接下来只需要把将目标验证码同样执行上面的3步。把提取出来的目标验证码特征与样本特征作对比。如果双方绝大部分像素点的颜色相同,则可认为目标验证码与样本内容一致。取样本的文件名,即可等到目标验证的内容了。以下为对比识别的代码。

总结

通过上面的四部操作,我们已经能够识别出一些网站的验证码了。上面使用的方法是通过颜色的深浅,去除干扰素,再提取样本特征进行对比。面对其他的一些验证码需要我们通过观察掌握图片的规律,灵活地使用其他的算法来识别去除干扰素,提取出样本特征。

同样地,在生成验证码的过程中,我们需要避免生成易于去除的干扰素。各个验证码之间在不影响人工识别的情况下尽可能粘连起来,避免被切割分类。

文章来自公众号:睿江云计算

睿江云官网链接:https://www.eflycloud.com/home?from=RJ0024

原文地址:https://blog.51cto.com/13475644/2404230

时间: 2024-11-06 14:40:01

图片识别之验证码识别的相关文章

车牌识别及验证码识别的一般思路

http://www.pin5i.com/showtopic-22246.html 描述一下思路及算法. 全文分两部分,第一部分讲车牌识别及普通验证码这一类识别的普通方法,第二部分讲对类似QQ验证码,Gmail验证码这一类变态验证码的识别方法和思路. 一.车牌/验证码识别的普通方法 车牌.验证码识别的普通方法为: (1)      将图片灰度化与二值化 (2)      去噪,然后切割成一个一个的字符 (3)      提取每一个字符的特征,生成特征矢量或特征矩阵 (4)      分类与学习.

第二十三节:scrapy爬虫识别验证码(二)图片验证码识别

图片验证码基本上是有数字和字母或者数字或者字母组成的字符串,然后通过一些干扰线的绘制而形成图片验证码. 例如:知网的注册就有图片验证码 首先我们需要获取验证码图片,通过开发者工具我们可以得到验证码url链接 其次就是通过Pillow类库和tesserocr进行识别,代码如下: 1 # -*- coding:utf-8 -*- 2 import tesserocr 3 from PIL import Image 4 import requests 5 6 # 通过url链接获取验证码图片,并写入本

优优云验证码识别积累一二

工作中需要自动破解识别验证码,本着不闭门造车的原则,我尝试使用了下优优云识别(逼格高吧,其实是自己对复杂的图像识别有心无力了). 以前自己积累的识别二维码的文章,传送门: http://blog.csdn.net/shuzui1985/article/details/8188993 优优云识别(验证码识别)主页: http://www.uuwise.com/ 原理及环境 注册开发者模式,同时和客服套取一定数量的免费调试题分(有人会问题分 是什么东东,其实就是充值积分了,优优云的二维码识别基于的原

【识别码】使用(ImageMagick+tesseract-ocr)实现图像验证码识别实例

最近在搞一个无人值守系统时,需要能自动登录,在登录时需要输入验证码,所以研究了验证码识别技术,否则我这个无人值守系统的作用就没有了.目前只测试了字母和数字的识别,准确率还是可以的,呵呵,已经够我自已用了~~,至于中文的识别可以参考我上篇文章:利用开源程序(ImageMagick+tesseract-ocr)实现图像验证码识别. 验证码识别率如下图:(准确率还可以吧) 好吧,切入正题,赶快上架源码吧~~,不足之处请多多包涵 注意:在使用验证码识别类之前,一.请先安装好ImageMagick,二.需

Python验证码识别处理

阅读目录 准备工作 验证 实例 大部分的系统在用户登录时都要求用户输入验证码,验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的,对于系统来说使用验证码可以有效果的防止采用机器猜测方法对口令的刺探,在一定程度上增加了安全性 准备工作 处理验证码需要PIL库.pytesser库的支持 1.安装PIL库 官网下载 ,下载后是exe应用程序,直接双击安装,它会自动安装到Python的lib\site-packages目录下 2.安装pytesser库 官网下载 | 博客园下

验证码识别相关文章

python验证码识别1:灰度处理.二值化.降噪.tesserocr识别:http://www.hi-roy.com/2017/09/19/Python验证码识别/ python验证码识别2:投影法.连通域法分割图片:http://www.hi-roy.com/2017/09/20/Python验证码识别2/ python验证码识别3:滑动验证码:http://www.hi-roy.com/2017/09/21/Python验证码识别3/ python验证码识别4:滴水算法分割图片:https:

字符型图片验证码识别完整过程及Python实现

1   摘要 验证码是目前互联网上非常常见也是非常重要的一个事物,充当着很多系统的 防火墙 功能,但是随时OCR技术的发展,验证码暴露出来的安全问题也越来越严峻.本文介绍了一套字符验证码识别的完整流程,对于验证码安全和OCR识别技术都有一定的借鉴意义. 2   关键词 关键词:安全,字符图片,验证码识别,OCR,Python,SVM,PIL 3   免责声明 本文研究所用素材来自于某旧Web框架的网站 完全对外公开 的公共图片资源. 本文只做了该网站对外公开的公共图片资源进行了爬取, 并未越权 

验证码识别之w3cschool字符图片验证码(easy级别)

起因: 最近在练习解析验证码,看到了这个网站的验证码比较简单,于是就拿来解析一下攒攒经验值,并无任何冒犯之意... 验证码所在网页: https://www.w3cschool.cn/checkmphone?type=findpwd 验证码地址: https://www.w3cschool.cn/scode 1. 分析规律 打开这个页面: https://www.w3cschool.cn/scode,不断的按F5刷新观察,可以发现,虽然每次字符内容.位置会变化,但是字体的样式是一直不变的,对于这

验证码识别与生成类API调用的代码示例合集:六位图片验证码生成、四位图片验证码生成、简单验证码识别等

以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 六位图片验证码生成:包括纯数字.小写字母.大写字母.大小写混合.数字+小写.数字+大写.数字+大小写等情况. 四位图片验证码生成:包括纯数字.小写字母.大写字母.大小写混合.数字+小写.数字+大写.数字+大小写等情况. 简单验证码识别:验证码类型 : 数字+字母, 纯英文, 纯数字,计算题 英数_验证码识别:纯数字,纯英文,数字+英文 中英数_验证码识别:英文.数