一种基于OFD文档的表格提取方法与流程

文档序号:17161201发布日期:2019-03-20 00:44阅读:2666来源:国知局
一种基于OFD文档的表格提取方法与流程

本发明涉及电子文档格式的处理技术,特别涉及一种基于ofd文档的表格提取方法。



背景技术:

版式文档格式,是将文字、图形、图像等多种数字内容对象按照一定规则进行版面固化呈现的一种格式。

ofd(openfixedlayoutdocument)文档是由国家自主研发,独立于软件、硬件、操作系统、输出设备的版式文档格式。

随着国家对ofd版式文档的需求及应用推广力度的增加,现在各行各业对ofd文档的使用也越来越频繁。目前ofd文档,除了文档内容的阅读以外,还有文档批注、编辑书签、加盖电子印章、编辑附件等功能,而在政府和机关单位对于ofd文档的批示及盖章操作尤为频繁。

由于ofd文档的定义及格式限制,其设计目的是为了阅读和打印文档,而与阅读器的交互就比较弱,其中就包含图像、表格、文字等内容的提取。目前的阅读器都只能相对轻松的对ofd文档中的文字内容进行提取,而对提取图像或表格,总是存在效率低、精确度低或无法实现等问题。目前虽然可以通过屏幕截取的方式提取表格,但是屏幕截取方式因涉及到硬件设备dpi,图片易失真,屏幕截取出的表格内容不可选取也不能进行编辑。



技术实现要素:

本发明为了解决上述技术问题,提供一种基于ofd文档的表格提取方法,以ofd文档标准规范为核心,通过对ofd文档内容的解析,在ofd文档中实现了提取表格功能,能使ofd文档与其它应用程序的交互性更强,提升ofd文档的应用性,同时也可以提升工作效率。

本发明采用以下技术方案实现上述目的。一种基于ofd文档的表格提取方法,包括应用接口模块、数据管理模块、数据提取模块和数据解析模块,其特征在于,

所述应用接口模块:提供通俗易懂的接口函数,给上层应用调用;同时,负责调用数据管理模块用以实现接口函数;

所述数据管理模块:用于对数据提取模块和数据解析模块的调度,同时用于汇总由数据提取模块和数据解析模块的数据内容,并将数据交付给应用接口模块使用;

所述数据提取模块:对ofd文档进行解析,从ofd文档中提取所有数据,并将其按表格数据对象和非表格数据对象分类,并将分类数据统一交给数据管理模块进行统一分配管理;

所述数据解析模块:从数据管理模块中获取到表格数据对象,通过表格边框查找算法,将所有表格数据对象进行统一归类处理,得出表格对象,并将表格对象组成表格列表,并将表格列表交给数据管理模块。

进一步,所述表格数据:为构成表格的基本元素,可理解为线段,其包含有线段的起始点x轴坐标和y轴坐标,终止点x轴坐标和y轴坐标,以及是否为虚线的数据内容。

进一步,所述表格数据对象:为一种表格数据集合。

进一步,所述非表格数据对象:为文字、图片和批注的非线段数据内容。

进一步,所述表格对象:为由表格对象数据构成的完整表格。

进一步,所述表格列表:为由表格对象组成的列表。

进一步,所述数据解析模块的具体流程如下:

1)遍历所有表格数据对象,取出其顶点的x轴坐标与y轴坐标均为最小值的表格数据对象;若存在两个或两个以上相同的数据对象,则取第一个查找到的表格数据对象,并将此表格数据对象定义为基线;

2)将基线保存在一个临时的表格对象中;

3)遍历查找所有表格数据对象,取出当中所有顶点坐标与基线有相交的表格数据对象,并将取出的表格数据对象保存在步骤2)中的临时表格对象中;

4)将步骤3)中查找到的第一个表格数据对象定义为基线,重复步骤3),直至遍历完所有表格数据对象;

5)取出临时表格对象的四个顶点坐标;

6)遍历所有非表格数据对象,取出当中所有坐标在步骤5)中四个顶点坐标范围内的非表格数据对象,并将其保存在临时表格对象中;

7)创建表格对象列表,将临时表格对象保存在表格对象列表中;

8)将表格对象列表交给数据管理模块保存。

一种基于ofd文档的表格提取方法,还包括数据解析功能流程和数据应用功能流程:

所述数据解析功能流程如下:

1)启动应用接口模块:创建应用接口模块对象,应用程序使用应用接口模块的对外接口函数;

2)启动数据管理模块:创建数据管理模块对象,数据管理模块开始工作;

3)启动数据提取模块:创建数据提取模块对象,由数据管理模块分配其工作的内容;

4)启动数据解析模块:创建数据解析模块对象,由数据管理模块分配其工作的内容;

所述数据应用功能流程如下:

1)调用应用接口模块:应用程序向应用接口模块调用功能函数并传入参数,用以获取表格数据;

2)调用数据管理模块:数据接口模块调用数据管理模块,根据应用程序传入的参数,用以判断是否为有效的表格数据;

3)返回结果:数据管理模块通过对传入参数的匹配,将匹配结果返回给应用程序。

