要点 :

  • 简介, 垃圾跳过

paddleocr GitHub地址


一 ocr简介

1 获取和运行代码

本课程依托PaddleOCR的代码库形成,首先,克隆PaddleOCR的完整项目

#【推荐】
git clone https://github.com/PaddlePaddle/PaddleOCR# 如果因为网络问题无法pull成功,也可选择使用码云上的托管:
git clone https://gitee.com/paddlepaddle/PaddleOCR

然后安装第三方库:

cd PaddleOCR
pip3 install -r requirements.txt

2 OCR技术背景

  • OCR是什么

OCR(Optical Character Recognition,光学字符识别)是计算机视觉重要方向之一。传统定义的OCR一般面向扫描文档类对象,现在我们常说的OCR一般指场景文字识别(Scene Text Recognition,STR),主要面向自然场景,如下图中所示的牌匾等各种自然场景可见的文字。

3 OCR前沿算法

虽然OCR是一个相对具体的任务,但涉及了多方面的技术,包括文本检测、文本识别、端到端文本识别、文档分析等等。学术上关于OCR各项相关技术的研究层出不穷,下文将简要介绍OCR任务中的几种关键技术的相关工作。

3.1 文本检测

文本检测的任务是定位出输入图像中的文字区域。近年来学术界关于文本检测的研究非常丰富,一类方法将文本检测视为目标检测中的一个特定场景,基于通用目标检测算法进行改进适配,如TextBoxes[1]基于一阶段目标检测器SSD[2]算法,调整目标框使之适合极端长宽比的文本行,CTPN[3]则是基于Faster RCNN[4]架构改进而来。但是文本检测与目标检测在目标信息以及任务本身上仍存在一些区别,如文本一般长宽比较大,往往呈“条状”,文本行之间可能比较密集,弯曲文本等,因此又衍生了很多专用于文本检测的算法,如EAST[5]、PSENet[6]、DBNet[7]等等。

目前较为流行的文本检测算法可以大致分为基于回归基于分割的两大类文本检测算法,也有一些算法将二者相结合。基于回归的算法借鉴通用物体检测算法,通过设定anchor回归检测框,或者直接做像素回归,这类方法对规则形状文本检测效果较好,但是对不规则形状的文本检测效果会相对差一些,比如CTPN[3]对水平文本的检测效果较好,但对倾斜、弯曲文本的检测效果较差,SegLink[8]对长文本比较好,但对分布稀疏的文本效果较差;基于分割的算法引入了Mask-RCNN[9],这类算法在各种场景、对各种形状文本的检测效果都可以达到一个更高的水平,但缺点就是后处理一般会比较复杂,因此常常存在速度问题,并且无法解决重叠文本的检测问题。

3.2 文本识别

文本识别的任务是识别出图像中的文字内容,一般输入来自于文本检测得到的文本框截取出的图像文字区域。文本识别一般可以根据待识别文本形状分为规则文本识别不规则文本识别两大类。规则文本主要指印刷字体、扫描文本等,文本大致处在水平线位置;不规则文本往往不在水平位置,存在弯曲、遮挡、模糊等问题。不规则文本场景具有很大的挑战性,也是目前文本识别领域的主要研究方向。

规则文本识别的算法根据解码方式的不同可以大致分为基于CTC和Sequence2Sequence两种,将网络学习到的序列特征 转化为 最终的识别结果 的处理方式不同。基于CTC的算法以经典的CRNN[11]为代表。

不规则文本的识别算法相比更为丰富,如STAR-Net[12]等方法通过加入TPS等矫正模块,将不规则文本矫正为规则的矩形后再进行识别;RARE[13]等基于Attention的方法增强了对序列之间各部分相关性的关注;基于分割的方法将文本行的各字符作为独立个体,相比与对整个文本行做矫正后识别,识别分割出的单个字符更加容易;此外,随着近年来Transfomer[14]的快速发展和在各类任务中的有效性验证,也出现了一批基于Transformer的文本识别算法,这类方法利用transformer结构解决CNN在长依赖建模上的局限性问题,也取得了不错的效果。

3.3 文档结构化识别

