基于keras 实现的验证码ocr识别

自从app2vec工作告一段落后,在公司招聘面试过程中发现了一个有意思的东西OCR(Optical Character Recognition)。于是趁目前疫情期间有一些时间的情况下,做了一些浅显的简单尝试。

数据准备

数据使用captcha生成。生成一些带有高斯噪音的验证码图片,图片固定大小为160*60。生成的验证码展示如下:


image.png

网络构建

网络使用常见的结构,即多层CNN+MaxPooling+RNN网络。目前更主流的做法,尤其是需要针对不定长字符检测的情况,会在RNN后加上CTC,以便更好识别不定长字符串,这也是后期我需要加入的新工作。

model.png

效果展示

训练了6个epoch,每个epoch训练样本512200,验证集样本51250。验证集准确率平均约为94%,测试集上的准确率为89.2%。对于"D0OP"以及"O00O"这种变态的验证码偶尔也能识别出来。

image.png

后期优化点

  • 加入CTC,识别不定长字符串
  • 增加读取本地文件功能
  • 增加对不同size的图片的识别功能
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。