字符类验证码识别——常用算法及主要流程

作者: 何知晓 | 来源:发表于2016-08-01 16:05 被阅读1597次

验证码识别相关

字符类验证码识别主要过程

  1. 去噪
  2. 二值化
  3. 切分
  4. 归一化
  5. 特征提取
  6. 训练模型
  7. 再优化

字符类验证码基本流程大致就是以上几步,只是针对不同的验证码会选择不同的算法。
此外需要注意验证码识别流程绝不是固定的,针对不同特征的验证码选择不同的流程才是最好的做法。

去噪

去噪可以说是验证码识别中最重要的一环,一旦去噪没做好,最终结果一定是惨不忍睹,相反,若是去噪做好了,整个验证码识别将水到渠成。
常见去噪方法:

  1. 灰度去噪,即根据噪音与有效信息像素灰度的不同进行去噪,主要针对背景色RGB较大时(即颜色接近白色)使用。
  2. 骨架侵蚀去噪,主要针对细点、细线等噪声去噪,当一个点与周围8个点中若干个点的RGB值相差较大时,认为该点为噪点,进行去噪。需注意此方法会对原有有效信息造成破坏,所以需要谨慎使用。
  3. RGB去噪,主要针对验证码中单个字符颜色极为接近情况下进行去噪,令RGB值差在1~5以内的像素构成一幅图像,有效的字符往往有效信息较多,取有效信息最多的若干幅图片,认为是去噪后的字符。此算法同时完成了去噪、二值化、切分。
  4. 视差去噪,模拟人识别物体的一种算法,即对每一个像素与它周围的8个像素做RGB对比,差别约大则颜色越深,这种算法可以用来识别类似腾讯开放平台的验证码。
  5. 特定问题特定分析,基本上每个网站都有一套自己的验证码生产算法,所以遇到复杂验证码时我们必须进行针对性的分析,找到验证码的弱点,不断挖掘,完成破解。

二值化

二值化算法较为有限,基本为灰度二值化与RGB二值化,都是利用颜色的RGB信息进行分类完成黑白两色的转化。

切分

针对无粘连字符的切分较为简单,下面主要谈谈针对有粘连字符的切分算法。
y轴侧视算法:在y轴上观察x轴所有黑色像素点之和,找出若干个大于limit的不连续点,即可认为是切分点。

归一化

归一化,即将旋转字符逆旋转化,需要注意的是我们并不需要将字符“摆正”,而是让所有相同字符“正”的角度相同,有以下几种算法:

  1. 宽度最小算法:主要针对数字和字母字符,认为该类字符在摆正的情况下宽度最小,由此完成逆旋转归一。
  2. 横竖侧凸算法:我根据汉字“横平竖直”的特点而发明的一种算法,即认为汉字在摆正的情况下横是平的,竖是直的,所以在x轴和y轴侧视时,若有横或竖,则该列像素中为黑色的数量很大,而上下两列黑色像素的数量较少,如3-15-4,由此让所有行的黑色像素数减去上一行的黑色像素数,取绝对值然后求和,突变最大的即为最“正”的汉字。由此完成逆旋转归一化。此算法对撇捺较多的汉字识别效果不好,但可以通过增加特征值的方式弥补。
    完成逆旋转化后,我们一般会将字符放大或缩小到同一size,方便后续的特征提取等操作。

特征提取&训练模型

最简单的方法是对图片取01字符串或二维数组,编辑距离越小则认为其越接近。
也可以通过深度学习等算法完成训练。
一般只需要对每个字符可能的结果做1~3次手动分类后,让模型自己进行100次左右分类,找出分类错误的项,针对优化或加入训练集。

相关文章

  • 字符类验证码识别——常用算法及主要流程

    验证码识别相关 字符类验证码识别主要过程 去噪 二值化 切分 归一化 特征提取 训练模型 再优化 字符类验证码基本...

  • python2.7搬运--->TensorFlow - 深

    谷歌的开源深度学习工具 --py 简介 验证码主要用于防刷,传统的验证码识别算法一般需要把验证码分割为单个字符,然...

  • 验证码识别综述

    目录 1.输入识别出的字符类验证码2.点选类验证码3.拖动滑块到指定位置的验证码4.OCR资源集合 1. 输入识别...

  • 基于CNN的可实际应用的图片验证码识别平台介绍

    这是一个图片字符型验证码识别平台,已投入实际应用; 本文主要: 一、简单介绍图片验证码识别平台; 二、介绍训练模型...

  • 验证码识别平台的应用技巧

    验证码自动识别平台是一类集齐验证码识别,验证码输入于一体的自动识别平台,平台二十四小时可用。主要应用于批...

  • 字符识别 笔记

    字符识别方法大致分两种 1 基于结构特征的方法 2基于统计特征的方法 传统的字符识别算法流程 待识别样本输入➡️预...

  • 基于iOS系统的虹膜识别算法研究

    基于iOS系统的虹膜识别算法研究 虹膜识别的基本原理: 一、虹膜识别系统的工作流程 虹膜识别系统的主要流程有以下几...

  • Java生成随机图片验证码

    Java生成随机图片验证码 验证码主要是数字和字母,并且剔除了不容易识别的那些字符,这里通过Servlet将图片对...

  • 人脸识别技术综述

    文章主要分为:一、人脸识别技术概述;二、人脸识别算法的框架;三、人脸识别的发展历史及分类;四、人脸识别的领域主要方...

  • day70-验证码识别

    在验证码的图像验证码识别中以前经常用到tesseract;但它的识别率较低,故现在已不常用。 现在用于普通图像验证...

网友评论

    本文标题:字符类验证码识别——常用算法及主要流程

    本文链接:https://www.haomeiwen.com/subject/nioxsttx.html