电子说
Dropbox是Dropbox公司的在线存储服务,通过云计算实现互联网上的文件同步,用户可以存储并共享文件和文件夹。最近,研究人员在一次产品更新后,在用户的工作流中加入了人工智能模块,并加入了光学字符识别(OCR)技术。用户从这些变化中最明显的感受就是,他们可以在图像或PDF文件中直接搜索英文文本。
从图像中(包括PDF)自动识别文本是一项前景广阔的技术。在Dropbox中,用户总共存储了超过200亿个图像和PDF文件,其中10%—20%是文本照片,例如收据和白色背景的图像,这些都是目前图像中文本识别的新对象。另外还有25%的PDF文件是扫描版文本,同样可以用作自动文本识别。
从计算机视觉的角度来看,虽然对人类来说,看真实的文件和影印版的没有太大差别,但对计算机就大不一样了:文件可以通过搜索被检索,用户输入一些单词就可以从文件中找到目标对象。但在图像上,检索系统就无法工作了,因为它显示的只是一堆像素。通常,图像格式(例如JPEG、PNG、GIF等)都无法被检索,因为它们没有文本内容。只有基于文本的文件(例如TXT、DOCX或HTML)才能被检索。但PDF介于二者中间,因为它既能包含文本,也能包含图像。自动图像中的文本识别可以辨认这些文本,并将其中的数据进行分类。
所以现在,如果用户在任意格式下搜索英文文本,Dropbox都能显示出结果。这篇文章就讲解了研究人员的具体做法。
认识问题
首先,我们要对此任务有大致了解,尤其是要知道要处理的数据数量有多大,这不仅关系到所需成本,还有助于评估其有用性。具体需要了解的有以下三方面:
我们应该处理哪些类型的文件?
这些文件中有哪些含有可用光学字符识别技术处理的内容?
对于像PDF这样有多页的文件,我们需要处理几页才能让模型变得有效?
我们想处理的文件类型是目前不包含可检索文本内容的文件,这包括图像格式和不含有文字的PDF文档。但是,并不是所有的图像或PDF都含有文本,大多数只是一些照片或图示。所以,研究的关键是机器学习模型需要判断,给定的内容是否能用光学字符识别技术,也就是说其中是否含有能用OCR系统识别出的文本,例如不包含街景照片的文件的扫描件等等。我们训练的模型是一个卷积神经网络,输入图像并处理后,会将输出结果传递到二元决策中,看它是否含有文本内容。
最常见的图像格式是JPEG,我们发现大约有9%的JPEG图像可能含有文本。对于PDF,情况就比较复杂了,因为一份PDF文件可能含有多页,每页又可能有三种类型的内容:
已经经过嵌入或可检索的文本(69%)
有图片格式的文本,暂不可被检索(28%)
没有实质文本内容(3%)
我们主要关注第二种情况,因为这是我们研究的对象。总的来说,我们的目标用户拥有的JPEG数量是PDF的两倍,但是每个PDF文件平均有8页,而且PDF可能有更多的文本图片,所以总的来说,PDF含有的文本是JPEG的10倍。
文本页数
一旦确定了文件类型,我们就要决定以何种方式处理这些文件。有些PDF文件有很多页,处理起来很费时。幸运的是,对于长文本,即使只检索几页,也可以让文本更易于搜索。所以,我们统计了PDF采样中页数的分布情况,弄清楚每份文件最多可以对几页进行检索。最终结果显示,一半的PDF只有一页内容,大约90%的PDF在10页及以下。所以我们把上限定为10页,这意味着我们可以对将近90%的文档进行索引,而且运用了足够多的页数。
自动图像文本识别系统的组成
格式转换
当我们开始用OCR提取文本后,需要确定如何对PDF文件中的图像数据进行转换:我们可以对文件流中的像素图像目标分开提取,或者可以将整页PDF转换成光栅图像数据。两种方法都实践之后,我们选择了后者,因为我们已经已经有了稳定的大型PDF转换工具。使用这一系统的优点如下:
它可以自然地扩展到其他需要翻译或嵌有图片的文件格式中,例如PowerPoint、PostScript和其他支持的格式。
转换过程很自然地保留了文本符的顺序和页面中文本的位置,考虑了文件结构。
在我们此前的Chromium项目中,服务器部分的转换是基于PDFium完成的,这是一个由谷歌基于Chrome浏览器开源的项目。这一软件同样用于对全文的检测,判断文本是否只含有图片,可以帮助我们决定是否进行OCR处理。
一旦我们开始转换,每份文件中的内容都会同时进行处理,我们将每一页转化成2048×2048的正方形像素,保留了原始的长宽比。
文件图像分类
我们带有OCR技术的机器学习模型最初是为了Dropbox的文件扫描功能创建的,目的是为了了解用户最近是否上传了可以“将其转化成扫描格式”的图片。分类器在创建时,在图像特征上使用了一个线性分类器。模型在来源不同的数千张照片上训练,包括公共图像、私人图像以及Dropbox员工贡献出的图像。
最初,分类器偶尔会出现误报的情况(即模型认为图像中含有文本,但实际上没有),例如在含有白墙、天际线、开阔的水域等照片中。虽然人类能轻松分辨这些景观,但是对分类器来说它们看起来都是一样的:都有平整开阔的背景和水平线。经过每次迭代后,我们在训练集中添加“消极”标签,可以显著提高模型的分类精确度,从而高效地教会模型,虽然这些图像有很多类似文本文件的特征,但它们没有文本。
拐角检测
确定图像中文本的拐角并确定它的大致形状是另一个重要步骤。给定转角的坐标,图片中的文章可以用简单的几何转换进行修正。文本的拐角检测元组使用另一个ImageNet深度卷积网络创建的(DenseNet-121),其最顶层换成了一个回归因子,可以生成四个拐角坐标。有了坐标,就能轻易地将文本修正成易于检测的版本了。
token提取
OCR系统从拐角检测阶段获取修正过的图像作为输入,并生成token检测,包括针对tokens和文本的边界框。这些大致按token的顺序排列并添加到搜索索引中。如果有多个页面,每页上token的列表会连接在一起生成一个大表。
合并各元素
为了能在所有可以被索引的文件中进行紫铜图像文本识别,我们需要一个系统能对输入的文件执行添加和编辑,并开始相关处理。这就需要用到Cape框架,这是一种灵活大型的处理框架,可以进行事件流的分时间处理。我们在OCR处理中加入了新的Cape工作器,称为lambda,作为框架的一部分。
整个处理过程如下:
基于图像中是否有符合要求的JPEG、GIF或PDF,检查我们是否应该继续处理文本。
运行含有OCR技术的分了器,确定图像中是否有文本。
运行文本拐角检测器,对其进行修正。
用OCR引擎提取tokens。
向用户的搜索索引中添加token列表。
结语
自动图片文本辨认是计算机视觉和机器学习处理大型数据的重要案例。让图片中的文本可搜索只是深度了解文本结构和内容的第一步,有了这一成果,Dropbox可以帮助用户更好地管理他们的文件。
全部0条评论
快来发表一下你的评论吧 !