判断pdf中跨页的两个表格是否应该合并的思路

一、判断前表格和后表格是否为跨页的表格

1.基于两张表格的明显特征用来快速过滤不可能是跨页的表格

(1) 前后两页的页面方向不一致,一页的方向是纵向,一页的方向是横向;
(2) 前后两张表格在同一页面内不是跨页表格;
(3) 跨页的前表格只可能是前页面的最后一个表格,同理,跨页的后表格只可能是后页面的第一个表格;
(4) 两张表格的表格类型必须是一样的,必须同为有线表格或同为无线表格;
(5) 前后两表必须在合理的位置,如前一张表格的底部位置要在页面的下方,如移除页眉页脚的有内容区域作为页面的有效区域,前一表格的底部位置应该在前一页面有效区域的下方20%的区域内,后一表格的顶部位置应该站在后一页面有效区域的上方40%的区域内;
(6) 判断前一表格的底部是否还有除注释和页脚外的内容,或者判断后一表格的顶部是否有页眉外的内容,如果存在则两表格不是跨页表格。

2.综合表格属性判断表格是否是跨页表格

如果满足1中的所有条件,则两格表格的特征属性根据重要程度进行加权,记为wi,设定一个可以合并的阈值,记为,则判断两表格为跨页表格,必须满足以下公式:


在这里插入图片描述

权重判断标准如下:
(1)如果两个表格中其中存在一个或以上,则权重记为0.3;
(2)如果两表格的列数相同,则权重记为0.6;
(3)如果两表格的宽度相同,则权重记为0.6;
(4)如果两表格前表最后一行和后表第一行,纯文字单元格、数字单元格对应,则权重记为0.6;
(5)如果两表格有相同的表头,则权重记为0.8;
(6)如果后一表格不存在表头,则权重记为0.5;
(7)如果前后表格对应的前后不存在内容,则权重记为0.5。
计算满足以上公式,则两表格为跨页表格。

二、判断后表格的第一行中是否存在跨页的单元格

1. 识别跨页表格的重复表头

找出前后表格具有相同文本的前几行,这些行视为相同的表头,对后一表格的表头行做上标记;

2. 判断的两行单元格数量是否相同

  • 如果数量不一样一般不会合并

3. 基于行内单元格特征判断跨页单元格

  • 基于明显的特征过滤
    1. 如果前后两行的第一列都是带序号的文字,则判断为否;
    2. 如果前行单元格对应的后行单元格同为带小数点的数字,则判断为否;
    3. 如果上一行单元格内区域无内容,下一行对应的单元格内有内容,则判断为否;
  • 综合单元格特征判断
    1. 标点特征:如“)”前一定会有“(”,以及“,”一定是话没有说完;
    2. 语意特征:基于LSTM训练一个二分类模型,判断两个短语是否应该合并,模型训练方法见后文。

如果以上判断正确,则将后一行的单元格合并进入前一行中。

三、表格合并后的列对齐

如果前后跨页表格的列数相同,则直接将后一表格去除重复表头后,与前一表格相接。如果前后表格列数不相同,则要将前后表的列进行对齐。

  1. 将所有的单元格左右边界进行统计,计算出合并表格中的所有列的左右范围,这里需要设定一个阈值,如果列的左右范围小于阈值,则将该列舍去;
  2. 计算表格内所有单元格与这些列的相交数量,根据相交数量确定每个单元格的行列信息。

基于LSTM训练的语意二分类模型

该模型主要作用是,判断跨页表格prevTable的最后一行,nextTable的第一行中对应的单元格是否应该合并,输出为二分类输出。
网络结构很简单,这里要说明一下的是样本的问题。

因为人力有限,样本标注其实也不用怎么样人工去标。方法是自己构造。

  1. 取某一单元格内的文本,从中间切开分为二,str1和str2即为正样本,负样本可以取不同单元格内的str1和str2,str1和str2中间加入特殊标签做embedding。
  2. 构造大概400万的样本,正负样本比为1:1.5。
  3. 对于英文、数字、非unicode码定为UNO。因为数字和英文很难去判断是否是完整的。
  4. 对于str1和str2长度不足补。后面运行feed时,注意split相应的文本长度。

你可能感兴趣的:(判断pdf中跨页的两个表格是否应该合并的思路)