《深入浅出OCR》第一章:OCR技术导论

news2024/12/23 11:55:33

在这里插入图片描述

专栏介绍: 经过几个月的精心筹备,本作者推出全新系列《深入浅出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的发展历程。

image.png

二、OCR发展历程

image.png

关于OCR技术发展历程,本人大致将其分为以下几类:

  1. 概念提出: OCR的概念是在1929年由德国科学家Tausheck最早提出来的,后来美国科学家Handel也提出利用技术对文字进行识别想法。最先对印刷体汉字识别进行研究的是IBM公司,于1966年发表第一篇关于汉字识别的文章,采用模板匹配法识别印刷体汉字。

  2. 发展研究: 早在60、70年代,世界各国就开始有OCR的研究,而研究的初期,多以文字的识别方法研究为主,且识别的文字仅为0至9的数字。以日本为例,1960年左右开始研究OCR的基本识别理论,初期以数字为对象,直至1965至1970年之间开始有一些简单的产品,如印刷文字的邮政编码识别系统。

  3. 形成产品: 在70年代,中国开始对数字、英文字母及符号识别进行研究,1986年,我国提出“863”高新科技研究计划,汉字识别的研究进入一个实质性阶段,相继推出中文OCR产品。早期OCR软件,因为识别率、硬件设备成本高及产品化等多方面的因素,未能达到实际要求。

  4. 百花齐放: 进入20世纪90年代之后,随着信息自动化普及,大大推进了OCR技术的进一步发展,使OCR的识别正确率和速度满足广大用户需求。随着人工智能技术不断发展,OCR软件产品已趋于成熟,可以识别各类语言、各类场景下识别,代表有全能扫描王、天若OCR等。

三、OCR的应用场景

3.1 OCR产品应用

衡量一个OCR系统性能好坏的主要指标有:拒识率、误识率、识别速度、用户界面的友好性,产品的稳定性,易用性及可行性等。

image.png

OCR产品在商业价值上具有广泛的应用场景,打造一款成熟的OCR产品需要考虑从基础资源到设备接入各个环节,因此各大互联网公司纷纷推出相关技术支持或应用,覆盖金融、交通、教育、医疗等多个行业领域。具体应用场景包括但不限于:

  1. 金融领域: OCR技术可以用于银行卡识别、身份证识别、发票和收据识别,以加快客户开户、贷款申请和账单处理等金融服务流程。
  2. 物流和交通领域: OCR技术可用于快递单和车牌识别,以提高物流运营效率和交通管理效率。
  3. 教育领域: OCR可用于试卷批改和答题卡识别,自动化评分和统计学生成绩。
  4. 医疗领域: OCR技术可以用于医疗记录和处方识别,帮助医疗机构提高信息管理效率。
  5. 商业和广告领域: OCR可以用于广告牌、商品包装袋、营业证等文本的识别,帮助企业更好地进行广告推广和品牌管理。
  6. 名片扫描: OCR技术可用于扫描名片并将其转换为联系人信息,方便用户管理和整理。

3.2 OCR识别分类

根据OCR的应用场景而言,OCR可以大致分成识别特定场景下的专用识别和多种(自然和复杂)场景下的通用识别。其中证件识别以及车牌识别是专用OCR的典型案例。

image.png

按照识别场景划分,可分为:

  • 文档文字识别:可以将图书馆、报社、博物馆、档案馆等的纸质版图书、报纸、杂志、历史文献档案资料等进行电子化管理,实现精准地保存文献资料。

  • 自然场景文字识别:识别自然场景图像中的文字信息如车牌、广告干词、路牌等信息。对车辆进行识别可以实现停车场收费管理、交通流量控制指标测量、车辆定位、防盗、高速公路超速自动化监管等功能。

  • 票据文字识别:可以对增值税发票、报销单、车票等不同格式的票据进行文字识别,可以避免财务人员手动输入大量票据信息,如今已广泛应用于财务管理、银行、金融等众多领域。。

  • 证件识别:可以快速识别身份证、银行卡、驾驶证等卡证类信息,将证件文字信息直接转换为可编辑文本,可以大大提高工作效率、减少人工成本、还可以实时进行相关人员的身份核验,以便安全管理。

