基于pdf文件的表格提取方法和装置的制造方法

文档序号:10624752阅读:186来源:国知局
基于pdf文件的表格提取方法和装置的制造方法
【专利摘要】本发明提供一种基于PDF文件的表格提取方法和装置,通过解析获得PDF文件中的各文字的文字信息和各线条的线条信息之后,根据线条位置信息对从该PDF文件的同一页中所提取的横向线条进行排序,并判断两相邻横向线条是否处于该页的同一表格中,根据线条信息对处于该页的同一表格中的各横向线条进行表格绘制,以及在绘制的表格中,根据线条信息对从所述页中所提取的各纵向线条进行填充,最后在绘制的表格中,根据各文字的文字信息,将文字信息中的文字字符信息填充在横向线条和纵向线条所构成的单元格中与文字位置信息相对应的位置。由于考虑了表格的横向线条和纵向线条的信息,从而提高了从PDF文件中提取表格的准确度。
【专利说明】
基于PDF文件的表格提取方法和装置
技术领域
[0001] 本发明设及信息技术,尤其设及一种基于PDF文件的表格提取方法和装置。
【背景技术】
[0002] 可移植文档格式(Port油le Document化rmatiPD巧文件由于其跨平台特性,已广 泛运用于当前主流的操作系统中,越来越多的电子书籍、产品使用说明书、公司公告财报、 网络资料、科学文献、电子邮件等都开始使用PDF文件形式,并已经成为电子文档发行和数 字化信息传播的理想文档形式。
[0003] 由于PDF文件自身的格式并未对表格进行结构化,因此表格线条的检测W及表格 的还原都有不小的挑战。目前,可采用基于文字流的表格识别算法,对PDF文件中的表格进 行提取。但是,在实际应用中,往往发现提取表格的准确度不高。

【发明内容】

[0004] 本发明提供一种基于PDF文件的表格提取方法和装置,用于提高从PDF文件中提 取表格的准确度。 阳0化]本发明的一个方面是提供一种基于PDF文件的表格提取方法,包括:
[0006] 对PDF文件进行解析,获得所述PDF文件中的各文字的文字信息和各线条的线 条信息;所述文字信息包括文字字符信息和文字位置信息;所述线条信息包括线条位置信 息、线条宽度和线条长度;所述线条位置信息包括线条横轴位置和线条纵轴位置;
[0007] 根据所述线条信息中的线条宽度和线条长度,从各线条中确定横向线条和纵向线 条;
[000引根据所述线条位置信息,对从所述PDF文件的同一页中所提取的横向线条进行排 序;
[0009] 针对在所述页中排序后获得的两相邻横向线条,在从所述页中所提取的各纵向线 条中,确定满足线条位置信息中线条纵轴位置与所述两相邻横向线条中最小线条纵轴位置 相同的目标纵向线条;
[0010] 根据所述两相邻横向线条的线条纵轴位置之差和所述目标纵向线条的线条纵轴 位置,判断所述两相邻横向线条是否处于所述页的同一表格中;
[0011] 根据线条信息对处于所述页的所述表格中的各横向线条进行表格绘制,W及在绘 制的表格中,根据线条信息对从所述页中所提取的各纵向线条进行填充;
[0012] 在所述绘制的表格中,根据各文字的文字信息,将文字信息中的文字字符信息填 充在横向线条和纵向线条所构成的单元格中与文字位置信息相对应的位置。
[0013] 本发明的另一个方面是提供一种基于PDF文件的表格提取装置,包括:
[0014] 解析模块,用于对PDF文件进行解析,获得所述PDF文件中的各文字的文字信息和 各线条的线条信息;所述文字信息包括文字字符信息和文字位置信息;所述线条信息包括 线条位置信息、线条宽度和线条长度;所述线条位置信息包括线条横轴位置和线条纵轴位 置;
[0015] 确定模块,用于根据所述线条信息中的线条宽度和线条长度,从各线条中确定横 向线条和纵向线条;
[0016] 绘制模块,用于根据所述线条位置信息,对从所述PDF文件的同一页中所提取的 横向线条进行排序;针对在所述页中排序后获得的两相邻横向线条,在从所述页中所提取 的各纵向线条中,确定满足线条位置信息中线条纵轴位置与所述两相邻横向线条中最小线 条纵轴位置相同的目标纵向线条;根据所述两相邻横向线条的线条纵轴位置之差和所述 目标纵向线条的线条纵轴位置,判断所述两相邻横向线条是否处于所述页的同一表格中; 根据线条信息对处于所述页的所述表格中的各横向线条进行表格绘制,W及在绘制的表格 中,根据线条信息对从所述页中所提取的各纵向线条进行填充;在所述绘制的表格中,根据 各文字的文字信息,将文字信息中的文字字符信息填充在横向线条和纵向线条所构成的单 元格中与文字位置信息相对应的位置。
[0017] 本发明提供的基于PDF文件的表格提取方法和装置,通过解析获得PDF文件中的 各文字的文字信息和各线条的线条信息之后,根据线条位置信息对从该PDF文件的同一 页中所提取的横向线条进行排序,并判断两相邻横向线条是否处于该页的同一表格中,根 据线条信息对处于该页的同一表格中的各横向线条进行表格绘制,W及在绘制的表格中, 根据线条信息对从所述页中所提取的各纵向线条进行填充,最后在绘制的表格中,根据各 文字的文字信息,将文字信息中的文字字符信息填充在横向线条和纵向线条所构成的单元 格中与文字位置信息相对应的位置。由于考虑了表格的横向线条和纵向线条的信息,从而 提高了从PDF文件中提取表格的准确度。
【附图说明】
[0018] 图1为本发明实施例提供的一种基于PDF文件的表格提取方法的流程示意图;
[0019] 图2为包含两张表格的PDF页的示意图;
[0020] 图3为本发明实施例提供的另一种基于PDF文件的表格提取方法的流程示意图;
[0021] 图4为本发明实施例提供的另一种基于PDF文件的表格提取方法的流程示意图; 阳022] 图5A为表头简化前的表头示意图;
[0023] 图5B为表头简化后的表头示意图;
[0024] 图5C为简化前的表头所转化的树形结构;
[0025] 图6为本发明实施例提供的一种基于PDF文件的表格提取装置的结构示意图。
【具体实施方式】
[00%] 图1为本发明实施例提供的一种基于PDF文件的表格提取方法的流程示意图,如 图1所示,包括:
[0027] 101、对PDF文件进行解析,获得PDF文件中的各文字的文字信息和各线条的线条 信息。
[0028] 其中,文字信息包括文字字符信息和文字位置信息;所述线条信息包括线条位置 信息、线条宽度和线条长度;所述线条位置信息包括线条横轴位置和线条纵轴位置。
[0029] 具体的,利用PDFBox软件对PDF文件进行解析,获得所述PDF文件中的文字信息; 根据所述PDF文件中用于标识线条结束的操作符,提取所述PDF文件中的线条信息。
[0030] 例如:在PDF盒子(PDFBox)软件中,对于PDF文件内的文字和线条都经过了重新 的处理和封装。文字和线条在PDFBox软件中都存储在"CosStream"对象中。该对象继承自 "CosDictionary"类。运些对象均处于PDFBox软件的"CosModel"层,即PDFBox软件的最 低层,该层负责完成对PDF文件基本结构的封装。PDFBox软件利用"processSubStream"函 数完成底层各个对象的个性处理。在函数内,"PDFStreamParser"负责解析"CosStream"下 对应的各个对象,并利用"process化erator"函数完成不同类型操作符的个性化处理。由于 PDFBox软件并未对线条类对象进行处理,因此可通过修改该部分的代码实现PDFBox软件 对线条类对象进行处理。依据PDF文件中线条的特殊格式,通过识别操作符"q","Q","re" 等标识线条结束的操作符对线条信息进行提取。"argument"对象用于存储线条的线条信 息。当碰到标识符"re"则将"argument"中的线条信息封装存储。当碰到"cos化ject"结 构表明是位置信息应该保存到"argument"的可变数组中。当碰到"PDK)perato;r"结构时 检查是否是"re",如果是则提取前一个"argument"信息,即为该线条的线条位置信息,反 之则舍弃不处理。最终线条信息成"Line In化rmation"格式,包含线条横轴位置(xpos), 线条纵轴位置(ypos),线条宽度(width),线条长度化ei曲t)。因此每条线段的特征向量为 <xpos, ypos, wi化h, hei曲t〉。由于PDFBox软件已经对文字的信息进行了较好的封装,可针 对表格还原的需求对该部分的文字信息进行了进一步的过滤和再封装。只保留对表格还原 有效的特征量,即文字的字符信息和文字的位置信息。
[0031] 102、根据线条信息中的线条宽度和线条长度,从各线条中确定横向线条和纵向线 条。
[0032] 具体的,若所述线条信息中的线条宽度大于线条长度,则确定所述线条为横向线 条;若所述线条信息中的线条宽度不大于线条长度,则确定所述线条为纵向线条。
[0033] 103、根据所述线条位置信息,对从所述PDF文件的同一页中所提取的横向线条 进行排序。
[0034] 104、针对在所述页中排序后获得的两相邻横向线条,在从所述页中所提取的各纵 向线条中,确定满足线条位置信息中线条纵轴位置与所述两相邻横向线条中最小线条纵轴 位置相同的目标纵向线条。
[0035] 105、根据所述两相邻横向线条的线条纵轴位置之差和所述目标纵向线条的线条 纵轴位置,判断所述两相邻横向线条是否处于所述页的同一表格中。
[0036] 具体的,计算所述两相邻横向线条的线条纵轴位置之差(yl-yO);其中,yl为所述 两相邻横向线条中最大线条纵轴位置,yO所述两相邻横向线条中最小线条纵轴位置;根据 公式|yl-y〇-h〇|进行计算,若满足|yl-yO-h〇| <Δ1ι,则确定所述两相邻横向线条处于所 述页的同一表格中,其中,hO为所述目标纵向线条的线条纵轴位置,Δ h为预设偏差阔值。
[0037] 例如:单页PDF可能包含多张表格。要利用横纵线条还原基本的表格形态需要特 别注意线条间的交错情况,避免将不同表格的线条错判为同一表格。因此在设计表格还原 算法时,优先处理纵向的横线信息。图2为包含两张表格的PDF页的示意图,如图2所示, 共有表格1和表格2,虚线条1,2和3中,虚线条1和虚线条3属于表格1而虚线条2属于 表格2。为了防止线条错位,本算法优先处理横向线条。如图2所示,在表格1中yO和yl 表示横向线条的线条纵轴位置。hO是对应的目标纵向线条的线条长度。在判断yO和yl 对应的横向线条是否属于同一表格的充分条件是lyl-yO-hOl <Ah。其中Ah是预设偏 差阔值。对于y3和y4对应的横向线条,由于不存在相应的目标纵向线条使得|yl-y〇-hO <Δ h成立,因此y3和y4对应的横向线条应该属于不同的表格,即y3和y4对应的横向线 条是两个表格的分离线条。
[0038] 具体上述过程可通过如下算法伪代码实现:
[0039]
[0041] 106、根据线条信息对处于所述页的所述表格中的各横向线条进行表格绘制,W及 在绘制的表格中,根据线条信息对从所述页中所提取的各纵向线条进行填充。
[0042] 107、在所述绘制的表格中,根据各文字的文字信息,将文字信息中的文字字符信 息填充在横向线条和纵向线条所构成的单元格中与文字位置信息相对应的位置。
[0043] 具体的,根据文字的文字位置信息,确定文字所在的单元格;对处于同一单元格中 的文字,根据文字位置信息中的文字纵轴位置进行排序,获得文字在二维数组中的纵向顺 序;若至少两文字根据文字纵轴位置进行排序的顺序相同,则根据至少两文字的文字横轴 位置进行排序,获得文字在二维数组中的横向顺序;W二维数组形式,将文字对应的文字字 符信息填充在所述单元格中。
[0044] 文字信息包括文字字符信息(character)和文字位置信息,文字位置信息包 含文字横轴位置(xpos)和文字纵轴位置(ypos)。单个文字的文字信息用特征向量 〈character, xpos, ypos〉表示。通过比较文字位置信息<xpos, ypos〉W及横向线条的线 条位置信息"PageT油lelpos"和纵向线条的线条位置信息"PageT油le化OS"判定单个文 字所处单元格。对于同一单元格中的文字,仍然需要根据文字位置信息 <邱〇3, ypos〉加 W排序。为了便于在单元格内排序,此处定义二维数组的类型为"TreeSet"类型,由于 "TreeSet"类型元素是有序的,因此只需要将文字填充到对应单元格内,单元格内的文字将 根据"TreeSet"制定的排序规则自动实现排序。
[0045] 具体上述过程可通过如下算法伪代码实现:
[0046]
[0047] 本实施例中,通过对PDF文件进行解析,获得PDF文件中的各文字的文字信息和各 线条的线条信息之后,根据线条信息中的线条宽度和线条长度,从各线条中确定横向线条 和纵向线条,进而根据线条位置信息,对从该PDF文件的同一页中所提取的横向线条进行 排序,并针对在该页中排序后获得的两相邻横向线条,在从该页中所提取的各纵向线条中, 确定满足线条位置信息中线条纵轴位置与所述两相邻横向线条中最小线条纵轴位置相同 的目标纵向线条,根据两相邻横向线条的线条纵轴位置之差和目标纵向线条的线条纵轴位 置,判断两相邻横向线条是否处于该页的同一表格中,根据线条信息对处于该页的同一表 格中的各横向线条进行表格绘制,W及在绘制的表格中,根据线条信息对从所述页中所提 取的各纵向线条进行填充,最后在绘制的表格中,根据各文字的文字信息,将文字信息中的 文字字符信息填充在横向线条和纵向线条所构成的单元格中与文字位置信息相对应的位 置。由于考虑了表格的横向线条和纵向线条的信息,从而提高了从PDF文件中提取表格的 准确度。
[0048] 图3为本发明实施例提供的另一种基于PDF文件的表格提取方法的流程示意图, 如图3所示,在如图1所示的基于PDF文件的表格提取方法中步骤107之后,还包括:
[0049] 201、若处于相邻页的所填充的表格满足表格合并规则,则确定所述处于相邻页的 填充的表格为处于相邻页的同一表格。
[0050] 其中,表格合并规则包括:所述处于相邻页的所填充的表格的列数相同,且在前一 页所填充的表格中横向线条的最大纵轴位置大于预设最大值,且在后一页所填充的表格中 横向线条的最小纵轴位置小于预设最小值。
[0051] 具体的,由于PDF单页大小是固定的,因此存在单个表格分布在不同PDF页面的复 杂情况,因此需要对各页进行判断,对于可能的跨页表格进行合并。处理思路如下:获取指 定页面的所有表格;利用is化eForm函数判断两张表是否是一张,false则结束循环,True 则合并两张表格,is化eForm函数用于判定两张表是否是同一张表,判断依据包括两张表的 列数、第一张表的最后线条的绝对位置、第二张表的第一条线条的绝对位置。
[0052] 具体上述过程可通过如下算法伪代码实现:
[0053] 1 Public ArrayList<Form> MergeForras(int page){ 2 ArrayList<Forrn> curForm二GetFormsByPage (pa径e): 3 If (curForm 二=null I I curFom. size 0 二=0) 4: rolurn curForm; 邑 int ·; = 1: 6 //合并巧能的表格 7 while(true) { 沒 ArrayList<Form> tera=GetFormsByPa呂e (page+i)
[0054]
阳化引
[0056] 202、对满足表格合并规则的所述处于相邻页的所填充的表格进行合并。
[0057] 本实施例中,通过对PDF文件进行解析,获得PDF文件中的各文字的文字信息和各 线条的线条信息之后,根据线条信息中的线条宽度和线条长度,从各线条中确定横向线条 和纵向线条,进而根据线条位置信息,对从该PDF文件的同一页中所提取的横向线条进行 排序,并针对在该页中排序后获得的两相邻横向线条,在从该页中所提取的各纵向线条中, 确定满足线条位置信息中线条纵轴位置与所述两相邻横向线条中最小线条纵轴位置相同 的目标纵向线条,根据两相邻横向线条的线条纵轴位置之差和目标纵向线条的线条纵轴位 置,判断两相邻横向线条是否处于该页的同一表格中,根据线条信息对处于该页的同一表 格中的各横向线条进行表格绘制,W及在绘制的表格中,根据线条信息对从所述页中所提 取的各纵向线条进行填充,最后在绘制的表格中,根据各文字的文字信息,将文字信息中的 文字字符信息填充在横向线条和纵向线条所构成的单元格中与文字位置信息相对应的位 置。由于考虑了表格的横向线条和纵向线条的信息,从而提高了从PDF文件中提取表格的 准确度。
[0058] 图4为本发明实施例提供的另一种基于PDF文件的表格提取方法的流程示意图, 如图4所示,在图1所示实施例的基础上,本实施例中步骤107之后还可进一步包括:
[0059] 401、将所填充的表格中的表头部分转化为树形结构。
[0060] 其中,所述树形结构中的各节点分别与所述表头部分中各单元格所填充的文字字 符信息对应,子节点对应的文字字符信息为所述子节点的父节点对应的文字字符信息的子 类。
[0061] 需要说明的是,子类是指在语义上,存在父节点对应的文字字符信息包括子节点 对应的文字字符信息的关系,即父节点和子节点对应的文字字符信息所表示的含义为上下 位关系。
[0062] 402、采用遍历所述树形结构的每一分支的方式对所述表头部分进行简化。
[0063] 其中,简化后的表头部分中单元格个数等于所述树形结构中分支的个数,所述简 化后的表头部分中每一个单元格中所填充的文字字符信息包括对应的一分支中从根节点 至叶子节点所对应的各文字字符信息。
[0064]具体的,表格的表头由于需要表示每个单元格的具体含义有时候会比较复杂,由 于图形结构的表在实际应用中并不常见,因此实施例只针对树形结构的表进行了处理。处 理思路是先根据将表格转换为一个树形结构,然后从树的根节点开始深度遍历树直到叶子 节点,所生成的路径即为简单表格的一个单元格。图5A为表头简化前的表头示意图,图5B 为表头简化后的表头示意图,图5C为简化前的表头所转化的树形结构,如图5A至图5C所 示,数字1至6代表表头单元格中所填充的字符。
[00化]进一步,在步骤107之后还可W对表格的展开方式进行识别。
[0066] 具体的,为了识别表格的展开特征,即表格结构,首先考虑表格的物理特征,表1 为表格物理特征与表格结构关系表,如表1所不:
[0067]
[0068] 表1表格物理特征与表格结构关系表 阳069] 通过判定跨行或跨列的情况可W对表格的基本结构进行初步的判定,对于情况1 已经可W确定其类型,则无需进行后续的判定。对于情况2和3已经可W确定其横向或纵 向的特征,需要进一步确定其纵向或横向特征。情况4的表格属于简单表,则需要从内容上 对其横向和纵向特征进行判定。具体可进一步根据表格内容特征确定表格结构,表2为表 格内容特征与表格结构关系表,如表2所示:
[0070]
[0071] 表2表格内容特征与表格结构关系表
[0072] 采用打分判决思想,从内容和行列相似度上分别进行打分,最后总分的计算按如 下公式: 阳07;3] Tra?= P*Araw+a-e)*Sra?
[0074] Tc"i= 0*Ac"i+(l-e)^c〇i
[0075] 其中A表示基于文字内容的得分,S表示行列相似度上的得分,Τ表示总得分情况。 raw和col表示打分的两个维度,β是可调节的权重值。Traw表示在raw维度上的总得 分,T。。康示在col维度上的总得分,A raw表示在raw维度上基于文字内容的得分,A。。康示 在col维度上基于文字内容的得分,Sf。。表示在raw维度上行列相似度上的得分,8。。1表示 在col维度上行列相似度上的得分。当待分析的表格属于某个特定领域时,则提高A的权 重有助于提高结果的准确性,反之则将表格当作普通情况处理,加大文字长度的影响权重。 表格的最终类型与表格在raw和col两个维度上总得分最高的维度保持一致。如果表格在 raw和col两个维度上总得分情况差异不大,则归为混合展开型表格。下面分别介绍A和S 的计算方法。
[0076] 基于单元格内容的打分规则,计算获得A :此规则主要适用于表格所属领域已知 的情况,对于该类表格,其属性值往往是固定。因此可W通过首行,首列中特定属性值的占 比来判定表格的类型。例如:财务Ξ大报表中固有属性值往往包括:流动资产、非流动资 产、资产总计、应付票据、流动负债和所有者权益等关键属性。因此可W根据该类属性词建 立属性词典。然后对表格首行和首列的内容进行分词,统计关键属性词占比从而最终确定 表格的展开类型。
[0077] 基于行列相似度的打分规则,计算获得S:除了从单元格内容进行判定W外更普 遍的方式是根据表格行列方向单元格内文字的数量进行判定。通常情况下横向展开型表格 各个列具有较强的相似度。而纵向展开型表格各个行具有较强的相似度。根据本规律,可 通过计算表格行列展开下表格均值和方差加 W判定。行列均值和方差的计算公式如下:
阳0間其中,6。。1(;〇表示列i中的平均单元格字数。r表示除去首行的表格行数。Mj,康 示第i列第j行的单元格内的文字数目。Efg"(i)表示行i中的平均单元格字数。S表示除 去首列的表格列数。Ml,i表示第i行第j列的单元格内的文字数目。8。。1(1)表示列i中的 方差,S,g"a)表示行i中的方差,分别依据6。。1扣)和E,g"a)得到。
[0083] 可将本方法应用到沪深两市的财务报表上,并基于软件系统对前述实施例中所提 供的方法进行实现,该软件系统的设计框图可W包含:文档解析层、表格还原层和数据封装 层Ξ部分。最底层是文档解析层,主要完成PDF文件中的文字和线条信息的提取和封装;中 间是表格还原层,该层是整个解析系统的核屯、层,用于实现了表格提取的核屯、算法,主要包 括表格轮廓栅格化,复杂表头的识别与转换,表格内容归位等内容。顶层是数据封装层,用 于对已提取的表格数据的进一步封装。
[0084] 文档解析层:主要借助PDFBox完成基本的PDF文档解析。通过修改PDFBox底层 代码完成对PDF字符流中文字流与线条流的识别,并将其封装成上层能够识别和使用的格 式。
[00化]表格还原层:主要的PDF表格还原算法都在该层实现。表格轮廓还原算法主要通 过对线条位置信息的排序和归类完成。复杂表头的识别和转化通过将表头转化成树形结构 完成。转化完成后整个表格被整理成二维数组的形式,再通过对比表格中的文字信息与表 格的位置将文字归位。最终完成从文字线条信息到二维数组的转换。
[0086] 数据封装层:有了中间层的数据处理,在数据封装层可W将二维数组形式的表格 数据封装成各种需要的形式。本系统目前支持HTML、JS0N格式的封装。HTML形式的表格 能够很好的支持网页浏览,而JS0N格式则利于信息的交换和存储。
[0087] 利用该软件系统完成沪深两市的财务报表中表格的提取之后进行了基本的测试, 包括:召回率测试,召回率等于系统正确解析的结果占总样本的比例。实验表明解析召回率 达到70% ;准确率测试,准确率则表示系统正确解析的结果占总的解析结果的比例,实验表 明准确率达到87% ;F值测试,通常情况下召回率和准确率是个矛盾体,增加召回率可能对 准确率会有一定的影响,反之,增加准确率同样对召回率会产生影响,因此为了综合反映一 个抽取系统的性能,往往还会考虑召回率和准确率的加权几何平均值,实验表明F值达到 77%。
[0088] 本实施例中,通过对PDF文件进行解析,获得PDF文件中的各文字的文字信息和各 线条的线条信息之后,根据线条信息中的线条宽度和线条长度,从各线条中确定横向线条 和纵向线条,进而根据线条位置信息,对从该PDF文件的同一页中所提取的横向线条进行 排序,并针对在该页中排序后获得的两相邻横向线条,在从该页中所提取的各纵向线条中, 确定满足线条位置信息中线条纵轴位置与所述两相邻横向线条中最小线条纵轴位置相同 的目标纵向线条,根据两相邻横向线条的线条纵轴位置之差和目标纵向线条的线条纵轴位 置,判断两相邻横向线条是否处于该页的同一表格中,根据线条信息对处于该页的同一表 格中的各横向线条进行表格绘制,W及在绘制的表格中,根据线条信息对从所述页中所提 取的各纵向线条进行填充,最后在绘制的表格中,根据各文字的文字信息,将文字信息中的 文字字符信息填充在横向线条和纵向线条所构成的单元格中与文字位置信息相对应的位 置。由于考虑了表格的横向线条和纵向线条的信息,从而提高了从PDF文件中提取表格的 准确度。
[0089] 图6为本发明实施例提供的一种基于PDF文件的表格提取装置的结构示意图,如 图6所示,包括:解析模块61、确定模块62和绘制模块63。
[0090] 解析模块61,用于对PDF文件进行解析,获得所述PDF文件中的各文字的文字信息 和各线条的线条信息。
[0091] 其中,文字信息包括文字字符信息和文字位置信息;所述线条信息包括线条位置 信息、线条宽度和线条长度;所述线条位置信息包括线条横轴位置和线条纵轴位置。
[0092] 解析模块61,具体用于利用PDFBox软件对PDF文件进行解析,获得所述PDF文件 中的文字信息;根据所述PDF文件中用于标识线条结束的操作符,提取所述PDF文件中的线 条信息。
[0093] 确定模块62,与解析模块61连接,用于根据所述线条信息中的线条宽度和线条长 度,从各线条中确定横向线条和纵向线条。
[0094] 确定模块62,具体用于若所述线条信息中的线条宽度大于线条长度,则确定所述 线条为横向线条;若所述线条信息中的线条宽度不大于线条长度,则确定所述线条为纵向 线条。
[00巧]绘制模块63,与确定模块62连接,用于根据所述线条位置信息,对从所述PDF文件 的同一页中所提取的横向线条进行排序;针对在所述页中排序后获得的两相邻横向线条, 在从所述页中所提取的各纵向线条中,确定满足线条位置信息中线条纵轴位置与所述两相 邻横向线条中最小线条纵轴位置相同的目标纵向线条;根据所述两相邻横向线条的线条纵 轴位置之差和所述目标纵向线条的线条纵轴位置,判断所述两相邻横向线条是否处于所述 页的同一表格中;根据线条信息对处于所述页的所述表格中的各横向线条进行表格绘制, W及在绘制的表格中,根据线条信息对从所述页中所提取的各纵向线条进行填充;在所述 绘制的表格中,根据各文字的文字信息,将文字信息中的文字字符信息填充在横向线条和 纵向线条所构成的单元格中与文字位置信息相对应的位置。
[0096] 进一步,绘制模块63跟据所述两相邻横向线条的线条纵轴位置之差和所述目标 纵向线条的线条纵轴位置,判断所述两相邻横向线条是否处于所述页的同一表格中,具体 为绘制模块63计算所述两相邻横向线条的线条纵轴位置之差(yl-yO);其中,yl为所述两 相邻横向线条中最大线条纵轴位置,yO所述两相邻横向线条中最小线条纵轴位置;根据公 式|yl-y〇-h〇|进行计算,若满足|yl-y〇-h〇| <Δ1ι,则确定所述两相邻横向线条处于所述 页的同一表格中,其中,hO为所述目标纵向线条的线条纵轴位置,Δ h为预设偏差阔值。
[0097] 进一步,文字位置信息包括文字横轴位置和文字纵轴位置,绘制模块63根据各文 字的文字信息,将文字信息中的文字字符信息填充在横向线条和纵向线条所构成的单元格 中与文字位置信息相对应的位置,具体为,绘制模块63根据文字的文字位置信息,确定文 字所在的单元格;对处于同一单元格中的文字,根据文字位置信息中的文字纵轴位置进行 排序,获得文字在二维数组中的纵向顺序;若至少两文字根据文字纵轴位置进行排序的顺 序相同,则根据至少两文字的文字横轴位置进行排序,获得文字在二维数组中的横向顺序; W二维数组形式,将文字对应的文字字符信息填充在所述单元格中。
[0098] 进一步,绘制模块63还用于若处于相邻页的所填充的表格满足表格合并规则,贝U 确定所述处于相邻页的填充的表格为处于相邻页的同一表格;所述表格合并规则包括:所 述处于相邻页的所填充的表格的列数相同,且在前一页所填充的表格中横向线条的最大纵 轴位置大于预设最大值,且在后一页所填充的表格中横向线条的最小纵轴位置小于预设最 小值;对满足所述表格合并规则的所述处于相邻页的所填充的表格进行合并。
[0099] 更进一步,绘制模块63还用于将所填充的表格中的表头部分转化为树形结构;其 中,所述树形结构中的各节点分别与所述表头部分中各单元格所填充的文字字符信息对 应,子节点对应的文字字符信息为所述子节点的父节点对应的文字字符信息的子类;采用 遍历所述树形结构的每一分支的方式对所述表头部分进行简化;其中,简化后的表头部分 中单元格个数等于所述树形结构中分支的个数,所述简化后的表头部分中每一个单元格中 所填充的文字字符信息包括对应的一分支中从根节点至叶子节点所对应的各文字字符信 息。
[0100] 本实施例中,通过对PDF文件进行解析,获得PDF文件中的各文字的文字信息和 各线条的线条信息之后,根据线条信息中的线条宽度和线条长度,从各线条中确定横向线 条和纵向线条,进而根据线条位置信息,对从该PDF文件的同一页中所提取的横向线条进 行排序,并针对在该页中排序后获得的两相邻横向线条,在从该页中所提取的各纵向线条 中,确定满足线条位置信息中线条纵轴位置与所述两相邻横向线条中最小线条纵轴位置相 同的目标纵向线条,根据两相邻横向线条的线条纵轴位置之差和目标纵向线条的线条纵轴 位置,判断两相邻横向线条是否处于该页的同一表格中,根据线条信息对处于该页的同一 表格中的各横向线条进行表格绘制,W及在绘制的表格中,根据线条信息对从所述页中所 提取的各纵向线条进行填充,最后在绘制的表格中,根据各文字的文字信息,将文字信息中 的文字字符信息填充在横向线条和纵向线条所构成的单元格中与文字位置信息相对应的 位置。由于考虑了表格的横向线条和纵向线条的信息,从而提高了从PDF文件中提取表格 的准确度。 阳101 ] 本领域普通技术人员可W理解:实现上述各方法实施例的全部或部分步骤可W通 过程序指令相关的硬件来完成。前述的程序可W存储于一计算机可读取存储介质中。该程 序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟 或者光盘等各种可W存储程序代码的介质。
[0102] 最后应说明的是:W上各实施例仅用W说明本发明的技术方案,而非对其限制; 尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其 依然可W对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征 进行等同替换;而运些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技 术方案的范围。
【主权项】
1. 一种基于PDF文件的表格提取方法,其特征在于,包括: 对PDF文件进行解析,获得所述PDF文件中的各文字的文字信息和各线条的线条信息; 所述文字信息包括文字字符信息和文字位置信息;所述线条信息包括线条位置信息、线条 宽度和线条长度;所述线条位置信息包括线条横轴位置和线条纵轴位置; 根据所述线条信息中的线条宽度和线条长度,从各线条中确定横向线条和纵向线条; 根据所述线条位置信息,对从所述PDF文件的同一页中所提取的横向线条进行排序; 针对在所述页中排序后获得的两相邻横向线条,在从所述页中所提取的各纵向线条 中,确定满足线条位置信息中线条纵轴位置与所述两相邻横向线条中最小线条纵轴位置相 同的目标纵向线条; 根据所述两相邻横向线条的线条纵轴位置之差和所述目标纵向线条的线条纵轴位置, 判断所述两相邻横向线条是否处于所述页的同一表格中; 根据线条信息对处于所述页的所述表格中的各横向线条进行表格绘制,以及在绘制的 表格中,根据线条信息对从所述页中所提取的各纵向线条进行填充; 在所述绘制的表格中,根据各文字的文字信息,将文字信息中的文字字符信息填充在 横向线条和纵向线条所构成的单元格中与文字位置信息相对应的位置。2. 根据权利要求1所述的方法,其特征在于,所述对PDF文件进行解析,获得所述TOF 文件中的文字信息和线条信息,包括: 利用TOFBox软件对PDF文件进行解析,获得所述PDF文件中的文字信息; 根据所述PDF文件中用于标识线条结束的操作符,提取所述PDF文件中的线条信息。3. 根据权利要求1所述的方法,其特征在于,所述根据所述线条信息中的线条宽度和 线条长度,从各线条中确定横向线条和纵向线条,包括: 若所述线条信息中的线条宽度大于线条长度,则确定所述线条为横向线条; 若所述线条信息中的线条宽度不大于线条长度,则确定所述线条为纵向线条。4. 根据权利要求1所述的方法,其特征在于,所述根据所述两相邻横向线条的线条纵 轴位置之差和所述目标纵向线条的线条纵轴位置,判断所述两相邻横向线条是否处于所述 页的同一表格中,包括: 计算所述两相邻横向线条的线条纵轴位置之差(yl-y〇);其中,yl为所述两相邻横向 线条中最大线条纵轴位置,y〇所述两相邻横向线条中最小线条纵轴位置; 根据公式|yl-y〇-h〇|进行计算,若满足|yl-y〇-h〇| <Ah,则确定所述两相邻横向线 条处于所述页的同一表格中,其中,hO为所述目标纵向线条的线条纵轴位置,Λ h为预设偏 差阈值。5. 根据权利要求1所述的方法,其特征在于,所述文字位置信息包括文字横轴位置和 文字纵轴位置; 所述根据各文字的文字信息,将文字信息中的文字字符信息填充在横向线条和纵向线 条所构成的单元格中与文字位置信息相对应的位置,包括: 根据文字的文字位置信息,确定文字所在的单元格; 对处于同一单元格中的文字,根据文字位置信息中的文字纵轴位置进行排序,获得文 字在二维数组中的纵向顺序; 若至少两文字根据文字纵轴位置进行排序的顺序相同,则根据至少两文字的文字横轴 位置进行排序,获得文字在二维数组中的横向顺序; 以二维数组形式,将文字对应的文字字符信息填充在所述单元格中。6. 根据权利要求1-5任一项所述的方法,其特征在于,所述在所述绘制的表格中,根据 各文字的文字信息,将文字信息中的文字字符信息填充在横向线条和纵向线条所构成的单 元格中与文字位置信息相对应的位置之后,还包括: 若处于相邻页的所填充的表格满足表格合并规则,则确定所述处于相邻页的所填充的 表格为处于相邻页的同一表格;所述表格合并规则包括:所述处于相邻页的所填充的表格 的列数相同,且在前一页所填充的表格中横向线条的最大纵轴位置大于预设最大值,且在 后一页所填充的表格中横向线条的最小纵轴位置小于预设最小值; 对满足所述表格合并规则的所述处于相邻页的所填充的表格进行合并。7. 根据权利要求1-5任一项所述的方法,其特征在于,所述在所述绘制的表格中,根据 各文字的文字信息,将文字信息中的文字字符信息填充在横向线条和纵向线条所构成的单 元格中与文字位置信息相对应的位置之后,还包括: 将所填充的表格中的表头部分转化为树形结构;其中,所述树形结构中的各节点分别 与所述表头部分中各单元格所填充的文字字符信息对应,子节点对应的文字字符信息为所 述子节点的父节点对应的文字字符信息的子类; 采用遍历所述树形结构的每一分支的方式对所述表头部分进行简化;其中,简化后的 表头部分中单元格个数等于所述树形结构中分支的个数,所述简化后的表头部分中每一个 单元格中所填充的文字字符信息包括对应的一分支中从根节点至叶子节点所对应的各文 字字符信息。8. -种基于PDF文件的表格提取装置,其特征在于,包括: 解析模块,用于对PDF文件进行解析,获得所述PDF文件中的各文字的文字信息和各线 条的线条信息;所述文字信息包括文字字符信息和文字位置信息;所述线条信息包括线条 位置信息、线条宽度和线条长度;所述线条位置信息包括线条横轴位置和线条纵轴位置; 确定模块,用于根据所述线条信息中的线条宽度和线条长度,从各线条中确定横向线 条和纵向线条; 绘制模块,用于根据所述线条位置信息,对从所述PDF文件的同一页中所提取的横向 线条进行排序;针对在所述页中排序后获得的两相邻横向线条,在从所述页中所提取的各 纵向线条中,确定满足线条位置信息中线条纵轴位置与所述两相邻横向线条中最小线条纵 轴位置相同的目标纵向线条;根据所述两相邻横向线条的线条纵轴位置之差和所述目标纵 向线条的线条纵轴位置,判断所述两相邻横向线条是否处于所述页的同一表格中;根据线 条信息对处于所述页的所述表格中的各横向线条进行表格绘制,以及在绘制的表格中,根 据线条信息对从所述页中所提取的各纵向线条进行填充;在所述绘制的表格中,根据各文 字的文字信息,将文字信息中的文字字符信息填充在横向线条和纵向线条所构成的单元格 中与文字位置信息相对应的位置。9. 根据权利要求8所述的装置,其特征在于, 所述解析模块,具体用于利用TOFBox软件对PDF文件进行解析,获得所述PDF文件中 的文字信息;根据所述TOF文件中用于标识线条结束的操作符,提取所述PDF文件中的线条 信息。10.根据权利要求8所述的装置,其特征在于, 所述确定模块,具体用于若所述线条信息中的线条宽度大于线条长度,则确定所述线 条为横向线条;若所述线条信息中的线条宽度不大于线条长度,则确定所述线条为纵向线 条。
【文档编号】G06F17/22GK105988979SQ201510083646
【公开日】2016年10月5日
【申请日】2015年2月16日
【发明人】闫丹凤, 钱直儒, 唐皓瑾, 侯宾, 王家鑫
【申请人】北京邮电大学, 北京中软万维网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1