A Survey on Optical Character Recognition System 光学字符识别系统综述

2023-05-16

论文题目:
2017-A Survey on Optical Character Recognition System

摘要

  光学字符识别(OCR)是近年来研究的热点。它被定义为将文档图像数字化为其组成字符的过程。尽管经过几十年的深入研究,开发与人类能力相当的OCR仍然是一个开放的挑战。由于这种挑战性,工业界和学术界的研究者将目光投向了光学字符识别。在过去的几年里,从事字符识别研究的学术实验室和公司数量急剧增加。本研究旨在总结OCR领域迄今为止的研究成果。概述了OCR的各个方面,并讨论了解决OCR问题的相应建议。

关键字:字符识别,文档图像分析,OCR, OCR调查,分类

1.介绍

  光学字符识别(OCR)是一种将打印文本和图像转换成数字化形式以便机器操作的软件,它不同于人脑,人脑能够非常容易地从图像中识别文本/字符,机器没有足够的智能来感知图像中的信息。因此,大量的研究工作被提出,试图将文档图像转换成机器可以理解的格式。

2. 文献综述

  字符识别不是一个新问题,但它的根源可以追溯到计算机发明之前的系统。最早的OCR系统不是计算机,而是能够识别字符的机械装置,但速度很慢,精度很低。1951年,M.Sheppard发明了一种阅读机器人GISMO,它被认为是现代OCR的最早研究成果[1]。GISMO可以一个接一个地阅读印刷页上的音乐符号和单词。但是,它只能识别23个字符。这台机器还可以复制打字的页面。1954年,J.Rainbow发明了一种机器,每分钟可以读取一个大写的打字(typewritten)英文字符。早期的OCR系统由于错误和识别速度慢而受到批评。因此,60、70年代对这一课题的研究并不多,只有政府机构和银行、报纸、航空公司等大公司的研究。
  由于与识别相关的复杂性,人们认为应该有标准化的OCR字体来减轻OCR识别的任务。因此,OCRA和OCRB在1970年由ANSI和EMCA开发,提供了相对可接受的识别率[2]。
  近三十年来,国内外对OCR进行了大量的研究。这导致了文档图像分析(DIA)、多语言、手写和omni字体OCRs的出现[2]。尽管进行了这些广泛的研究工作,但机器可靠阅读文本的能力仍然远远低于人类。因此,目前的OCR研究是为了提高在无约束环境下打印/书写的不同风格文档的OCR的准确性和速度。目前还没有任何开源或商业软件可用于乌尔都语或信德语等复杂语言。
  近三十年来,国内外对OCR进行了大量的研究。这导致了文档图像分析(DIA)、多语言、手写和全字体OCRs的出现[2]。尽管进行了这些广泛的研究工作,但机器可靠阅读文本的能力仍然远远低于人类。因此,目前的OCR研究是为了提高在无约束环境下打印/书写的不同风格文档的OCR的准确性和速度。目前还没有任何开源或商业软件可用于乌尔都语或信德语等复杂语言。

3.光学字符识别(OCR)系统的类型

  近年来,对OCR的研究有很多方向,本节讨论了这些研究所产生的不同类型的OCR系统。我们可以根据图像采集模式、字符连接性、字体限制等对这些系统进行分类。Fig. 1对字符识别系统进行分类。