按照文字形成方式划分,可分为:

  • 标准印刷体文字的识别(包括印刷体数字、汉字、英文);

  • 手写文字的识别(包括手写数字、汉字、英文);

  • 即存在印刷体又存在手写体的文字识别

  • 艺术体、合成文字等复杂字体识别

image.png

总结:经过上述分类,我们可以了解到不同文字的应用场景可能包含了多种文字的形成方式,文字的形成方式又包含了文字的字体,最终形成一张包含文本的图像来让我们识别,因此识别起来会有不同的难度,因此。接下来我们将对OCR难点进行讨论。

3.3 OCR识别难点

OCR识别场景包括传统文档图像识别与场景文本识别技术。针对特定场景进行设计、优化以达到最好的特定场景下的效果展示。而通用OCR则使用在更多、更复杂的场景下,拥有比较好的泛性。由于场景的不确定性,比如:图片背景极其丰富、亮度不均衡、光照不均衡、残缺遮挡、文字扭曲、字体多样等等问题,会给识别效果带来极大的挑战。
在这里插入图片描述

3.3.1 自然场景识别难点:

自然场景下的文本通常出现在复杂的背景中,且文本的字体、颜色、大小和方向都可能不同。例如路标、广告牌和商品包装等。
不同于传统的扫描图像文本,自然场景文本因表现形式丰富,图像背景复杂,以及图像拍摄引入的干扰因素等的影响,其识别的难点包括但不限于以下几个方面:

  • 图片背景多变: 经常面临低亮度、低对比度、光照不均、透视变形和残缺遮挡等问题,还可能会受到噪声的影响,例如风沙、雨雪等天气条件,以及拍摄设备本身的噪声等,使得对其的分析与处理难度远高于传统的扫描文档图像。

  • 文字弯曲: 文本的布局可能存在扭曲、褶皱、换向等问题,其中的文字也可能字体多样、字号字重颜色不一的问题。

  • 文本格式: 自然场景中的文字数量较多,且分布较为分散,这使得算法的训练难度加大。针对长文本,需要处理文本行之间的连续性和上下文关系。针对多行文本,需要进行有效的文本区域分割和识别。

  • 数据规模与资源 为训练和优化深度学习OCR模型,需要大规模的数据集和充足的计算资源。然而,自然场景OCR数据集往往比较难以获取和标注,同时深度学习模型的训练也需要较大的计算开销。

3.3.2 文档文字识别难点

尽管普通文档识别相较于场景文本识别来说通常难度较小,但在特定领域中仍存在许多挑战。例如,针对票据扫描的目标检测,由于扫描仪分辨率低、纸张和油墨质量差等因素的影响,导致所扫描的票据质量低下。此外,字体过小以及干扰文本也是需要考虑的问题。

此外,针对复杂场景(复杂版面、数学公式、表格、结构化符号/图形等)的识别效果仍存在一定提升空间。

3.4 识别难点解决办法

关于上述不同场景OCR技术面临许多挑战,需要更强大算法来应对文本的多样性和背景的复杂性。那么我们从那些角度入手解决上述问题呢?

