基于深度学习的自然场景文字检测及端到端的OCR中文文字识别

简介:

实现功能

 ●  文字方向检测 0、90、180、270度检测
 ●  文字检测 后期将切换到keras版本文本检测 实现keras端到端的文本检测及识别
 ●  不定长OCR识别

环境部署

Bash
##GPU环境
sh setup.sh
##CPU环境
sh setup-cpu.sh
##CPU python3环境
sh setup-python3.sh
使用环境:python3.6+tensorflow1.7+cpu/gpu

模型训练

 ●  一共分为3个网络
 ●  1. 文本方向检测网络-Classify(vgg16)
 ●  2. 文本区域检测网络-CTPN(CNN+RNN)
 ●  3. EndToEnd文本识别网络-CRNN(CNN+GRU/LSTM+CTC)

文字方向检测-vgg分类

基于图像分类,在VGG16模型的基础上,训练0、90、180、270度检测的分类模型.
详细代码参考angle/predict.py文件,训练图片8000张,准确率88.23%

模型地址

文字区域检测CTPN

支持CPU、GPU环境,一键部署

文本检测训练参考

https://github.com/eragonruan/text-detection-ctpn

OCR 端到端识别:CRNN

ocr识别采用GRU+CTC端到到识别技术,实现不分隔识别不定长文字

提供keras 与pytorch版本的训练代码,在理解keras的基础上,可以切换到pytorch版本,此版本更稳定

如果你只是测试一下

运行demo.py  写入测试图片的路径即可,
如果想要显示ctpn的结果,
修改文件./ctpn/ctpn/other.py
的draw_boxes函数的最后部分,
cv2.inwrite('dest_path',img),如此,
可以得到ctpn检测的文字区域框以及图像的ocr识别结果

如果你想训练这个网络

1 对ctpn进行训练

 ●  定位到路径--./ctpn/ctpn/train_net.py
 ●  预训练的vgg网络路径VGG_imagenet.npy将预训练权重下载下来,pretrained_model指向该路径即可, 此外整个模型的预训练权重checkpoint
 ●  ctpn数据集还是百度云数据集下载完成并解压后,将.ctpn/lib/datasets/pascal_voc.py 文件中的pascal_voc 类中的参数self.devkit_path指向数据集的路径即可

2 对crnn进行训练

 ●  keras版本 ./train/keras_train/train_batch.py  model_path--指向预训练权重位置 MODEL_PATH---指向模型训练保存的位置keras模型预训练权重
 ●  pythorch版本./train/pytorch-train/crnn_main.py

parser.add_argument(
    '--crnn',
    help="path to crnn (to continue training)",
    default=预训练权重的路径,看你下载的预训练权重在哪啦)
parser.add_argument(
    '--experiment',
    help='Where to store samples and models',
    default=模型训练的权重保存位置,这个自己指定)

识别结果展示

文字检测及OCR识别结果

e38fbca179f9a4fbd0b796412744f5ea2ebe2b92

主要是因为训练的时候,只包含中文和英文字母,因此很多公式结构是识别不出来的

看看纯文字的

f999b15558e50f9d420ee8c3bceedb2c8bfce6ce

可以看到,对于纯文字的识别结果还是阔以的呢,感觉可以在crnn网络在加以改进,现在的crnn中的cnn有点浅,并且rnn层为单层双向+attention,目前正在针对这个地方进行改动,使用迁移学习,以restnet为特征提取层,使用多层双向动态rnn+attention+ctc的机制,将模型加深,目前正在进行模型搭建,结果好的话就发上来。


原文发布时间为:2018-09-29

本文来自云栖社区合作伙伴“大数据挖掘DT机器学习”,了解相关信息可以关注“大数据挖掘DT机器学习”。

相关文章
|
25天前
|
文字识别 容器
文字识别OCR常见问题之本地部署如何解决
文字识别OCR(Optical Character Recognition)技术能够将图片或者扫描件中的文字转换为电子文本。以下是阿里云OCR技术使用中的一些常见问题以及相应的解答。
31 3
|
25天前
|
文字识别 前端开发 API
文字识别OCR常见问题之处理产品图片识别如何解决
文字识别OCR(Optical Character Recognition)技术能够将图片或者扫描件中的文字转换为电子文本。以下是阿里云OCR技术使用中的一些常见问题以及相应的解答。
22 3
|
8天前
|
机器学习/深度学习 并行计算 监控
基于深度学习的电动自行车头盔佩戴检测系统
基于深度学习的电动自行车头盔佩戴检测系统
23 0
|
22天前
|
机器学习/深度学习 文字识别 并行计算
【C/C++ OCR识别】深入探索:Qt C++与OCR识别的完美结合
【C/C++ OCR识别】深入探索:Qt C++与OCR识别的完美结合
62 2
|
24天前
|
机器学习/深度学习 算法
m基于深度学习的64QAM调制解调系统相位检测和补偿算法matlab仿真
MATLAB 2022a仿真实现了基于深度学习的64QAM相位检测和补偿算法,有效应对通信中相位失真问题。通过DNN进行相位检测和补偿,降低解调错误。核心程序生成随机信号,模拟AWGN信道,比较了有无相位补偿的误码率,结果显示补偿能显著提升性能。
25 8
|
25天前
|
机器学习/深度学习 文字识别 API
文字识别OCR常见问题之发票真伪查询有接口如何解决
文字识别OCR(Optical Character Recognition)技术能够将图片或者扫描件中的文字转换为电子文本。以下是阿里云OCR技术使用中的一些常见问题以及相应的解答。
25 0
|
25天前
|
文字识别 API
文字识别OCR常见问题之支持香港和澳门的营业执照识别如何解决
文字识别OCR(Optical Character Recognition)技术能够将图片或者扫描件中的文字转换为电子文本。以下是阿里云OCR技术使用中的一些常见问题以及相应的解答。
22 3
|
25天前
|
存储 文字识别 API
文字识别OCR常见问题之识别一些截图的模式如何解决
文字识别OCR(Optical Character Recognition)技术能够将图片或者扫描件中的文字转换为电子文本。以下是阿里云OCR技术使用中的一些常见问题以及相应的解答。
26 0
文字识别OCR常见问题之识别一些截图的模式如何解决
|
25天前
|
文字识别 API 开发工具
文字识别OCR常见问题之滴滴行程单无法识别(png上传)如何解决
文字识别OCR(Optical Character Recognition)技术能够将图片或者扫描件中的文字转换为电子文本。以下是阿里云OCR技术使用中的一些常见问题以及相应的解答。
24 2
|
25天前
|
文字识别 负载均衡 安全
文字识别OCR常见问题之通用识别和手写体识别直接合并调用如何解决
文字识别OCR(Optical Character Recognition)技术能够将图片或者扫描件中的文字转换为电子文本。以下是阿里云OCR技术使用中的一些常见问题以及相应的解答。
32 4