矢量图分类引擎转让专利

申请号 : CN201280067911.5

文献号 : CN104067293B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : M·舍舒姆M·拉斯科维克D·扎里克M·拉扎里维克A·奥布尔简

申请人 : 微软技术许可有限责任公司

摘要 :

在本文中描述并在附图中示出了矢量图分类引擎及相关联的用于对固定格式文档中的矢量图进行分类的方法。矢量图分类引擎定义用于对从固定格式文档中解析作为字体、文本、段落、表、以及页面效果(如阴影、边界、下划线、以及删除线)等的矢量图进行分类的流水线。没有被以其他方式分类的矢量图被指定为基本图。通过按所选次序对检测操作进行排序,最小化或消除了误分类。

权利要求 :

1.一种用于对从固定格式文档解析成流格式矢量图元素的数据中出现的矢量图进行分类的矢量图分类方法,所述方法包括以下步骤:将来自固定格式文档的矢量图路径和文本串提取成物理布局数据对象,每一所述矢量图路径包括所述矢量图路径在所述固定格式文档的页面上的物理位置,每一所述文本串包括所述文本串在所述固定格式文档的页面上的物理位置;

分析所述矢量图路径以将形成所选形状的一个或多个矢量图路径标识为矢量图,所述矢量图具有由所述矢量图路径所限定的物理位置;

分析所述文本串以将所述文本串中位于靠近所选形状的物理位置的物理位置处的至少一个文本串标识为附近文本串;以及基于所选形状的所述物理位置与所述附近文本串的所述物理位置之间的关系来分类所述矢量图,其中,分类所述矢量图的所述步骤还包括以下步骤:

基于所述矢量图与所述附近文本串之间的关系来将所述矢量图选择性地分类为文本串效果;

在尝试将所述矢量图分类为文本串效果的所述步骤之后,基于所述矢量图与所述附近文本串之间的关系来将先前未被分类的所述矢量图选择性地分类为字体效果;

在尝试将所述矢量图分类为字体效果的所述步骤之后,基于所述矢量图与所述附近文本串之间的关系来将先前未被分类的所述矢量图选择性地分类为表边界;

在尝试将所述矢量图分类为表边界的所述步骤之后,基于所述矢量图与所述附近文本串之间的关系来将先前未被分类的所述矢量图选择性地分类为段落效果;

在尝试将所述矢量图分类为段落效果的所述步骤之后,基于所述矢量图与所述附近文本串之间的关系来将先前未被分类的所述矢量图选择性地分类为页面效果;以及当所述矢量图在先前步骤中未被分类时,将先前未被分类的所述矢量图分类为基本图图像。

2.如权利要求1所述的矢量图分类方法,其特征在于,还包括在尝试将所述矢量图分类为文本串阴影的步骤之后将所选矢量图路径聚集成单个形状的步骤。

3.如权利要求2所述的矢量图分类方法,其特征在于,将所选矢量图路径聚集成单个形状的所述步骤包括以下步骤:选择与形状长度相对应的最小长度;以及

在所述矢量图路径的长度小于所述最小长度时,聚集具有相同垂直位置的多个所述矢量图路径。

4.如权利要求1所述的矢量图分类方法,其特征在于,还包括基于逻辑布局数据对象中的所述分类来存储信息的步骤。

5.如权利要求1所述的矢量图分类方法,其特征在于,还包括一旦所述矢量图已被分类就从所述物理布局数据对象移除所述矢量图的步骤。

6.如权利要求1所述的矢量图分类方法,其特征在于,所选形状是包含填充的矩形,并且所述矢量图分类方法还包括在所述附近文本串被包含在所述矢量图内时将所述矢量图分类为文本串阴影的步骤。

7.如权利要求6所述的矢量图分类方法,其特征在于,还包括在所述矢量图具有的高度与所述附近文本串的高度相比要高出所选阈值距离以上时延迟将所述矢量图分类为文本串阴影的步骤。

8.如权利要求1所述的矢量图分类方法,其特征在于,所选形状是不包含填充的矩形,并且所述矢量图分类方法还包括在所述附近文本串被包含在所述矢量图内时将所述矢量图分类为文本串边界的步骤。

9.如权利要求1所述的矢量图分类方法,其特征在于,所选形状是与所述附近文本串的方向平行行进的线,将所述矢量图选择性地分类为字体效果的所述步骤还包括以下步骤:在所述矢量图物理位置在下方且在距所述附近文本串物理位置的所选阈值距离内时将所述矢量图分类为下划线;以及在所选形状物理位置重叠且处于所述附近文本串高度的所选范围内时将所述矢量图分类为删除线。

10.如权利要求1所述的矢量图分类方法,其特征在于,还包括在所述矢量图与页面上的列中的文本重叠时将所述矢量图分类为表的步骤。

11.如权利要求10所述的矢量图分类方法,其特征在于,所述表是包含填充的单列表,并且所述矢量图分类方法还包括在所述矢量图不与页面上的列中的文本重叠时将所述矢量图分类为段落阴影的步骤。

12.如权利要求10所述的矢量图分类方法,其特征在于,所述表是不包含填充的单列表,并且所述矢量图分类方法还包括在所述矢量图不与页面上的列中的文本重叠时将所述矢量图分类为段落边界的步骤。

13.一种用于检测固定格式文档中出现的矢量图的系统,所述系统包括能用于执行以下操作的矢量图分类引擎应用:将来自固定格式文档的矢量图路径和文本串提取成物理布局数据对象,每一所述矢量图路径包括所述矢量图路径在所述固定格式文档的页面上的物理位置,每一所述文本串包括所述文本串在所述固定格式文档的页面上的物理位置;

分析所述矢量图路径以将形成所选形状的一个或多个矢量图路径标识为矢量图,所述矢量图具有由所述矢量图路径所限定的物理位置;