以下为作者简单列出几点通用的解决方法,:

  1. 数据增强: 通过对训练数据进行增强,如随机旋转、缩放、裁剪、变换和加噪声等,可以使OCR模型更好地适应不同的图像条件和多样性。
  2. 多尺度检测: 设计多尺度的检测模型可以在不同大小和分辨率的文本实例中进行检测,从而提高对不同文本大小和形状的适应性。
  3. 背景抑制: 采用背景抑制技术,通过将注意力集中在文本区域,忽略或减弱背景干扰,从而提高文本检测的准确性。
  4. 多任务学习: 将文本检测和识别任务结合起来进行多任务学习,可以更好地处理复杂场景中的文本实例,并提高整体性能。
  5. 引入先验知识: 利用先验知识,如字符形状、文本的统计信息等,对文本进行建模,可以提高对复杂文本实例的理解和识别。
  6. 迁移学习|强化学习: 使用迁移学习或强化学习技术来优化OCR模型,使其能够在不同场景下进行更好的适应和调整。

四、OCR技术流程

上述介绍完OCR识别难点及对应解决办法,接下来我们将着重对OCR技术流程进行介绍。典型的OCR技术pipline如下图所示:

其中,文本检测和识别是OCR技术的两个重要核心技术。

4.1 图像预处理:

图像预处理是OCR流程的第一步,用于提高字符识别的准确性。常见的预处理操作包括灰度化、二值化和去噪。

  • 灰度化将彩色图像转换为灰度图像,将每个像素的RGB值转换为相应的灰度值。在灰度图像中每个像素只有一个灰度值,简化后续的处理步骤。

  • 二值化将灰度图像转换为二值图像,将灰度值高于某个阈值的像素设为白色,低于阈值的像素设为黑色。这将图像转换为黑白二值图像,方便后续的文本定位和字符分割。

  • 去噪是为了减少图像中的噪声和干扰,以提高后续处理的准确性。常用的去噪方法包括中值滤波、高斯滤波和形态学操作。

此外,针对不规则文本识别,在预处理阶段可以先进行校正操作再进行识别。

4.2 文字检测

文本检测的任务是定位出输入图像中的文字区域。

image.png

近年来,使用深度学习进行文本检测成为主流技术,一类方法将文本检测视为目标检测中的一个特定场景,基于通用目标检测算法进行改进适配,如TextBoxes 基于一阶段目标检测器SSD 算法,调整目标框使之适合极端长宽比的文本行,CTPN则是基于Faster RCNN架构改进而来。但是文本检测与目标检测在目标信息以及任务本身上仍存在一些区别,如文本一般长宽比较大,往往呈“条状”,文本行之间可能比较密集,弯曲文本等,因此又衍生了很多专用于文本检测的算法,如EAST、PSENet、DBNet 等等。

注:文字检测具体介绍将在后续章节更新。

4.3 文字识别

文本识别的任务是识别出图像中的文字内容。

文本识别一般输入来自于文本检测得到的文本框截取出的图像文字区域。文本识别一般可以根据待识别文本形状分为规则文本识别和不规则文本识别两大类。不规则文本场景具有很大的挑战性,也是目前文本识别领域的主要研究方向。

  • 规则文本主要指印刷字体、扫描文本等,文本大致处在水平线位置,如下图左半部分;

  • 不规则文本往往不在水平位置,存在弯曲、遮挡、模糊等问题,如下图右半部分。

image.png

注:文字识别具体介绍将在后续章节更新。

五、OCR常见数据集

5.1 数据集介绍

image.png

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张左右英文标注的自然场景图片构成,标注形式为两点水平标注,坐标格式为左上角,和右下角,
image.png

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)英文标注的自然场景图片构成,标注形式为四点标注,坐标格式依次为为左上角,右上角,右下角和左下角。如下图所示:

image.png

5.1.3 合成数据集

SynthText(ST) 5.5million个图像,样例图如下:

image.png

5.1.4中文场景数据集

Chinese Text in the Wild (CTW):

image.png

CTW数据集是一个针对中文场景文本的数据集,用于文本检测和识别任务。CTW数据集包含了超过40,000张高分辨率的中文场景图像,这些图像从不同来源和环境中获取,具有广泛的多样性。

注:以上仅简单列举部分数据集,具体介绍将在后续章节更新。

六、常见OCR识别模型评估对比

注:评价指标为准确率。

