图片文字提取项目

检测网络:CRAFT,基于字符区域感知的文本检测;
CRAFT源码:https://github.com/clovaai/CRAFT-pytorch
识别网络:crnn+seq2seq,编解码结构,文字识别;
crnn+seq2seq源码:https://github.com/bai-shang/crnn_seq2seq_ocr_pytorch

1. 写在最前面

项目花了一个星期,基本上也是去github上拿现有得模型拼凑起来得项目。
效果也达不到商业级别。只可供学习交流,也欢迎各位大佬大神交流学习,批评指教。

附上我在github上上传的代码。https://github.com/ooooxianyu/craft_rcnn_forch

检测部分,即问文字检测。本来想自己用yoloV5试着自己训练做一下,但是文本检测和物体检测还是很不同的。比如文字的长短,方向……查了查网上基于yoloV3的文本检测,看了有一个用的CTPN对训练数据的标注信息做预处理的,先做文本分割,检测时候检测的文本也是分割一块一块的,在进行合并。附上这一篇,有兴趣的可以看看。自然场景OCR检测(YOLOv3+CRNN)

(内心:劝退,这有没有简单的方法。)

后来就找到现成的文本检测项目CRAFT。(连权重包都给我了,而且效果还贼好,那我还自己搞个啥子。(′д` )…彡…彡)

识别部分:之前整过验证码识别。然后那时候也学了RNN的一些实用操作。当然也了解了,文本识别为什么这么难。就比如,我们检测出来一行文字,但是却不知道它由多少个字符组成。也就是长短不一。
网上大部分的文本识别,基本上也都是基于CRNN的,大同小异,不同的模型之间顶多就是主干网络换一换啥的。
找了一篇CRNN+CTC的讲解:https://zhuanlan.zhihu.com/p/43534801

然后代码实现的话我自己选的是crnn&seq2seq,为什么选这个呢?(我是不会告诉你们,github的其他代码都好**的长,只有这个才几个代码几百行代码。d=====( ̄▽ ̄)b)另外,源码的权重包emmmm,识别特别差。所以我自己跑了训练集,训练集在这里拿,https://github.com/chineseocr/chineseocr,非常大的文本数据集。我也只用了里面的十几万张。(而且跑的时间很短,就几轮,跑了我半天 /(ㄒoㄒ)/~~)

事先说明,识别效果不是很好,还需要后续优化。比如训练久一点,提高一下数据集的多样性啥的。
而且,只能识别正图,就是图片文字是正方向的而且一行一行识别的,旋转和翻转以及竖着都会识别不出来。

接下来直接上干货。

2. CRAFT文本检测

CRAFT的基本原理看这里。我也只是大概看了一下,大概的意思就是说,这个算法就是基于字符的,我们一个一个字符检测,通过精确地定位每一个字符,然后再把检测到的字符连接成文本目标。我们只需要关注字符以及字符之间的距离,不需要关注整行文本,所以不需要很大的感受野。阿巴阿巴阿巴……

然后就git一下代码,然后上谷歌上下载下权重包。然后放进去权重,再把要测试的图片放进去,改改配置文件。跑一下test.py,就……出来了。

输出的结果由三个啊。我们只需要box的信息,然后再原图上进行裁剪,之后放入识别网络。

下面两张测试图片。(第一张是自己的车票,第二张是百度直接找的。)总体效果还是不错的嘛。好的,那就进入下一步识别!( •̀ ω •́ )y

3. CRNN&seq2seq文本识别

(1)啥是CRNN?
CRNN就是一个CNN加一个RNN组合起来就是CRNN。。。ㄟ( ▔, ▔ )ㄏ
(2)CRNN有啥用?
我们知道文本识别最大的问题就是,不知道文本的长度和大小,CRNN就可以解决这样的问题。只要把图片缩放成它输入的格式,网络是端到端的,就直接输出结果。(也就解决了文本长短大小不一的问题)而且这个网络小,速度快啊。
流程:
首先CNN提取图像卷积特征
然后seq2seq进一步提取图像卷积特征中的序列特征。

训练集,https://github.com/chineseocr/chineseocr,非常大的文本数据集。我自己在他模型的基础上跑了这个数据集。(样本标签为两个文本文件train.txt和test.txt,格式为:图片路径 文本)注意代码里面需要打开txt 文本的代码都要加上encoding=“UTF-8” 如下:(然后基本上没其他问题就能跑得通了)

with open('', encoding="UTF-8") as f:

把权重包放进去,(decoder和encoder)然后运行detect.py 。(修改好配置文件)

然后看看结果哈:(以上面那个我的火车票为例……emmmm部分没啥问题嘛反正,效果确实也看得出来不好。还得优化,等我挂个几天再看看效果。)

——————————————————————————————————————————————————————
又跑了10多个小时。至少把我名字和身份信息打对了哈(所以就马赛克一下)。不过还是有错误。(可能就是数据集中有很多字体样式不一样,具体到商业项目的话可以根据场景收集数据集,训练效果应该也不会那么差。)

[深度学习 - 实战项目] CRAFTCRNN_seq2seq图片文字提取相关推荐

  1. 深度学习实战项目:速算题目批改

    深度学习实战项目:速算题目批改 前言 一.摘要 二.项目框架 三.项目步骤 1. 数据处理 1.1 数据收集 1.2 数据打标 1.3 数据预处理 2. 模型训练 2.1 目标检测 2.1.1 模型介 ...

  2. 【功能超全】基于OpenCV车牌识别停车场管理系统软件开发【含python源码+PyqtUI界面+功能详解】-车牌识别python 深度学习实战项目

    车牌识别基础功能演示 摘要:车牌识别系统(Vehicle License Plate Recognition,VLPR) 是指能够检测到受监控路面的车辆并自动提取车辆牌照信息(含汉字字符.英文字母.阿 ...

  3. 最适合入门的100个深度学习实战项目

    前言 大家好,我是阿光. 本专栏整理了<PyTorch深度学习项目实战100例>,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集. 正在更新 ...

  4. Pytorch深度学习实战项目回顾

    1.前言 很久没有碰Pytorch了,准备以实战项目代码回顾的方式进行复习. 2.Pytorch安装 现在我又切回了ubuntu系统,里面没有Pytorch,所以顺便从Pytorch最新版安装开始讲起 ...

  5. 深度学习实战14(进阶版)-手写文字OCR识别,手写笔记也可以识别了

    大家好,我是微学AI,今天给大家带来手写OCR识别的项目.手写的文稿在日常生活中较为常见,比如笔记.会议记录,合同签名.手写书信等,手写体的文字到处都有,所以针对手写体识别也是有较大的需求.目前手写体 ...

  6. 深度学习实战1-(keras框架)企业数据分析与预测

    大家好,我是微学AI,今天给大家带来深度学习框架keras的实战项目,用于基本的企业数据分析,预测企业净利润情况,并利用灰色预测函数GM11进行预测模型.我们拿到企业数据,这里参数抽象成x1-x9,y ...

  7. 深度学习实战3-文本卷积神经网络(TextCNN)新闻文本分类

    文章目录 一.前期工作 1. 设置GPU 2. 导入预处理词库类 二.导入预处理词库类 三.参数设定 四.创建模型 五.训练模型函数 六.测试模型函数 七.训练模型与预测 今天给大家带来一个简单的中文 ...

  8. 深度学习实战2-(keras框架)企业信用评级与预测

    深度学习框架如果仔细研究,其实难度没有想象中的那么大,今天我给大家带来一个深度学习框架keras简单的实战项目:企业信用评级与预测. 企业信用评级目前是一个完整的体系,包括信用评级的要素和指标.信用评 ...

  9. 深度学习实战6-卷积神经网络(Pytorch)+聚类分析实现空气质量与天气预测

    文章目录 一.前期工作 导入库包 导入数据 主成分分析(PCA) 聚类分析(K-means) 二.神经网络模型建立 三.检验模型 大家好,我是微学AI,今天给大家带来一个利用卷积神经网络(pytorc ...

最新文章

  1. java 的回调函数
  2. CentOS Linux 7 安全基线设置
  3. 解决 yum时 Error: Protected multilib versions报错
  4. 精读《React PowerPlug 源码》
  5. gVim 中文内容显示为乱码的解决办法
  6. SpringMVC框架的介绍
  7. mysql安装、导入数据脚本
  8. Java多线程学习三十:ThreadLocal 适合用在哪些实际生产的场景中
  9. 通过kubeadm的方式以及二进制包的方式安装k8s的对比总结---K8S_Google工作笔记0016
  10. ZTE Unveils World's First WiMAX Mobile Video Surveillance Terminal
  11. Jetty使用教程(四:24-27)—Jetty开发指南
  12. JAVA数组——二分查找
  13. 杂项-TMod:常见错误
  14. 【渝粤教育】广东开放大学 电算化会计 形成性考核 (44)
  15. 10 款富有创意的博客名片设计
  16. SR505人体感应模块
  17. SAP中供应商清单输出方法
  18. python的链式操作及类型推断(filter/map/find) 摘自国产开源库pyiter库
  19. 软考-架构师-第七章-系统规划 第二节 可行性研究与效益分析 (读书笔记)
  20. CV之FR:基于cv2和dlib库自带frontal_face_detector(人脸征检测器)利用landmarks.dat文件实现人脸检测与人脸标记之《极限男人帮》和《NBA全明星球员》案例应用

热门文章

  1. SaltStack常用的模块
  2. 关于mirro多仓库配置的一些问题
  3. c语言函数变量的作用域与生存期
  4. 视频图像数据处理八:将rgb视频图像转换为yuv420格式视频图像
  5. GOOGLE卫星地图 计算方式
  6. tdengine根据时间对数据自动进行填充
  7. mysql生成uui mybatis_Mybatis【配置文件】详解
  8. Kafka KSQL
  9. python opencv BGR2RGB转换原理
  10. exdoll机器人_打造国内领先的定制化人工智能机器人品牌, EXDOLL新品惊艳亮相_TOM新闻...