背景技术
PDF是Portable Document Format(便携文件格式)的缩写,是一种电子文件格式。这种文件格式与操作系统平台无关,不管是在Windows,Unix还是Msc OS操作系统中都是通用的。PDF文件格式可以将文字、字型、格式、颜色及独立于设备和分辨率的图形图像等封装在一个文件中,会忠实地再现原稿的每一个字符、颜色以及图像,在打印机上可保证精确的颜色和准确的打印效果。该格式文件还可以包含超文本链接、声音和动态影像等电子信息,支持特长文件,集成度和安全可靠性都较高。因此,PDF成为Internet上进行电子文档发行和数字化信息传播的理想文档格式,越来越多的电子图书、产品说明、公司文告、网络资料、电子邮件开始使用PDF格式文件。
Excel是微软公司的办公软件Microsoft office的组件之一,是由Microsoft为Windows和Apple Macintosh操作系统的电脑而编写和运行的一款试算表软件。Excel是微软办公套装软件的一个重要的组成部分,其中有大量的公式函数可以执行计算,用于分析信息并管理电子表格或网页中的数据信息列表,可以进行各种数据的处理、统计分析和辅助决策操作,广泛地应用于管理、统计财经、金融等众多领域。
PDF文档中的表格内容方便查看和传播,但不便于进行编辑,需要将PDF文档中的表格内容转换成其它的文档格式,进行所需文字信息的修改、编辑和管理。PDF文档中的表格的内容需要进行修改、编辑和统计等操作时,需要先将其转换成Excel表格,再进行对应的操作步骤。
最初,PDF文档中的表格转换成Excel表格,是按照PDF表格中的内容,人工将表格中的内容,按照一定的顺序,手动输入到Excel表格中,再对表格中的内容进行操作管理。这种转化方法,对于含有大量表格信息的PDF文档来说,工作量大,耗费时间,输入过程易导致串行、输入错误等问题。
现在常用的PDF文档中的表格转换成Excel表格的方法,是使用特定的识别软件,根据PDF文档中表格的边框线,逐个识别出各边框线中的内容,按照一定的顺序,将边框线中的内容写入到Excel表格中进行转换。这种转换方法与人工输入方法相比,操作简单易行,转换时间较短,生成的Excel表格保持了原有PDF文档中的表格的排版和数据属性,减少了因人工输入而产生的错误。
此方法虽然操作简单,节省时间,但存在以下缺点:
PDF文档中的表格传换成Excel表格时,按照文档表格中的边框线将其识别为表格,提取出表格中的内容,按照一定顺序写入对应的Excel表格中,对文档中表格的边框线过分依赖,在转换时,对没有边框线或边框线不完整的表格数据无法进行正确识别,不能生成对应的Excel表格。
发明内容
有鉴于此,本发明的主要目的在于提供了一种PDF文档中的表格转换成Excel表格的方法,以实现将没有边框线或边框线不完整的PDF文档中的表格转换成Excel表格,从而达到对转换后的数据进行修改、编辑和管理的目的。
一种PDF文档中的表格转化成Excel表格的方法,其特征在于,该方法包括:
步骤A:识别PDF文档中一页中所有的文本块,确定各个文本块边界的位置坐标;
步骤B:以各个文本块横向边界坐标为划分依据,对该页进行划分得到行划分结果;以各个文本块的纵向边界坐标为划分依据,对该页进行划分得到列划分结果,由所述行划分结果和列划分结果,确定得到多个划分区域;
步骤C:根据文本块的所述位置坐标,确定各个文本块所属的划分区域;
步骤D:在Excel中按照步骤B的划分结果生成与之一致的表格,并按照步骤C所确定的结果,将各个文本块分别写入相应的表格区域中。
其中,以各个文本块横向边界坐标为划分依据,对该页进行划分得到行划分结果包括:
以各个文本块的下端边界坐标为划分依据,对该页进行划分得到行划分结果。
其中,以各个文本块纵向边界坐标为划分依据,对该页进行划分得到列划分结果包括:
选择文本块数目最多的行,以各个文本块右端边界坐标为划分依据,对该页进行划分得到列划分结果。
其中,所述步骤B和步骤C之间进一步包括:
分别判断所划分得到的行或列是否符合预先设定的行或列的设置要求,如果否,对不符合所述要求的行或列转换成符合要求的行或列。
其中,判断所划分得到的行是否符合预先设定的行的设置要求:
第一文本块与第二文本块上下相邻,所述第一文本块的下端与所述第二文本块的上端坐标间距小于第一阈值;
对不符合设置要求的行进行处理包括:增加一行,该行的上端为所述第一文本块的下端,该行的下端为所述第二文本块的上端。
其中,判断所划分得到的列是否符合预先设定的列的设置要求:
第三文本块位于第四文本块的左边,所述第三文本块和所述第四文本块的两左端位置坐标位于不同列的坐标之间;
对不符合设置要求的列进行处理包括:以所述第三文本块右端为界限增加一列。
其中,判断所划分得到的列是否符合预先设定的列的设置要求:
第六文本块位于第五文本块右端的右边,第七文本块左端的左边,所述第五文本块的右端、所述第七文本块的右端和所述第六文本块的左端和右端四个坐标位于不同列的坐标之间,
对不符合设置要求的列进行处理包括:以所述第六文本块右端为界限增加一列。
其中,所述步骤C包括:
根据文本块上端和左端的位置坐标,区域坐标确定各个文本块所述的划分区域,文本块的上端和右端位置坐标位于区域坐标范围内。
其中,所述文本块为:
由一个或几个字母或字符的组合而构成的集合
由此可见,本发明具有如下有益效果:
本发明所述的PDF文档中的表格转换成Excel表格的方法,在识别表格中的内容时,不依赖于表格的边框线,而是先识别文本块的边界位置坐标,根据文本块的边界位置坐标来划分PDF文档中表格的行数和列数,得到多个划分区域,确定文本块所属的划分区域,将文本块中的内容写入Excel表格,因此可以实现将没有边框线或边框线不完整的PDF文档中的表格转换成Excel表格,达到对转换后的数据进行编辑和管理的目的;
其次,由于对边框线不完整和没有边框线的PDF文档中表格进行转换,与现有技术相比,可以转换的PDF文档中的表格增多,提高了文档中数据表格的还原度和可编辑性。
具体实施方式
本发明为一种PDF文档中的表格转换成Excel表格的方法,先识别PDF文档中的表格所含的文本块的边界位置坐标,根据文本块的边界位置坐标来对PDF文档中表格进行行划分和列划分,得到多个划分区域,确定各个文本块所属的划分区域,将划分好区域的文本块写入对应的Excel表格中,从而实现不依赖于PDF文档中的表格的边框线,将没有边框线或边框线不完整的PDF文档中的表格转换成Excel表格的目的。
下面结合附图进行详细说明。
步骤A:识别PDF文档中一页中所有的文本块,确定各个文本块边界的位置坐标。识别需要转换的每一页PDF文档中的表格所含的全部文本块,根据文本块原有的排列顺序确定每个文本块边界的位置坐标,确定每个文本块在PDF文档表格中所处的位置。
步骤B:以各个文本块横向边界坐标为划分依据,对该页进行划分得到行划分结果;以各个文本块的纵向边界坐标为划分依据,对该页进行划分得到列划分结果,由所述行划分结果和列划分结果,确定得到多个划分区域。根据识别出的文本块的边界的位置坐标,将PDF文档中的表格所处的区域进行横向和纵向划分,得到多个划分区域。进行横向划分时,根据文本块下边界的位置坐标进行划分,划分出来的最多行数为基准行,每一个基准行对应一个水平位置坐标区域;进行纵向划分时,根据文本块右边界的位置坐标进行划分,划分出来的最多列数为基准列,每一个基准列对应一个竖直位置坐标区域。
步骤C:根据文本块的所述位置坐标,确定各个文本块所属的划分区域。根据文本块的位置坐标,将非基准行中的文本块划分到基准行,将非基准列中的文本块划分到基准列,确定各文本块所属的划分区域,保证每一个区域中存在唯一的文本块。
步骤D:在Excel中按照步骤B的划分结果生成与之一致的表格,并按照步骤C所确定的结果,将各个文本块分别写入相应的表格区域中。在Excel中生成一个表格,该表格与PDF文档中表格所划分的区域相对应,根据文本块所属的划分区域,将各文本块中的内容分别写入相应的表格区域中。
下面结合附图对具体实施例进行详细叙述,实施例对列划分时,选择含有文本块最多的那一行为基准进行纵向划分。
步骤1:识别PDF文档中一页中所有的文本块,确定各个文本块边界的位置坐标。识别需要转换的每一页PDF文档中的表格所含的全部文本块,根据文本块原有的排列顺序确定每个文本块边界的位置坐标,确定每个文本块在PDF文档表格中所处的位置。
文本块:PDF文档中的表格所含的文本块通常是由一个或几个字母或字符的组合而构成的集合。
图1为识别出来的文本块分布示意图。识别PDF文档中的表格中的文本块,确定每个文本块边界的位置坐标,根据位置坐标得到文本块在原PDF文档表格中的位置分布。
步骤2:以各个文本块横向边界坐标为划分依据,对该页进行划分得到行划分结果;以各个文本块的纵向边界坐标为划分依据,对该页进行划分得到列划分结果,由所述行划分结果和列划分结果,确定得到多个划分区域。
进行横向划分时,根据文本块横向下边界的位置坐标进行划分,将下边界位置坐标相同的文本块划分到同一行,划分出来的最多行数为基准行。
最多行数:是指每一页PDF文档中的表格识别出来的文本块的行数,根据文本块横向下边界的位置坐标进行划分,得到行数。
判断所划分的行是否符合预先设定的行的设置要求,对不符合所述要求的行换成符合要求的行。自定义第一文本块和第二文本块进行详细说明。
第一文本块与第二文本块上下相邻,所述第一文本块的下端与所述第二文本块的上端坐标间距小于第一阈值。第一阈值为自行设定的最小文本块高度值。
如果第一文本块和第二文本块上下相邻,第一文本块的下端与第二文本块的上端距离大于第一阈值,则该两基准行之间增加1行行数,即最多行数增加1行。
图2所示的是按照上面的最多行的划分方法,将最初识别的PDF文档中的表格所含的全部文本块划分出来的最多行数为5行。实例1,图中相邻两基准行中的“J”文本块相当于上述第一文本块,“K”文本块相当于上述第二文本块,“J”文本块和“K”文本块之间的间距大于第一阈值,则最多行数需要增加1行,如图3所示,最多行数为6行。
进行纵向划分时,根据文本块纵向右边界的位置坐标进行划分,选择含有文本块最多的那一行为基准进行纵向划分,划分出来的最多列数为基准列。
最多列数:是指每一页PDF文档中的表格所含文本块的列数,选择含有文本块最多的那一行,根据文本块的边界位置坐标,以每个文本块的最右端边界坐标进行纵向划分得到列数。
选择含有最多文本块的一行为基准进行纵向划分,划分最多列。根据图3可以看出,第一行含有最多文本块,有5个文本块,以这5个文本块作为基准文本块,以每个文本块最右端的边界位置坐标为界进行纵向划分,将文本块划分出5列,如图4所示,此时得到多个划分区域。。
判断所划分的列是否符合预先设定的列设置要求,对不符合所述要求的列转换成符合要求的列。自定义第三文本块到第七文本块进行详细说明。
判断所划分的列是否符合预先设定的列设置要求,第三文本块位于第四文本块的左边,所述第三文本块和所述第四文本块的两左端位置坐标位于不同列的坐标之间。
如果在同一划分区域水平范围内出现两个文本块,第三文本块和第四文本块,第三个文本块和第四个文本块的左侧和右侧位置坐标位于一列坐标之间,将这两个作为基准的文本块,以第三文本块右边界位置坐标为界进行纵向划分,最多列数增加1列。
实例2,图4中第5列第2行区域处,出现了“H”文本块相当于上述第三文本块,“I”文本块相当于上述第四文本块,则以这两个文本块为基准,以“H”文本块右边界位置坐标为界纵向划分一列,最多列数增加1列,为6列,如图5所示。
判断所划分的列是否符合预先设定的列设置要求,第六文本块位于第五文本块右端的右边,第七文本块左端的左边,所述第五文本块的右端、所述第七文本块的右端和所述第六文本块的左端和右端四个坐标位于不同列的坐标之间。
如果在第五文本块和第七文本块之间的区域出现了一个独立的第六文本块,即第六文本块的左侧和右侧位置坐标位于第五文本块右侧位置坐标和第七文本块左侧位置坐标之间,则将第六文本块作为基准的文本块,以第六文本块右边界位置坐标为界纵向划分一列,最多列数增加1列。
实例3,图5中第2列第6行区域处,“L”文本块相当于上述第五文本块,“M”文本块相当于上述第六文本块,“N”文本块相当于上述第七文本块,在“L”文本块最右端和“N”文本块最左端之间,出现了一个独立的文本块“M”,则以“M”文本块为基准,以右边界位置坐标为界进行纵向划分,最多列数增加1列,为7列,如图6所示。
步骤3:根据文本块的所述位置坐标,确定各个文本块所属的划分区域。
根据文本块的上端和左端的位置坐标,将非基准行中的文本块划分到基准行,将非基准列中的文本块划分到基准列,确定各文本块所属的划分区域,保证每一个区域中存在唯一的文本块。
划分的原则为,文本块的上边界坐标位于哪个基准行区域坐标中,就将这个文本块划分到该行;文本块的左边界坐标位于哪个基准列区域坐标中,就将这个文本块划分到该列。文本块的上边界和左边界坐标位于所属区域坐标范围之内。
步骤4:在Excel中按照步骤2的划分结果生成与之一致的表格,并按照步骤3所确定的结果,将各个文本块分别写入相应的表格区域中。在Excel中生成一个表格,该表格与PDF文档中表格所划分的区域相对应,根据文本块所属的划分区域,将各文本块中的内容分别写入相应的表格区域中。
对于文本块的写入,可以自行设定写入的顺序,可以按照从左到右从上到下的顺序进行写入;也可以全部文本块一起同时写入,写入的时候确保每一个文本块对应Excel表格中的一个单元格。
写入时,如果一列中最长的文本块的宽度小于8.38mm(Excel生成时,系统的默认值),则生成Excel的列宽取文本块中宽度最大的值;如果一列中最长的文本块的宽度大于8.38mm且小于30mm,则生成Excel的列宽取8.38mm;如果一列中最长的文本块的宽度大于30mm,则Excel的列宽为30mm。
将图6所示的全部文本块划分好以后,写入Excel表格如图7所示。“B”文本块、“C”文本块和“D”文本块等,文本块宽度小于8.38mm,则生成Excel的列宽取文本块中宽度最大的值;“I”文本块的宽度大于8.38mm,小于30mm,则生成的Excel的列宽取8.38mm;“K”文本块的宽度大于30mm,则生成的Excel列宽取30mm。其中最大列宽30mm可以根据需要自行设定。
针对实施例1的行和列的划分,可以先划分行,再划分列;也可以先划分列,再划分行,可以自行设定。
需要说明的是,本发明实施例不限于图7中对“K”文本块的自动换行显示即折行显示,用户可以根据自身的需要进行自定义,既可以选择折行显示,也可以不折行显示。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。