传统意义上的OCR技术可以解决文字的检测和识别需求,但在实际应用场景中,最终需要获取的往往是结构化的信息,如身份证、发票的信息格式化抽取,表格的结构化识别等等,多在快递单据抽取、合同内容比对、金融保理单信息比对、物流业单据识别等场景下应用。OCR结果+后处理是一种常用的结构化方案,但流程往往比较复杂,并且后处理需要精细设计,泛化性也比较差。在OCR技术逐渐成熟、结构化信息抽取需求日益旺盛的背景下,版面分析、表格识别、关键信息提取等关于智能文档分析的各种技术受到了越来越多的关注和研究。

  • 版面分析

版面分析(Layout Analysis)主要是对文档图像进行内容分类,类别一般可分为纯文本、标题、表格、图片等。现有方法一般将文档中不同的板式当做不同的目标进行检测或分割,如Soto Carlos[16]在目标检测算法Faster R-CNN的基础上,结合上下文信息并利用文档内容的固有位置信息来提高区域检测性能;Sarkar Mausoom[17]等人提出了一种基于先验的分割机制,在非常高的分辨率的图像上训练文档分割模型,解决了过度缩小原始图像导致的密集区域不同结构无法区分进而合并的问题。

  • 表格识别

表格识别(Table Recognition)的任务就是将文档里的表格信息进行识别和转换到excel文件中。文本图像中表格种类和样式复杂多样,例如不同的行列合并,不同的内容文本类型等,除此之外文档的样式和拍摄时的光照环境等都为表格识别带来了极大的挑战。这些挑战使得表格识别一直是文档理解领域的研究难点。

3.4 其他相关技术

前面主要介绍了OCR领域的三种关键技术:文本检测、文本识别、文档结构化识别,更多其他OCR相关前沿技术介绍,包括端到端文本识别、OCR中的图像预处理技术、OCR数据合成等,可参考教程第七章和第八章。


二 产业级OCR开发套件PaddleOCR

OCR产业实践需要一套完整全流程的解决方案,来加快研发进度,节约宝贵的研发时间。也就是说,超轻量模型及其全流程解决方案,尤其对于算力、存储空间有限的移动端、嵌入式设备而言,可以说是刚需。

在此背景下,产业级OCR开发套件PaddleOCR应运而生。

在模型算法层面,PaddleOCR对文字检测识别文档结构化分析两类任务分别提供了解决方案。

2.1 PP-OCR与PP-Structrue

PP系列特色模型是飞桨各视觉开发套件针对产业实践需求进行深度优化的模型,力求速度与精度平衡。PaddleOCR中的PP系列特色模型包括针对文字检测识别任务的PP-OCR系列模型和针对文档分析的PP-Structure系列模型。

(1)PP-OCR中英文模型

PP-OCR中英文模型采用的典型的两阶段OCR算法,即检测模型+识别模型的组成方式,具体的算法框架如下:

可以看到,除输入输出外,PP-OCR核心框架包含了3个模块,分别是:文本检测模块、检测框矫正模块、文本识别模块。

  • 文本检测模块:核心是一个基于DB检测算法训练的文本检测模型,检测出图像中的文字区域;
  • 检测框矫正模块:将检测到的文本框输入检测框矫正模块,在这一阶段,将四点表示的文本框矫正为矩形框,方便后续进行文本识别,另一方面会进行文本方向判断和校正,例如如果判断文本行是倒立的情况,则会进行转正,该功能通过训练一个文本方向分类器实现;
  • 文本识别模块:最后文本识别模块对矫正后的检测框进行文本识别,得到每个文本框内的文字内容,PP-OCR中使用的经典文本识别算法CRNN。

2.2 工业级部署方案

飞桨支持全流程、全场景推理部署,模型来源主要分为三种,第一种使用PaddlePaddle API构建网络结构进行训练所得,第二种是基于飞桨套件系列,飞桨套件提供了丰富的模型库、简洁易用的API,具备开箱即用,包括视觉模型库PaddleCV、智能语音库PaddleSpeech以及自然语言处理库PaddleNLP等,第三种采用X2Paddle工具从第三方框架(PyTorh、ONNX、TensorFlow等)产出的模型。

