基于keras 实现的验证码ocr识别
2020-02-28 本文已影响0人
yangy_fly
自从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的图片的识别功能