文字识别(OCR)CRNN(基于pytorch、python3) 实现不定长中文字符识别

发布时间:2018-09-26 19:40,

浏览次数:1265

, 标签:

OCR

CRNN

pytorch

python

简单单人跟踪:https://github.com/Sierkinhane/human_tracker(基于目标检测与特征映射算法)

演示视频:https://www.bilibili.com/video/av44360925

新写的关于人脸检测算法MTCNN的文章https://blog.csdn.net/Sierkinhane/article/details/83308658

代码仓库:https://github.com/Sierkinhane/mtcnn-pytorch

斯坦福机器学习课程资料以及算法实现https://blog.csdn.net/Sierkinhane/article/details/82883161

代码仓库:https://github.com/Sierkinhane/CS229-ML-Implements

在六七月份参加了一个比赛,做的项目是提取图片中的文字信息,首先是接触了一些文本检测算法(如CTPN,East),后研究了文本识别算法(我认为较好的是CRNN)。代码实现是参考算法提出者的pytorch,python3版本的crnn实现。因为python版本的迭代,导致代码重使用比较难,其中涉及到ctc,python编码,中文数据集,如何将模型finetune到自己的应用场景上种种问题。实现的深度学习框架是pytorch,虽然TensorFlow也可以,但是比较多坑。其实是什么框架实现的都没关系,现在语法都是比较简单,看懂不难!

因为自己已经踩了很多坑,也填好了这些坑,就将自己填好的项目贡献给大家!

https://github.com/Sierkinhane/crnn_chinese_characters_rec

代码地址

这次分享的是文本识别算法CRNN,具体的内容我就不涉及了,这篇文章主要是做算法代码的实现(参考原作者),建议大家研读算法一定要看作者发的Paper!

CRNN论文地址:http://arxiv.org/abs/1507.05717 (

作者是华中科技大学的老师)

先放一些效果图,利用360万的中文数据训练集,最后可以finetune到97.7%的验证准确率,训练好的模型在train_models文件夹

第一、二张图片是最近修改的一个demo,第三、四张图是CTPN算法和CRNN的结合,可以将图片上的任何文字信息提取。因为CTPN要求的环境比较复杂,所以这次只放出CRNN的代码,因为CRNN实现环境比较简单。

现在开始介绍代码:

代码的实现必须是Linux环境(因为涉及到warp-ctc的安装,最好是Ubuntu16.04,能跳的坑我基本都填了)

1. Warp-ctc安装

首先得安装warp-ctc https://github.com/SeanNaren/Warp-ctc

,这是pytorch版本的ctc实现(计算序列loss,具体看论文),安装方法按照作者的步骤即可,如果遇到问题可以私聊我。我是在Ubuntu16.04安装的,并没有太大问题,但是在17.04就遇到很多问题,所以最好用Ubuntu16.04作为代码实现环境。

2. 测试

安装好ctc后,直接运行终端输入 python3 test.py 试下效果,测试图片在test_images文件夹下。

3. 训练

正确的训练效果如图。

训练之前首先制作数据集,因为360万的中文数据集制作成lmdb格式的数据有十几G,就没直接放到Github中。

先下载360万中文数据集:https://pan.baidu.com/s/1ufYbnZAZ1q0AlK7yZ08cvQ

对于数据集我想说明一下,在文字识别领域有比较多的识别场景,例如场景文本识别,比较正规的图片信息识别,这些不同的应用场景需要对应不同的数据集训练,这次我自己应用到的场景比较正规的字体识别,所以这个训练集不一定能够用到所有场景,但也确实提供了一个不错数据集资源!还有就是训练集最好是具有语义信息,如果只是将文字随机的组合生成图片作为训练集,模型收敛会更慢并且准确率受限!

下图是部分训练集

(这个数据是在Github中找到的,暂时没找到他的地址,很感谢作者的奉献!)

数据集是随机选取定长的字数,经过模糊、倾斜、颜色变化等操作之后生成的,比较具有一般性,能很好地提升模型的Robust。

下载好数据集之后如果解压出错,不完整,可以用好压进行修复。

接下来是制作lmdb格式的数据。

图片与之对应的标签我链接:https://pan.baidu.com/s/1jfAKQVjD-SMJSffOwGhh8A

密码:u7bo,只需要将下载好的数据集放到lmdb文件中,根据情况修改to_lmdb.py中的文件名

运行该py程序就可以制作lmdb格式的数据!(需要用Python2来运行to_lmdb.py)

制作好数据集之后将它放到lmdb_dataset文件夹中调出终端:

python3 crnn_main.py --train_root 训练数据集路径 --val_root 验证集路径 --cuda

(如果有cuda加速可选)

大概流程就是这样了,最主要的还是自己看待自己琢磨!

(不定长识别是将训练集图片的放缩feed到神经网络中的尺寸应用到测试中,test.py已经标注!)

(如果有帮助到你,可以在Github给我个star!)

(下一篇:斯坦福机器学习课程资料以及算法实现

https://blog.csdn.net/Sierkinhane/article/details/82883161

)

