(12)发明专利申请
(10)申请公布号(10)申请公布号 CN 104731835 A (43)申请公布日(43)申请公布日 2015.06.24
(21)申请号 201310731594.9(22)申请日 2013.12.24
(71)申请人浙江省公众信息产业有限公司
地址310005 浙江省杭州市莫干山路118号(72)发明人叶琼德 韦海强 林静 吴汝伟
卢会春(51)Int.Cl.
G06F 17/30(2006.01)G06F 17/21(2006.01)
权利要求书1页 说明书4页 附图1页
(54)发明名称
一种word文档的提取和分析方法(57)摘要
一种word文档的提取和分析方法包括步骤:按照段逐段读入,并判断当前段是内容段还是等级段,并且进一步判断当前段的等级值是小于、等于、还是大于上一段的等级值,并进行相应的处理。本发明采用了支持程度好的类库来简化文档内容的提取,更有效且更简单方便地使用这个类库以完成对word的操作控制。
C N 1 0 4 7 3 1 8 3 5 ACN 104731835 A
权 利 要 求 书
1/1页
1.一种word文档的提取和分析方法包括步骤:A、按照段逐段读入,并判断当前段是内容段还是等级段;B、如果判断出当前段是内容段,则将该内容段加入到上一等级段的内容队列中,并且转到步骤G;
C、判断当前段的等级值是小于、等于、还是大于上一段的等级值D、如果判断出当前段的等级值等于上一段的等级值,则当前段是与上一段同等级的段,并且将该当前段加入到上一段所在的队列中,并转到步骤G;
E、如果判断出当前段的等级值大于上一段的等级值,则当前段为上一段的儿子段,并且将该当前段加入到上一段的儿子队列中,并转到步骤G;
F、如果判断出当前段的等级值小于上一段的等级值,则进一步判断当前段的等级值是否等于上一段的父亲段的等级值,若仍小于,则依次回溯到更上一级父亲段,直到查找到与当前段的等级值相等的段,并将当前段加入到查找到的段所在的队列中;
G、判断当前段是否是最后一段,若不是则转入步骤A,否则该处理结束。2.根据权利要求1所述的方法,其中在步骤A中:每个段具有相应的大纲等级属性,根据大纲等级的属性关联,判断出所述数据片段是等级段还是内容段。
3.根据权利要求2所述的方法,其中在步骤C中:若当前段是第一段,则初始化上一段的等级值为第一段的等级值。4.根据权利要求3所述的方法,其中在步骤D中:若当前段是第一段(T1),则直接加入到根队列中。
2
CN 104731835 A
说 明 书
一种word文档的提取和分析方法
1/4页
技术领域
[0001]
本发明涉及文档处理领域,更具体地说,涉及一种word文档的提取和分析方法。
背景技术
在如今的电子信息化高度发达的时代,对于信息的提取和分析有着强烈需求的时
代,显得word文档的智能分析尤为重要。无论是大项目还是小功能,都需要一定的文档沟通,而更多的智能化系统中,就需要不断的提取和分析这样的文档。在这样的需求前提下,也出现了许多类似的文档处理工具,无论是成熟的项目工具还是类库工具,都出现不少,如:
[0003] JACOB:这是一个类库型的工具,提供了一种和office进行交互的类库。这个类库提供的功能也相当的庞大,基本上能满足简单的word、excel操作,但要重塑成一个有结构,有模型化的数据结构,就相对比较复杂。而且需要一个jacob.dll的支持,因此和系统的耦合度也比较大。[0004] POI:这是一个类库型的工具,是一个纯JAVA实现的操作类,提供了简单的word内容提取。可支持的方法相对比较少,往往很难满足需求。[0005] JCOM:类似JACOB的一个工具,但需要依赖windows平台,这样又违背了JAVA这个平台无关的特性,多多少少有点不合适。而且在功能满足上,也基本上同JACOB,在使用上,需要安装PDF打印机。
[0006] 当然还有其他一些实现word内容提取的方式,如com4j、j—Interop等,当这些工具并不是专门提供word处理的,可以通过com和Office交互达到效果,使用比较麻烦。[0007] 对于以上这些工具,都基本上能够简单的提取内容,但在现在这样的信息需求量大,信息内容要求精确和智能的时代中,只是简单提取内容,并不能实现智能转化和分析,已经越来越不能满足要求,也没办法推进更进一步的信息化。
[0002]
发明内容
本发明是鉴于上述技术问题而产生的。本发明的一个目的是提出一种word文档的提取和分析方法。
[0009] 在一个方面中,根据本发明的word文档的提取和分析方法包括:[0010] 步骤A:按照“paragraph”片段逐段读入,并判断当前段是内容段还是等级段;步骤B:如果判断出当前段是内容段,则将该内容段加入到上一等级段的内容队列中,并且转到步骤G;否则步骤C:判断当前段的等级值是小于、等于、还是大于上一段的等级值;步骤D:如果判断出当前段的等级值等于上一段的等级值,则当前段是与上一段同等级的段,并且将该当前段加入到上一段所在的队列中,并转到步骤G;步骤E:如果判断出当前段的等级值大于上一段的等级值,则当前段为上一段的儿子段,并且将该当前段加入到上一段的儿子队列中,并转到步骤G;步骤F:如果判断出当前段的等级值小于上一段的等级值,则进一步判断当前段的等级值是否等于上一段的父亲段的等级值,若仍小于,则依次回溯到更
[0008]
3
CN 104731835 A
说 明 书
2/4页
上一级父亲段,直到查找到与当前段的等级值相等的段,并将当前段加入到查找到的段所在的队列中;步骤G:判断当前段是否是最后一段,若不是则转入步骤A,否则该处理结束。[0011] 在这个方面中,其中在步骤A中:每个段具有相应的大纲等级属性,根据大纲等级的属性关联,判断出所述数据片段是等级段还是内容段。[0012] 在这个方面中,其中在步骤C中:若当前段是第一段,则初始化上一段的等级值为第一段的等级值。
[0013] 在这个方面中,其中在步骤D中:若当前段是第一段(T1),则直接加入到根队列中。附图说明
结合随后的附图,从下面的详细说明中可显而易见的得出本发明的上述及其他目
的、特征及优点。在附图中:
[0015] 图1示出了根据本发明的word文档提取和分析方法的流程图;[0016] 图2示出了word文档中的每个段的大纲等级属性的示意图。
[0014]
具体实施方式
[0017] 为了更全面地理解本发明及其优点,下面结合附图及具体实施例对本发明做进一步详细地说明。[0018] 首先,参考图1,对根据本发明的一种word文档的提取和分析方法进行详细地说明。
[0019] 如图1所示,根据本发明的word文档的提取和分析方法包括步骤:[0020] 步骤A:按照“paragraph”片段逐段读入,并判断当前段是内容段还是等级段;[0021] 具体地说,按照“paragraph”片段逐段读入,并读取读入的当前段的大纲等级(outlineLevel)。
[0022] 如图2所示,word文档中的每个段具有相应的大纲等级属性。此后,根据大纲等级的属性关联,判断出所述数据片段是等级段还是内容段。[0023] 其中如下表所示,如果所提取的大纲等级是9,则判断出当前段是正文文本(即内容段),如果所提取的大纲等级0-8中的值,则判断出当前段是等级段,其中0-8是等级段的等级值,0表示等级段的等级最高,对应图1中的大纲级别1级;1表示比0更低级别的段,对应图1中的大纲级别2级;依次类推,8表示等级段的等级最低,对应图1中的大纲级别9级。当然,对于本领域普通技术人员来说,大纲等级的表述方式并不局限于此,而是可使用任何适当的方式。
[0024]
编号12
[0025]
大纲等级描述90-8
程序获取的文本等级获取的大纲等级
对应word中大纲正文文本1—9
步骤B:如果判断出当前段是内容段,则将该内容段加入到上一等级段的内容队
4
CN 104731835 A
说 明 书
3/4页
列中,并且转到步骤G;否则[0026] 步骤C:判断当前段的等级值是小于、等于、还是大于上一段的等级值;[0027] 需要说明的是,如当前段是第一段(T1),则初始化上一段的等级值为第一段的等级值。例如,第一段的等级值为0,则初始化上一段的等级值为0。[0028] 步骤D:如果判断出当前段的等级值等于上一段的等级值,则当前段是与上一段同等级的段,并且将该当前段加入到上一段所在的队列中,并转到步骤G;[0029] 需要说明的是,如当前段是第一段(T1),则直接加入到根队列中。[0030] 步骤E:如果判断出当前段的等级值大于上一段的等级值,则当前段为上一段的儿子段,并且将该当前段加入到上一段的儿子队列中,并转到步骤G;[0031] 步骤F:如果判断出当前段的等级值小于上一段的等级值,则进一步判断当前段的等级值是否等于上一段的父亲段的等级值,若仍小于,则依次回溯到更上一级父亲段,直到查找到与当前段的等级值相等的段,并将当前段加入到查找到的段所在的队列中。[0032] 步骤G:判断当前段是否是最后一段,若不是则转入步骤A,否则该处理结束。[0033] 为了更清楚地说明起见,结合下面的示例,对该方法进行示例性说明。[0034] T1标题1[0035] T2标题2
[0036] T2_CONTENT内容段[0037] T2_1子标题1[0038] T2_1_1子标题[0039] T2_2子标题2
[0040] T2_2_CONTENT内容[0041] T3标题3
[0042] 按照本发明的方法,具体步骤如下:[0043] 读入T1段,并读取T1段的大纲等级(等级值0);判断出T1段是等级段;判断出T1段的等级值等于上一段的等级值(初始化为0),则加入到根队列中,此时根队列为[T1];判断出T1段不是最后一段,则进入下一段的处理。[0044] 读入T2段,并读取T2段的大纲等级(等级值0);判断出T2段是等级段;判断出T2段的等级值等于上一段T1的等级值,则T2段是与上一段T1同等级的段,并将T2段加入到上一段T1所在的队列中,此时根队列为[T1,T2];判断出T2段不是最后一段,则进入下一段的处理。
[0045] 读入T2_CONTENT段,并读取T2_CONTENT的大纲等级(等级值9);判断出T2_CONTENT段是内容段,则将该T2_CONTENT段加入到上一等级段T2的内容队列中,此时T2的内容队列为:
[0046] childrenTextNodes:[T1_CONTENT内容段];判断出T2_CONTENT段不是最后一段,则进入下一段的处理。[0047] 读入T2_1段,并读取T2_1的大纲等级(等级值1);判断出T2_1段是等级段;判断出T2_1段的等级值大于上一段T2的等级值,则T2_1段是上一段T2的儿子段,并将T2_1段加入到上一段T2的儿子队列中,此时T2的儿子队列为[T2_1];判断出T2_1段不是最后一段,则进入下一段的处理。
5
CN 104731835 A[0048]
说 明 书
4/4页
读入T2_1_1段,并读取T2_1_1的大纲等级(等级值2);判断出T2_1_1段是等级
段;判断出T2_1_1段的等级值大于上一段T2_1的等级值,则T2_1_1段是上一段T2_1的儿子段,并将T2_1_1段加入到上一段T2_1的儿子队列中,此时T2_1的儿子队列为[T2_1_1];判断出T2_1_1段不是最后一段,则进入下一段的处理。[0049] 读入T2_2段,并读取T2_2的大纲等级(等级值1);判断出T2_2段是等级段;判断出T2_2段的等级值小于上一段T2_1_1的等级值;进一步判断当前段T2_2的等级值是否等于上一段T2_1_1的父亲段T2_1的等级值,其结果是T2_2段的等级值等于T2_1的等级值,则表示T2_2段与T2_1段是同级别的段;将T2_2段加入到T2_1所在的队列中,此时T2的儿子队列为[T2_1,T2_2];判断出T2_1_1段不是最后一段,则进入下一段的处理。[0050] 读入T2_2_CONTENT段,并读取T2_2_CONTENT的大纲等级(等级值9);判断出T2_2_CONTENT段是内容段,则将该T2_2_CONTENT段加入到上一等级段T2_2的内容队列中,此时T2_2的内容队列为:[0051] childrenTextNodes:[T2_2_CONTENT内容段];判断出T2_2_CONTENT段不是最后一段,则进入下一段的处理。[0052] 读入T3段,并读取T3的大纲等级(等级值0);判断出T3段是等级段;判断出T3段的等级值小于上一段T2_2的等级值;进一步判断当前段T3的等级值是否等于上一段T2_2的父亲段T2的等级值,其结果是T3段的等级值等于T2的等级值,则表示T3段与T2段是同级别的段;将T3段加入到T2所在的队列中,此时根队列为[T1,T2,T3];判断出T3段是最后一段,则该处理结束。[0053] 通过上述处理,最后输出:[0054] 根队列:[T1,T2,T3]。[0055] 其中T2模型如下:[0056] T2:
[0057] childrenTextNodes:[T1_CONTENT内容段][0058] childrenNodes:[T2_1,T2_2][0059] 其中T2_1模型如下:[0060] T2_1:
[0061] childrenNodes:[T2_1_1][0062] 其中T2_2模型如下:
T2_2:
[0064] childrenTextNodes:[T2_2_CONTENT内容段][0065] 通过上述可知,本技术采用了支持程度好的类库来简化文档内容的提取,更有效且更简单方便地使用这个类库以完成对word的操作控制。同时由于这个类库支持多种实现语言,不依赖第三方控件和系统环境。基于这样的类库,来封装方法,设计模型,完成word文档的结构化,立体化,最终实现word文档的智能转化和分析。[0066] 此外,对于本领域的普通技术人员来说可显而易见的得出其他优点和修改。因此,具有更广方面的本发明并不局限于这里所示出的并且所描述的具体说明及示例性实施例。因此,在不脱离由随后权利要求及其等价体所定义的一般发明构思的精神和范围的情况下,可对其做出各种修改。
[0063]
6
CN 104731835 A
说 明 书 附 图
1/1页
图1
图2
7
因篇幅问题不能全部显示,请点此查看更多更全内容