我现在的项目有一个需求,就是把拍照的照片上面的文字识别出来,然后上传到服务器,录入数据,其实图像识别技术是很难的一个技术。

(这是我的github里面的地址,关于ocr 的demo~>  https://github.com/wwpeter/ocr)

OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;即,针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题,ICR(Intelligent Character Recognition)的名词也因此而产生。衡量一个OCR系统性能好坏的主要指标有:拒识率、误识率、识别速度、用户界面的友好性,产品的稳定性,易用性及可行性等。

OCR的概念是在1929年由德国科学家Tausheck最先提出来的,后来美国科学家Handel也提出了利用技术对文字进行识别的想法。而最早对印刷体汉字识别进行研究的是IBM公司的Casey和Nagy,1966年他们发表了第一篇关于汉字识别的文章,采用了模板匹配法识别了1000个印刷体汉字。
早在60、70年代,世界各国就开始有OCR的研究,而研究的初期,多以文字的识别方法研究为主,且识别的文字仅为0至9的数字。以同样拥有方块文字的日本为例,1960年左右开始研究OCR的基本识别理论,初期以数字为对象,直至1965至1970年之间开始有一些简单的产品,如印刷文字的邮政编码识别系统,识别邮件上的邮政编码,帮助邮局作区域分信的作业;也因此至今邮政编码一直是各国所倡导的地址书写方式。
20世纪70年代初,日本的学者开始研究汉字识别,并做了大量的工作。中国在OCR技术方面的研究工作起步较晚,在70年代才开始对数字、英文字母及符号的识别进行研究,70年代末开始进行汉字识别的研究,到1986年,我国提出“863”高新科技研究计划,汉字识别的研究进入一个实质性的阶段,清华大学的 丁晓青教授和中科院分别开发研究,相继推出了中文OCR产品,现为中国最领先汉字OCR技术。早期的OCR软件,由于识别率及产品化等多方面的因素,未能达到实际要求。同时,由于硬件设备成本高,运行速度慢,也没有达到实用的程度。只有个别部门,如信息部门、新闻出版单位等使用OCR软件。进入20世纪90年代以后,随着平台式扫描仪的广泛应用,以及我国信息自动化和办公自动化的普及,大大推动了OCR技术的进一步发展,使OCR的识别正确率、识别速度满足了广大用户的要求。

软件结构:

由于扫描仪的普及与广泛应用,OCR软件只需提供与扫描仪的接口,利用扫描仪驱动软件即可。因此,OCR软件主要是由下面几个部分组成。
图像输入、预处理:
图像输入:对于不同的图像格式,有着不同的存储格式,不同的压缩方式,目前有OpenCV,CxImage等开源项目 。预处理:主要包括二值化,噪声去除,倾斜较正等
二值化:
对摄像头拍摄的图片,大多数是彩色图像,彩色图像所含信息量巨大,对于图片的内容,我们可以简单的分为前景与背景,为了让计算机更快的,更好的识别文字,我们需要先对彩色图进行处理,使图片只前景信息与背景信息,可以简单的定义前景信息为黑色,背景信息为白色,这就是二值化图了。
噪声去除:
对于不同的文档,我们对噪声的定义可以不同,根据噪声的特征进行去噪,就叫做噪声去除
倾斜较正:
由于一般用户,在拍照文档时,都比较随意,因此拍照出来的图片不可避免的产生倾斜,这就需要文字识别软件进行较正。
版面分析:
将文档图片分段落,分行的过程就叫做版面分析,由于实际文档的多样性,复杂性,因此,目前还没有一个固定的,最优的切割模型。
字符切割:
由于拍照条件的限制,经常造成字符粘连,断笔,因此极大限制了识别系统的性能,这就需要文字识别软件有字符切割功能。
字符识别:
这一研究,已经是很早的事情了,比较早有模板匹配,后来以特征提取为主,由于文字的位移,笔画的粗细,断笔,粘连,旋转等因素的影响,极大影响特征的提取的难度。
版面恢复:
人们希望识别后的文字,仍然像原文档图片那样排列着,段落不变,位置不变,顺序不变,的输出到word文档,pdf文档等,这一过程就叫做版面恢复。
后处理、校对:
根据特定的语言上下文的关系,对识别结果进行较正,就是后处理。

工作流程:

一个OCR识别系统,其目的很简单,只是要把影像作一个转换,使影像内的图形继续保存、有表格则表格内资料及影像内的文字,一律变成计算机文字,使能达到影像资料的储存量减少、识别出的文字可再使用及分析,当然也可节省因键盘输入的人力与时间。
从影像到结果输出,须经过影像输入、影像前处理、文字特征抽取、比对识别、最后经人工校正将认错的文字更正,将结果输出

影像输入


欲经过OCR处理的标的物须透过光学仪器,如影像扫描仪、传真机或任何摄影器材,将影像转入计算机。科技的进步,扫描仪等的输入装置已制作的愈来愈精致,轻薄短小、品质也高,对OCR有相当大的帮助,扫描仪的分辨率使影像更清晰、扫除速度更增进OCR处理的效率。
影像预处理:影像预处理是OCR系统中,须解决问题最多的一个模块。影像须先将图片、表格及文字区域分离出来,甚至可将文章的编排方向、文章的提纲及内容主体区分开,而文字的大小及文字的字体亦可如原始文件一样的判断出来。
对待识别图像进行如下预处理,可以降低特征提取算法的难度,并能提高识别的精度。
  • 二值化:由于彩色图像所含信息量过于巨大,在对图像中印刷体字符进行识别处理前,需要对图像进行二值化处理,使图像只包含黑色的前景信息和白色的背景信息,提升识别处理的效率和精确度。
  • 图像降噪:由于待识别图像的品质受限于输入设备、环境、以及文档的印刷质量,在对图像中印刷体字符进行识别处理前,需要根据噪声的特征对待识别图像进行去噪处理,提升识别处理的精确度。
倾斜校正:由于扫描和拍摄过程涉及人工操作,输入计算机的待识别图像或多或少都会存在一些倾斜,在对图像中印刷体字符进行识别处理前,就需要进行图像方向检测,并校正图像方向。
文字特征抽取:单以识别率而言,特征抽取可说是 OCR的核心,用什么特征、怎么抽取,直接影响识别的好坏,也所以在OCR研究初期,特征抽取的研究报告特别的多。而特征可说是识别的筹码,简易的区分可分为两类:一为统计的特征,如文字区域内的黑/白点数比,当文字区分成好几个区域时,这一个个区域黑/白点数比之联合,就成了空间的一个数值向量,在比对时,基本的数学理论就足以应付了。而另一类特征为结构的特征,如文字影像细线化后,取得字的笔划端点、交叉点之数量及位置,或以笔划段为特征,配合特殊的比对方法,进行比对,市面上的线上手写输入软件的识别方法多以此种结构的方法为主。
对比数据库:当输入文字算完特征后,不管是用统计或结构的特征,都须有一比对数据库或特征数据库来进行比对,数据库的内容应包含所有欲识别的字集文字,根据与输入文字一样的特征抽取方法所得的特征群组。

对比识别

这是可充分发挥数学运算理论的一个模块,根据不同的特征特性,选用不同的数学距离函数,较有名的比对方法有,欧式空间的比对方法、松弛比对法(Relaxation)、动态程序比对法(Dynamic Programming,DP),以及 类神经网络的数据库建立及比对、HMM(Hidden Markov Model)…等著名的方法,为了使识别的结果更稳定,也有所谓的专家系统(Experts System)被提出,利用各种特征比对方法的相异互补性,使识别出的结果,其信心度特别的高。
字词后处理:由于OCR的识别率并无法达到百分之百,或想加强比对的正确性及信心值,一些除错或甚至帮忙更正的功能,也成为OCR系统中必要的一个模块。字词后处理就是一例,利用比对后的识别文字与其可能的相似候选字群中,根据前后的识别文字找出最合乎逻辑的词,做更正的功能。
字词数据库:为字词后处理所建立的词库。

人工校正

OCR最后的关卡,在此之前,使用者可能只是拿支鼠标,跟着软件设计的节奏操作或仅是观看,而在此有可能须特别花使用者的精神及时间,去更正甚至找寻可能是OCR出错的地方。一个好的OCR软件,除了有一个稳定的影像处理及识别核心,以降低错误率外,人工校正的操作流程及其功能,亦影响OCR的处理效率,因此,文字影像与识别文字的对照,及其屏幕信息摆放的位置、还有每一识别文字的候选字功能、拒认字的功能、及字词后处理后特意标示出可能有问题的字词,都是为使用者设计尽量少使用键盘的一种功能,当然,不是说系统没显示出的文字就一定正确,就像完全由键盘输入的工作人员也会有出错的时候,这时要重新校正一次或能允许些许的错,就完全看使用单位的需求了。

结果输出


有人只要文本文件作部份文字的再使用之用,所以只要一般的文字文件、有人要漂漂亮亮的和输入文件一模一样,所以有原文重现的功能、有人注重表格内的文字,所以要和Excel等软件结合。无论怎么变化,都只是输出档案格式的变化而已。如果需要还原成原文一样格式,则在识别后,需要人工排版,耗时耗力。

图像识别,ocr 技术,有兴趣的可以了解一下相关推荐

  1. 创蓝253-创蓝万数平台图像识别OCR技术

    图像识别OCR,广泛用于识别各种证件.卡类.甚至发票和单据,快速把图片信息转换成文本信息:主要用于解决快速卡证类的信息输入,以及卡证的接口调用查询: 目前支持API的方式调用,图片支持Base64编码 ...

  2. python用ocr技术识别_使用Python和OCR实现图像识别

    背景 光学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程.OCR技术非常专业,一般多是印刷. ...

  3. OCR技术在爱奇艺的应用实践及演进

    随着人工智能的热度上升,图像识别这一细分领域也渐渐被人们所关注.在很多公司的业务中,有很多需要对图片进行识别的需求.为了帮助业务实现对这些图片.文档的识别和结构化,业界进行了一系列的实践和探索,最终确 ...

  4. 数平精准推荐 | OCR技术之系统篇

    导语:如果说算法和数据是跑车的发动机和汽油,那么系统则是变速箱,稳定而灵活的变速箱,是图像识别服务向前推进的基础.算法.数据.系统三位一体,随着算法的快速发展和数据的日益积累,系统也在高效而稳定地升级 ...

  5. 苹果收购法国图像识别公司 技术或植入iPhone

    本文讲的是苹果收购法国图像识别公司 技术或植入iPhone,在苹果 11 月份将上市发售的新款手机 iPhone X 中,计算机视觉识别将成为重要的主角,苹果也将在行业内第一次实现对脸部的三维扫描识别 ...

  6. 基于深度学习的OCR技术

    随着数字化时代的到来,图片识别技术越来越受到人们的关注.其中,OCR技术作为图片处理的一个重要分支,可以将扫描的图片进行自动识别和分类,极大地提高了工作效率.本文将介绍有道实况OCR技术的相关内容,帮 ...

  7. OCR技术学习,智能文档图像处理技术应用与实践

    目录 一.智能文字识别一般包含以下几个过程 1.图像输入 2.图像预处理 (1)弯曲矫正系统pipeline (2)摩尔纹去除 3.版面分析 4.字符切割 5.字符识别 6.版面恢复 7.后处理.核对 ...

  8. 宜信OCR技术探索与实践​|直播速记

    宜信OCR技术探索与实践|宜信技术沙龙第12期 导读:随着人工智能的热度上升,图像识别这一分领域也渐渐被人们所关注.在公司的业务中,有很多扫描.拍照单据.凭证等进行识别的需求.为了帮助业务实现这些图片 ...

  9. ABBYY FineReader PDF15标注版文字图像识别ocr

    随着社会的不断发展,网络给人们带来了极大的便利,图像识别在问我们的生活中也是随处可见,这些都得益于网络发展.但我们手机解锁.出入机场火车站.上班打卡等等都会有人脸识别,而人脸识别也是图像识别的一种,当 ...

最新文章

  1. 好程序员web前端分享HTML基础篇
  2. 深入入门正则表达式(java) - 匹配原理 - 1 - 引擎分类与普适原则
  3. c++ template(4)基本技巧
  4. Ubantu键盘快捷键
  5. 单词的理解 —— 词义的变化(翻译)
  6. [Contest]2017 ACM/ICPC Asia Regional Shenyang Online(01 03 07 09 10 11待补)
  7. 推荐30款最佳的数据可视化工具
  8. java循环队列_Java版-数据结构-队列(循环队列)
  9. linux怎么重载mysql配置命令_【Linux命令】数据库mysql配置命令
  10. 如何在Arduino上使用OV7670摄像头模块
  11. xci转nsp_找不到xci怎么办,自己动手丰衣足食!
  12. Rational Rose 7.0安装及科学使用教程
  13. OpenCV项目实战
  14. @自我怀疑的开发者:你够优秀吗?
  15. Unity 使用贝塞尔曲线实现抛物线运动
  16. win10+cpu+caffe搭建
  17. Python3 简单爬虫爬取百度贴吧帖子
  18. 解决Win11或Win10版本配置IDEA的JDK1.8的版本以及java环境是否成功配置的问题
  19. seajs配置问题详解以及seajs一些插件的使用
  20. AlphaFold/run_alphafold.py代码阅读理解

热门文章

  1. Python中的set()函数使用
  2. STM32外部中断触发
  3. 64位下php环境安装教程,PHP环境安装
  4. 【Linux-SVN】安装 SVN Server
  5. CListCtrl中的HitTest、SubItemHitTest的用法
  6. IText实现对PDF文档属性的基本设置
  7. ES5ES6 day16
  8. java 手机应用开发
  9. linux下电路仿真软件下载,Linux下电路仿真.pdf
  10. 6-1 判断一个点是否在一个圆的内部 (20 分)