在这里插入图片描述
  根据输入的类型,OCR系统可以分为手写体识别和机器印刷体识别。后者是相对简单的问题,因为字符通常具有统一的尺寸,并且可以预测字符在页面上的位置[3]。
  手写体字符识别是一项非常困难的工作,因为用户的书写风格不同,而且同一个字符的笔迹运动也不同。这些系统可分为两个子类,即在线和离线系统。前者在用户编写字符时实时执行。它们不那么复杂,因为它们可以捕捉基于时间或即时的信息,即速度(speed)、速度(velocity)、笔画( strokes)的数量、笔画的书写方向等。此外,由于笔的轨迹只有几个像素宽,因此不需要细化技术。离线识别系统对静态数据进行操作,即输入为位图。因此,很难进行识别。
  已经有许多在线系统可供使用,因为它们更容易开发,具有良好的准确性,并可用于平板电脑和PDAs的输入[4]。
  OCR能够实现大量有用的应用,早期OCR已经被用于邮件分拣、银行支票阅读和签名验证[5],此外,OCR还可以被组织用于在大量数据以打印形式存在的地方进行自动表单处理。OCR的其他用途包括处理公用事业账单、护照验证、笔计算和自动车牌识别等[6]。OCR的另一个有用的应用是帮助盲人和视力受损的人阅读文本[7]。

4.OCR的主要阶段

  OCR过程是一个由不同阶段组成的复合活动。这些阶段如下:
图像采集:从扫描仪或照相机等外部来源获取图像。

预处理:图像采集完成后,可以进行不同的预处理步骤,以提高图像质量。在不同的预处理技术中,有去噪、阈值化和提取图像基线等。

字符分割:在这一步中,将图像中的字符分离出来,以便将它们传递给识别引擎。其中最简单的技术是连接组件分析和投影轮廓可以使用。然而,在复杂的情况下,字符重叠/断开或图像中存在一些噪声。在这些情况下,采用了先进的字符分割技术。

特征提取:对分割后的字符进行特征提取。基于这些特征,字符被识别出来。可以从图像中提取的不同类型的特征是矩等。所提取的特征应该是有效计算的,最小化类内变化并最大化类间变化。

字符分类:这一步将分割图像的特征映射到不同的类别(categories)或类别(classes)。有不同类型的字符分类技术。结构分类技术是基于从图像结构中提取的特征,利用不同的决策规则对字符进行分类。统计模式分类方法是基于概率模型等统计方法对字符进行分类。

后处理:分类后,结果不是100%正确,特别是对于复杂的语言。可以采用后处理技术来提高OCR系统的精度。这些技术利用自然语言处理、几何和语言上下文来纠正OCR结果中的错误。例如,后处理器可以使用拼写检查器和字典、概率模型(如马尔可夫链和n-连字符串)来提高准确性。后处理器的时间和空间复杂度不应该很高,并且后处理器的应用不应该产生新的错误。

a.图像采集

  图像采集是OCR的初始步骤,它包括获取数字图像并将其转换成易于计算机处理的适当形式,这包括图像的量化和压缩[8]。量化的一个特殊情况是二值化,它只涉及两级图像。在大多数情况下,二值图像足以描述图像的特征,压缩本身可以是有损的或损失较小的。文献[9]概述了各种图像压缩技术。

b.预处理

  除了图像采集之外,还有旨在提高图像质量的预处理。预处理技术之一是阈值化,目的是基于某个阈值对图像进行二值化[9]。阈值可以在本地或全局级别设置。
  可以应用不同类型的滤波器,如均值、最小和最大滤波器。或者,可以执行不同的形态学操作,例如腐蚀(erosion)、膨胀(dilation)、开和闭。
  预处理的一个重要部分是找出文档中的倾斜。不同的倾斜估计方法包括:投影轮廓法、Hough变换法、最近邻法。
  在某些情况下,图像的细化也在应用后期阶段之前执行[10]。最后,文档中的文本行也可以作为预处理阶段的一部分找到。这可以基于像素的投影或聚类来完成。

c.字符分割

  在这一步中,图像在进入分类阶段之前被分割成字符。分割可以作为分类阶段的副产品显式或隐式地执行[11]。此外,OCR的其他阶段可以帮助提供有助于图像分割的上下文信息。

d.特征提取

  在这一阶段中,提取字符的各种特征,这些特征唯一地识别字符。如何选择合适的特征以及所使用的特征总数是一个重要的研究问题。可以使用不同类型的特征,例如图像本身、几何特征(循环、笔划)和统计特征(矩)。最后,可以使用主成分分析等各种技术来降低图像的维数。

