OCR:慧眼读世界

作者:微软亚洲研究院首席研究员 霍强
把手机摄像头对准菜单上的法语菜名,屏幕上实时显示出翻译好的中文菜名;将全世界图书馆的藏书转化为电子书;街景车游走于大街小巷,拍摄街景的同时也从街景图像中自动提取文字标识,让地图信息更丰富更准确……这些场景的背后有一个共同的关键技术——OCR
(Optical Character Recognition),光学字符识别。
OCR让电脑“读”懂世界
鼠标发明人Doug Engelbart曾经针对人工智能的简称AI提出了另一个理念——Augmented
Intelligence,增强智能。在他看来,人已经足够聪明,我们无需再去复制人类,而是可以从更加实用的角度,将人类的智能进一步延伸,让机器去增强人的智能。
智能眼镜就是这样的产品,去超市的时候带上一副,看到心仪商品上的文字,自动搜索出详细信息:生产商情况、在不同电商平台的价格等等。让智能眼镜读懂文字的正是OCR技术。OCR本质上是利用光学设备去捕获图像,今天可以是手机、照相机,未来可以是智能眼镜、可穿戴设备等,就像人的眼睛一样,只要有文字,就去认出来。
我们也可以设想一下OCR在未来工作中的应用场景:每次工作会议后,无需再把白板上的讨论内容捎写下来,然后群发邮件布置任务,只要将白板用手机等智能设备拍照留存,系统便能自动识别并分检出相关人员的后续工作,并将待办事项自动存放到各自的电子日历中。
事实上,我们已经向这个场景迈进了一步,微软前不久推出的Office
Lens应用,已经可以通过视觉计算技术自动对图像进行清理并把它保存到OneNote,而OneNote中基于云端的OCR技术将对图片进行文字识别,随后你就可以拥有一个可编辑、可搜索的数字文件,为上述未来应用场景打下基础。微软几年前推出的手机应用Translator,除了支持文本和语音翻译外,还能用手机拍摄不同语言的菜单或指示牌,翻译结果立即浮现于原文之上。Office
Lens和Translator这两款产品的OCR核心组件就来自微软亚洲研究院的语音团队。

从平板扫描仪到前端手机后端云
回过头来看,OCR技术经历了怎样的发展历程呢?早在20世纪50年代,IBM就开始利用OCR技术实现各类文档的数字化,早期的OCR设备庞大而复杂,只能处理干净背景下的某种印刷字体。20世纪80年代,平板扫描仪的诞生让OCR进入商用阶段,设备更为轻便灵巧,可以处理的字体数量也增多,但对文字的背景要求仍然很高,需要很好的成像质量。
平板扫描仪对印刷体文本的识别率在20世纪90年代就已经达到99%以上,可谓OCR应用迎来的第一个高潮。当时最著名事件是谷歌数字图书馆,谷歌还申请了图书扫描专利,实现了批量化的高速扫描。在此期间,手写字体的识别也在并行发展,被广泛用于邮件分拣、支票分类、手写表格数字化等领域。
这样的成就一度让大家误以为OCR技术已经登峰造极,但从21世纪开始,准确地说是自从2004年300万像素的智能手机诞生之日起,这一情况发生了根本改变。越来越多的人随手拿起手机拍摄所看到的事物和场景,而此类自然场景中的文字识别难度远远高于平板扫描仪时期,即便是印刷字体,也只能达到60%-70%的识别率,更别说手写体了。学术界因此将自然场景中的文字识别作为全新的课题来对待。
与此同时,云计算、大数据以及通讯网络的快速发展,实现了智能手机的24小时在线,前端采用手机摄像头进行文字捕捉,后端可以对其进行实时分析和处理,二者的结合让OCR的未来应用模式充满想象。因此,对OCR的研究再度成为学术界的焦点,无论是前端识别技术还是后端的关联应用领域,都有着无限可能。微软亚洲研究院的研究员们,也非常有幸加入了这个大潮。
自然场景下的文字识别获突破性进展
自然场景图像中的文字识别大大难于扫描仪识别,因为它具有极大的多样性和明显的不确定性。如文字中包含多种语言,每种语言含有多种字母,每个字母又可以有不同的大小、字体、颜色、亮度、对比度等;文字通常以文本行的形式存在,但文本行可能有不同的排列和对齐方式,横向、竖向、弯曲都有可能;因拍摄图像的随意性,图像中的文字区域还可能会产生变形(透视、变换)、残缺、模糊断裂等现象。

