⚠️本文为稀土掘金技术社区首发签约文章,30天内禁止转载,30天后未获授权禁止转载,侵权必究!
✨专栏介绍: 经过几个月的精心筹备,本作者推出全新系列《深入浅出OCR》专栏,对标最全OCR教程,具体章节如导图所示,将分别从OCR技术发展、方向、概念、算法、论文、数据集等各种角度展开详细介绍。
?个人主页: GoAI |? 公众号: GoAI的学习小屋 | ?交流群: 704932595 |?个人简介 : 掘金签约作者、百度飞桨PPDE、领航团团长、开源特训营导师、CSDN、阿里云社区人工智能领域博客专家、新星计划计算机视觉方向导师等,专注大数据与人工智能知识分享。
?文章目录
《深入浅出OCR》前言知识(二):深度学习基础总结 (✨文末有深度学习总结导图福利!)
《深入浅出OCR》前言知识(一):机器学习基础总结 (✨文末有机器学习总结导图福利!)
《深入浅出OCR》第一章:OCR技术导论 (本篇)
??本篇导读: 本篇为《深入浅出OCR》第一章:OCR技术导论主要介绍OCR的概念、分类、应用场景、技术流程、数据集等基础知识进行介绍,方便小白或AI爱好者快速了解OCR方向知识。第二章将对OCR技术展开进一步详细介绍,欢迎大家关注!
《深入浅出OCR》第一章:OCR技术导论
一、OCR概念
OCR (Optical Character Recognition,光学字符识别)是指电子设备检查纸上打印的字符,经过检测暗、亮的模式肯定其形状,而后用字符识别方法将形状翻译成计算机文字的过程;即,针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并经过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。如何除错或利用辅助信息提升识别正确率,是OCR最重要的课题。
简单来说,OCR识别就是光学文字识别,是指通过图像处理和模式识别技术对光学的字符进行识别。它是计算机视觉研究领域的分支之一,是计算机科学的重要组成部分。
二、OCR发展历程
关于OCR技术发展,本人大致将其分为以下几类:
-
OCR的概念是在1929年由德国科学家Tausheck最早提出来的,后来美国科学家Handel也提出利用技术对文字进行识别想法。最先对印刷体汉字识别进行研究的是IBM公司的Casey和Nagy,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难点进行讨论。
3.2 OCR识别难点
针对特定场景进行设计、优化以达到最好的特定场景下的效果展示。而通用OCR则使用在更多、更复杂的场景下,拥有比较好的泛性。由于场景的不确定性,比如:图片背景极其丰富、亮度不均衡、光照不均衡、残缺遮挡、文字扭曲、字体多样等等问题,会给识别效果带来极大的挑战。
3.2.1 自然场景识别难点:
OCR识别场景包括传统文档图像识别与场景文本识别技术。自然场景文本提取技术是传统 OCR 技术在自然场景图像的扩展和延伸,具有广阔的应用前景。 自然场景文本主要出现在车牌、广告牌、路标和招牌等场景上。不同于传统的扫描图像文本,自然场景文本因表现形式丰富,图像背景复杂,以及图像拍摄引入的干扰因素等的影响,使得对其的分析与处理难度远高于传统的扫描文档图像。
-
自然场景中文本的多样性和多变性: 与文档中的脚本不同,自然场景中的文本表现出更高的多样性和多变性。例如,场景文本的实例可以使用不同的语言、颜色、字体、大小、方向和形状。此外,场景文本的高宽比和布局可能会有显著差异。所有这些变化都为为自然场景中的文本检测和识别算法设计提出了挑战。
-
背景的复杂性和干扰性。 自然场景的背景几乎是不可预测的。可能会有与文本非常相似的模式(例如,树叶、交通标志、砖块、窗户和栅栏),或者由异物造成的遮挡,这可能会导致混淆和错误。
-
不完美的成像条件: 在不受控制的情况下,无法保证文本图像和视频的质量。也就是说,在较差的成像条件下,文本实例可能由于拍摄距离或角度不当而导致低分辨率和严重失真,或由于失焦或抖动而模糊,或由于低光水平而产生噪声,或被高光或阴影破坏。
3.2.2 文档文字识别难点:
虽然说普通文档识别与场景文本识别相比通常来说难度更小,但具体到细分领域也面临着许多挑战。比如目标扫描票据,往往由于扫描仪分辨率低、纸张、油墨质量差等原因导致扫描的票据质量低下,同时,字体过小、存在干扰文本也是需要考虑的问题。
3.3 OCR产品平台架构
衡量一个OCR系统性能好坏的主要指标有:拒识率、误识率、识别速度、用户界面的友好性,产品的稳定性,易用性及可行性等。
OCR产品应用场景广泛,存在着巨大商业价值。打造一款成熟的OCR产品需要考虑从基础资源到设备接入各个环节,因此,各大互联网公司纷纷推出许多相关技术支持或应用,涉及金融、交通、教育、医疗等各个行业领域,具体应用场景包括名片、快递单、身份证、银行卡、车牌、路牌、广告牌、商品包装袋、营业证、试卷、发票收据等。
四、OCR技术流程
文本检测和识别是OCR技术的两个重要核心技术,OCR技术可以分为传统方法和深度学习方法。传统方法受限于手工设计特征的表达能力和处理流程的复杂性,在复杂场景下很难达到理想的文字识别效果,深度学习技术的出现很好地弥补了这一不足,其中OCR识别的关键路径在于文字检测和文本识别部分。
典型的OCR技术pipline如下图所示:
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
- ICDAR2003 (IC03)
5.1.2 不规则数据集
- ICDAR2015 (IC15) 4468 for Train; 2077 for Test;
- SVT Perspective (SP) 645 for Test
- CUTE80 (CT) 288 for Test
5.1.3 合成数据集
- MJSynth (MJ) 8.9million个图像
- SynthText(ST) 5.5million个图像
注:以上仅简单列举部分数据集,具体介绍将在后续章节更新。
5.2 数据集下载
数据集 | 数据介绍 | 标注格式 | 下载地址 |
---|---|---|---|
ICDAR_2013 | 语言: 英文 train:229 test:233 | x1 y1 x2 y2 text | 下载链接1 |
ICDAR_2015 | 语言: 英文 train:1000 test:500 | x1,y1,x2,y2,x3,y3,x4,y4,text | 下载链接2 |
ICDAR2017-MLT | 语言: 混合 train:7200 test:1800 | x1,y1,x2,y2,x3,y3,x4,y4,text | 下载链接3 提取码: z9ey |
ICDAR2017-RCTW | 语言: 混合 train:8034 test:4229 | x1,y1,x2,y2,x3,y3,x4,y4,<识别难易程度>,text | 下载链接4 |
天池比赛2018 | 语言: 混合 train:10000 test:10000 | x1,y1,x2,y2,x3,y3,x4,y4,text | 检测5 识别6 |
ICDAR2019-MLT | 语言: 混合 train:10000 test:10000 | x1,y1,x2,y2,x3,y3,x4,y4,语言类别,text | 下载链接7 提取码: xofo |
ICDAR2019-LSVT | 语言: 混合 train:30000 test:20000 | json格式标签 | 下载链接8 |
ICDAR2019-ReCTS | 语言: 混合 train:20000 test:5000 | json格式标签 | 下载链接9 |
ICDAR2019-ArT | 语言: 混合 train:5603 test:4563 | json格式标签 | 下载链接10 |
Synth800k | 语言: 英文 80k | 基于字符标注 | 下载链接11 |
360万中文数据集 | 语言: 中文 360k | 每张图片由10个字符构成 | 下载链接12 提取码:lu7m |
中文街景数据集CTW | 语言:中文 32285 | 基于字符标注的中文街景图片 | 下载链接13 |
百度中文场景文字识别 | 语言: 混合 29万 | 下载链接14 |
六、常见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识别平台:
后续系列将依次继续详细介绍,并包括使用上述框架进行OCR项目实战!
八、OCR资源推荐
作者整理了以下OCR方面的资源:
优秀OCR资源推荐:
- OCR专栏:《深度浅出OCR》
- OCR合集: handong1587
- Awesome-Scene-Text-Recognition
论文相关:
- OCR论文更新 :主页链接
- 顶会会议文章:ICDAR、CVPR、ECCV、ICCV等
- Arxiv搜索引擎:www.arxiv-sanity.com/
九、国内OCR领域优秀学者
十、OCR资料整理分享:
本篇文章最后,免费分享博主本人参考开源资料整理的OCR相关论文汇总,将其按年份、数据集、所属方法及论文关键词等信息进行全面分类总结,最近几年论文正在整理中,欢迎大家持续关注和学习交流!另外,文中如有错误,欢迎指正!
总结:本篇《深入浅出OCR》第一章:OCR技术导论主要介绍OCR的概念、分类、应用场景、技术流程、数据集及资源等进行介绍。第二章将对OCR技术展开详细介绍,方便学习者快速了解OCR方向知识。