e.分类

  它被定义为将一个字符分类为其适当类别的过程。分类的结构方法是基于图像成分中存在的关系。统计方法是基于使用判别函数对图像进行分类。统计分类方法有贝叶斯分类法、决策树分类法、神经网络分类法、最近邻分类法等[12]。最后,还有一些基于句法方法的分类器,它们采用语法方法从图像的子成分合成图像。

f.后处理

  一旦对字符进行了分类,就可以使用各种方法来提高OCR结果的准确性。其中一种方法是使用多个分类器对图像进行分类。该分类器可用于级联(串联 cascading)、并行或层次(hierarchical)结构。然后可以使用各种方法组合分类器的结果。
  为了改进OCR结果,还可以执行上下文分析。图像的几何和文档上下文有助于减少错误的可能性。基于马尔可夫模型和字典的词法处理也有助于提高OCR〔12〕的结果。
在这里插入图片描述

4.结论

  本文综述了OCR的各种技术。OCR不是一个原子( atomic)过程,它包括采集、预处理、分割、特征提取、分类和后处理等各个阶段。本文详细讨论了每一个步骤。结合这些技术,可以开发出一个高效的OCR系统。OCR系统还可以用于不同的实际应用,如车牌识别、智能图书馆和其他各种实时应用。
  尽管在OCR方面进行了大量的研究,但对于阿拉伯语、信德语和乌尔都语等语言的字符识别仍然是一个开放的挑战。对这些语言的OCR技术的概述已经作为一项未来的工作进行了规划。另一个重要的研究领域是多语种字符识别系统。最后,OCR系统在实际应用中的应用仍然是一个活跃的研究领域。

参考文献:
[4] Qadri, M.T., & Asif, M, 2009, Automatic Number Plate Recognition System for Vehicle Identification Using Optical Character Recognition presented at International Conference on Education Technology  and Computer, Singapore, 2009. Singapore: IEEE.
[6] Bhavani, S., & Thanushkodi, K, 2010, A Survey On Coding Algorithms In Medical Image Compression. International Journal on Computer Science and Engineering, 2(5), 1429-1434.
[9] Lund, W.B., Kennard, D.J., & Ringger, E.K. (2013).Combining Multiple Thresholding Binarization Values to Improve OCR Output presented in Document Recognition and Retrieval XX Conference 2013, California, USA, 2013. USA:SPIE
[10] Shaikh, N.A., & Shaikh, Z.A, 2005, A generalized thinning algorithm for cursive and non-cursive language scripts presented in 9th International Multitopic Conference IEEE INMIC, Pakistan, 2005.Pakistan: IEEE
[11] Shaikh, N.A., Shaikh, Z.A., & Ali, G, 2008,Segmentation of Arabic text into characters for recognition presented in International Multi Topic Conference, IMTIC, Jamshoro, Pakistan, 2008.Pakistan: Springer.
[12] Ciresan, D.C., Meier, U., Gambardella, L.M., &Schmidhuber, J, 2011, Convolutional neural network committees for handwritten character classification presented in International Conference on Document Analysis and Recognition, Beijing, China, 2011.USA: IEEE.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