分析所述文本串以将所述文本串中位于靠近所选形状的物理位置的物理位置处的至少一个文本串标识为附近文本串;以及基于所述矢量图与所述附近文本串之间的关系来将所述矢量图选择性地分类为文本串效果;

在尝试将所述矢量图分类为文本串效果的所述步骤之后,基于所述矢量图与所述附近文本串之间的关系来将先前未被分类的所述矢量图选择性地分类为字体效果;

在尝试将所述矢量图分类为字体效果的所述步骤之后,基于所述矢量图与所述附近文本串之间的关系来将先前未被分类的所述矢量图选择性地分类为表边界;

在尝试将所述矢量图分类为表边界的所述步骤之后,基于所述矢量图与所述附近文本串之间的关系来将先前未被分类的所述矢量图选择性地分类为段落效果;

在尝试将所述矢量图分类为段落效果的所述步骤之后,基于所述矢量图与所述附近文本串之间的关系来将先前未被分类的所述矢量图选择性地分类为页面效果;以及当所述矢量图在先前操作中未被分类时,将先前未被分类的所述矢量图分类为基本图图像。

14.如权利要求13所述的系统,其特征在于,所述矢量图分类引擎应用能用于在将先前未被分类的所述矢量图选择性分类为字体效果之前将所选矢量图路径聚集成单个形状。

15.如权利要求13所述的系统,其特征在于,所述矢量图分类引擎应用能用于基于逻辑布局数据对象中的所述分类来存储信息。

16.如权利要求13所述的系统,其特征在于,所述矢量图分类引擎应用能用于在所述附近文本串被包含在所述矢量图内且所选形状是包含填充的矩形时将所述矢量图选择性地分类为文本串阴影。

17.如权利要求13所述的系统,其特征在于,所述矢量图分类引擎应用能用于在所述附近文本串被包含在所述矢量图内且所选形状是不包含填充的矩形时将先前未被分类的所述矢量图分类为文本串边界。

18.如权利要求13所述的系统,其特征在于,所述矢量图分类引擎应用能用于:在所述矢量图物理位置在下方且在距所述附近文本串物理位置的所选阈值距离内并且所选形状是与所述附近文本串的方向平行行进的线时将先前未被分类的所述矢量图选择性地分类为下划线;以及在所选形状物理位置重叠且处于所述附近文本串高度的所选范围内并且所选形状是与所述附近文本串的方向平行行进的线时将先前未被分类的所述矢量图选择性地分类为删除线。

19.一种检测并分类从固定格式文档解析出的数据中的矢量图的方法,所述方法包括以下步骤:将来自固定格式文档的矢量图路径和文本串提取成物理布局数据对象,每一所述矢量图路径包括所述矢量图路径在所述固定格式文档的页面上的物理位置,每一所述文本串包括所述文本串在所述固定格式文档的页面上的物理位置;

分析所述矢量图路径以标识形成所选形状的一个或多个矢量图路径,所选形状具有由所述矢量图路径所限定的物理位置;

分析所述文本串以将所述文本串中位于靠近所选形状的物理位置的物理位置处的至少一个文本串标识为附近文本串;

其中所选形状是包含填充的矩形,从而在所述附近文本串之一被包含在所选形状内时将所述矢量图分类为文本串阴影;

其中所选形状是线,在所选形状物理位置处于下方且在距所述附近文本串物理位置的所选阈值距离内时将所述矢量图分类为下划线;

其中所选形状是线,在所选形状物理位置重叠且在所述附近文本串高度的所选范围内时将所述矢量图分类为删除线;

在所述矢量图与页面上的列中的文本重叠时将所述矢量图分类为表边界;

其中表是包含填充的单列表,在所述矢量图不与页面上的列中的文本重叠时将所述矢量图分类为段落阴影;

其中所述表是不包含填充的单列表,在所述矢量图不与页面上的列中的文本重叠时将所述矢量图分类为段落边界;以及当所述矢量图在先前步骤中未被分类时,将先前未被分类的所述矢量图分类为基本图图像。

说明书 :

矢量图分类引擎

[0001] 背景
[0002] 流格式文档和固定格式文档被广泛使用并且具有不同的用途。流格式文档使用复杂逻辑格式化结构(如章节、段落、列以及表)来组织文档。结果,流格式文档提供了灵活性且易于修改,从而使得它们适用于涉及被频繁更新或受到显著编辑的文档的任务。相反,固定格式文档使用基本物理布局元素(如文本串、路径、以及图像)来组织文档以保留原本外观。固定格式文档提供一致且精确的格式布局,从而使得它们适用于涉及不被频繁或大量变更或其中需要统一性的文档的任务。这样的任务的示例包括文档归档、高质量再现、以及用于商业发布和打印的源文件。固定格式文档通常从流格式源文档中创建。固定格式文档还包括物理(即,纸质)文档的数字再现(例如,扫描和照片)。
[0003] 在其中需要编辑固定格式文档但流格式源文档不可用的情况下,固定格式文档可被转换成流格式文档。转换涉及解析该固定格式文档并将来自该固定格式文档的基本物理布局元素变换成流格式文档中使用的更复杂逻辑元素。面对复杂元素(如矢量图)的现有文档转换器诉诸于被设计成以输出文档的可流动性为代价保留布局(例如,文本框、行间距、以及字符间距)的视觉保真度的基本技术。结果是需要用户执行大量手动重构来获得真正有用的流格式文档的受限流格式文档。本发明正是对于这些和其他考虑事项而做出的。

发明内容

