OCR(Optical Character Recognition,光学字符识别),是属于图型识别(Pattern Recognition,PR)的一门学问。其目的就是要让计算机知道它到底看到了什么,尤其是文字资料。

由于OCR是一门与识别率拔河的技术,因此如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题,ICR(Intelligent Character Recognition)的名词也因此而产生。而根据文字资料存在的媒体介质不同,及取得这些资料的方式不同,就衍生出各式各样、各种不同的应用。
在此对OCR作一基本介绍,包括其技术简介以及其应用介绍。

一、OCR的发展
要谈OCR的发展,早在60、70年代,世界各国就开始有OCR的研究,而研究的初期,多以文字的识别方法研究为主,且识别的文字仅为0至9的数字。以同样拥有方块文字的日本为例,1960年左右开始研究OCR的基本识别理论,初期以数字为对象,直至1965至1970年之间开始有一些简单的产品,如印刷文字的邮政编码识别系统,识别邮件上的邮政编码,帮助邮局作区域分信的作业;也因此至今邮政编码一直是各国所倡导的地址书写方式。
    OCR可以说是一种不确定的技术研究,正确率就像是一个无穷趋近函数,知道其趋近值,却只能靠近而无法达到,永远在与100%作拉锯战。因为其牵扯的因素太多了,书写者的习惯或文件印刷品质、扫描仪的扫瞄品质、识别的方法、学习及测试的样本……等等,多少都会影响其正确率,也因此,OCR的产品除了需有一个强有力的识别核心外,产品的操作使用方便性、所提供的除错功能及方法,亦是决定产品好坏的重要因素。
    一个OCR识别系统,其目的很简单,只是要把影像作一个转换,使影像内的图形继续保存、有表格则表格内资料及影像内的文字,一律变成计算机文字,使能达到影像资料的储存量减少、识别出的文字可再使用及分析,当然也可节省因键盘输入的人力与时间。
    从影像到结果输出,须经过影像输入、影像前处理、文字特征抽取、比对识别、最后经人工校正将认错的文字更正,将结果输出。
    在此逐一介绍:
    影象输入:欲经过OCR处理的标的物须透过光学仪器,如影像扫描仪、传真机或任何摄影器材,将影像转入计算机。科技的进步,扫描仪等的输入装置已制作的愈来愈精致,轻薄短小、品质也高,对OCR有相当大的帮助,扫描仪的分辨率使影像更清晰、扫除速度更增进OCR处理的效率。
    影象前处理:影像前处理是OCR系统中,须解决问题最多的一个模块,从得到一个不是黑就是白的二值化影像,或灰阶、彩色的影像,到独立出一个个的文字影像的过程,都属于影像前处理。包含了影像正规化、去除噪声、影像矫正等的影像处理,及图文分析、文字行与字分离的文件前处理。在影像处理方面,在学理及技术方面都已达成熟阶段,因此在市面上或网站上有不少可用的链接库;在文件前处理方面,则凭各家本领了;影像须先将图片、表格及文字区域分离出来,甚至可将文章的编排方向、文章的题纲及内容主体区分开,而文字的大小及文字的字体亦可如原始文件一样的判断出来。
    文字特征抽取:单以识别率而言,特征抽取可说是OCR的核心,用什么特征、怎么抽取,直接影响识别的好坏,也所以在OCR研究初期,特征抽取的研究报告特别的多。而特征可说是识别的筹码,简易的区分可分为两类:一为统计的特征,如文字区域内的黑白点数比,当文字区分成好几个区域时,这一个个区域黑白点数比之联合,就成了空间的一个数值向量,在比对时,基本的数学理论就足以应付了。而另一类特征为结构的特征,如文字影像细线化后,取得字的笔划端点、交叉点之数量及位置,或以笔划段为特征,配合特殊的比对方法,进行比对,市面上的线上手写输入软件的识别方法多以此种结构的方法为主。
    对比数据库:当输入文字算完特征后,不管是用统计或结构的特征,都须有一比对数据库或特征数据库来进行比对,数据库的内容应包含所有欲识别的字集文字,根据与输入文字一样的特征抽取方法所得的特征群组。
对比识别:这是可充分发挥数学运算理论的一个模块,根据不同的特征特性,选用不同的数学距离函数,较有名的比对方法有,欧式空间的比对方法、松弛比对法(Relaxation)、动态程序比对法(Dynamic Programming,DP),以及类神经网络的数据库建立及比对、HMM(Hidden Markov Model)…等著名的方法,为了使识别的结果更稳定,也有所谓的专家系统(Experts System)被提出,利用各种特征比对方法的相异互补性,使识别出的结果,其信心度特别的高。
字词后处理:由于OCR的识别率并无法达到百分之百,或想加强比对的正确性及信心值,一些除错或甚至帮忙更正的功能,也成为OCR系统中必要的一个模块。字词后处理就是一例,利用比对后的识别文字与其可能的相似候选字群中,根据前后的识别文字找出最合乎逻辑的词,做更正的功能。
    字词数据库:为字词后处理所建立的词库。
    人工校正:OCR最后的关卡,在此之前,使用者可能只是拿支鼠标,跟着软件设计的节奏操作或仅是观看,而在此有可能须特别花使用者的精神及时间,去更正甚至找寻可能是OCR出错的地方。一个好的OCR软件,除了有一个稳定的影像处理及识别核心,以降低错误率外,人工校正的操作流程及其功能,亦影响OCR的处理效率,因此,文字影像与识别文字的对照,及其屏幕信息摆放的位置、还有每一识别文字的候选字功能、拒认字的功能、及字词后处理后特意标示出可能有问题的字词,都是为使用者设计尽量少使用键盘的一种功能,当然,不是说系统没显示出的文字就一定正确,就像完全由键盘输入的工作人员也会有出错的时候,这时要重新校正一次或能允许些许的错,就完全看使用单位的需求了。
    结果输出:其实输出是件简单的事,但却须看使用者用OCR到底为了什么?有人只要文本文件作部份文字的再使用之用,所以只要一般的文字文件、有人要漂漂亮亮的和输入文件一模一样,所以有原文重现的功能、有人注重表格内的文字,所以要和Excel等软件结合。无论怎么变化,都只是输出档案格式的变化而已。