本发明将应用层和逻辑层分离,使两部分互不影响,解决了因为文档格式及应用程序环境因素导致无法从ofd文档中提取表格的问题。实现了ofd文档表格提取的功能。架构清晰明了,便于理解、容易实现、方便调试程序及后期维护,增强了提取技术的扩展性。完全基于ofd文档的标准格式,几乎不需要除本发明方法外的其它软件支持,降低成本。可以达到无损的进行表格提取,且可提取和编辑表格内的文字等相关信息。以上效果是屏幕截取提取表格的方式无法达到的。

附图说明

图1为本发明中数据解析功能流程图;

图2为本发明中数据应用功能流程图;

图3为本发明中数据解析模块的流程图。

具体实施方式

以下结合附图对本发明作进一步说明。参见图1至图3,一种基于ofd文档的表格提取方法,包括数据解析功能流程和数据应用功能流程,其中数据解析功能流程(如图1所示)包括以下步骤:

应用程序101:用于调用本发明方法的应用,其形式不限,可以是可执行程序也可以是动态库。

启动应用接口模块102:由应用程序创建应用接口模块对象,使应用程序可以正常调用应用接口模块提供的接口函数。

启动数据管理模块103:由应用接口模块创建数据管理模块对象,数据管理模块其作用在于管理数据提取模块和数据解析模块,并保存数据提取模块和数据解析模块提供的数据结果,以便于将数据结果通过应用接口模块传递给应用程序。

创建原始数据列表和表格数据列表104:数据管理模块创建原始数据列表和表格数据列表。原始数据列表中将存放由数据提取模块从ofd文档中提取的所有疑似表格的数据;表格数据列表中将存放由数据解析模块对原始数据列表解析之后,所有表格的数据。

启动数据提取模块105:数据管理模块创建数据提取模块对象,数据提取模块其作用在于提取ofd文档中疑似表格的数据内容,并将数据存入原始数据列表。

启动数据解析模块106:数据管理模块创建数据解析模块对象,数据解析模块其作用在于对原始数据列表进行解析,从中获取所有表格数据内容,并将数据存入表格数据列表。

解析ofd文档107:数据提取模块对指定的ofd文档进行解析,提取出所有疑似表格的数据内容。

添加数据至原始数据列表108:由数据提取模块将所有疑似表格的数据内容,以列表的形式存入原始数据列表中。

解析原始数据列表109:由数据解析模块对原始数据列表进行解析,从中获取所有表格数据内容。

添加数据至表格数据列表110:由数据解析模块将所有表格数据内容,以列表的形式存入表格数据列表中。

结束111:数据解析流程结束。

数据应用功能流程(如图2所示)其形式不限,可以是可执行程序也可以是动态库。

应用接口模块202:由应用程序201调用应用接口模块提供的对应接口函数,以实现对应的功能。

页号和坐标203:由应用程序201向应用接口模块202提供想提取的表格所在的ofd文档页号和相对于页号的坐标值。

数据管理模块204:由应用接口模块将页号和坐标传给数据管理模块。

表格数据列表205:表格数据列表,存放当前ofd文档中所有表格的数据列表。

匹配:由数据管理模块将页号和坐标在表格数据列表中进行匹配操作,以确认该页号和坐标是否属于表格数据。匹配206成功,则为表格208,否则为非表格207。

返回结果给应用程序209:由数据管理模块将匹配结果返回给应用程序,若结果为表格,则返回表格208数据,若结果为非表格207,则返回失败标识。

结束210:数据应用流程结束。

本发明中的数据解析模块的流程(如图3所示):

启动数据提取模块301:由数据管理模块创建数据提取模块对象。

遍历表格数据对象302:从表格数据对象列表中,逐个访问每个表格数据对象。

遍历结束303:所有表格数据对象都访问完成。

获取基线304:遍历表格数据对象就是为了获取基线,基线是用来确定一个表格对象的基础。

临时表格对象305:表格对象的临时存储区。

创建临时表格对象306:若没有创建过临时表格对象,则创建。

保存基线至临时表格对象307:将基线数据保存到临时表格对象中。

获取与基线相交的表格数据对象308:从表格数据对象列表中,获取与基线有相交的表格数据对象。

保存表格数据对象至临时表格对象309:将与基线有相交的表格数据对象都保存至临时表格对象中。

获取临时表格对象顶点坐标310:从临时表格对象中,取出表格的四个顶点坐标。

创建表格对象列表311:表格对象的存储区。

遍历非表格数据对象312:从数据对象列表中,逐一访问数据对象,选定非表格数据对象。

在临时表格对象范围313:对访问的数据对象进行解析,判断数据对象是否在临时表格对象的区域内。

保存非表格数据对象至临时表格对象314:若非表格数据在表格范围内,则将非表格数据保存在临时表格对象中。

遍历结束315:结束对数据对象列表的访问。

保存临时表格对象至表格对象列表316:将临时表格对象内容,保存到表格对象列表中。

将表格对象列表交给数据管理模块317:将表格对象列表的内容,发送给数据管理模块。

结束318:完成数据提取模块的功能。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1