Regular DatasetIrregular dataset
ModelYearIIITSVTIC13(857)IC13(1015)IC15(1811)IC15(2077)SVTPCUTE
CRNN201578.280.8-86.7----
ASTER(L2R)201592.6791.16-90.7476.1-78.7676.39
CombBest201987.987.593.692.377.671.879.274
ESIR201993.390.2-91.3-76.979.683.3
SE-ASTER202093.889.6-92.88081.483.6
DAN202094.389.2-93.9-74.58084.4
RobustScanner202095.388.1-94.8-77.179.590.3
AutoSTR202094.790.9-94.281.8-81.7-
Yang et al.202094.788.9-93.279.577.180.985.4
SATRN202092.891.3-94.1-7986.587.8
SRN202094.891.595.5-82.7-85.187.8
GA-SPIN202195.290.9-94.882.879.583.287.5
PREN2D202195.69496.4-83-87.691.7
Bhunia et al.202195.292.2-95.5-8485.789.7
Luo et al.202195.690.6-96.083.981.485.191.3
VisionLAN202195.891.795.7-83.7-8688.5
ABINet202196.293.597.4-86.0-89.389.2
MATRN202196.794.997.995.886.682.990.594.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论文” 获取以下表格。

image.png

总结:本篇《深入浅出OCR》第一章:OCR技术导论主要介绍OCR的概念、分类、应用场景、技术流程、数据集及资源等进行介绍。第二章将对OCR技术展开详细介绍,方便学习者快速了解OCR方向知识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1022218.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

github 网页显示不全?

问题 解决 1、检查网页,打开 network,重新刷新 github 网页 2、查看无法加载的资源(如 css 文件) 3、查看域名地址 https://tool.chinaz.com/dns/,github.githubassets.com(检查网页元素,点击无…

奥威BI系统,BI界便宜大碗国货

奥威BI系统(软件)是BI行业高性价比典范,不仅是因为“BI方案”极大地降低项目周期、实施成本,也是因为奥威BI系统具备先进的技术和架构和卓越的性能,有简单易用的特点,也提供了丰富的功能。 1、先进的技术和…

linux系统报“INFO: task java:xxx blocked for more than 120 seconds.”解决办法

1、问题描述 linux系统,输入dmesg -T,报“INFO: task java:xxx blocked for more than 120 seconds.”,如下 一般情况下,linux会把可用内存的40%的空间作为文件系统的缓存。当缓存快满时,文件系统将缓存中的数据整体同…

基于SSM的民宿管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

安达发|APS排单软件中甘特图的应用

近几年来,企业对生产效率和管理水平的要求越来越高。为了提高生产效率,降低生产成本,许多企业开始引入先进的生产计划与调度系统(APS),实现生产过程的自动化、智能化管理。APS排产软件是一种能够根据企业的…

【JDK 8-集合框架】5.1 Stream 实战

一、什么是 stream 二、操作步骤 三、概览stream接口源码 四、实战 执行结果: 一、什么是 stream Stream 中文称为“流” 通过将集合转换为“流”的元素队列 通过声明性方式,能够对集合中的每个元素进行一系列并行或串行的流水线操作 元素是特定类…

为何消费者宁愿买iPhone14,也不买国产5G手机?差距太大了

随着iPhone15的上市,国产5G手机与苹果的较量也正式展开,让人意外的是不仅是iPhone15备受追捧,连带着旧款的iPhone14Pro也取得了销量的上涨,与国产5G手机形成了鲜明的对比。 一、iPhone的优势 苹果的A系处理器在性能方面遥遥领先毋…

C++简单模板介绍——template

一、泛型编程 概念: 在c语言中,同一种功能的函数,由于参数类型不同,虽然可以用函数重载,但可能需要重复多次的定义,又或者是不同类型的数据需要用到同一种数据结构时,需要定义大部分重复的类&…

thrift的简单使用