关于OCR(Optical Character Recognition,光学字符识别)相关推荐

  1. OCR(Optical Character Recognition 光学字符识别)扫盲

    了解OCR OCR是英文Optical Character Recognition 的缩写,中文意思就是通过光学技术对文字进行识别.OCR概念的产生是在1929年,德国的科学家Tausheck首先提出 ...

  2. Python,OpenCV中的光学字符识别(OCR Optical Character Recognition)

    Python,OpenCV中的光学字符识别(OCR Optical Character Recognition 1. 什么是OCR? 2. 光学字符识别简史 3. 光学字符识别的应用 4. OSD 方 ...

  3. 光学字符识别(OCR,Optical Character Recognition)

    简介 OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗.亮的模式确定其形状,然后用字符识别方法将形 ...

  4. 光学字符识别 OCR (Optical Character Recognition)是什么?

    OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗.亮的模式确定其形状,然后用字符识别方法将形状翻译 ...

  5. OCR(Optical Character Recognition,光学字符识别)技术详解

    OCR(Optical Character Recognition,光学字符识别)技术是一种将图像中的文字信息转换为文本的技术.在计算机视觉和人工智能领域,OCR 技术是一个非常重要的应用,它可以帮助 ...

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

    论文题目: 2017-A Survey on Optical Character Recognition System 摘要   光学字符识别(OCR)是近年来研究的热点.它被定义为将文档图像数字化为 ...

  7. OCR手机证件扫描光学字符识别

    OCR手机证件扫描光学字符识别 一.OCR手机证件扫描光学字符识别应用背景 这些年,随着互联网金融的极速发展,第三方支付.理财.P2P网贷.征信等APP应用成爆发式的增长,在众多APP中都涉及到对身份 ...

  8. 入门深度学习OCR(Optical character recognition)开发

    前言: 光学字符识别(OCR)指对文本资料的图像文件进行分析识别处理,获取文字及版面信息的过程.目前OCR主要落地应用场景包括:自然场景文本检测识别.文档类印刷体文本检测识别.手写体文本检测识别.自然 ...

  9. OCR EasyOCR + PaddleHub 光学字符识别(Optical Character Recognition, OCR)

    EasyOCR pip install opencv-python pip3 install easyocr 简单测试一下 import os import easyocr import cv2 fr ...

最新文章

  1. cocos网络通信php,cocos2d-x网络编程 连接php服务器笔记2
  2. Android内存分析和调优
  3. 小小的吹一下集结号~
  4. arp_annouce=2详解
  5. c语言受到哪些编程的影响,C语言,一个影响了整个世界的编程语言!
  6. verilog 除法器
  7. css grid布局增加边框,CSS Grid中每行之后的边框
  8. 原版英文书籍《Linux命令行》阅读记录7 | 原版英文书籍《Linux命令行》阅读记录7 | 一些键盘按键技巧...
  9. php selenium下拉列表,Selenium+java - 下拉框处理
  10. 95-190-730-源码-WindowFunction-窗口操作符侧的窗口函数(内部函数)
  11. java drawpolygon_Java如何绘制和填充有孔的Polygon
  12. 软工第一次个人作业博客(一)
  13. 三星 android 5.0系统下载地址,三星S5怎么刷机 三星S5安卓5.0固件包下载地址及刷机教程...
  14. 2017年世界500强企业排行榜【完整榜单】2017财富杂志世界五百强排名
  15. java的一些学习网址。。。。。
  16. thinkphp3.2 七牛 bad token
  17. c语言快速平方根算法,单片机开平方的快速算法
  18. c# excel文档导入及excel存储数据库
  19. 英文和数字手写数据集
  20. 零基础新手小白学编程必会的100个代码

热门文章

  1. DAPP基本的开发流程
  2. python声明一个数组_python 声明数组
  3. android app 流量统计
  4. 下载钉钉云课堂视频或浏览器观看
  5. Windows创建克隆隐藏账号(转载)
  6. 北京vr虚拟现实,工地安全教育VR体验,虚拟仿真vr实验教学,vr虚拟仿真交互系统
  7. 九峰影业创始人_九峰朗读者 | 总有人在背后,默默爱着你
  8. 两个年月日怎么相减_stata怎么把年月日相减
  9. 迅雷云点播服务免费体验--无需下载,无需等待
  10. 海南饲料肥料检测实验室建设规划方案