识别图片中的验证码

方案1:CNN+LSTM+CTC



本系统是光学字符识别系统(OCR),专门为自动识别验证码而设计,可以自动识别复杂验证码,并且不受验证码长度的限制。

本项目使用 100k 图片数据训练模型,并在比赛中使用测试数据(200k)中获得了 99.75% 的正确率。

输入

验证码图片

输出

验证码字符

项目地址

https://github.com/watsonyanghx/CNN_LSTM_CTC_Tensorflow

使用方法


Step1:配置软件环境

1.TensorFlow 1.2

2.Opecv3 (用来 读取图片).

3.Numpy

Step2: 运行

本项目支持设置的参数有很多,你可以从 utils.py 中找到支持设置的参数。

注意 num_classes 这个参数目前不支持设置。

Step3: 使用自己的数据训练模型

准备好数据,确保图片都按以下格式命名“id_label.jpg”,比如: “004_(1+4)*2.jpg” 。

项目原理

图片首先经过一个 CNN 提取特征,然后特征会被输入进一个 LSTM 来识别字符。

CNN 的结构非常简单,仅仅是“卷积 + Batch Normalization + Leaky Relu + Max Pooling”。而 LSTM 有两层,你可以尝试换成双向 LSTM 看看效果。

你可以自行尝试对神经网络模型进行改进,比如给 CNN 增加 dropout,看看效果。CNN 的代码在这里 CNN part LSTM的代码在这里 LSTM part

Leave A Comment?