AI时代的OCR识别技术浅析

  (此图来自网页http://mini.eastday.com/mobile/171107214414785.html里面,如有侵权,请联系小编及时清除)    人工智能当然不止会下棋这么简单,其实在20年前,智能家居的开发就有不少团队在进行,只是切入点不对,所以一直没有什么起色,现在大家都以语音为切入点,使得人工智能开始步入正轨,亚马逊的智能音箱echo就是代表产品,自然语言互动会逐渐摆脱人对着屏幕互动的束缚,其最大的价值就是回归人生,在未来就会迁就人类,语音交互就是这样一个在各个场景中都可以嵌入的技术。  目前我国的语音识别技术也已经从进场发展到远场,如果要实现人工智能,OCR技术则是必不可少的基石,智能文字识别的主要依据就是OCR技术识别原理,现在也有许多智能产品加入了人脸识别的项目。一:ocr的历史  OCR英文全称是Optical Character Recognition,中文叫做光学字符识别。它是利用光学技术和计算机技术把印在或写在纸上的文字读取出来,并转换成一种计算机能够接受、人又可以理解的格式。文字识别是计算机视觉研究领域的分支之一,而且这个课题已经是比较成熟了,并且在商业中已经有很多落地项目了。比如汉王OCR,百度OCR,阿里OCR等等,很多企业都有能力都是拿OCR技术开始挣钱了。其实我们自己也能感受到,OCR技术确实也在改变着我们的生活:比如一个手机APP就能帮忙扫描名片、身份证,并识别出里面的信息;汽车进入停车场、收费站都不需要人工登记了,都是用车牌识别技术;我们看书时看到不懂的题,拿个手机一扫,APP就能在网上帮你找到这题的答案。太多太多的应用了,OCR的应用在当今时代确实是百花齐放啊。   OCR概念的产生是在1929年,德国的科学家Tausheck首先提出了OCR的概念,并且申请了专利。几年后,美国科学家Handel也提出了利用技术对文字进行识别的想法。但这种梦想直到计算机的诞生才变成了现实。现在这一技术已经由计算机来实现,OCR的意思就演变成为利用光学技术对文字和字符进行扫描识别,转化成计算机内码。     我国在OCR技术方面的研究工作起步较晚,在70年代才开始对数字、英文字母及符号的识别进行研究,70年代末开始进行汉字识别的研究,到1986年汉字识别的研究进入一个实质性的阶段,取得了较大的成果,不少研究单位相继推出了中文OCR产品。我国OCR都是有 OMR演变过来的,我国的一些研究部门在 80年代初就开始对OCR识别进行研究,如:清华的吴估寿教授、丁晓青教授、夏莹教授、北大的顾小凤教授、北信的张昕中教授、中科院的刘品平博士、李明敬博士可以称作我国OCR研究开发队伍中的导航人,为此付出了不懈努力。二十多年的研究开发积累了大量人才,专家就有上百人。在中关村的硅谷地带,我国的OCR专家多达20多位,他们也为我国的信息领域留下了自己奋斗的足迹。我国目前使用的文本型OCR软件主要有清华文通TH-OCR、北信BI-OCR、中自ICR、沈阳自动化所SY-OCR、北京曙光公司NI-OCR(已被中自汉王并购)等,匹配的扫描仪则使用市面上的平板扫描仪。中文OCR即采用扫描仪、数码相机等输入设备,把中文印刷体的文稿送入计算机并以计算机文档表示出来的高新技术。中文印刷体识别技术(OCR)主要用于文字和表格输入,可以用扫描仪将整页的印刷文稿或者表格输入计算机,由计算机上的识别系统自动生成汉字文件,替代人工键入汉字和表格的工作。中文OCR有普及版和专业版之分,现在市场上扫描仪捆绑的OCR软件均为普及版。目前印刷体OCR的识别技术已经达到可以实用的程度,即使对印刷质量较差的文字的识别率也达到95%以上。由于手写体OCR技术的限制,专业型OCR系统的产品多是面向特定的行业,即适用于每天需处理大量表格信息录入的部门,如邮政、税务、海关、统计等等。这种面向特定行业的专业型OCR系统信息格式较为固定,识别的字符集相对小,经常与专用的输入设备结合使用,因此具有速度快、效率高等特点。在国外已经被广泛地应用,充分发挥着作用。在我国随着计算机应用的深入,这方面的需求已经出现。专业版 OCR有批处理功能,性能更加优化,识别率也不同于普通版OCR。国家的"863计划"对OCR技术的研究给予了很大的资助,促进了OCR的重大成果的取得。如"863"项目的启用者汉王最新推出的专业版"新世纪OCR",将我国当今的OCR技术推进了新的巅峰。它的特点主要是:识别率大幅度提高,尤其是对中英文混排文稿,识别率为99%。可识别宋、仿宋、楷、隶、行等八种印刷字体,对数字、标点符号的识别也可点可圈;对表格识别也有了一定的突破,无论横版、竖版、中文表格、图文混排文件都能识别,自动版面分析和识别功能也大大加强。从80年代开始,OCR的研究开发就一直受到国家"863"计划的资助,我国在信息技术领域付出的努力,已经有了初步的回报。目前我们正在实现将OCR软件针对表格形式的特征设计了大量的优化功能,使得识别精度更高、识别速度更快,并且为适应不同环境的使用提供了多种识别方式选项,支持单机和网络操作,极大地方便了使用,使应用范围更加广泛,能达到各种不同用户的应用要求。我们相信经过众多专家或专业人士的努力,及国家在信息产业领域的大力资助,使OCR进入到网络的各个领域,会有更多的新品种奉献给我们的用户,OCR技术将会有一个质的飞跃。二,关于OCR的概念三,图像处理的步骤  一般处理图片的步骤包括以下几个:图像输入,图像前处理,预识别3.1 图像输入  对不同的图像格式,有着不同的存储格式,不同的压缩方式,目前有OpenCV,CxImage等开源项目。3.2 图像预处理  主要包括二值化,噪声去除,倾斜校正等。  3.2.1  二值化处理:  对摄像头拍摄的图片,大多数是彩色图片,彩色图像所含的信息量巨大,对于图片的内容,我们可以简单的分为前景和背景,为了让计算机更快的,更好的识别文字,我们可以简单地分为前景和背景,为了让计算机更快的,更好的识别文字,我们需要对彩色图进行处理,使图片只剩下前景信息和背景信息,可以简单的定义前景信息为黑色,背景信息为白色,这就是二值化图。  3.2.2  噪声去除  对于不同的文档,我们对噪声的定义可以不同,根据噪声的特征进行去噪,就叫做噪声去除。  3.2.3  倾斜校正  由于一般的用户,在拍摄文档时候,都比较随意,因此拍出来的图片不可避免的产生倾斜,这就需要文字识别软件进行矫正。  3.2.4  版面分析  将文档图片分段落,分行的过程就叫做版面分析,由于实际文档的多样性,复杂性,因此,目前还没有一个固定的,最优化的切割模型。3.3  字符切割  由于拍照条件的限制,经常造成字符粘连,断笔,因此极大限制了识别系统的性能。3.4  字符识别  这一研究很早了,比较早有模板匹配,后来以特征提取为主,由于文字的位移,笔画的粗细,断笔,粘连,旋转等因素的影响,极大影响特征的提取的难度。3.5 版面还原  人们希望识别后的文字,任然像源文档图片那样排列着,段落不变,位置不变,顺序不变地输出到Word文档,PDF文档等,这一过程就叫做版面还原。3.6 后处理,校对  根据特定的语言上下文的关系,对识别结果进行校正,就是后处理。 四,ocr的分类  如果要给OCR进行分类,我觉得可以分为两类:手写体识别和印刷体识别。这两个可以认为是OCR领域两个大主题了,当然印刷体识别较手写体识别要简单得多,我们也能从直观上理解,印刷体大多都是规则的字体,因为这些字体都是计算机自己生成再通过打印技术印刷到纸上。在印刷体的识别上有其独特的干扰:在印刷过程中字体很可能变得断裂或者墨水粘连,使得OCR识别异常困难。当然这些都可以通过一些图像处理的技术帮他尽可能的还原,进而提高识别率。总的来说,单纯的印刷体识别在业界已经能做到很不错了,但说100%识别是肯定不可能的,但是说识别得不错那是没毛病。  印刷体已经识别得不错了,那么手写体呢?手写体识别一直是OCR界一直想攻克的难关,但是时至今天,感觉这个难关还没攻破,还有很多学者和公司在研究。为什么手写体识别这么难识别?因为人类手写的字往往带有个人特色,每个人写字的风格基本不一样,虽然人类可以读懂你写的文字,但是机器缺很难。那为什么机器能读懂印刷体?因为印刷体是机器造出来的啊,那机器当然能读懂自己造的字体啦哈哈~其实上面也提到了,印刷体一般都比较规则,字体都基本就那几十种,机器学习这几十种字体并不是一件难事,但是手写体,每个人都有一种字体的话,那机器该学习多少字体啊?这就是难度所在。  如果按识别的内容来分类,也就是按照识别的语言的分类的话,那么要识别的内容将是人类的所有语言(汉语、英语、德语、法语等)。如果仅按照我们国人的需求,那识别的内容就包括:汉字、英文字母、阿拉伯数字、常用标点符号。根据要识别的内容不同,识别的难度也各不相同。简单而言,识别数字是最简单了,毕竟要识别的字符只有0~9,而英文字母识别要识别的字符有26个(如果算上大小写的话那就52个),而中文识别,要识别的字符高达数千个(二级汉字一共6763个)!因为汉字的字形各不相同,结构非常复杂(比如带偏旁的汉字)如果要将这些字符都比较准确地识别出来,是一件相当具有挑战性的事情。但是,并不是所有应用都需要识别如此庞大的汉字集,比如车牌识别,我们的识别目标仅仅是数十个中国各省和直辖市的简称,难度就大大减少了。当然,在一些文档自动识别的应用是需要识别整个汉字集的,所以要保证识别的整体的识别还是很困难的。 五,识别方法现在我们只想单纯地想对字符进行识别,那方法会有哪些呢?我列了一下可以采取的策略:
  • 使用谷歌开源OCR引擎Tesseract
  • 使用大公司的OCR开放平台(比如百度),使用他们的字符识别API
  • 传统方法做字符的特征提取,输入分类器,得出OCR模型
  • 暴力的字符模板匹配法
  • 大杀器:基于深度学习下的CNN字符识别
  •   上面提到的OCR方法都有其有点和缺点,也正如此,他们也有各自特别适合的应用场景。  首先说开源OCR引擎Tesseract。搞字符识别的童鞋应该都听说过Tesseract这个东西,这是谷歌维护的一个OCR引擎,它已经有一段相当悠久的历史了。Tesseract现在的版本已经支持识别很多种语言了,当然也包括汉字的识别。毕竟Tesseract是外国人搞得一个东西,所以在汉字识别的精度上还是不能摆上台面,不过还是自己去改善。但是Tesseract在阿拉伯数字和英文字母上的识别还是可以的,如果你要做的应用是要识别英文或者数字,不妨考虑一下使用Tesseract,毕竟拿来就能得到不错的结果。当然啦,要做到你想要的识别率,后期微调或者优化肯定要多下功夫的。  接下来说一下借用OCR开放平台做文字识别。现在很多大公司都开放了OCR的API供开发者调用,当然啦,小量调用是不收费的,但是大量调用就要收费了。最近我也在百度开放平台上调用OCR的API做一些识别的工作,说实话,在汉字的识别上,我们中国公司的技术还是顶尖的,在汉字识别的准确率上已经让人很满意了。比如我要识别一些文本,自己写个python脚本,调用开放平台的服务,返回的就是识别结果了。这种模式有啥不好的地方吗?首先是需要钱(当然每天小批量识别一下是不用钱的),第二是自己的控制程度不足,我们想要提升识别精度,我们不可以从OCR识别上做改进(毕竟别人的东西,我们改不了),能做只是预处理和后期矫正,能做的还是比较有限的。但是,如果自己不想花大量时间做OCR模型并且手上有钱的话,这种识别方法还是OK的。  上面提到的都是用的是别人的东西,那我们想从头自己做,咋办?  那就自己做吧!先谈一谈字符模板那匹配法。暴力的字符模板匹配法看起来很蠢,但是在一些应用上可能却很凑效。比如在对电表数字进行识别时,考虑到电表上的字体较少(可能就只有阿拉伯数字),而且字体很统一,清晰度也很高,所以识别难度不高。针对这种简单的识别场景,我们首先考虑的识别策略当然是最为简单和暴力的模板匹配法。我们首先定义出数字模板(0~9),然后用该模板滑动匹配电表上的字符,这种策略虽然简单但是相当有效。我们不需要左思右想去建模,训练模型,只需要识别前做好模板库就可以了。  模板匹配法只限于一些很简单的场景,但对于稍微复杂的场景,那就不太实用了。那此时我们可以采取OCR的一般方法,即特征设计、特征提取、分类得出结果的计算机视觉通用的技巧。在深度学习大放异彩之前,OCR的方法基本都是这种方法,其效果嘛,并不算特别好。在这里简单说一下这里常见的方法。第一步是特征设计和提取,特征设计是一件很烦人的事情,做过模式识别相关项目的童鞋也深有体会,我们现在识别的目标是字符,所以我们要为字符设计它独有的的特征,来为后面的特征分类做好准备。字符有啥特征呢?有结构特征,即字符的端点、交叉点、圈的个数、横线竖线条数等等,都是可以利用的字符特征。比如“品”字,它的特征就是它有3个圈,6条横线,6条竖线。除了结构特征,还有大量人工专门设计的字符特征,据说都能得到不错的效果。最后再将这些特征送入分类器(SVM)做分类,得出识别结果。这种方式最大的缺点就是,人们需要花费大量时间做特征的设计,这是一件相当费工夫的事情。通过人工设计的特征(例如HOG)来训练字符识别模型,此类单一的特征在字体变化,模糊或背景干扰时泛化能力迅速下降。而且过度依赖字符切分的结果,在字符扭曲、粘连、噪声干扰的情况下,切分的错误传播尤其突出。针对传统OCR解决方案的不足,学界业界纷纷拥抱基于深度学习的OCR。  这些年深度学习的出现,让OCR技术焕发第二春。现在OCR基本都用卷积神经网络来做了,而且识别率也是惊人的好,人们也不再需要花大量时间去设计字符特征了。在OCR系统中,人工神经网络主要充当特征提取器和分类器的功能,输入是字符图像,输出是识别结果,一气呵成。当然用深度学习做OCR并不是在每个方面都很优秀,因为神经网络的训练需要大量的训练数据,那么如果我们没有办法得到大量训练数据时,这种方法很可能就不奏效了。其次,神经网络的训练需要花费大量的时间,并且需要用到的硬件资源一般都比较多,这几个都是需要考虑的问题。 六,ocr的发展  在一些简单环境下OCR的准确度已经比较高了(比如电子文档),但是在一些复杂环境下的字符识别,在当今还没有人敢说自己能做的很好。现在大家都很少会把目光还放在如何对电子文档的文字识别该怎么进一步提高准确率了,因为他们把目光放在更有挑战性的领域。OCR传统方法在应对复杂图文场景的文字识别显得力不从心,越来越多人把精力都放在研究如何把文字在复杂场景读出来,并且读得准确作为研究课题,用学界术语来说,就是场景文本识别(文字检测+文字识别)。 七,ocr的用途  1) 办公自动化 工厂企业、公司及事业单位的日常办公用文件及资料等需要输入计算机存储检索。使用OCR,既比存储图像文件大大地节省存储量,又不需要专职录入人员,是减轻劳动量、节约资金、提高办公效率的最好措施。  2) 建立中文资料库 要大量输入各种文书、刊、报及文件,使用OCR可以缩短建库时间,减轻劳动强度,降低费用。  4) 图书馆、文献中心 用本系统自动录入图书有关信息,可建立书目数据库自动录入经典图书全文,将纸上文字转移到计算机内,便于保存、查找、检索,更大的好处可以提供给专家用计算机对书籍内容进行研究。  5) 机器翻译机器翻译的第一步是将全文输入计算机。利用OCR可以将机器自动翻译相匹配,实现高速自动翻译。  6) 个人使用 当您阅读资料时,可用OCR将您感兴趣的段落自动录入。特别是作家,利用本软件可以将一些书载历史资料或文献快速录入到计算机内。 

    相关内容推荐