本文完整项目代码,模型预训练权重,和数据集获取方式
关注微信公众号 datayx 然后回复 OCR 即可获取。
环境部署
Bash
##GPU环境
sh setup.sh
##CPU环境
sh setup-cpu.sh
##CPU python3环境
sh setup-python3.sh使用环境:python3.6+tensorflow1.7+cpu/gpu
基于图像分类,在VGG16模型的基础上,训练0、90、180、270度检测的分类模型. 详细代码参考angle/predict.py文件,训练图片8000张,准确率88.23%
模型地址
文字区域检测CTPN
支持CPU、GPU环境,一键部署
文本检测训练参考
https://github.com/eragonruan/text-detection-ctpn
提供keras 与pytorch版本的训练代码,在理解keras的基础上,可以切换到pytorch版本,此版本更稳定
如果你只是测试一下
运行demo.py 写入测试图片的路径即可,
如果想要显示ctpn的结果,
修改文件./ctpn/ctpn/other.py
的draw_boxes函数的最后部分,
cv2.inwrite('dest_path',img),如此,
可以得到ctpn检测的文字区域框以及图像的ocr识别结果
2 对crnn进行训练
parser.add_argument(
'--crnn',
help="path to crnn (to continue training)",
default=预训练权重的路径,看你下载的预训练权重在哪啦)
parser.add_argument(
'--experiment',
help='Where to store samples and models',
default=模型训练的权重保存位置,这个自己指定)
主要是因为训练的时候,只包含中文和英文字母,因此很多公式结构是识别不出来的
看看纯文字的
可以看到,对于纯文字的识别结果还是阔以的呢,感觉可以在crnn网络在加以改进,现在的crnn中的cnn有点浅,并且rnn层为单层双向+attention,目前正在针对这个地方进行改动,使用迁移学习,以restnet为特征提取层,使用多层双向动态rnn+attention+ctc的机制,将模型加深,目前正在进行模型搭建,结果好的话就发上来。