【转】腾讯OCR—自动识别技术,探寻文字真实的容颜
文字,一种信息记录的图像符号,千年来承载了太多的人类文明印记。OCR,一种自动解读这种图像符号的技术,一直以来都备受关注。尤其在信息时代的今天,数字图像纷繁复杂,如何便捷高效的获取其中的文字信息,更有着重要的时代意义。作为模式识别领域最为经典的研究热点之一,OCR经历了长时间的发展变化,各种新技术、新方法、新应用层出不穷。
OCR技术的过去和现在:
OCR(光学字符识别技术),是通过扫描仪或相机等光学输入设备获取纸张上的文字、图片信息,利用各种模式识别算法对文字的形态结构进行分析,形成相应的字符特征描述,通过合适的字符匹配方法将图像中的文字转换成文本格式。
基于汉字的识别最早见于20世纪60年代,采用基于模版匹配的方法,由IBM公司的Casey和Nagy于1966年提出。此后日本多家企业如:三洋、松下、理光、富士等也相继研发了汉字印刷体识别系统。我们国家开始于70年代,当时主要专注与算法和方案的探索,后在90年代,中文OCR技术慢慢由实验室走商业市场,开始在实际中应用。当前国内该技术做得比较好的有:文通、汉王,丹青(台湾公司)、蒙括(台湾公司),商业化应用比较好的软件有:清华OCR、 尚书七号、中文紫光OCR等,国外的公司当然属ABBYY和IRIS。这些技术和产品的衍生、改进都标志这人们对OCR技术需求的不断变化。
在OCR字符识别领域中,还有一个著名开源项目:Tesseract,它是一个OCR引擎,在1985年~1995年间由惠普实验室开发,之后被Google接管并做了大量优化,最终作为开源项目发布在Google Project上得以全新问世。在tesseract-ocr 3.0及其随后的版本发布中,也陆续支持了中文汉字的识别。
我们的OCR技术简介:
在研发印刷体字符识别技术之初,我们曾考虑基于Google的开源框架Tesseract下针对实际业务需求进行优化,但是大量的测试显示,Tesseract由于自身的算法的限制,其对于中文字符的识别并不能达到我们的预期。为此,自主研发OCR系统的想法便浮出水面,而这必将是一个艰苦长期的过程,一旦选择便义无反顾,只能风雨兼程,我们始终相信上帝对每一个人都是公平的,在不断付出汗水和努力的同时,也必将收获更丰盛的果实。
下面简单介绍下我们研发的OCR系统,其整体框架如(图一)所示:

(图一) OCR整体
OCR系统的五大部分:
1.图像预处理:该阶段主要针对输入的图像进行局部自适应去噪、字符区域检测,以及对字符尺寸进行预估;
2.字符分割:中文字符与英文等字符最大的不同点在于,许多中文字符是由多个文字块组成(如:“明”由“日”和“月”构成;“林”由“木”和“木”构成等),对于这类字符是很难有统一的方法进行完整的分割。事实上,在我们的OCR框架中,对于字符分割阶段的分割准确率要求是比较宽松的,其最本质的原因在于我们采用了“分割→匹配→分割”这样一种动态调整的识别策略,自动通过不同组合来寻找到最优的分割字符;
3.特征描述:作为OCR最核心的步骤,在特征描述阶段,我们做了大量的实验,最终选定了“多尺度+多特征融合+降维”的特征描述方法。对于每一个字符,我们会对其进行中心重定位以及光照归一化处理,同时提取其不同尺度下(5种尺度)的多类特征(梯度投影特征+HOG+模板)并进行融合,对于提取出来的高维特征采用一定的降维处理,最终得到字符的低维特征表达。特征描述的完整过程可以见(图二)所示:

(图二) 特征描述
4.字符匹配:综合考量欧氏距离、余弦距离、QDA、L1范数等多种相似度计算方法的优劣,采用余弦距离作为最终的相似度计算方法。
5. 结果输出:对于很多相似字符(如W-w, Z-z, 0-O-o,1-l等),单纯依靠特征匹配是很难区分开来的,所以在这个步骤中,必须要加入相应的语言模型进行校正。同时对于某些特殊应用,需要对于结果做结构化分析和输出。
在模型训练过程中,我们主要针对4800个高频汉字、英文、数字,以及常用的60个符号,总的训练样本数约12万个印刷体字符。实测结果显示,该OCR有较高的准确率:中文识别准确率达99.6%,数字、符号、英文等字符的识别率达99.2%,均已达到国际先进水平。(图三、图四)为实际测试的结果:

(图三) 待识别字符图像