paddleocr 的使用要点1 (仪表识别)相关推荐

  1. 仪表识别之数字表识别

    转载自:https://blog.csdn.net/huneng1991/article/details/82049207 1介绍 好久没有写博客了,主要是去学习深度学习去了,用深度学习解决了人脸检测 ...

  2. 基于PaddleOCR开发Auto.js Pro文字识别插件

    目录 目的 准备工作 插件开发 1.项目结构对比 2.插件SDK集成 3.调整assets资源 4.删除无用的Activity文件 5.修改AndroidManifest.xml 6.修改Predic ...

  3. 巡检机器人之仪表识别系统

    作者主页:爱笑的男孩. 博客简介:分享机器学习.深度学习.python相关内容.日常BUG解决方法及Windows&Linux实践小技巧. 如发现文章有误,麻烦请指出,我会及时去纠正.有其他需 ...

  4. PaddleOCR文字检测、标注与识别详细记录

    PP-OCR文字检测与识别 一.配置Paddle环境 创建虚拟环境 conda create --name pp python=3.7 创建完成后激活环境 conda activate pp 登录飞桨 ...

  5. 中文手写数据生成基于paddleocr和textrenderer-大幅提高中文识别准确率

    文章目录 参考 一.textrenderer更多参数解释 二.准备手写字体文件 效果展示 参考 主要是参考了这位大佬的工作 ,大佬说生成都是灰度图,因为考虑样本多样性,主要介绍如何生成彩色图片,字典文 ...

  6. python仪表指针识别_一种指针式仪表的识别方法

    一种指针式仪表的识别方法 杨世杰,张 平 [摘 要] 当前指针式仪表识别技术日益成熟,其中指针形状和位置的识别大多 采用 Hough 变换算法,传统的 Hough 变换算法运算时间长.储存空间大,使 ...

  7. OCR——PaddleOCR之文字识别的学习笔记

    1 前言 在南溪看来,PaddleOCR是现在开源的最厉害的OCR识别库~ 2 PaddleOCR中目前最强的英文&数字识别模型 我们需要知道PaddleOCR中现在针对"英文&am ...

  8. Paddle入门实战系列(二)基于PaddleOCR的体检报告识别

    ✨写在前面:强烈推荐给大家一个优秀的人工智能学习网站,内容包括人工智能基础.机器学习.深度学习神经网络等,详细介绍各部分概念及实战教程,通俗易懂,非常适合人工智能领域初学者及研究者学习.➡️点击跳转到 ...

  9. PaddleOCR体检报告识别

    基于PaddleOCR的体检报告识别 一.项目背景与意义 面对飞速发展互联网医疗时代,医疗信息化建设已经成为医疗行业发展的趋势.经调研,约80%的医学病历是处于非结构化状态的,难以直接被利用而造成了大 ...

最新文章

  1. 2021年大数据Kafka(九):kafka消息存储及查询机制原理
  2. matlab内存管理(二)
  3. scala 提交任务
  4. sql serve存储过程
  5. java课堂疑问解答与思考1
  6. 【Linux】一步一步学Linux——man命令(有问题找男人)(13)
  7. 每日一题(49)—— 有符号数与无符号数
  8. 互联网日报 | 3月20日 星期六 | 荣耀CEO赵明谈发展目标;家乐福中国未来谋求独立上市;微盟开放接入支付宝小程序能力...
  9. 关于Memcache使用的工具类
  10. mysql 转置 动态_MySQL 行列转置
  11. 字符串转小写 c语言库函数,c++字符串大小写转换
  12. 四边形内接于圆定理_中考数学提分36计之第19计思维模型助你轻松搞定圆问题,提分必备...
  13. 利用Onionshare 共享匿名文件
  14. ES6的这些新知识你记住了没?
  15. latex参考文献编译不成功
  16. c 实现走迷宫流程图_C语言实现一个走迷宫小游戏(深度优先算法)
  17. 计算机脚本模板,mv分镜头脚本范文mv的分镜头脚本格式.doc
  18. 面向三种典型程序语言的中小学计算思维课堂设计研究
  19. 进销存软件商品报价管理-报价单
  20. echarts.js 官网

热门文章

  1. PHPCMS V9新模板
  2. 怎样设计一个伟大的logo
  3. sublime正则表达式替换
  4. 性能测试工具Lighthouse
  5. 当淘宝双12遇上直播,“脑洞大开”让你根本停不下来
  6. 锁定运用计算机,终极:如何锁定您不知道的Win10键盘快捷键,带您轻松使用计算机,值得收藏...
  7. 计算机的声音图标打不开怎么回事,w7 64位电脑声音的小喇叭点不开怎么办
  8. SecureCRT常用Linux命令,SecureCRT中惯用linux命令
  9. (程序员内在修炼)《熔炉》观后感:承认并且面对生活的丑陋面
  10. 我的世界java1.15更新了什么动物_Minecraft我的世界Java版1.16更新内容