图像验证码识别(三)——基本流程讨论
图像验证码的识别很类似OCR,不过验证码的功能就是防止机器人暴力破解,因此相比于OCR,图片上的干扰因素要多的多。因此如果直接读取图片的特征值进行训练,这样正确率会非常低。
常见的验证码干扰有很多种
1. 首先是噪点,就是验证码图片种有很多鼓励的点,有些噪点的颜色各异,比如下面这张:
2. 其次是字符的倾斜,验证码会有不同程度的旋转、扭曲,使得在识别的时候不易破解。
3. 再次就是字符的粘连,大多数破解思路就是将图片上的验证码分割为一个个单独的字符然后进行识别,因此如果验证码种的字符粘连程度很高的时候,这样算法最后分割得到的单个字符就会与目标差别很大,影响正确率。
字符的扭曲和粘连比如12306的新验证码,在我看来12306这个验证码的破解难度已经很大了,不过360的抢票王确实能够破解而且识别率很高,但是360抢票王还是抢不到票,即使票很多。
可以看到,两个字符由于粘连有很大的重叠部分,因此想要分割成单个的字符,还是有比较大的难度。
4. 接下来就是干扰线,很多验证码会用一条线从左到右贯穿验证码字符,这样做的目的也是使得验证码的字符连城一个整体,防止通过像素来将每个字符孤立出来
QQ的验证码几乎都有干扰线,比如:
5. 当然,还有很多有特点的验证码,比如百度贴吧的神兽——汉字,CSDN博客发布时的四则运算等,这里暂时先不讨论。
识别主要过程:
验证码识别的主要分为两步:图片预处理和图像识别。具体步骤如下:
1. 图像灰度化、二值化,这一步主要为了后面处理的方便,将图片中每个点的像素值只设为两种,要么为255要么为0,一种表示信息元素,一种表示背景。但是如果验证码是彩色的,而干扰因素比如噪点和干扰线可以通过颜色过滤,那么在灰度化、二值化之前还是需要先过滤掉干扰信息,具体情况具体分析,没有一个固定的顺序。
2. 图像降噪点,去除干扰线。主要通过一些滤波算法、降噪算法将验证码图片的干扰因素去掉。
3. 接下来就是字符分割,将图片上的字符分为单个的字符
4. 字符归一化 ,将被旋转倾斜的字符恢复为正常的角度,并且将单个字符的图片经过缩放归一位固定大小(比如16*16)
5. 特征值提取,将归一后的字符图片,按照一定的算法,得到一组若干个特征值
6. 训练,将一定规模的标记号的字符经过图片预处理后得到的特征值与其对应的字符内容,选择特定算法进行训练,得到训练模板
7. 测试,再取若干分类好的数据,得到特征值然后用相关算法进行预测,得到的字符与自身的字符进行比对,得到准确率
图像验证码识别(三)——基本流程讨论相关推荐
- 图像验证码识别(七)——字符分割
2019独角兽企业重金招聘Python工程师标准>>> 前面经过各种去除噪点.干扰线,验证码图片现在已经只有两个部分,如果pixel为白就是背景,如果pixel为黑就为字符.正如前面 ...
- 数字识别java开源_Java基于opencv实现图像数字识别(三)—灰度化和二值化
Java基于opencv实现图像数字识别(三)-灰度化和二值化 一.灰度化 灰度化:在RGB模型中,如果R=G=B时,则彩色表示灰度颜色,其中R=G=B的值叫灰度值:因此,灰度图像每个像素点只需一个字 ...
- Python 识别携程中文验证码(95%正确率)并自动登陆携程+图灵图像验证码识别平台
这两天有一个业务需求,需要登陆不同的携程账号获取订单信息,但是由于携程有验证码检测机制,而且是个中文验证码比较难识别,试了几家人工打码平台,要么贵,要么延时高,要么没办法24小时运行.最后总算让我找到 ...
- python图像验证码识别_python 简单图像识别--验证码
python 简单图像识别--验证码 记录下,准备工作安装过程很是麻烦. 首先库:pytesseract,image,tesseract,PIL windows安装PIL,直接exe进行安装更方便( ...
- 微博模拟登陆的方法 + 图灵图像图片验证码识别平台 识别验证码(97%正确率)Python + Selenium+Chrome
最近遇到一个问题,需要频繁切换账号登陆微博,但是需要识别微博的验证码,比较麻烦.而且因为需要24h不间断的操作,所以没法使用人工打码平台,而且打码平台也比较贵,延迟又高.最后找到了一个可以机器识别出来 ...
- 验证码识别,发票编号识别(转)
毕业设计做了一个简单的研究下验证码识别的问题,并没有深入的研究,设计图形图像的东西,水很深,神经网络,机器学习,都很难.这次只是在传统的方式下分析了一次. 今年工作之后再也没有整理过,前几天一个家伙要 ...
- 基于深度学习的图标型验证码识别系统
深度学习应用于图像处理领域应该说有很长一段时间了,相关的研究成果也有很多的积累了,从项目和实践入手是我觉得的最好最快速有效的学习手段,当下很多主流的验证码识别系统大都是基于神经网络设计开发而来的,在处 ...
- python验证码识别训练模型_python 基于机器学习识别验证码
1.背景 验证码自动识别在模拟登陆上使用的较为广泛,一直有耳闻好多人在使用机器学习来识别验证码,最近因为刚好接触这方面的知识,所以特定研究了一番.发现网上已有很多基于machine learning的 ...
- 深度学习caffe实战(一)验证码识别
狭义上讲验证码识别是将验证码图像转化成字符串值,传统方法常常先对验证码图像进行字符分割,再对验证码进行识别,劣势在于字符分割方法往往针对不同风格的验证码需要做修改,某些验证码加入噪声或线条,字符位置不 ...
最新文章
- 用python设计学生管理系统_python+tkinter实现学生管理系统
- 语义分割--Label Refinement Network for Coarse-to-Fine Semantic Segmentation
- Ext2、Ext3和Ext4之间的区别
- 倩女手游服务器维护,倩女手游7月28日服务器在线维护公告
- netflix 开源_手工3D打印机,Netflix上的开源等
- Vue全局API总结
- 关于安装wordpress出现500 Internal Server Error的解决方案
- 页面上传图片只能通过表单完成,且页面端向服务器端发送消息除了ajax外基本通过表单;通过JavaScript ajax代码只能post到服务器json与xml;...
- 用C#实现MD5算法
- c语言不能正确输出最小值,C语言综合测试.doc
- JAVA I/O基本操作
- Android相关属性的介绍:android:exported = true
- html网页背景音乐代码
- vulnstack4渗透-内网篇
- hypermedia_Hypermedia REST API简介
- 计算机导论的答案,计算机导论答案
- 十进制转换为二进制(短除法)
- uniapp连接本地服务器请求超时
- pythonurllib爬虫教学_Python学习教程:这里是Python爬虫的起点,抢占资源啦
- html语言中kbd的含义,HTML: kbd 标签