今天非常高兴在这里作一个文字识别的技术现状、目前存在的问题及挑战、学术研究和商业应用机遇,以及未来技术发展趋势的报告。
首先简要谈一下人工智能。去年3月份,美国纽约时报采访了硅谷一些IT的大神们,请他们谈一下未来IT领域当中什么方向是潜在的爆发点,当时很多专家都不约而同谈到一个观点,就是人工智能很可能是未来IT领域的大事件。其实不仅仅是在工业界,在计算机学术界乃至整个科学界,人工智能过去几年都是非常热门的研究话题,举例来说,在过去两年,与深度学习和机器学习相关的文章已经有5次上了Nature或Science的封面文章。难怪科普期刊Scientific American去年撰文说,人工智能的春天来到了。在国内,我们发现人工智能的春天似乎也正在悄悄来临,从中国工程院、科技部以及政府,都在积极推动人工智能学术研究及其在产业中的应用发展。
视觉感知是人工智能当中特别重要的问题之一,为什么这么说?我们人类对世界的感知大约80%是通过眼睛获取的。计算机视觉使得人工智能看懂世界,典型的技术包括图像识别、人脸识别、视频监控等,这里还想强调一点,文字识别也是非常重要的计算机视觉技术。因为文字是我们感知这个世界最重要的手段,无论是从小学习知识到长大进行交流,衣食住行都离不开文字。在生活当中,文字也无处不在,离开了文字有时候我们很难理解整个社会和世界。文字的重要性还表现在很多方面,它是人类文明的标志,是信息交流的途径,学习知识的重要渠道,是记录历史、思想、文化的载体,文字和文明、文化还有很大的关系,现在很多人用惯了拼音输入法,很可能造成提笔忘字等现象,这是挺遗憾的一件事情。
有一句话这样说,一图胜千言,但是有时候如果图片当中没有文字,我们很难理解这幅图片的含义。如图所示,左边图是我在法国一家酒店里拍的照片,右边图是一幅漫画,大家能够猜到它们表达什么意思吗?特别是左边这个图,当时坑了我很久。右边图中配文是“心中的天气是晴是雨全在自己”。没有图片我们可能表达起来不是那么生动,但是没有文字,有时可能无法理解其含义。比如这幅图,没有文字说明很难猜其表达什么含义,其实它的配文是来自《金刚经》中的一句话“一切法无我,得成于忍”,讲凡事包容、忍耐的道理。再举个例子,这是个一个商品、商品包装的里面的正反面,大家第一眼看到可能想到这一定是药品或保健品,但是实际上它是一个食品——葡萄干。所以,我这里想表达一个观点就是,文字的重要性是非常大的,某种意义上来讲,如果给你一张图,若图上有文字,80%以上的情况下,图上的文字信息是最重要、最有信息量的。所以文字识别这个问题是一个重要的人工智能问题,从这个角度看,文字识别的问题如果没有解决好,人工智能就不能称得上真正的、完整的人工智能。
下面我讲讲文字识别的一些技术的现状。文字识别包括文档分析和文字识别两个部分。从文字获取的途径可以把文字识别分成OCR和在线文字识别两大类。OCR是处理及识别通过光学设备,如数码相机、扫描仪获取的文档图像,在线文字识别是处理通过数字笔、触摸屏捕捉的文字数据。两类问题都有很多不同的研究子问题及应用场景,今天由于时间关系,我重点给大家介绍一些领域的现状,以及它面临的挑战和机遇。
文字识别的研究发展历史已经有很多年了,最早可以追溯到上世纪20年代,上世纪八九十年代是文字识别的重要发展时期,那时在图书报刊数字化、邮政编码及自动分拣、表单名片识别等都产生了非常广泛的应用。2000年以后,随着智能手机和移动互联网的兴起,基于拍照和OCR,以及手写识别及Ink理解受到了更多的关注。
我先讲一下手写文字识别,这个技术现在在手机、平板电脑作为输入法相当普及,基本上是标准的配置功能之一;另外一方面就是OCR的手写文字识别,如快递单识别理解等这样的问题,也是有很多的应用场景。传统的手写文字识别的一般框架包括预处理、特征提取、分类器设计三个主要模块,每个模块技术都需要仔细设计,比如图像归一化做的不好就会明显影响识别性能。
自从有了深度学习技术之后,文字识别这个事情变得简单多了,我们现在利用相关的深度学习技术如CNN、DNN、RNN,可以把这个问题解决的很好。当然我后面也会讲,只是简单直接应用CNN等技术或许可以达到还不错的结果,但是你要达到State-of-the-art的结果,还是需要一定的领域知识来辅助你解决这个问题。我这里还想说一下,其实文字识别一直是深度学习一个主要的应用方向,深度学习如CNN/LSTM等模型在文字识别的应用有很长的历史。上世纪90年代,深度学习的先驱者如Y. Lecun,很早就用神经网络来解决文字识别;1998年,Lecun和Bengio合作设计了LeNet5解决了手写数字识别问题,这是他们在贝尔实验室做的Demo;后来包括微软研究院的学者在2003年就用CNN将MNIST的错误率做到了很低的程度(0.4%)。
刚才说了,简单利用深度学习解决手写汉字这些比较难的问题,效果并不是很理想,所以过去两年国内有很多研究团队,针对手写文字的识别做了大量的工作,包括我们团队做的一些针对汉字识别的DropSample训练新方法,还有一些领域知识与CNN的结合,如英国华威大学的Graham 教授、我们团队在CNN中引入了路径积分特征图这样的领域知识层,可以进一步提升文字识别的准确率。大家知道,在2012年CVPR的文章,直接用CNN网络来解决手写汉字识别还干不过传统的Bayes方法,但是现在我们可以把CNN/RNN等用的更好,远超过传统的方法。这是中科院自动化所做的最新的工作,他们也发现加上一些领域知识,结合CNN的方法,可以把文字识别这个问题解决的更好。这个是中科院自动化所基于循环神经网络,针对文字识别提出的一种Sequential Dropout 方法,使得模型的鲁棒性做的更好,这个结果是目前文字识别中识别率最高的。
有了深度学习的技术和我们的领域知识相结合以后,单字符的文字识别技术现在基本上解决的差不多了,这是联机汉字识别在公开评测集的技术指标现状,深度学习的结果基本上都超过了人眼识别的水平。
手写识别另外一个有用的方向就是在签名识别,或者笔迹鉴定领域。今天国内外特别是国外大超市购物刷卡时,收银系统已经在开始使用数字化的签名,但目前这个签名还没有办法做自动的识别和鉴别。实际上,签名是一种有效的身份认证技术。传统的方法需要做很多特征的分析、提取,以及相似度的判断等。过去几年我们发现,利用深度学习也可以有效地解决笔迹识别的问题。笔迹识别比较大的挑战就是训练样本很少、很难获取。我们针对这个问题提出了一些数据增广方法,并结合领域知识,目前基本上可以把这个问题解决的很好。这是中科院自动化所做的另外一种方法,是利用RNN做的,结果做的特别好。在书写者识别的一个数据集上,识别率已经做的很高了。但是值得指出的是,这个数据还是很小,只有不到200人的规模,实际应用能否经受得起考验,这可能还有很长的路要走。
签名的数据很难获取,因为涉及到个人的隐私,这两年也有一些学者开始用深度学习的方法解决,而且解决的还不错,这是一种基于深度学习的度量学习方法。另外,我们团队做了一种基于RNN深度网络的方法,看一下在SVC数据库,基于深度学习的方法也可以做到很高的准确度。这里还想给大家一个信息就是,一般而言,深度学习需要大数据才能进行有效训练,但在签名识别这个小数据问题上,我们发现通过数据增广等方法,深度学习也大有用武之地。
文本行识别是文字识别中另外一个传统的问题,包括有基于分割和无分割的方法。这个是传统的基于过切分的中文脱机无手写文本行识别的一些典型方法,后面的两种用了CNN分类器;这是基于HMM无切分的识别;这是法国的学者在2015年用多方向LSTM的方法来解决中文脱机手写文本行识别,但是当时的性能还干不过传统的方法。当然现在富士通及中科院的团队把传统方法结合CNN以后,现在的性能有了明显的提升。
在联机文本行识别方面的思路和脱机识别一样,这两年也有很多关于深度学习方面的文章应用,这里举个例子,比如哈尔滨工业大学的研究团队提出的多层LSTM识别模型,模型虽然很简单,但是效果非常好。这是我们团队做的工作,基于全卷积回归神经网络中文联机手写文本行识别,可能是目前公开文献报道中最好的结果,我们也把这个系统实现到云端了。和三年的技术相比,目前手写文本行这个技术有了显著进步。但在篇幅级的识别,比如给你一段文档,特别是图文混排版面复杂情况,这个问题还比较难。虽然已经有很多学者在关注这个问题,但是这个问题还没有得到彻底的解决,其中一个方面的原因是目前学术界还缺乏足够多的真实数据。这是一种利用Attention机制和MDLSTM来解决篇幅级的文字识别方法,可以进行整行检测,然后再做识别。不过这个法文数据集的挑战还不是特别大,就算这样的数据集目前也没有做的特别好,针对手写中文的篇幅级研究报道还不多见,所以还有很多研究的机会。
对于手写识别研究还有另外一个重要的问题,就是要解决移动端实时应用问题,因为手机的输入法必须实时处理。这方面我们做了一些相关的工作,我们利用了矩阵分解和自动裁剪网络链接的方法,在3 755类汉字识别的问题上,可以把模型大小压缩到2 MB左右,速度在CPU上可以做到9.7毫秒每个字,可以达到实用化的程度。在联机汉字识别方面,我们采用相关的技术也可以把CNN模型大小压到很低,一般的文字识别CNN网络模型大小有几十MB甚至上百MB,但是我们可以压到0.6 MB左右而精度损失不到1%。基于这样的技术,我们实现了面向移动端和网络端的识别引擎,手机端的SCUT gPen手写输入法的Demo,网络端(www.deephcr.net)识别精度还不错,只要你写得基本上像一个汉字,一般都可以识别出来。我们移动端的识别引擎目前已经授权给搜狗公司使用,搜狗Android端及iOS端的手写输入法目前采用了我们提供的识别引擎。
虽然手写输入法已经广泛普及,但是无约束手写识别尚未完成解决,例如国家标准GB/T18790—2010联机手写汉字识别系统技术要求与测试规程、要求手写输入软件及设备需支持识别正负45度的手写样本。这个问题消费者可能没有觉得很重要,所以目前的许多产品都还没有解决好。在整个文本行识别当中,我们测了五种主流的输入法(在iPad装了相关的手写输入法软件),有个别的输入法根本不让你进行整行无约束的书写,有一些能够识别一些字,但整体而言识别率还不高,所以这个问题离真正解决还有一定的距离。识别得最好的是我们实验室做的网络版的Demo。另外有一些输入法,对生僻字以及常见符号的识别支持也并不太好,最常用的一些符号如“√”的识别都不支持。
第二个方面给大家介绍一下场景文字的检测与识别,这是一个典型的OCR问题,在计算机视觉里近年来广泛受关注的一个研究问题,包括场景图像中文字的检测、文字识别、端到端的解决技术等。场景文字检测面临的挑战,包括不同的语种、任意的长度、形状、颜色、复杂背景、复杂字体、光照、噪声干扰等。
传统的文字检测方法主要包括基于滑窗的方法和基于连通域分析的方法。其优点是速度快,无需大量的数据来进行模型训练,缺点是识别性能不够高。近年来,基于深度学习的物体检测方法,如Faster R-CNN/YOLO/SSD/R-FCN等为解决此问题提供了全新的解决思路。虽然文字检测可以看成是物体检测的特殊例子,简单地把深度学习中的物体检测框架做检测是达不到理想效果的。这是四篇最新的文章给出的对比实验结果,可以看到如果直接用Faster R-CNN、SSD甚至干不过传统的方法。但是如果针对文本检测的问题做一些特殊的设计,检测效果就会得到明显提升。
去年CVPR提出的一种基于FCN深度网络来进行场景文字检测的方法,是华中科技大学学者发表的文章,这个方法比之前的结构有了很大提升。另外,他们今年在AAAI上还提出了一种基于深度学习的TextBox文本检测方法,针对文字检测设计了特别的Text-box layer。我们实验室今年CVPR 2017录用论文的一个工作基于SSD框架,提出使用任意四边形回归的方法检测场景文本,主要的优点是可以把文字检测更加紧密一点,方便做后面的识别,在ICDAR2015年挑战4的检测效果当时在公开文献报道中是最好的。但是今年我们发现有很多相关工作,把这个准确度快速提升上来了。比如,华中科技大学研究团队也基于SSD的框架,采用多个小框回归及合并的方法,在ICDAR 2014挑战4上F Measure做到了75%;复旦大学的研究团队提出了一种RRPN及旋转矩形RoI Pooling的方法,做到77%;Face++今年CVPR的论文基于PVANet,设计了多种不同的损失函数来进行多方向文字检测,做到了80.72%;中科院自动化的研究团队所做的工作,也是利用类似FCN等深度学习的方面,ICDAR 2014挑战4上做到了81%左右,可能是目前公开文献报道中最好的结果。
这里我给出了ICDAR场景文字检测及识别竞赛(ICDAR 2015)官网上最新公开的一些结果。我们看到挑战2的问题基本上得到了不错的解决,挑战4最近两年之内检测识别性能指标也有很大提升。当然值得提一下这两个数据集的规模其实都还很小,图片数量都不到1 000张。
文字和检测识别另外一个问题就是端到端的解决方案,牛津大学VGG实验室第一次提出了结合传统方法和CNN,做端到端可学习的解决方案。针对场景文字当中的识别,华中科技大学研究团队提出一个很好的框架叫做CRNN,一个端到端的解决框架,他们的网站可以下载到相关的实现代码。
场景文字还有很多有趣的应用,比如可以辅助我们进行图像的搜索和图像的分类,这篇华中科技大学研究人员的论文,通过文本检测识别输出的编码Word Vector,以及图像识别网络GoogleNet的输出编码Vision Vector,两者拼在一起再进行最后做图像的细粒度分类。举个例子,这里是一大堆的瓶子,里面有可口可乐、有饮料瓶,还有啤酒瓶等,上面有文字信息可以辅助进行图像的细粒度分类,极大地提升了它的分类准确度。
第三个方面我讲一下文字识别的市场机遇,这方面包括图像搜索引擎、自动驾驶、金融保险、AR、智能机器人、教育医疗等很多领域都有很多应用。比如OCR技术,在移动办公、远程开户、智慧物流都有应用。像名片识别这种比较成熟的技术,我们一般联系人信息输入名字和电话号码就完了,利用这个技术就可以把联系人的各种信息包括单位、职务、email地址等完整保留起来。场景文字检测还可以用来做辅助图像搜索,包括以词搜图,更好地提升图像搜索的用户体验。另外一个典型应用是AR眼镜实现实时场景包括街景的文字翻译,这里还可以产生很多创新应用,例如可以让盲人看懂世界、盲人看大片等。笔计算与数字墨水也是一个有很大潜在应用的市场,今天的触摸屏及数字笔的书写体验和传统纸张书写体验还有很大差距,如果这方面的硬件技术做的好,Ink识别理解及搜索都会有很大的各种不同应用场景。另外还需说一下,其实国内从事文字识别及应用的企业也有不少,同学们如果从事这个领域的研究,将来找工作完全不用担心,这里我列举了一些,比如国际国内专门做文字识别及应用的公司,还有很多大公司像微软、Google、三星、B AT等也有文字识别的部门或小组。用“早稻”这个企业搜索网站以关键词OCR进行搜索,可以找到100多家相关的企业。
下面举一些成功应用的例子,比如车牌识别这个比较成熟的技术。据搜狐网上的一篇文章报道,2014年国内车牌识别收费系统的市场容量大于37亿,随着车辆的普及,以及智慧小区、智能停车场的大量普及,而且未来5年以年均17.4%的复合增长率在发展,早稻网中输入“车牌识别”,也可以找到几百家公司。所以我们看到OCR相关技术已经逐渐走入了市场。
在证照识别、银行卡的识别方面也有很多成功应用,例如腾讯的微信添加银行卡功能就利用OCR来自动识别录入银行卡号码;三星做了一个Samsung Pay,拍一下卡就可以支付了,不需要刷卡机。别的应用,包括还有金融保险集团的应用,这是我从商汤公司,以及上海合合信息公司网站上的截图,可以看到他们利用OCR技术和金融保险行业的业务进行结合应用。
某些特定垂直领域的OCR技术解决差不多了,但是对于更通用的场景文字OCR解决怎么样了?我们测试了百度、微软、谷歌几个主流的OCR云端识别情况,在背景比较简单,字体比较规范情况下,即使字有倾斜,这几个引擎识别的还不错,虽然偶尔有一点小错误,其中这个是做的最好的,我就不说是哪家公司了。但如果字体不是很常见,例如这是一个茶馆的标牌,我们看到不少文字都识别错了。图像分辨率不太高情况下,几个引擎识别率都不高。这个图中的文字按理说很规范,但八个字就错了三个字。另外,图像中有手写体文字的情况下,基本上大多无法进行正确检测及识别。当然可能这几家公司的最新技术还没有在他们目前的OCR云系统中体现出来,但我们看到场景文字OCR这个问题目前还远远没有得到彻底解决。
文字识别还有很多困难和挑战,比如金融票据的识别、签名识别(主要是我们缺乏足够的数据)、混合手写印刷体的邮政快递表单识别、书法古迹文献识别,以及教育文档(例如中小学生的手写作业及试卷),特别是数理化文档的OCR,这些问题都有很大挑战性,就更不要说医疗行业中医生写的处方、病历等手写体字符了。另外还有来自网络的一些奇特或者艺术化的文字图像,人虽然能轻松辨识,但这样的图像文字识别,未来5年都不一定能得到解决。
最后,我谈一点个人对此领域未来技术发展的趋势和展望。要解决我刚才讲的OCR和文字识别的技术,第一方面就是要有更好的技术理论和方法,除了目前的深度学习之外,我们也期待别的新理论方法的出现,还有无监督学习、弱标注学习、One-shot Learning方法等。第二方面是自主学习、长效学习或终身学习这些新方法,都可能会为我们解决大数据无标注或弱标注情况下的OCR问题提供新的解决思路。第三方面,现在人工智能还处于刚刚起步的阶段,离强人工智能还很远。在OCR领域我们今天也只能做一些简单的识别感知问题,从感知到智能理解再到高层认知,还有很长的路要走。第四方面,对文字识别仍然需要更好的端到端的解决方案,例如对场景文字OCR,我们需要把检测和识别做成完全可学习的端到端的解决方法;图文混排复杂版面的手写及印刷体OCR,也可尝试进行版面分析加自动分割加识别的端到端可学习方法的研究探讨。第五方面,从应用角度看,我认为垂直行业有非常多的行业应用机会,例如金融、保险、自动驾驶、医疗、教育、机器人、AR、智慧城市等。第六方面,手写体的识别,尤其是复杂版面下的手写体OCR,这个问题远远没有得到解决。第七个方面,刚才我讲了数据,高质量的数据和大数据是非常关键的,我们现在很难获取一些特定领域的文档数据,例如金融文字图像数据、快递表单文档图像数据等,这需要学术界和工业界一起合作解决相关问题。未来有没有更多更好的数据,非常值得我们期待。
最后谈一个观点,我们今天针对一些典型的模式识别问题的解决方案还做得不够智能及通用,针对不同的视觉识别问题都需要设计不同的识别模型,例如人脸有人脸识别引擎、图像有图像识别引擎、文字有文字识别引擎,这相当于我们今天的人工智能其实是需要很多只不同的眼睛来解决不同的视觉感知问题。将来有没有可能设计一个通用的解决方案,哪怕针对文字OCR这个特定领域的问题,把手写、场景文字、表单、名片、证照等用一个通用的统一方案来解决这些问题,无论从理论和技术上都值得研究,这样我们文字识别这个眼睛才真正称得上是人工智能领域中的一只智慧的眼睛。
(本报告根据速记整理)