自然场景图片中的文字多样性示例
与传统 OCR
技术中的扫描文档图像相比,自然场景图像的背景更为复杂。如文字可能不是写在平面上而是在曲面上;文字区域附近有非常复杂的纹理和噪声;图像中的非文字区域有着跟文字区域非常相似的纹理,比如窗户、树叶、栅栏、砖墙等。这些复杂背景一方面会进一步增大文字的多样性,另外一方面会极大增加误检率。
由于自然场景下的文字识别难度大,微软亚洲研究院团队对相关技术和算法进行了针对性的优化和创新,从三个方面对文本监测技术进行了改进,并取得突破。通常,OCR识别的步骤可以分为两步:首先是文本检测(Text
detection),将文字从图片中提取出来;然后,对文本进行识别(Recognition),此次的突破主要是在文本检测环节的三个子阶段。
阶段①:采用新算法,检测更高效
一个字母或文字通常可以分为若干个连通区域,如o就拥有一个连通区域,i则拥有两个连通区域,文本检测首先要从图像中切割出可能存在的文字,即候选连通区域,然后再对其进行文字/非文字分类。
在确定候选连通区域阶段,微软亚洲研究院团队在传统检测方法ER(Extremal
Region,极值区域)和MSER(Maximally Stable Extremal
Region,最大平稳极值区域)基础之上创新地采用了对比极值区域CER(Contrasting Extremal
Region),CER是跟周围的背景有一定对比度的极值区域,这个对比度至少要强到能够被人眼感知到,在低对比度的图像上比MSER效果更好,而且获得的候选连通区域数量远小于ER,候选范围大大缩小,提高了算法的效率。
阶段②:过滤噪音,检测更准确
为了提高所获得的候选连通区域的质量,微软亚洲研究院团队决定增加一个算法环节去增强CER。尤其在图像模糊、分辨率低或者噪声较多时,提取出来的CER有可能会含有冗余像素或者噪声,这些冗余像素或者噪声的存在会使得后面的文字/非文字分类问题变得更为复杂。
采用Munsell颜色空间颜色去增强CER可算是此次算法优化的另一个创新之举,利用颜色信息尽可能滤除CER中的冗余像素或者噪声,从而得到Color-enhanced
CER。该颜色空间具有视觉感知一致性,而且对光照敏感,更接近人眼对颜色的判断。

受噪声影响的CER示例
在实际操作中,并不是每个CER都需要通过颜色信息来增强,因为有很多CER本身颜色均匀,没有噪声,尤其是在图片质量很高的时候。因此,在对CER进行增强操作之前我们会先判断该CER是否需要增强操作,以减少不必要的计算复杂度。

对CER的颜色增强效果示例

算法提取出来的候选连通区域结果示例
阶段③:创新分类,检测更高质
当获得了高质量的候选连通区域,就需要对其中的字符进行分辨,确定其是否为文字或非文字,微软亚洲研究院团队创新地提出了一套基于浅层神经网络的文字/非文字分类算法,比以往的算法更加有效。
该算法根据文字本身的特性采用分治策略将原始问题空间划分为5个子空间,每个子空间对应一类文字样本,分别命名为Long类,Thin类,Fill类,Square-large类和
Square-small类(如下图所示),于是每个候选连通区域被划分到这5类中的一种。

文字类问题空间划分示例
在每个子空间中,该算法会分别训练一个相应的浅层神经网络,作为该子空间的文字/非文字分类器,我们可以将该神经网络看作是一个黑盒子,在经过大量学习之后,它便能较为准确的将文字与非文字分类。
每次分类动作包括两个阶段——预剪枝(Pre-pruning)阶段和验证(Verification)阶段。在预剪枝阶段,分类器的任务是尽可能滤除非文字候选连通区域;在验证阶段,则通过引入更多信息来消除孤立连通区域的歧义性,从而进一步滤除有歧义的非文字候选连通区域。
2014年8月在瑞典首都斯德哥尔摩举办的国际模式识别大会(ICPR)上,微软亚洲研究院团队将自然场景下的文字识别精度提升到92.12%,召回率提升至92.32%。此前业界的识别精度是80%,而召回率只有67%,多年来这些数字每年增长只有1%-2%,微软的技术突破让OCR的发展缩短了近十年。
人类需求牵引科技发展走到今天,智慧的无限延伸决定了世界的无限潜能。10年前的简单通讯工具手机如今已成为智慧生活的伴侣,曾经只被扫描仪应用的OCR技术业已焕发新机。随着研究工作的不断突破和智能设备的推陈出新,OCR的应用也将充满无限机会、无限可能性。
推荐阅读
欢迎关注
微软亚洲研究院官方网站:http://www.msra.cn
微软亚洲研究院人人网主页:http://page.renren.com/600674137
微软亚洲研究院微博:http://t.sina.com.cn/msra
微软亚洲研究院微信:搜索“微软研究院“或扫描下方二维码:

OCR:慧眼读世界的更多相关文章
- 如果简单的记录,就可以为这个世界创造更多的财富,那么还有什么理由不去写博客呢? — 读<<黑客与画家>> 有感
上一次博文发文时间是2016.1.15,7个月已经过去了.最近读了一本<>的书,对我触动挺大的!里面有关于技术趋势的探讨,也有关于人生和财富的思考! 开始更新iOS122的文章的初衷是,聚 ...
- 旷视6号员工范浩强:高二开始实习,“兼职”读姚班,25岁在CVPR斩获第四个世界第一...
初来乍到,这个人说话容易让人觉得"狂". "我们将比赛结果提交上去,果不其然,是第一名的成绩."当他说出这句话的时候,表情没有一丝波澜,仿佛一切顺理成章. 他说 ...
- [一起读源码]走进C#并发队列ConcurrentQueue的内部世界
决定从这篇文章开始,开一个读源码系列,不限制平台语言或工具,任何自己感兴趣的都会写.前几天碰到一个小问题又读了一遍ConcurrentQueue的源码,那就拿C#中比较常用的并发队列Concurren ...
- [一起读源码]走进C#并发队列ConcurrentQueue的内部世界 — .NET Core篇
在上一篇<走进C#并发队列ConcurrentQueue的内部世界>中解析了Framework下的ConcurrentQueue实现原理,经过抛砖引玉,得到了一众大佬的指点,找到了.NET ...
- 读<css世界>笔记之img标签
Web开发时,为了节约带宽以及提高加载性能,首屏以下的图片就会通过滚屏加载的方式异步加载,然后这个即将被异步加载的图片为了布局稳健,体验良好,往往会使用一张透明的图片占位,如: <img src ...
- 如何精准实现OCR文字识别?
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由云计算基础发表于云+社区专栏 前言 2018年3月27日腾讯云云+社区联合腾讯云智能图像团队共同在客户群举办了腾讯云OCR文字识别-- ...
- 腾讯 AI Lab 计算机视觉中心人脸 & OCR团队近期成果介绍(3)
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:周景超 在上一期中介绍了我们团队部分已公开的国际领先的研究成果,近期我们有些新的成果和大家进一步分享. 1 人脸进展 人脸是最重要的视觉 ...
- Java菜鸟浅谈OCR
什么是OCR? 粗暴点说就是图片文本识别!正规点的说法就是:(Optical Character Recognition,光学电子识别) 最近公司开展新项目,考虑到实名认证这方面,然后还要上传身份证正 ...
- 我的2018:OCR、实习和秋招
真的是光阴似箭,好像昨天还沉浸在考研成功的喜悦,今天却要即将步入2019年,即将硕士毕业.老规矩,还是在每一年的最后一天总结今年以及展望明年.回首2018,经历的东西特别多,视野也开阔了不少,可以说, ...
随机推荐
- 01 语言基础+高级:1-8 File类与IO流_day09【字节流、字符流】
day09[字节流.字符流] 主要内容 IO流 字节流 字符流 异常处理 Properties 教学目标 能够说出IO流的分类和功能 能够使用字节输出流写出数据到文件 能够使用字节输入流读取数据到程序 ...
- Evaluation metrics for classification
Accuracy/Error rate ACC = (TP+TN)/(P+N) ERR = (FP+FN)/(P+N) = 1-ACC Confusion matrix Precision/Recal ...
- Chrome使用频率最高的快捷键
标签 ctrl+T 打开新标签 ——— ctrl+W 关闭标签 ctrl+shift+T 打开上衣个被关闭的标签 ctrl+tab 标签向右切换 —— ctrl+shift+tab 标签向左切换 c ...
- ZJNU 1223 - 素数距离——高级
因为最大可以达到int极限 明显直接筛选不可能完成 所以从其因子入手 因为任何不是素数的数都有除了1与其自身之外的因子 因此,我们筛出2^(31/2)≍46350之内的所有素数,以其作为因子再将题目给 ...
- 项目在eclipse中正常,在idea中报错
一直用的eclipse,但公司很多员工用的都是idea,便想试试,谁知导入maven项目后一直报错,最后发现编译后target中没有dao中的xml文件,导致监听器加载资源时一直报错, 最后经过反复查 ...
- BSC交流
深圳建筑科学研究院 IT规划咨询项目 1999-2000年 平衡计分卡项目少 绩效管理 财务指标 考核 定量 考核国企 客户 产品 双重 市场 路径.方向的设计战略地图的工具,思维地图是怎么, 战略解 ...
- Mongo学习记录
引子 最近做项目利用mongo记录的日志做数据统计.着了非关系型数据库的迷,于是乎买了本<MongoDB实战>学习了一番.记录一下学习笔记,共享之. 准备 我在自己的Linux服务器上装了 ...
- vmware ubuntu 解决 宿主机与虚拟机互相ping不通,虚拟机无线上网的解决办法
首先 virtual network editor 设为桥接 选定无线网卡 虚拟机的网络设置 选桥接. 其次, 如果不能互相ping通,注意主机是否关闭了防火墙,是否退掉了360(没验证), 还要注意 ...
- CentOS下图形界面安装_Orcaale 11g
1.安装说明 使用到的工具: 软件名称 版本 软件包 系统 centOS6.8 CentOS-6.8-x86_64-bin-DVD1.iso 数据库 ORACLE11g linux.x64_11gR2 ...
- ASP.NET防止连续多次点击提交按钮 导致页面重复提交
PS:实际使用中发现,第①种方法在火狐浏览中有时候有问题.第2种方法,在各个浏览器中都没问题 近做项目遇到了这样的情况: 公司网络比平常慢了不少,在点击保存按钮提交页面后需等待挺长的一段时间,忍不住手 ...