验证码识别综述

目录

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

1. 输入识别出的字符类验证码

验证码识别综述_第1张图片
image

对于这类验证码的识别方法为:

需要分割字符

  1. 图片预处理,包括二值化,降噪等
  2. 图片分割
  3. 提取特征
  4. 训练分类模型,识别字符

如果使用深度学习训练分类模型,第三步和第四步可以合为一步,神经网络可以自动提取特征
这种方法的难点在于:

  1. 背景噪声难以去除,例如字体上有横线等
  2. 图片粘在一起,难以切割
  3. 文字有旋转,扭曲等变形

在样本数量不是很大的情况下,这三种情况都会对准确率造成影响,当然如果样本足够多,这些也不是问题

不需要分割字符

图片中字符个数固定

对于固定字符的图片,可以利用深度学习里的CNN,基于CNN去识别验证码,其实就是一个图片的多标签学习问题。比如考虑一个4个数字组成的验证码,那么相当于每张图就有4个标签。那么我们把原始图片作为输入,4个标签作为输出,扔进CNN里,看看能不能收敛就行了。
https://zhuanlan.zhihu.com/p/21344595

图片中字符个数不固定

可以利用RNN/LSTM/GRU + CTC, 方法最早由Alex Graves在06年提出应用于语音识别。这个方法的好处在于可以产生任意长度的文字,并且模型的性质决定了它有能力学到文字与文字之间的联系(temporal relations/dependencies)。不足之处在于sequential natural决定了它的计算效率没有CNN高,并且还有潜在的gradients exploding/vanishing的问题
https://www.zhihu.com/question/20191727/answer/140372044

2. 点选类验证码

验证码识别综述_第2张图片
image

这类验证码的识别可以利用目标检测的方法,先从图像中检测出文字,再对文字分类.
目标检测可以采用的算法有 Yolo, SSD
具体实现可以参考这篇 博客

3. 拖动滑块到指定位置的验证码

验证码识别综述_第3张图片
image

这类验证码一般不需要打码做训练,只需要找到缺口的位置,并模拟运动轨迹就可以了.
这里有说明
以及代码

4. OCR资源集合

github awesome-ocr
专知 文字识别

你可能感兴趣的:(验证码识别综述)