A Survey on Optical Character Recognition System 光学字符识别系统综述 的相关文章

  • SM4加密算法原理以及C语言实现

    文章目录 一 算法原理描述1 密钥及密钥参量 xff1a 2 加密算法 3 解密算法 xff1a 4 密钥扩展算法 xff1a 二 C语言算法实现 h部分代码 xff1a c部分代码 xff1a 一 算法原理描述 SM4分组密码算法是一个迭
  • SIM900A GPRS无线通信

    文章目录 一 模块介绍1 基本概况2 GPRS通信开发说明 二 TCP连接实现及其源码1 TCP连接实现方法2 程序源码 xff08 基于MSP430F149单片机 xff09 1 main c2 Config h及Config c3 SI
  • UCOSII-信号量与信号量集

    文章目录 一 前言1 任务间的同步2 事件 二 信号量1 信号与信号量介绍2 信号量常用函数3 信号量使用流程 xff08 互斥信号量和信号量两种 xff09 4 互斥型信号量使用5 使用一般信号量做任务同步 三 信号量集 事件标志组 1
  • UCOSII-消息邮箱与消息队列

    文章目录 一 事件控制块及事件处理函数1 等待任务列表2 事件控制块的结构3 操作事件控制块的函数4 空事件控制块列表 二 消息邮箱1 消息邮箱介绍2 消息邮箱操作步骤 三 消息队列1 消息指针数组2 队列控制块3 消息队列的操作流程 四
  • float型数据与4字节之间的转换

    文章目录 一 前言二 地址指针转换的方法三 共用体的方法 xff08 注意要定义全局变量数组s xff0c 即地址要分配为固定地址 xff09 一 前言 在与上位机之间进行数据收发 xff0c 要将float型数据转换成字节进行传输 xff
  • USB虚拟串口实现多字节数据接收,基于stm32h743

    文章目录 一 USB虚拟串口原理简介二 接收函数实现源码三 小结 一 USB虚拟串口原理简介 USB 虚拟串口 xff0c 简称 VCP xff0c 是 Virtual COM Port 的简写 xff0c 它是利用 USB 的 CDC 类
  • EC20/EC25 4G模块AT指令开发总结

    文章目录 一 EC25 20 4G模块简介二 AT指令总结1 通用AT指令2 建立TCP UDP连接相关AT指令 三 TCP传输数据流程四 UDP传输数据流程五 总结 一 EC25 20 4G模块简介 EC25 是一系列带分集接收功能的 L
  • C语言实现socket网络编程及多线程编程

    文章目录 一 概述二 TCP socket网络编程1 server端程序实现 xff08 tcp server cpp xff09 2 client端程序实现 xff08 tcp client cpp xff09 3 编译与执行 三 UDP
  • 基于openssl实现https双向身份认证及安全通信

    文章目录 一 概述二 代码设计2 1 ssl server c程序设计2 2 ssl client c程序设计 三 测试 一 概述 https基于SSL TLS提供安全的通信信道 xff0c 基于证书认证技术实现服务器和客户端之间的身份认证
  • ubuntu的不同版本

    ubuntu是现在最流行的Linux安装包 xff0c 本文介绍了ubuntu的各种版本 一 Ubuntu 每个ubuntu的版本都包含一个版本号 xff08 version number xff09 和一个代码名 xff08 code n
  • Linux下通过service服务管理用户进程

    文章目录 一 service配置介绍1 1 service配置文件1 2 配置文件的区块1 3 修改配置文件后重启1 4 服务管理 二 设计一个可执行程序三 设计一个service管理 home ubuntu test servicetes
  • c++中多态调用场景下基类析构函数的virtual声明

    文章目录 一 基类析构函数未加virtual声明的情况1 1 基础示例演示1 2 进阶示例演示 二 基类析构函数添加virtual声明的情况三 总结 一 基类析构函数未加virtual声明的情况 在多态场景中 xff0c 可通过基类的指针指
  • protobuf协议原理及实现,基于c++

    文章目录 一 protobuf协议简介1 1 protobuf协议简介1 2 数据交互xml json protobuf格式比较1 3 关于 ProtoBuf 的一些思考 二 protobuf库安装三 protobuf库使用第一步 xff0
  • OLED显示屏驱动:8080并口,IIC,SPI三种驱动方式

    本文介绍了对OLED的几种驱动方式 xff0c 8080并口 xff0c IIC xff0c SPI三种驱动方式 xff0c 采用的单片机是STM32F407 文章目录 一 OLED驱动原理介绍二 8080并口驱动方式三 IIC驱动方式四
  • ROS2学习笔记(1)ROS2+docker的配置方法

    ROS2学习笔记 xff08 1 xff09 ros2 43 docker的配置方法 1 前言2 安装docker2 1 docker的发展史2 2 什么是docker2 3 docker的思想2 3 1 集装箱2 3 2 标准化1 运输方
  • ubuntu之更改ubuntu和windows双系统启动顺序

    ubuntu之更改ubuntu和windows双系统启动顺序 背景方法 背景 安装好ubuntu和windows双系统后 xff0c 一般grub引导默认选择第一个为启动项 xff0c 在公司打工还好 xff0c 毕竟要进ubuntu挣钱
  • 【lightDM】组件理解

    前言 LightDM xff08 Light Display Manager xff09 是轻量级 Linux 桌面显示管理器 其目的是成为 X org 的 X Server 的标准显示管理器 LightDM 负责启动 X servers
  • 【机器人学中的状态估计】第一讲

    1 什么是状态估计 xff1f 通过获得传感器的观测值 xff0c 建立观测值到状态量的模型 xff0c 估计出状态量 2 概率密度函数 后验概率 p x y
  • VScode环境下使用git与github远程操作要点记录

    部分内容来源于网络 xff0c 外加了自己的实践 xff0c 记录了一下 文章目录 一 windows上使用git1 官网下载git https git scm com download win 2 创建本地仓库 二 git远程连接gith
  • 【千律】C++基础:TXT文件的创建、写入和读取

    include lt fstream gt include lt iostream gt using namespace std int main 初始化 ifstream iread txt 初始化输入流 ofstream write t

