✨专栏介绍: 经过几个月的精心筹备,本作者推出全新系列《深入浅出OCR》专栏,对标最全OCR教程,具体章节如导图所示,将分别从OCR技术发展、方向、概念、算法、论文、数据集等各种角度展开详细介绍。
👨💻面向对象: 本篇前言知识主要介绍深度学习知识,全面总结知知识点,方便小白或AI爱好者学习基础知识。
💚友情提醒: 本文内容可能未能含概深度学习所有知识点,其他内容可以访问本人主页其他文章或个人博客,同时因本人水平有限,文中如有错误恳请指出,欢迎互相学习交流!
💙个人主页: GoAI |💚 公众号: GoAI的学习小屋 | 💛交流群: 704932595 |💜个人简介 : 掘金签约作者、百度飞桨PPDE、领航团团长、开源特训营导师、CSDN、阿里云社区人工智能领域博客专家、新星计划计算机视觉方向导师等,专注大数据与人工智能知识分享。
💻文章目录
💻文章目录
《深入浅出OCR》前言知识(二):深度学习基础总结 (✨文末有深度学习总结导图福利!)
《深入浅出OCR》前言知识(一):机器学习基础总结 (✨文末有机器学习总结导图福利!)
《深入浅出OCR》第一章:OCR技术导论 (本篇)
👨💻本篇导读: 本篇为《深入浅出OCR》第一章:OCR技术导论主要介绍OCR的概念、分类、应用场景、技术流程、数据集等基础知识进行介绍,方便小白或AI爱好者快速了解OCR方向知识。第二章将对OCR技术展开进一步详细介绍,欢迎大家关注!
《深入浅出OCR》第一章:OCR技术导论
一、OCR概念介绍
OCR是计算机视觉研究领域的分支之一,是计算机科学的重要组成部分。OCR (Optical Character Recognition,光学字符识别)是指电子设备检查纸上打印的字符,经过检测暗、亮的模式肯定其形状,而后用字符识别方法将形状翻译成计算机文字的过程。
简单来说,OCR识别是指通过图像处理和模式识别技术对光学的字符进行识别成我们可以处理的文字信息。 比如日常生活中,我们使用微信长按图片进行识别以提取文字信息用于生活交流,就是用到OCR技术,接下来我将跟大家介绍下OCR的发展历程。
二、OCR发展历程
关于OCR技术发展历程,本人大致将其分为以下几类:
-
概念提出: OCR的概念是在1929年由德国科学家Tausheck最早提出来的,后来美国科学家Handel也提出利用技术对文字进行识别想法。最先对印刷体汉字识别进行研究的是IBM公司,于1966年发表第一篇关于汉字识别的文章,采用模板匹配法识别印刷体汉字。
-
发展研究: 早在60、70年代,世界各国就开始有OCR的研究,而研究的初期,多以文字的识别方法研究为主,且识别的文字仅为0至9的数字。以日本为例,1960年左右开始研究OCR的基本识别理论,初期以数字为对象,直至1965至1970年之间开始有一些简单的产品,如印刷文字的邮政编码识别系统。
-
形成产品: 在70年代,中国开始对数字、英文字母及符号识别进行研究,1986年,我国提出“863”高新科技研究计划,汉字识别的研究进入一个实质性阶段,相继推出中文OCR产品。早期OCR软件,因为识别率、硬件设备成本高及产品化等多方面的因素,未能达到实际要求。
-
百花齐放: 进入20世纪90年代之后,随着信息自动化普及,大大推进了OCR技术的进一步发展,使OCR的识别正确率和速度满足广大用户需求。随着人工智能技术不断发展,OCR软件产品已趋于成熟,可以识别各类语言、各类场景下识别,代表有全能扫描王、天若OCR等。
三、OCR的应用场景
3.1 OCR产品应用
衡量一个OCR系统性能好坏的主要指标有:拒识率、误识率、识别速度、用户界面的友好性,产品的稳定性,易用性及可行性等。
OCR产品在商业价值上具有广泛的应用场景,打造一款成熟的OCR产品需要考虑从基础资源到设备接入各个环节,因此各大互联网公司纷纷推出相关技术支持或应用,覆盖金融、交通、教育、医疗等多个行业领域。具体应用场景包括但不限于:
- 金融领域: OCR技术可以用于银行卡识别、身份证识别、发票和收据识别,以加快客户开户、贷款申请和账单处理等金融服务流程。
- 物流和交通领域: OCR技术可用于快递单和车牌识别,以提高物流运营效率和交通管理效率。
- 教育领域: OCR可用于试卷批改和答题卡识别,自动化评分和统计学生成绩。
- 医疗领域: OCR技术可以用于医疗记录和处方识别,帮助医疗机构提高信息管理效率。
- 商业和广告领域: OCR可以用于广告牌、商品包装袋、营业证等文本的识别,帮助企业更好地进行广告推广和品牌管理。
- 名片扫描: OCR技术可用于扫描名片并将其转换为联系人信息,方便用户管理和整理。
3.2 OCR识别分类
根据OCR的应用场景而言,OCR可以大致分成识别特定场景下的专用识别和多种(自然和复杂)场景下的通用识别。其中证件识别以及车牌识别是专用OCR的典型案例。
按照识别场景划分,可分为:
-
文档文字识别:可以将图书馆、报社、博物馆、档案馆等的纸质版图书、报纸、杂志、历史文献档案资料等进行电子化管理,实现精准地保存文献资料。
-
自然场景文字识别:识别自然场景图像中的文字信息如车牌、广告干词、路牌等信息。对车辆进行识别可以实现停车场收费管理、交通流量控制指标测量、车辆定位、防盗、高速公路超速自动化监管等功能。
-
票据文字识别:可以对增值税发票、报销单、车票等不同格式的票据进行文字识别,可以避免财务人员手动输入大量票据信息,如今已广泛应用于财务管理、银行、金融等众多领域。。
-
证件识别:可以快速识别身份证、银行卡、驾驶证等卡证类信息,将证件文字信息直接转换为可编辑文本,可以大大提高工作效率、减少人工成本、还可以实时进行相关人员的身份核验,以便安全管理。
按照文字形成方式划分,可分为:
-
标准印刷体文字的识别(包括印刷体数字、汉字、英文);
-
手写文字的识别(包括手写数字、汉字、英文);
-
即存在印刷体又存在手写体的文字识别;
-
艺术体、合成文字等复杂字体识别;
总结:经过上述分类,我们可以了解到不同文字的应用场景可能包含了多种文字的形成方式,文字的形成方式又包含了文字的字体,最终形成一张包含文本的图像来让我们识别,因此识别起来会有不同的难度,因此。接下来我们将对OCR难点进行讨论。
3.3 OCR识别难点
OCR识别场景包括传统文档图像识别与场景文本识别技术。针对特定场景进行设计、优化以达到最好的特定场景下的效果展示。而通用OCR则使用在更多、更复杂的场景下,拥有比较好的泛性。由于场景的不确定性,比如:图片背景极其丰富、亮度不均衡、光照不均衡、残缺遮挡、文字扭曲、字体多样等等问题,会给识别效果带来极大的挑战。
3.3.1 自然场景识别难点:
自然场景下的文本通常出现在复杂的背景中,且文本的字体、颜色、大小和方向都可能不同。例如路标、广告牌和商品包装等。
不同于传统的扫描图像文本,自然场景文本因表现形式丰富,图像背景复杂,以及图像拍摄引入的干扰因素等的影响,其识别的难点包括但不限于以下几个方面:
-
图片背景多变: 经常面临低亮度、低对比度、光照不均、透视变形和残缺遮挡等问题,还可能会受到噪声的影响,例如风沙、雨雪等天气条件,以及拍摄设备本身的噪声等,使得对其的分析与处理难度远高于传统的扫描文档图像。
-
文字弯曲: 文本的布局可能存在扭曲、褶皱、换向等问题,其中的文字也可能字体多样、字号字重颜色不一的问题。
-
文本格式: 自然场景中的文字数量较多,且分布较为分散,这使得算法的训练难度加大。针对长文本,需要处理文本行之间的连续性和上下文关系。针对多行文本,需要进行有效的文本区域分割和识别。
-
数据规模与资源 为训练和优化深度学习OCR模型,需要大规模的数据集和充足的计算资源。然而,自然场景OCR数据集往往比较难以获取和标注,同时深度学习模型的训练也需要较大的计算开销。
3.3.2 文档文字识别难点:
尽管普通文档识别相较于场景文本识别来说通常难度较小,但在特定领域中仍存在许多挑战。例如,针对票据扫描的目标检测,由于扫描仪分辨率低、纸张和油墨质量差等因素的影响,导致所扫描的票据质量低下。此外,字体过小以及干扰文本也是需要考虑的问题。
此外,针对复杂场景(复杂版面、数学公式、表格、结构化符号/图形等)的识别效果仍存在一定提升空间。
3.4 识别难点解决办法:
关于上述不同场景OCR技术面临许多挑战,需要更强大算法来应对文本的多样性和背景的复杂性。那么我们从那些角度入手解决上述问题呢?
以下为作者简单列出几点通用的解决方法,:
- 数据增强: 通过对训练数据进行增强,如随机旋转、缩放、裁剪、变换和加噪声等,可以使OCR模型更好地适应不同的图像条件和多样性。
- 多尺度检测: 设计多尺度的检测模型可以在不同大小和分辨率的文本实例中进行检测,从而提高对不同文本大小和形状的适应性。
- 背景抑制: 采用背景抑制技术,通过将注意力集中在文本区域,忽略或减弱背景干扰,从而提高文本检测的准确性。
- 多任务学习: 将文本检测和识别任务结合起来进行多任务学习,可以更好地处理复杂场景中的文本实例,并提高整体性能。
- 引入先验知识: 利用先验知识,如字符形状、文本的统计信息等,对文本进行建模,可以提高对复杂文本实例的理解和识别。
- 迁移学习|强化学习: 使用迁移学习或强化学习技术来优化OCR模型,使其能够在不同场景下进行更好的适应和调整。
四、OCR技术流程
上述介绍完OCR识别难点及对应解决办法,接下来我们将着重对OCR技术流程进行介绍。典型的OCR技术pipline如下图所示:
其中,文本检测和识别是OCR技术的两个重要核心技术。
4.1 图像预处理:
图像预处理是OCR流程的第一步,用于提高字符识别的准确性。常见的预处理操作包括灰度化、二值化和去噪。
-
灰度化将彩色图像转换为灰度图像,将每个像素的RGB值转换为相应的灰度值。在灰度图像中每个像素只有一个灰度值,简化后续的处理步骤。
-
二值化将灰度图像转换为二值图像,将灰度值高于某个阈值的像素设为白色,低于阈值的像素设为黑色。这将图像转换为黑白二值图像,方便后续的文本定位和字符分割。
-
去噪是为了减少图像中的噪声和干扰,以提高后续处理的准确性。常用的去噪方法包括中值滤波、高斯滤波和形态学操作。
此外,针对不规则文本识别,在预处理阶段可以先进行校正操作再进行识别。
4.2 文字检测
文本检测的任务是定位出输入图像中的文字区域。
近年来,使用深度学习进行文本检测成为主流技术,一类方法将文本检测视为目标检测中的一个特定场景,基于通用目标检测算法进行改进适配,如TextBoxes 基于一阶段目标检测器SSD 算法,调整目标框使之适合极端长宽比的文本行,CTPN则是基于Faster RCNN架构改进而来。但是文本检测与目标检测在目标信息以及任务本身上仍存在一些区别,如文本一般长宽比较大,往往呈“条状”,文本行之间可能比较密集,弯曲文本等,因此又衍生了很多专用于文本检测的算法,如EAST、PSENet、DBNet 等等。
注:文字检测具体介绍将在后续章节更新。
4.3 文字识别
文本识别的任务是识别出图像中的文字内容。
文本识别一般输入来自于文本检测得到的文本框截取出的图像文字区域。文本识别一般可以根据待识别文本形状分为规则文本识别和不规则文本识别两大类。不规则文本场景具有很大的挑战性,也是目前文本识别领域的主要研究方向。
-
规则文本主要指印刷字体、扫描文本等,文本大致处在水平线位置,如下图左半部分;
-
不规则文本往往不在水平位置,存在弯曲、遮挡、模糊等问题,如下图右半部分。
注:文字识别具体介绍将在后续章节更新。
五、OCR常见数据集
5.1 数据集介绍
5.1.1 规则数据集
- IIIT5K-Words (IIIT) 2000 for Train; 3000 for Test
- Street View Text (SVT) 257 for Train; 647 for Test
- ICDAR 2003(IC03) 、ICDAR2013 (IC13)
以ICDAR2013为例:
该数据集由500张左右英文标注的自然场景图片构成,标注形式为两点水平标注,坐标格式为左上角,和右下角,
5.1.2 不规则数据集
- ICDAR2015 (IC15) 4468 for Train; 2077 for Test;
- SVT Perspective (SP) 645 for Test
- CUTE80 (CT) 288 for Test
以ICDAR2015为例:
该数据集由1500张(训练1000,测试500)英文标注的自然场景图片构成,标注形式为四点标注,坐标格式依次为为左上角,右上角,右下角和左下角。如下图所示:
5.1.3 合成数据集
SynthText(ST) 5.5million个图像,样例图如下:
5.1.4中文场景数据集
Chinese Text in the Wild (CTW):
CTW数据集是一个针对中文场景文本的数据集,用于文本检测和识别任务。CTW数据集包含了超过40,000张高分辨率的中文场景图像,这些图像从不同来源和环境中获取,具有广泛的多样性。
注:以上仅简单列举部分数据集,具体介绍将在后续章节更新。
六、常见OCR识别模型评估对比
注:评价指标为准确率。
Regular Dataset | Irregular dataset | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
Model | Year | IIIT | SVT | IC13(857) | IC13(1015) | IC15(1811) | IC15(2077) | SVTP | CUTE | |
CRNN | 2015 | 78.2 | 80.8 | - | 86.7 | - | - | - | - | |
ASTER(L2R) | 2015 | 92.67 | 91.16 | - | 90.74 | 76.1 | - | 78.76 | 76.39 | |
CombBest | 2019 | 87.9 | 87.5 | 93.6 | 92.3 | 77.6 | 71.8 | 79.2 | 74 | |
ESIR | 2019 | 93.3 | 90.2 | - | 91.3 | - | 76.9 | 79.6 | 83.3 | |
SE-ASTER | 2020 | 93.8 | 89.6 | - | 92.8 | 80 | 81.4 | 83.6 | ||
DAN | 2020 | 94.3 | 89.2 | - | 93.9 | - | 74.5 | 80 | 84.4 | |
RobustScanner | 2020 | 95.3 | 88.1 | - | 94.8 | - | 77.1 | 79.5 | 90.3 | |
AutoSTR | 2020 | 94.7 | 90.9 | - | 94.2 | 81.8 | - | 81.7 | - | |
Yang et al. | 2020 | 94.7 | 88.9 | - | 93.2 | 79.5 | 77.1 | 80.9 | 85.4 | |
SATRN | 2020 | 92.8 | 91.3 | - | 94.1 | - | 79 | 86.5 | 87.8 | |
SRN | 2020 | 94.8 | 91.5 | 95.5 | - | 82.7 | - | 85.1 | 87.8 | |
GA-SPIN | 2021 | 95.2 | 90.9 | - | 94.8 | 82.8 | 79.5 | 83.2 | 87.5 | |
PREN2D | 2021 | 95.6 | 94 | 96.4 | - | 83 | - | 87.6 | 91.7 | |
Bhunia et al. | 2021 | 95.2 | 92.2 | - | 95.5 | - | 84 | 85.7 | 89.7 | |
Luo et al. | 2021 | 95.6 | 90.6 | - | 96.0 | 83.9 | 81.4 | 85.1 | 91.3 | |
VisionLAN | 2021 | 95.8 | 91.7 | 95.7 | - | 83.7 | - | 86 | 88.5 | |
ABINet | 2021 | 96.2 | 93.5 | 97.4 | - | 86.0 | - | 89.3 | 89.2 | |
MATRN | 2021 | 96.7 | 94.9 | 97.9 | 95.8 | 86.6 | 82.9 | 90.5 | 94.1 |
七、主流OCR识别应用平台
- 百度开放平台:PaddleOCR
- 商汤科技OpenMMLab : MMOCR
- 谷歌开源OCR引擎:Tesseract
后续系列将依次继续详细介绍,并包括使用上述框架进行OCR项目实战!
八、OCR资源推荐
作者整理了以下OCR方面的资源:
优秀OCR资源推荐:
- OCR专栏:《深度浅出OCR》
- OCR合集: handong1587
- Awesome-Scene-Text-Recognition
论文相关:
- OCR论文更新 :链接
- 顶会会议文章:ICDAR、CVPR、ECCV、ICCV等
- Arxiv搜索引擎:http://www.arxiv-sanity.com/
九、国内OCR领域优秀学者
白翔,黄伟林,金连文,刘成林,殷绪成
注:不分先后顺序
十、 OCR大模型未来发展
如今,大模型的爆火给OCR领域带来的挑战与机遇,在运用大模型前,我们要知道大模型是如何阅读文档的。因此,针对OCR的模型的设计仍然很重要。
发展与机遇
-
将大模型运用到OCR领域,其识别精度可能不高,还没有大规模验证
-
大模型仍有很多不足,不适用所有领域
-
充分利用大模型:特征表示、语言能力
-
不同任务的专用模型和学习算法:仍然大有可为
十一、OCR资料整理分享:
本篇文章最后,免费分享博主本人参考开源资料整理的OCR相关论文汇总,将其按年份、数据集、所属方法及论文关键词等信息进行全面分类总结,最近几年论文正在整理中,欢迎大家持续关注和学习交流!另外,文中如有错误,欢迎指正!
关注文章开头公众号: GoAI的学习小屋,回复“OCR论文” 获取以下表格。
总结:本篇《深入浅出OCR》第一章:OCR技术导论主要介绍OCR的概念、分类、应用场景、技术流程、数据集及资源等进行介绍。第二章将对OCR技术展开详细介绍,方便学习者快速了解OCR方向知识。