写在前面 本文一起看下一种由facebook出品的rpc框架thrift。 源码 。 1:开发步骤 1:编写thrift idl文件 2:根据thrift idl文件生成java模板代码 3:继承模板代码的*.Iface接口给出server的具体服务实现 4:使用模板的HelloWorldSe…

计算机毕设 LSTM的预测算法 - 股票预测 天气预测 房价预测

文章目录 0 简介1 基于 Keras 用 LSTM 网络做时间序列预测2 长短记忆网络3 LSTM 网络结构和原理3.1 LSTM核心思想3.2 遗忘门3.3 输入门3.4 输出门 4 基于LSTM的天气预测4.1 数据集4.2 预测示例 5 基于LSTM的股票价格预测5.1 数据集5.2 实现代码 6 lstm 预测航空旅客数目数据集预…

软件测试中最坏与一般健壮性测试用例区别

我们看下面一个问题 1.如果有一个n变量函数,健壮最坏情况测试会产生多少个测试用例 2.如果有一个n变量函数的被测程序,健壮性测试会产生多少个测试用例 首先我们知道一个变量的健壮测试有七个测试用例 即下图所示 1.问题一答案: 总的测试…

计算机竞赛 深度学习 python opencv 火焰检测识别

文章目录 0 前言1 基于YOLO的火焰检测与识别2 课题背景3 卷积神经网络3.1 卷积层3.2 池化层3.3 激活函数:3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV54.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 数据集准备5.1 数…

TCP/IP客户端和服务器端建立通信过程

客户端和服务器端建立通信过程 客户端 connectToHost(const QString &, quint16 , QIODevice::OpenMode , QAbstractSocket::NetworkLayerProtocol )服务器端

Jmeter接口测试学习

1、设置CSV数据文件时,线程数设置为2或者多个,可以读取多行登录用户信息 2、循环,线程多次登录 3、http接口登录配置 4、CSV数据文件配置 数据文件: 5、如果需要鉴权(authorization),如postman 下Basic Auth,可以设…

第一章:最新版零基础学习 PYTHON 教程(第三节 - 下载并安装Python最新版本)

在这里,我们将讨论如何获得与在 Windows/Linux/mac OS 上安装 Python 相关的所有问题的答案。Python由Guido van Rossum于20世纪90年代初开发,最新版本为3.11,我们可以简称为Python3。 如何下载并安装Python? 要了解如何安装 P…

【保姆级】WebSocket是什么有什么用

WebSocket WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接, 并进行双向数据传输。 HTTP协议和WebSocket协议对比: HTTP是短连接 WebSo…

SpringCloud OpenFeign--声明式WebService 客户端

😀前言 本篇博文是关于SpringCloud OpenFeign的基本介绍,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动…

排序算法—

1 1.冒泡排序&#xff08;相邻两两比较&#xff09; 理解&#xff1a;进行n轮循环&#xff0c;相邻元素两两比较&#xff0c;交换位置 先将最大/最小元素放到最后一个位置 然后缩小j的比较范围&#xff0c;因为每一轮循环最后一个元素的位置都已经确定了 #include <stdio.h&…

Ubuntu 图形界面查看Mysql 数据库内容

1.安装mysql workbench 打开ubuntu软件中心&#xff0c;搜索如下字符&#xff0c;安装这个社区版的workbench 2.登录workbench 按下图依次打开该安装后的软件 点击此处进行登录&#xff0c;首次登录可能需要密码&#xff0c;第二次如果记住密码了就不需要了。 3.查看数据库的…

Python程序设计实例 | 学生管理数据库系统的开发

本文将通过一个学生管理数据库系统的开发过程来展示如何系统地基于Python实现SQLite数据库编程。以下首先提出数据库系统的基本结构&#xff0c;以及如何通过SQLite逐步达到这些要求并进行常规操作。 01、数据表结构 该学生管理数据库系统包括4张表&#xff1a; 专业表、学生…