前言
前段时间,项目中的一个核心模块中需要中文OCR功能,走过弯路趟过坑,这里分享出来。
实战
- 常见网络架构
- cnn + blstm + ctc
- cnn + ctc
- crnn + self_attetion + ctc
- crnn + attetion + ctc
-
github上面测试的结果
-
经验分享
1、使用DenseNet + CTC 架构搭建模型,在500万+的数据集上面训练,准确率0.97
2、词典:使用GB2312 + 常见特殊字符 + 数字 + 英文
3、实际测试中,DenseNet + CTC 比带Attention架构的模型整体识别率要高比较多,带Attention架构的模型一是容易误识别,二是容易漏识别
4、平衡整体性能,优先选 DenseNet + CTC
5、DenseNet + CTC模型存在的问题:无法区分字形很相近的字,如“ _ ”和 “ - ”, y和v等。带Attention架构的模型在这块有较大的优势。
- 详细介绍:DenseNet—Dense卷积网络
参考git源码
- CTPN + DenseNet + CTC : https://github.com/YCG09/chinese_ocr
- crnn_self_attetion : https://github.com/koibiki/crnn_self_attetion
- CRNN_Attention_OCR : https://github.com/wushilian/CRNN_Attention_OCR_Chinese

本文分享了在项目中实现中文OCR功能的经验,对比了几种常见的网络架构,包括cnn+blstm+ctc、cnn+ctc、crnn+self_attention+ctc等,并详细介绍了DenseNet+CTC模型的训练过程与识别效果。实测表明,DenseNet+CTC在500万+数据集上准确率达到0.97,优于带Attention的模型。

9589