(图四) 识别结果
未来我们OCR技术要走的路:
在OCR领域,目前所做的仅仅只是一个开始,我们还将沿着当前的道路继续一往无前的走下去。基于当前OCR框架,不仅仅可以做印刷体字符的识别,实际上我们可以做的更多:
1.手写体字符识别;
2.自然场景文字检测与识别;
3.特殊场景下(如银行票据、商业文档、身份证明等)格式化文本的自动版面分析与字符识别。
在未来OCR研究的道路上,我们不仅要关注技术性能的提升,更需要结合用户、产品以及市场需求来定位我们的研究方向,寻求更多技术的交叉融合,为OCR开辟更广阔的技术和市场空间。
【转】腾讯OCR—自动识别技术,探寻文字真实的容颜的更多相关文章
- 腾讯Ocr文字识别
简述 上篇文章记录了百度Ocr的两种模式用法,接下来这篇文章开始记录腾讯Ocr的使用方法.腾讯Ocr的通用印刷体识别模式使用比较简单,直接接入sdk即可,但手写体的识别相对比较麻烦,需要自己post表 ...
- 汽车Vin码识别——可以嵌入到手机里的新OCR识别技术
汽车Vin码识别(车架号识别),顾名思义,就是识别汽车的Vin码(车架号),汽车Vin码识别(车架号识别)利用的是OCR识别技术,支持视频流获取图像,自动触发识别,另外汽车Vin码 ...
- 发票OCR识别/票据OCR自动识别
对于一些大的集团公司来说,分散式财务管理模式管理效率不高,管理成本相对较高,同时也制约了集团企业发展战略的实施,因而需要建设财务共享中心.一个企业想建造财务共享中心,面临的难题是大量的数据采集和信息处 ...
- AI时代的OCR识别技术浅析
人工智能这个词可谓是耳熟能详,近几年人工智能热潮再次席卷而来,引起轰动的要数google的AlphaGo,相继打败了围棋界的韩国选手李世石以及世界冠军柯洁,见证了人工智能发展的里程碑式的变革,人工智能 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 18—Photo OCR 应用实例:图片文字识别
Lecture 18—Photo OCR 应用实例:图片文字识别 18.1 问题描述和流程图 Problem Description and Pipeline 图像文字识别需要如下步骤: 1.文字侦测 ...
- 腾讯QQ会员技术团队:人人都可以做深度学习应用:入门篇(下)
四.经典入门demo:识别手写数字(MNIST) 常规的编程入门有"Hello world"程序,而深度学习的入门程序则是MNIST,一个识别28*28像素的图片中的手写数字的程序 ...
- 腾讯QQ会员技术团队:以手机QQ会员H5加速为例,为你揭开sonic技术内幕
目前移动端越多越多的网页开始H5化,一方面可以减少安装包体积,另一方面也方便运营.但是相对于原生界面而言,H5的慢速问题一定被大家所诟病,针对这个问题,目前手Q存在几种方案,最常见的便是离线包方案,但 ...
- Android技术分享-文字转语音并朗读
Android技术分享-文字转语音并朗读 最近在做一个项目,其中有一个功能是需要将文本转换成语音并播放出来.下面我将我的做法分享一下. 非常令人开心的是,Android系统目前已经集成了TTS,提供了 ...
- 干货满满,腾讯云+社区技术沙龙 Kafka Meetup 深圳站圆满结束
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 云+导语:4月22日,由腾讯云和 Kafka 社区主办.开源中国协办的腾讯云+社区技术沙龙 Kafka Meetup 深圳站在腾讯大厦举行, ...
随机推荐
- ECMAScript位操作符
在ECMAScript中,有少数的几个操作符可以对二进制位进行直接操作,这几个操作符本身直接对二进制进行操作,所有它们的本身是非常效率的,学习这一段有助于以后的优化以及理解. ECMAScript中采 ...
- InkPicture 控件使用_01
private System.ComponentModel.Container components = null; private Microsoft.Ink.InkOverlay m_InkOv ...
- H5小内容(四)
SVG 基本内容 SVG并不属于HTML5专有内容 HTML5提供有关SVG原生的内容 在HTML5出现之前,就有SVG内容 SVG,简单来说就是矢量图 ...
- CentOS 6.4 使用YUM 安装MySQL5.5
1.首先需要下载Yum的支持包: http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm 2.下载完成后将Yum库导入到你的 ...
- LOL(英雄联盟)系统鼠标速度锁定工具
最近习惯将系统的鼠标速度降低, 而提高鼠标硬件DPI来提升移动准确度, 但是LOL的客户端每次启动进入游戏后就会还原系统鼠标的移动速度, 我把情况反应给腾讯,没想到他们一点都不重视, 建议我只改游戏里 ...
- ARM GCC 内嵌汇编手册
转自:http://blogold.chinaunix.net/u2/69404/showart_1922655.html ARM GCC 内嵌(inline)汇编手册 关于这篇文档这篇文章是本人为方 ...
- C#网页自动登录和提交POST信息的多种方法(转)
网页自动登录和提交POST信息的核心就是分析网页的源代码(HTML),在C#中,可以用来提取网页HTML的组件比较多,常用的用WebBrowser.WebClient.HttpWebRequest这三 ...
- hdu 4454 Stealing a Cake
简单的计算几何: 可以把0-2*pi分成几千份,然后找出最小的: 也可以用三分: #include<cstdio> #include<cmath> #include<al ...
- SPRING IN ACTION 第4版笔记-第二章WIRING BEANS-007-以set方法注入<property>\p-namespace\util-space
一.注入简单属性 package soundsystem.properties; import org.springframework.beans.factory.annotation.Autowir ...
- OA学习笔记-007-Dao层设计
一. User, UserDao save(User user), update(), delete(), find(), ...Role, RoleDao save(Role role), upda ...