python实现文字识别软件_文字识别(OCR)CRNN(基于pytorch、python3) 实现不定长中文字符识别...相关推荐

  1. 文字识别(OCR)CRNN(基于pytorch、python3) 实现不定长中文字符识别

     最近开源了一个之前做的人脸关键点检测的算法,欢迎star GitHub - Sierkinhane/TAB: Think about boundary: Fusing multi-level bou ...

  2. python字符识别_crnn(基于pytorch、python3) 实现不定长中文字符识别

    在六七月份参加了一个比赛,做的项目是提取图片中的文字信息,首先是接触了一些文本检测算法(如CTPN,East),后研究了文本识别算法(我认为较好的是CRNN).代码实现是参考算法提出者的pytorch ...

  3. 如何使用OCR文字识别软件提取文字

    如何使用OCR文字识别软件提取文字 一位同事离职,领导让我接手他的工作.在做交接的时候发现他有很多的工作没有完成,既然在一个文件夹里面放的全是图片文件,可能是平时积累下来的,因为人家都要离职了就没有跟 ...

  4. 可爱的Python(哲思社区.插图版_文字版).pdf 下载地址

    下载地址: 可爱的Python(哲思社区.插图版_文字版).pdf 资源来自网络,如有侵权,请联系删除!

  5. python百度云ocr文字识别软件_基于百度云的OCR识别(Python)

    2019年7月3日早上,在百度AI开发者大会上,一个来自山西的青年,将一瓶矿泉水浇在了同样来自山西的李彦宏身上. 可以回顾一下 https://b23.tv/av57665929/p1 ,着实让人一惊 ...

  6. python ocr识别库_轻松识别文字,这款Python OCR库支持超过80种语言

    OCR是什么? 有一款软件叫扫描全能王,想必一些小伙伴听过,这是一个OCR集成软件,可以将图像内容扫描成文字. 所以说,OCR作用是对文本资料的图像文件进行分析识别处理,获取文字及版面信息. OCR的 ...

  7. OCR识别缺点_常用的OCR文字识别软件有哪些_软件动态论坛

    随着大家办公需求的增加,办公软件如雨后春笋般纷纷面世,旨在提高大家的工作效率,OCR文字识别软件便是不可缺少的办公软件之一.那么,有哪些专业又好用的OCR文字识别软件呢?小编来为大家推荐几款,以供参考 ...

  8. mac 文字识别软件ocr_mac超快速ocr文字识别软件 mac上超好用的文字识别软件推荐...

    OCR文字识别软件是在日常的生活和工作中十分常用的一款软件.而当下使用mac系统的用户也越来越多了,相比较于windows不同的是,mac上能够使用的ocr用具基本上会比较难找.这里就为大家推荐几款在 ...

  9. java ocr文字识别软件_Java文字识别软件-调用百度ocr实现文字识别

    java_baidu_ocr Java调用百度OCR文字识别API实现图片文字识别软件 这是一款小巧方便,强大的文字识别软件,由Java编写,配上了窗口界面 调用了百度ocr文字识别API 识别精度高 ...

最新文章

  1. python可视化来分析全国疫情
  2. Symfony2Book03:使用Symfony2创建页
  3. [省选联考 2020 A/B 卷] 信号传递(状压dp + 卡空间)
  4. Spark入门(十四)之分组求最大值
  5. SuperMap IS.NET自定义Action添加Mark
  6. Linux进程管理:内核中的优先级继承互斥(rtmutex.h):防止优先级反转
  7. linux内核的nfs实现框架
  8. 通用方法 Java实现excel表格转成json
  9. 逻辑电路 -异或门Xor Gate
  10. 2021-08-12初识maven
  11. 【Android笔记】Android引用第三方依赖包library报错解决方法
  12. 【AI视野·今日CV 计算机视觉论文速览 第187期 part1】Fri, 18 Dec 2020
  13. SpringBoot整合Minio实现文件上传、下载
  14. 2. 量化分析技术指标
  15. 极限理论总结08:参数推断——渐近相对效率、一步MLE、似然比统计量/Wald统计量/Rao统计量
  16. jar a java exception has occured_Java Virtual Machine报错:A Java Exception has occured
  17. 0基础学3dmax建模难吗?
  18. 西瓜创客联创刘鹏:在AI的曙光中拥抱教育的未来
  19. 家居家纺行业的进销存软件怎么选择,门店管理系统选择
  20. VLC播放gstreamer pipeline rtp流

热门文章

  1. 中移物联ML302开发板上手体验
  2. idea打开后不显示界面,win+D快捷键解决问题
  3. canvas的雨滴特效
  4. SQL Server向上取整、向下取整、四舍五入解析说明
  5. 华为、魅族手机不显示Log的原因
  6. A*搜索算法——图形搜索算法
  7. parametrize参数化中使用skip标记
  8. 域名注册条件有哪些?需要提交哪些材料?
  9. [Linux](小白须知)超级用户、普通用户、系统管理员怎么区分
  10. 腾讯云windows server搭建valheim(英灵神殿)服务器