发布时间:2022-11-29 19:00
1.验证码
验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers andHumans Apart”(全自动区分计算机和人类的图灵测试)的缩写。所以,在计算机领域验证码作为一个“区分人和机器”的常用的手段(主要是为了防止恶意破解密码、刷票、论坛灌水),大概有10几年的历史了。
即使在今天,图片验证码技术仍然在各大平台网站(Google、淘宝、QQ等的注册登录功能)遍地开花。
2.识别验证码技术
有趣的是,随着计算机自动识别验证码的技术在不断发展,从传统的OCR识别到今天的神经网络识别,技术日益精湛,机器对传统验证码的识别已经可以做的很好,可以做到以假乱真,使得验证码无法准确的区分计算机还是人类,传统验证码正在逐渐失去它本身的意义。
3.传统OCR技术
这个一个古老的研究领域,在很长的一段时间里,传统OCR技术一直占主要地位。它的主要思路是:
1.图像采集;
2.图像处理(灰度化、二值化、去燥、倾斜度校正、字符切割、归一化)
3.图像识别(提取字符特征、样本训练、识别)
4.输出结果
试过的人都知道,上面每一步其中的难度。特别是“去燥、字符切割”这两个环节,是非常繁琐而且高难度的技术。
4.端到端的神经网络验证码识别
我采用了图片识别领域,目前最先进的技术:卷积神经网络(简称 CNN )!
使用的深度学习框架是:PyTorch!
具体实现代码参考本人Github:https://github.com/dee1024/pytorch-captcha-recognition
本项目具备以下特性:
1.端到端,不需要做更多的图片预处理(比如图片字符切割、图片尺寸归一化、图片字符标记、字符图片特征提取)
2.验证码包括数字、大写字母、小写
3.采用自己生成的验证码来作为神经网络的训练集合、测试集合、预测集合
4.纯四位数字,验证码识别率高达 99.9999 %
5.四位数字 + 大写字符,验证码识别率约 96 %
6.深度学习框架pytorch + 验证码生成器ImageCaptcha
原理
使用常用的 Python 验证码生成库 ImageCaptcha,生成 10w 个验证码,并且都自动标记好; 如果需要识别其他的验证码也同样的道理,寻找对应的验证码生成算法自动生成已经标记好的训练集合或者手动对标记,需要上万级别的数量,纯手工需要一定的时间,再或者可以借助一些网络的打码平台进行标记。
训练卷积神经网络 构建一个多层的卷积网络,进行多标签分类模型的训练 标记的每个字符都做 one-hot 编码 批量输入图片集合和标记数据,大概15个Epoch后,准确率已经达到 96% 以上。
5.识别准确率展示
6.项目代码
具体实现代码参考本人Github:https://github.com/dee1024/pytorch-captcha-recognition
验证码识别技术、Github开源项目交流QQ群:570997546