[0004] 提供以下发明内容以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
[0005] 由矢量图分类引擎执行的矢量图分类方法的一个实施例定义用于对从固定格式文档中解析的数据中的矢量图进行分类的流水线。在各实施例中,矢量图分类操作依赖于先前操作的输出。
[0006] 从文本串阴影检测开始,矢量图分类引擎使用直接从固定格式文档解析的路径信息来标识闭合路径和具有填充的路径。矢量图分类引擎分析所标识出的闭合路径和具有填充的路径并确定看起来形成矩形的那些路径,并且定位该矩形内包含的文本串(如果有的话)。包含填充且限定了文本串的边界的矩形被分类成文本串阴影。接着,矢量图分类引擎基于各单独线的各体路径的所选特性来将这些路径聚集成复合线。聚集这些相关路径允许矢量图分类引擎将它们作为单条线来分析。矢量图分类引擎将路径和定义与文本串在同一方向上行进的各线的路径集合视为下划线和删除线候选。矢量图分类引擎分析从固定格式文档中提取的文本以查看该线是否满足下划线或删除线的垂直和水平位置约束。在对与下划线或删除线相对应的矢量图元素进行了分类之后,矢量图分类引擎分析其余矢量图元素作为潜在文本串边界。包含文本串但不包含填充的矩形被认为是潜在文本串边界。
[0007] 对于表检测,矢量图分类引擎基于矢量图元素的邻近度和连接性来将它们编组成群集,并分析由各线形成的结构集。为了形成矩形表,矢量图分类引擎忽略交叉路径,因为其最可能表示图。段落阴影检测和段落边界检测依赖于表检测的结果。表检测是按以下方式执行的:检测带阴影的段落和带边界的段落作为单个单元表。矢量图分类引擎基于表在各列中的位置来确定是将单个单元表维持为一个表还是将它转换成带阴影的段落或带边界的段落。
[0008] 在矢量图分类方法的各实施例中,页边界检测和页阴影(即,色彩)检测是使用与用于文本串和/或段落阴影相同或相似的技术来完成的,但被应用于包含页面的全部或基本上全部区域的矢量图。
[0009] 不能被矢量图分类引擎以其他方式分类的任何矢量图元素被认为是基本图形元素。基于各个体路径的连接性或邻近度,基本图形元素被聚集在一起以形成流格式文档中的图片。在指示各个体矢量图元素的路径被连接或定位于少于由间隔距离阈值所表示的所选距离时,矢量图分类引擎将这些矢量图元素置于各编组中。
[0010] 一个或多个实施例的细节在附图和以下描述中阐明。通过阅读下面的具体实施例并参考相关联的附图,其他特征和优点将变得显而易见。要理解的是下面的具体实施例仅仅是说明性的,而不是对所要求保护的发明的限制。
[0011] 附图简述
[0012] 通过参考下面的具体实施方式、所附的权利要求书和附图,进一步的特征、各方面和益处将变得更好理解,其中各元素不会缩放以更清晰地示出细节,在若干视图中,相同的附图标记指示相同的元素,并且其中:
[0013] 图1是示出包括矢量图分类引擎的系统的一个实施例的框图;
[0014] 图2是示出文档处理器的一个实施例的操作流程的框图;
[0015] 图3A-3E示出能够被所述矢量图分类引擎进行分类的各矢量图元素;
[0016] 图4是矢量图分类引擎所执行的矢量图分类方法的一个实施例的流程图;
[0017] 图5示出执行矢量图分类引擎的一个实施例的平板计算设备的一个实施例;
[0018] 图6是可用其实践本发明的各实施例的计算设备的一个实施例的简化框图;
[0019] 图7A示出执行矢量图分类引擎的一个实施例的移动计算设备的一个实施例;
[0020] 图7B是可用其实践本发明的各实施例的移动计算设备的一个实施例的简化框图;以及
[0021] 图8是可在其中实施本发明的各实施例的分布式计算系统的简化框图。
[0022] 详细描述
[0023] 在本文中描述并在附图中示出了矢量图分类引擎及相关联的用于对固定格式文档中的矢量图进行分类的方法。矢量图分类引擎定义用于对从固定格式文档中解析作为字体、文本、段落、表、以及页面效果(如阴影、边界、下划线、以及删除线)等的矢量图进行分类的流水线。没有被以其他方式分类的矢量图被指定为基本图。通过按所选次序对分类操作进行排序,降低或消除了误分类。
[0024] 图1是合并了矢量图分类引擎100的系统。在所示实施例中,矢量图分类引擎100作为在计算设备104上执行的文档转换器102的一部分来操作。文档转换器102使用解析器110、文档处理器112以及串行化器114将固定格式文档106转换成流格式文档108。解析器
110从固定格式文档106中提取数据。从固定格式文档提取的数据被写入文档处理器112和串行化器114能访问的数据存储116。文档处理器112使用一个或多个检测和/或重构引擎(例如,本发明的矢量图分类引擎100)分析该数据并将其转换成可流动元素。最后,串行化器114将可流动元素写成可流动文档格式(例如,文字处理格式)。
[0025] 图2更详细地示出了文档处理器112的操作流程的一个实施例。文档处理器112包括可任选的光学字符识别(OCR)引擎202、布局分析引擎204以及语义分析引擎206。数据存储116中包含的数据包括物理布局对象208和逻辑布局对象210。在一些实施例中,物理布局对象208和逻辑布局对象210被分层安排在编组的类树阵列中(即,数据对象)。在各实施例中,页面是物理布局对象208的顶级编组,而章节是逻辑布局对象210的顶级编组。从固定格式文档106中提取的数据一般被存储为由固定格式文档106中的包含页面来组织的物理布局对象208。从固定格式文档获得的基本物理布局对象包括文本串、图像以及路径。文本串是页面内容流中的指定在显示固定格式文档时字符的绘制位置的文本元素。图像是储存在固定格式文档106中的光栅图像(即,图片)。路径描述了诸如用于构建矢量图的线、曲线(例如,三次贝塞尔曲线)以及文本轮廓等元素。
[0026] 处理开始的位置依赖于被解析的固定格式文档106的类型。从流格式源文档直接创建的原本固定格式文档106a包含基本物理布局元素中的一些或全部。一般而言,从原本固定格式文档106a提取的数据可供文档转换器立即使用;但在一些情况下,次要重新格式化或其他次要处理器被应用以组织或标准化该数据。相反,通过对物理文档进行数字成像(例如,扫描或拍照)而创建的基于图像的固定格式文档106b中的信息被存储作为不具有附加数据(即,没有文本串或路径)的一系列页面图像。在这种情况下,任选光学字符识别引擎202分析每一页面图像并创建对应的物理布局对象。一旦物理布局对象208可用,布局分析引擎204就确定固定格式文档的布局并用新信息来丰富数据存储(例如,添加、移除以及更新物理布局对象)。在布局分析完成之后,语义分析引擎206用从对物理布局对象和/或逻辑布局对象的分析中获得的语义信息来丰富数据存储。
[0027] 图3A-3E示出了固定格式文档106中出现的能够被所述矢量图分类引擎分类的各类矢量图的示例。图3A-3D示出了与固定格式文档106中的文本串相关联并对这些文本串进行修改的各种矢量图。图3A示出了表现为固定格式文档中的矢量图的字体和文本串效果的示例。所示出的文本包括以下文本串以及字体效果:阴影300a、下划线304a、双下划线304b、删除线302a、双删除线302b以及边界306a。图3B示出了具有边界的表的示例,该边界表现为固定格式文档106中的矢量图。图3C示出了段落阴影300b的示例,该段落阴影表现为固定格式文档中的矢量图。图3D示出了段落边界306b的示例,该段落边界表现为固定格式文档中的矢量图。图3E示出了表现为固定格式文档中的矢量图的基本图316的示例(即,不与文本串相关联的图像)。
[0028] 矢量图元素是通过路径来描述的。每一路径可包括一个或多个子路径。换言之,固定格式文档中每一矢量图元素是根据路径所描述的一个或多个线段来形成的。终止于它的起始点的矢量图元素具有闭合路径。闭合路径能够被填充。在各实施例中,允许一些容限,以使得终止于基本上靠近它的起始点的矢量图元素也将被认为是闭合路径。在一些实施例中,路径不必是闭合的也能包含填充。
[0029] 图4是示出矢量图分类引擎100所执行的矢量图分类方法400的一个实施例的流程图。由矢量图分类引擎执行的矢量图分类方法400基于路径所限定的形状的物理位置与对应文本串的物理位置之间的关系对从固定格式文档解析出的数据中的矢量图进行分类。在各实施例中,矢量图分类方法400中各操作的次序影响矢量图分类引擎100所产生的输出的准确度和质量。此外,在各实施例中,矢量图分类操作依赖于先前操作的输出。所示出的矢量图分类方法400的实施例从文本串阴影检测402开始。接着,矢量图分类引擎100将路径聚集404成路径集合。分析406线段集合来作为潜在文本效果,包括作为下划线304a和/或删除线302a。在下划线和删除线分析之后,矢量图分类引擎100寻找408文本串边界306a。在寻找文本串边界之后,表边界检测过程410寻找可能与表边界相对应的矢量图。表检测过程的输出被用于段落阴影检测和段落边界检测412。在一些实施例中,矢量图分类方法400以页面阴影检测和段落边界检测414结束。一旦所有语义信息已与矢量图进行了关联,尚未被先前步骤分类的任何矢量图就被分类为基本图并被聚集416。矢量图分类方法400尝试从基本图形成图片。基本图并不携带任何语义信息并且不与任何文本相关联。换言之,基本图表示文档中的图片。
[0030] 在阴影(以及突出显示)的分类402期间,矢量图分类引擎100寻找包含填充的闭合形状。一般而言,形状如果闭合则将只包含填充。在一个实施例中,矢量图分类引擎100寻找矩形,它们通常被用于将对象进行边界限定。在另一实施例中,矢量图分类引擎100寻找矩形以外的其他形状。在各实施例中,文本串阴影检测过程包括附加准则。在一些实施例中,矩形(即,阴影)高度必须小于所选阈值高度。例如,一些实施例不将其中矩形高度大于文本串高度的两倍、文本串宽度的两倍、或平均字符宽度的两倍的矢量图分类成文本串阴影,因为相对于文本串高度的大矩形尺寸增加了该矢量图表示段落阴影或表元素的可能性。在这种情况下,在矢量图分类方法400的稍后阶段期间,该矢量图元素将被再次考虑。对文本串阴影检测过程的这样的示例性约束不应当被认为是穷尽性的。在所示实施例中,阴影分类发生在路径聚集步骤之前,并且没有形成具有填充的闭合形状的(诸)路径被留给基本图聚集步骤。在另一实施例中,阴影分类步骤紧继路径聚集步骤之后发生。阴影周围的一些边界被构造为不具有填充的单个闭合形状,而其他则使用具有极小高度/宽度的矩形形成每一条边来构造。因此,在一些实施例中,路径聚集被用来标识由四个矩形形成的边界。在各实施例中,矢量图分类引擎依赖于空白检测以丢弃文本串阴影的候选。在空白检测期间,页面上只包含空白(即,不包含文本串、图像和/或路径)的各区域的边界框被标识为空白。形成具有填充(潜在突出显示/阴影)的框的所有路径和路径集合被检查它们是否与至少一个空白完全相交。与空白相交的所有路径被从作为阴影的进一步考虑中排除。
[0031] 接着,矢量图分类引擎100聚集404各个体路径。聚集这些相关路径允许矢量图分类引擎100将它们作为单条线来分析。多个路径所定义的线的示例包括但不限于虚线、点线、以及中断线。路径按以下方式被聚集。首先,页面上的平均文本串高度被确定并且相应地设置聚集的最大宽度(即,最大线宽度)。随后使用移动窗口来迭代地聚集具有适合该窗口的边界框的所有路径。对于每一迭代,窗口的宽度以所选增量从初始线宽度向最大线宽度增加。通过分别使用水平和垂直移动窗口,分别达到水平和垂直集合两者。矢量图分类引擎100分析所得到的集合,将这些集合拆分,其中两个路径分隔开超过最大间隔距离阈值的距离。例如,在一个实施例中,包含针对页面上同一行的几个单词的单独下划线的集合将被拆分。
[0032] 与阴影检测一样,矢量图分类引擎100的一些实施例使用在空白检测期间标识的空白来丢弃下划线和删除线候选。在下划线和删除线分类406期间,与至少一个空白完全相交的所有路径和路径集合被从作为潜在下划线或删除线的进一步考虑中排除。类似地,与垂直路径集合相交的任何水平集合也作为潜在下划线或删除线被丢弃,因为这样的水平集合有较高的概率是文本或表边界。保持为下划线或删除线候选的所有路径集合以及对应的文本串(即,在页面上其物理位置靠近该路径集合的物理位置的文本串)被提取成两个单独的阵列并按位置从顶至底且从左至右来排序。对于每一路径集合,矢量图分类引擎100定位其边界框与该路径集合的边界框相交的第一文本串。如果在该文本串的开头处存在该路径集合不包含的字符(即,边界框不相交),则该文本串被分成两个文本串并且该文本串的与该边界框相交的那一部分被保留。对于不同类型的线(包括但不限于下划线和删除线),这一分析被迭代地执行。已被不同地分类的矢量图(即,阴影)被跳过,而已被分类为同一分类中的元素的矢量图(即,另一下划线)被更新。例如,如果所聚集的路径被确定为是具有先前检测到的单条下划线的文本串的下划线,则该分类从下划线改变成双下划线。
[0033] 矢量图分类引擎100分析从固定格式文档中提取的文本串以查看该线是否满足下划线304或删除线302的垂直和水平位置约束。作为示例,被用作删除线的线应当在相对于文本高度的所选范围内的高度处与相关联的文本串相交,并且不应延伸出该文本串之外超过所选阈值长度。在一个实施例中,矢量图分类引擎100寻找与删除线相对应的位于文本高度的顶部五分之一与底部五分之一之间、且在该文本串的任一侧没有延伸太远的线。类似地,可能与下划线相对应的线的垂直位置被约束成在文本串的垂直位置下方。分类成下划线或删除线的线段从物理布局对象208移除,因为相关联文本串的语义信息将标识该文本作为加删除线或下划线的文本。在其中相关联的文本串的语义信息没有指示该文本作为加删除线或下划线的文本的情况下,矢量图分类引擎100的各实施例也更新该语义信息。
[0034] 在对与下划线或删除线相对应的矢量图元素进行了分类之后,矢量图分类引擎100分析408其余矢量图元素作为潜在文本串边界。取决于原本固定格式文档的生产者,文本串边界可以按多种不同的方式来表示。在一些原本固定格式文档中,文本串边界可由具有限定矩形的四个段的单个闭合路径来表示。在其他原本固定格式文档中,文本串边界可由具有共同限定一矩形的四个单独路径来表示。矢量图分类引擎100分析可用路径以标识限定矩形(或感兴趣的其他所选形状)的任何组合。在各实施例中,在线聚集过程期间,矢量图分类引擎100尝试构建矩形,并且在线聚集过程期间构建的任何矩形被用在文本串边界检测中。包含文本串但不包含填充的矩形被分类为潜在文本串边界306a。与阴影检测一样,矢量图分类引擎100的一些实施例使用在空白检测期间标识的空白来丢弃文本串边界候选。在一些实施例中,对于矩形相对于先前相关于文本串阴影检测所描述的文本串高度的大小而言,文本串边界检测服从相同或相似约束。
[0035] 对于表检测410,矢量图分类引擎100基于矢量图元素的邻近度和连接性来将它们编组成群集并分析由各线形成的结构集。矢量图分类引擎标识该文档内的表并提供附加区域信息以供矢量图分类引擎使用矢量图标识表边界。最终表将在表重构期间被重构。对于带边界的表和具有部分边界的表的检测在区域和段落检测之前执行。
[0036] 矢量图分类引擎100通过基于页面上的矢量图的连接性将矢量图编组成各群集来开始表检测。过小或不具有矩形周界的群集被丢弃。接着,按需提取并归并群集中的矢量图的垂直和水平段。矢量图分类引擎100尝试根据垂直和水平段创建列/行分隔符,并且还收集非分隔符元素(非直的,即非垂直也非水平)。在各实施例中,应用附加准则,包括但不限于检查特定模式的列/行分隔符的分布、检查非分隔符元素没有与分隔符相交、验证行高度不小于表中最小文本串的高度、并且检查大多数单元格不是空的。最后,矢量图分类引擎100根据列/行分隔符来创建各个体单元格并合并各单元格(如果原始表包含经合并的单元格的话)。在表及其单元格被检测之后,将在数据存储中创建表和单元格聚集节点。并且区域和段落检测将在那些节点上运行。
[0037] 在检测带边界的表之后,矢量图分类引擎100检测具有部分边界的表。提取水平和垂直图线(包括已填充矩形的边界)并按长度来编组。在一些实施例中,排除具有少于三条线的编组。文本串被置于线之间的间隙中。在该间隙内,通过连接性来编组文本串。跨整个表宽度只具有一个大文本群集的行被从表中排除。这将编组分解成更小编组。再次,具有少于两条线的任何编组被丢弃。最后,矢量图分类引擎100使用用于计入某种对齐偏差的阈值来验证各行之间的大多数文本与其他行中的文本对齐。
[0038] 段落阴影检测和段落边界检测412依赖于表检测的结果。表检测是按以下方式执行的:检测带阴影的段落和带边界的段落作为单个单元表。因此,所有单个单元表被作为可能表示段落边界和/或段落阴影的矢量图调查。矢量图分类引擎100基于表在列中的位置来确定是将单个单元表维持为一个表还是将它转换成带阴影的段落300b或带边界的段落306b。如果表具有与该列中的某一文本的垂直重叠,则它被分类为流外对象并将被保留为表。如果表不具有与任何列内容的垂直重叠,则它可被重构为具有边界/阴影的段落。如此,矢量图分类引擎100维护该表,或在一些实施例中,将该表重构为文本框。相反,列内的周围没有文本的单个单元表被重构成带阴影的段落(在该单个单元表包含填充时)或带边界的段落(在该单个单元表不包含填充时)。如果表被分类成段落边界/阴影,则与它的边界/单元格阴影有关的信息(边界框和色彩信息)被提取并且存储在单独的矢量中以供稍后使用。
来自表的所有内容被提取并返回给适当的物理布局节点(例如,页节点)并且将经受进一步分析(例如,线检测和段落检测)。当在流水线中稍后检测段落之后,边界/阴影数据与段落进行匹配并且边界/阴影属性相应地被分配。
[0039] 在矢量图分类方法400的各实施例中,页边界检测和页阴影(即,色彩)检测414是使用与用于文本串和/或段落阴影相同或相似的技术来完成的,但被应用于包含页面的全部或基本上全部的矢量图。页面色彩是应用于整个页面而非几个单词或段落的阴影。用于将矢量图分类为页面阴影的方法在很大程度上类似于用于将矢量图分类为文本串阴影的方法。页面色彩是使用覆盖该页面的单个已填充路径来构造的,并且被假定为具有页面上所有元素的最低渲染次序。因为不同的生产者可选择覆盖页面的不同区域(即,小于100%),所以矢量图分类引擎100使用与页面区域覆盖相对应的阈值来分析矢量图。如果矢量图分类引擎100标识了具有超过该阈值的页面覆盖区域的单个已填充路径,则该路径从物理布局对象中移除并且页面色彩属性可被储存在数据存储中。类似地,页面边界是应用于整个页面而非几个单词或段落的边界。再一次,用于将矢量图分类为页面边界的方法在很大程度上类似于用于将矢量图分类为文本串边界的方法。因为页面边界被构造为占据页面相当大区域以及大部分页面内容的矩形,所以矢量图分类引擎100使用阈值作为分类准则的一部分。
[0040] 在矢量图分类引擎100完成所有其他分类步骤之后,尚未被以其他方式分类的任何其余路径被分类416为基本图并且基于这些个体路径的连接性或邻近度被聚集成若干群集。在指示各个体矢量图元素的路径被连接或定位于少于由邻近度阈值所表示的所选距离时,矢量图分类引擎100将这些矢量图元素置于各编组中。在各实施例中,邻近度阈值取决于诸如页面上矢量图元素所覆盖的区域等因素而变化。在另一实施例中,邻近度阈值与路径的边界框的大小相反地变化。两个路径之间的距离被确定为连接它们相应边界框的最短直线的长度。如果两个路径具有交点,则它们之间的距离是零。在以此方式对路径进行了群集之后,固定格式文档的包含在该群集的边界框内的所有其余元素(即,文本串和图像)也被添加到该群集。每一编组随后将被串行化为包含其所有绘制对象的单独画布。
[0041] 本文描述的矢量图分类引擎100及相关联的矢量图分类方法400对于标识和分类固定格式文档中出现的不同矢量图以及将由矢量图分类引擎分类的任何矢量图变换成流格式元素而言是有用的。尽管已在结合在计算机上的操作系统上运行的应用程序执行的程序模块的一般上下文中描述本发明,但本领域的技术人员将认识到,本发明也可结合其他程序模块实现。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构和其他类型的结构。
[0042] 本文描述的实施例和功能可通过多种计算系统来操作,包括但不限于台式计算机系统、有线和无线计算系统、移动计算系统(如移动电话、上网本、图形输入板或平板型计算机、笔记本计算机、和膝上型计算机)、手持设备、多处理器系统、基于微处理器或可编程消费电子产品、小型计算机、以及大型计算机。图5示出了执行矢量图分类引擎100的实施例的示例性平板计算设备500。此外,本文所述的实施例和功能可在分布式系统上操作(如基于云的计算系统),其中应用功能、存储器、数据存储和检索、以及各种处理功能可在诸如因特网或内联网之类的分布式计算网络上彼此远程地操作。各种类型的用户界面和信息可经板载计算设备显示器或经与一个或多个计算设备相关联的远程显示单元被显示。例如,各种类型的用户界面和信息可在墙壁表面上被显示和交互,各种类型的用户界面和信息被投射在墙壁表面上。与可用于实施本发明的各实施例的许多计算系统的交互包括:键击输入、触摸屏输入、语音或其他音频输入、姿势输入(其中相关联的计算设备配备有用于捕捉和解释用于控制计算设备的功能的用户姿势的检测(如相机)功能)等。图6到8以及相关描述提供了其中可实施本发明的各实施例的各种操作环境的讨论。然而,关于图6到8所示出和讨论的设备和系统是用于示例的目的,而非对可被用于实施本文所述的本发明的各实施例的大量计算设备配置的限制。
[0043] 图6是示出可用来实施本发明的各实施例的计算设备600的示例物理组件(即硬件)的框图。下面描述的计算设备组件可适用于上述的计算设备。在基本配置中,计算设备600可包括至少一个处理单元602和系统存储器604。取决于计算设备的配置和类型,系统存储器604可包括,但不限于,易失性存储器(例如,随机存取存储器)、非易失性存储器(例如,只读存储器)、闪存、或这些存储器的任何组合。系统存储器604可包括操作系统605和适于运行诸如矢量图分类引擎100、解析器110、文档处理器112以及串行化器114等软件应用620的一个或多个程序模块606。操作系统605例如可适合于控制计算设备600的操作。此外,本发明的各实施例可以结合图形库、其他操作系统、或任何其他应用程序来实践,且不限于任何特定应用程序或系统。该基本配置在图6中由虚线608内的那些组件示出。计算设备600可具有附加特征或功能。例如,计算设备600还可包括附加数据存储设备(可移动和/或不可移动),诸如,例如磁盘、光盘或磁带。这些附加存储在图6中由可移动存储设备609和不可移动存储设备610示出。
[0044] 如上所述,可在系统存储器604中存储多个程序模块和数据文件。当在处理单元602上执行时,诸如矢量图分类引擎100、解析器110、文档处理器112以及串行化器114等程序模块606可以执行包括例如矢量图分类方法400的各阶段中的一个或多个阶段等过程。上述过程是一示例,且处理单元602可执行其他过程。根据本发明的实施例可使用的其他程序模块可包括电子邮件和联系人应用、字处理应用、电子表格应用、数据库应用、幻灯片演示应用、绘图或计算机辅助应用等。
[0045] 此外,本发明的各实施例可在包括分立电子元件的电路、包含逻辑门的封装或集成电子芯片、利用微处理器的电路、或在包含电子元件或微处理器的单个芯片上实现。例如,可以通过片上系统(SOC)来实施本发明的各实施例,其中,可以将图6中示出的每个或许多组件集成到单个集成电路上。这样的SOC设备可包括一个或多个处理单元、图形单元、通信单元、系统虚拟化单元以及各种应用功能,所有这些都被集成到(或“烧录到”)芯片基板上作为单个集成电路。当通过SOC操作时,在此所述的关于矢量图分类引擎100、解析器110、文档处理器112以及串行化器114的功能可以通过在单个集成电路(芯片)上与计算设备600的其它组件集成在一起的专用逻辑来操作。本发明的各实施例还可以使用能够执行诸如,例如,AND(与)、OR(或)和NOT(非)等逻辑运算的其他技术来实践,包括但不限于,机械、光学、流体和量子技术。另外,本发明的各实施例可以在通用计算机或任何其他电路或系统中实现。
[0046] 计算设备600也可具有一个或多个输入设备612,如键盘、鼠标、笔、语音输入设备、触摸输入设备等等。也可包括输出设备614,如显示器、扬声器、打印机等等。上述设备是示例且可以使用其他设备。计算设备600可包括允许与其他计算设备618进行通信的一个或多个通信连接616。合适的通信连接616的示例包括但不限于RF发射机、接收机和/或收发机电路;通用串行总线(USB)、并行或串行端口、以及适用于与适用的计算机可读介质一起使用的其他连接。
[0047] 例如,本发明的各实施方式可被实现为计算机进程(方法)、计算系统或诸如计算机程序产品或计算机可读介质等制品。计算机程序产品可以是计算机系统可读并编码了用于执行计算机进程的指令的计算机程序的计算机存储介质。
[0048] 如此处所使用的术语计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块、或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。系统存储器604、可移动存储设备609和不可移动存储设备610都是计算机存储介质(即,存储器存储)的示例。计算机存储介质可以包括,但不限于,RAM、ROM、电可擦除只读存储器(EEPROM)、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或可用于存储信息且可以由计算机设备600访问的任何其它介质。任何这样的计算机存储介质都可以是计算设备600的一部分。
[0049] 通信介质由诸如载波或其他传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其他数据来体现,并包括任何信息传递介质。术语“已调制数据信号”可以描述以对该信号中的信息进行编码的方式设定或者改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接等有线介质,以及诸如声学、射频(RF)、红外线和其他无线介质等无线介质。
[0050] 图7A和7B示出可用来实施本发明的各实施例的移动计算环境700,例如移动电话、智能电话、平板个人计算机、膝上型计算机等。参考图7A,示出了用于实现各实施例的示例性移动计算设备700。在一基本配置中,移动计算设备700是具有输入元件和输出元件两者的手持式计算机。移动计算设备700通常包括显示器705以及允许用户将信息输入到移动计算设备700中的一个或多个输入按钮710。移动计算设备705的显示器700也可充当输入设备(如触摸屏显示器)。如果包括,则可任选的侧输入元件715允许进一步的用户输入。侧输入元件715可以是旋转开关、按钮、或任何其他类型的手动输入元件。在替代实施例中,移动计算设备700可结合更多或更少的输入元件。例如,在某些实施例中,显示器705可以不是触摸屏。在又一替代实施例中,移动计算设备700是诸如蜂窝电话之类的便携式电话系统。移动计算设备700还可包括可选的键区735。可选的小键盘735可以是物理小键盘或者在触摸屏显示器上生成的“软”小键盘。在各种实施例中,输出元件包括用于示出图形用户界面(GUI)的显示器705、可视指示器720(如发光二极管)、和/或音频换能器725(如扬声器)。在某些实施例中,移动计算设备700结合振动换能器来向用户提供触觉反馈。在又一实施例中,移动计算设备700结合诸如音频输入(如传声器插孔)、音频输出(如耳机插孔)、以及视频输出(如HDMI端口)之类的输入和/或输出端口,用于将信号发送到外部设备或从外部设备接收信号。
[0051] 图7B是示出移动计算设备的一个实施例的架构的框图。即,移动计算设备700可结合系统(即架构)702以实现某些实施例。在一个实施例中,系统702被实现为能够运行一个或多个应用(如浏览器、电子邮件、日历、联系人管理器、消息收发客户机、游戏、以及媒体客户机/播放器)的“智能电话”。在某些实施例中,系统702被集成为计算设备,诸如集成的个人数字助理(PDA)和无线电话。
[0052] 一个或多个应用程序766可被加载到存储器762中并在操作系统764上或与操作系统764相关联地运行。应用程序的示例包括电话拨号程序、电子邮件程序、个人信息管理(PIM)程序、文字处理程序、电子表格程序、因特网浏览器程序、消息通信程序等等。系统702还包括存储器762内的非易失性存储区768。非易失性存储区768可被用于存储在系统702断电时不会丢失的持久信息。应用程序766可使用信息并将信息存储在非易失性存储区768中,如电子邮件应用使用的电子邮件或其他消息等。同步应用(未示出)也驻留于系统702上且被编程为与驻留在主机计算机上的对应的同步应用交互,以保持非易失性存储区768中存储的信息与主机计算机处存储的相应信息同步。如应理解的,其他应用可被加载到存储器762中并在移动计算设备700上运行,包括此处所述的矢量图分类引擎100、解析器110、文档处理器112以及串行化器114。
[0053] 系统702具有可被实现为一个或多个电池的电源770。电源770还可包括外部功率源,如补充电池或对电池充电的AC适配器或加电对接托架。
[0054] 系统702还可包括执行发射和接收无线电频率通信的功能的无线电772。无线电772通过通信运营商或服务供应商方便了系统702与“外部世界”之间的无线连接。来往无线电772的传输是在操作系统764的控制下进行的。换言之,无线电772接收的通信可通过操作系统764传播到应用程序766,反之亦然。
[0055] 无线电772允许系统702例如通过网络与其他计算设备通信。无线电772是通信介质的一个示例。通信介质通常由诸如载波或其他传输机制之类的已调制数据信号中的计算机可读指令、数据结构、程序模块、或其他数据来体现,并且包括任何信息传送介质。术语“已调制数据信号”是指使得以在信号中编码信息的方式来设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。如此处所使用的术语计算机可读介质包括存储介质和通信介质两者。
[0056] 系统702的该实施例使用可用于提供可视通知的可视指示器720和/或通过音频换能器725来产生音频通知的音频接口774来提供通知。在所示实施例中,可视指示器720是发光二极管(LED),而音频换能器725是扬声器。这些设备可直接耦合到电源770,使得当被激活时,即使为了节省电池功率而可能关闭处理器760和其他组件,它们也保留一段由通知机制指示的保持通电时间。LED可被编程为无限地保持通电,直到用户采取动作指示该设备的通电状态。音频接口774用于向用户提供听觉信号并从用户接收听觉信号。例如,除了被耦合到音频换能器725之外,音频接口774还可被耦合到话筒来接收可听输入,例如便于电话通话。根据各本发明的各实施例,话筒也可充当音频传感器来便于对通知的控制,如下文将描述的。系统702可进一步包括允许板载相机730的操作来记录静止图像、视频流等的视频接口776。
[0057] 实现系统700的移动计算设备702可具有附加特征或功能。例如,移动计算设备700还可包括附加数据存储设备(可移动和/或不可移动),例如磁盘、光盘或磁带。这种附加存储设备在图7B中用非易失性存储区768示出。计算机存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块、或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。
[0058] 移动计算设备700生成或捕捉的且经系统702存储的数据/信息可如上所述本地存储在移动计算设备700上,或数据可被存储在可由设备通过无线电772或通过移动计算设备700和与移动计算设备700相关联的一分开的计算设备之间的有线连接访问的任何数量的存储介质上,该计算设备举例而言是诸如因特网之类的分布式计算网络中的服务器计算机。如应理解的,此类数据/信息可经移动计算设备700、经无线电772或经分布式计算网络来被访问。类似地,这些数据/信息可根据已知的数据/信息传送和存储手段来容易地在计算设备之间传送以供存储和使用,这些手段包括电子邮件和协作数据/信息共享系统。
[0059] 图8示出了用于向一个或多个客户机设备提供矢量图分类引擎100、解析器110、文档处理器112以及串行化器114的系统的体系结构的一个实施例。矢量图分类引擎100、解析器110、文档处理器112以及串行化器114所开发的、与其交互的或与其相关联地编辑的内容可被存储在不同的通信信道或其他存储类型中。例如,各种文档可使用目录服务822、web门户824、邮箱服务826、即时消息存储828或社交网站830来存储。如本文所描述的,矢量图分类引擎100、解析器110、文档处理器112以及串行化器114可以使用这些类型的系统中的任一个或类似物来启用数据利用。服务器820可以向客户机提供矢量图分类引擎100、解析器110、文档处理器112以及串行化器114。作为一个示例,服务器820可以是通过web提供矢量图分类引擎100、解析器110、文档处理器112以及串行化器114的web服务器。服务器820可以通过网络815在web上向客户机提供矢量图分类引擎100、解析器110、文档处理器112以及串行化器114。作为示例,客户机计算设备818可被实现为计算设备600并被具体化在个人计算机818a、平板计算设备818b和/或移动计算设备818c(如智能电话)中。客户机计算设备818的这些实施例中的任一个可从存储816获得内容。在各种实施例中,用于在构成本发明的计算设备之间进行通信的网络的类型包括但不限于互联网、内联网、广域网(WAN)、局域网(LAN)、以及虚拟专用网络(VPN)。在本申请中,网络包括企业网络和客户机计算设备用来访问企业网络的网络(即客户机网络)。在一个实施例中,客户机网络是企业网络的一部分。在另一实施例中,客户机网络是通过外部可用的接入点(如网关、远程访问协议、或公共或专用互联网地址)来访问企业网络的一分开的网络。
[0060] 本申请中提供的一个或多个实施例的描述和说明不旨在以任何方式限制或约束如权利要求所要求保护的发明范围。本申请中提供的实施例、示例和细节被认为是足以传达所有权,且使得他人能够制作并使用所要求保护的发明的最佳模式。所要求保护的发明不应被理解为限制于本申请中所提供的任何实施例、示例或细节。不管是以组合的方式还是分开的方式示出和描述,各种特征(结构上的和方法逻辑上的)旨在被选择性地包括或忽略,以产生具有特定的特征集的实施例。在被提供本申请的描述和说明的情况下,本领域的技术人员能够想象到落在所要求保护的发明的更宽泛方面以及本申请中所具体化的一般发明概念的精神内的替代实施例并不背离该更宽泛的范围。