随机推荐

  • Matlab计算福利彩票的中奖概率

    Quez1 计算福彩双色球一等奖的中奖概率 福彩双色球的玩法如下 从编号1 33的红球里任选6个 另外在编号1 16的蓝球里再任选1个 如果选择的红球和蓝球和当期的开奖结果完全一致 顺序可不同 则中一等奖 Analysis 这是一个组合问题
  • 【千律】OpenCV基础:基于梯度的模板匹配

    环境 xff1a Python3 8 和 OpenCV 内容 xff1a 基于梯度的模板匹配 主要关注边缘信息 xff0c 能够较好的识别不同颜色的目标 实现步骤 xff1a 1 给定原图像I和模板T 2 指定差异度 xff08 相似度 x
  • golang使用SM2(SM2withSM3)签名、验签数据

    golang使用SM2签名 验签数据 场景标准密钥签名算法 Start依赖公钥转base64私钥转hex私钥生成公钥生成密钥对Hex私钥转私钥对象base64公钥转公钥对象签名验签 测试 场景 对接招行支付 标准 密钥 私钥 xff1a H
  • 树莓派与pixhawk串口通信

    一 Pixhawk部分 1 读取数据测试 步骤 xff1a 在Firmware src modules中添加一个新的文件夹 xff0c 命名为rw uart在rw uart文件夹中创建CMakeLists txt文件 xff0c 并输入以下
  • 关于pixhawk波特率修改的两种方法

    一 QGC地面站修改 将pixhawk与地面站相连接进入参数设置界面 xff0c 搜索SYS COMPANION参数设置需要的波特率保存设置 二 终端 xff08 Terminal xff09 修改 打开终端 xff0c 进入源码所在Fir
  • gazebo仿真环境搭建

    主要内容 xff1a 安装gazebo配置gazebo运行gazebomavros控制飞机 1安装gazebo 如果已经安装MAVROS可以直接在终端上输入gazebo查看是否已经拥有gazebo xff0c 因为MAVROS中含有gaze
  • Intel Realsense D435i标定详细步骤

    主要介绍Inter D435i深度相机的IMU 相机和IMU与相机外参数标定的过程 其中 IMU使用的是realsense官方文档的教程 相机和外参数使用的是Kalibr的标定方法 本文所介绍过程的所有代码和生成文件资源放在Kalibr工具
  • 在Ubuntu、NVIDIA_TX2下查看CPU/GPU/内存使用率

    一 Ubuntu 1 cpu 内存 1 使用top命令 top 2 更直观的工具htop sudo apt get install htop htop 2 gpu 用nivida smi命令 xff0c nvidia smi 这个命令只能显
  • 基于RT-Thread OS的 迷你时钟项目

    基于RT Thread OS的 迷你时钟项目 近期在自学RT Thread OS 这是一个国内团队开发的实时物联网操作系统 xff0c 具有组件完整丰富 高度可伸缩 简易开发等优点 RTOS官网 参考学习文档 作品演示 基于RT Threa
  • C++_namespace命名空间

    catalog 内嵌enum class namespace命名冲突多个同名namespace的原理开头 变量 函数前命名空间前 规范写法作用域Base定义顺序 内嵌 c 43 43 17后 支持 namespace A B C 写法 en
  • c++_exception异常,try和catch,noexcept,throw

    catalog noexcept 函数base自定义异常类noexcept 和 throw noexcept 函数 bool f 61 noexcept func 判断 func 函数 是否有标记noexcept base throw 是
  • SQL4种匹配规则

    SQL提供了四种匹配模式 xff1a 1 表示任意0个或多个 字符 如下语句 xff1a Select FROM user Where name LIKE 39 三 39 将会把name为 张三 xff0c 三脚猫 xff0c 唐三藏 等等
  • SDN的HUB实验

    SDN的hub实验 首先需要搭建ryu控制器环境和mininet环境 使用winscp将hub的py代码上传到服务器啊贝云 使用命令搭建拓扑环境 mn topo 61 single xff0c 3 controller 61 remote
  • CSDN上代码块背景颜色的设置

    CSDN上代码块背景颜色的设置 今天发博客的时候发现代码块背景的颜色是白色的 xff0c 我想要改成黑色的 xff0c 于是就研究了一下怎么修改代码块背景的颜色 xff0c 修改代码块的背景颜色只要4步 1 点击个人头像打开管理博客 2 在
  • 模拟电路和数字电路PCB设计的区别

    本文就旁路电容 电源 地线设计 电压误差和由PCB布线引起的电磁干扰 EMI 等几个方面 xff0c 讨论模拟和数字布线的基本相似之处及差别 工程领域中的数字设计人员和数字电路板设计专家在不断增加 xff0c 这反映了行业的发展趋势 尽管对
  • k8s部署资源服务的注意事项

    前言 为了k8s的资源服务能够高效 稳定 健康的运转 xff0c 需要对其进行相应的设置 资源类别 声明每个Pod的resource 在使用k8s集群时 xff0c 经常会遇到 xff1a 在一个节点上调度了太多的Pod xff0c 导致节
  • OCR中有见解的评论

    一 关于人脑与计算机识别的区别 电脑识别最主要是依赖简单的线性分类问题 把20 20个像素直接展成400维向量 xff0c 分类之 虽然现在的算法越来越常见地引入了非线性 xff0c 但是这种非线性的复杂度还是远没法和人脑相比 人脑则是多层
  • 梯度响应图——针对无纹理目标的检测

    题目 xff1a Gradient response maps for real time detection of textureless objects amp emsp xff1b gt amp ensp xff1b gt amp n
  • 深度学习技术在语义分割中的应用综述

    论文题目 xff1a A Review on Deep Learning Techniques Applied to Semantic Segmentation 博客园上的翻译 知乎上的提取 CSDN上的总结1 CSDN上的总结2
  • A Survey on Optical Character Recognition System 光学字符识别系统综述

    论文题目 xff1a 2017 A Survey on Optical Character Recognition System 摘要 光学字符识别 xff08 OCR xff09 是近年来研究的热点 它被定义为将文档图像数字化为其组成字符