一种通过浏览器直接获取PDF中表格内容的方法与流程

文档序号:18465559发布日期:2019-08-17 02:25阅读:316来源:国知局
本发明涉及一种pdf表格内容提取的方法,具体涉及一种通过浏览器直接获取pdf表格内容的方法。
背景技术
::pdf的全称为portabledocumentformat,也称为便携文档格式。pdf文件可以完美表现文件的原始样式(完美保真),不会因为使用软件或系统的不同而产生不同的显示效果;pdf文件屏幕显示和打印输出就是操作者想要的样子。因此,越来越多的企业使用pdf文件进行传输。目前,网络上传播的文档多数都是pdf格式文件,当需要从pdf文档中提取所需要的内容,尤其是表格中的数据时,需要在复制粘贴表格内容后整理表格格式,当表格数据比较大时,操作起来非常繁琐。目前,现有技术中的pdf解析服务,需要消耗大量的服务器资源,来对pdf表格进行提取解析;然而,在解析过程中,有时会遗漏一些表格,有时还会解析乱码等,表格解析效果不好。现有的pdf解析服务无法很好的满足人们的需求,很难快速从pdf文件中提取出自己所需要的表格内容,尤其是对于数据收集的人群而言,大量提取pdf表格内容会存在困难,无法快速准确地提取表格内容。由于上述原因,本发明人对现有的技术进行改造,研究出一种通过浏览器直接获取pdf中表格内容的方法。技术实现要素:为了克服上述问题,本发明人进行了锐意研究,设计出一种通过浏览器直接获取pdf中表格内容的方法,所述方法中浏览器将上传的pdf文件渲染为html视图层和canvas视图层,通过分别提取pdf中表格在html视图层和canvas视图层中的坐标信息,确定表格中不同内容的相对位置,经过浏览器的渲染转化,实现了pdf中表格内容的提取。具体来说,本发明的目的在于提供一种通过浏览器直接获取pdf表格内容的方法,该方法包括步骤,(1)将待解析的pdf文件上传至网站,在网站中打开该pdf文件,网站左侧显示pdf原文,右侧在pdf文件解析后显示对应的解析结果,浏览器获取鼠标在pdf区域划选的需要解析的表格;(2)利用浏览器中的canvas技术,扫描和收集选中区域的所有像素值和位置信息,根据表格的框线位置信息确定表格交点的位置信息;(3)将得到的交点位置信息转换为浏览器中的坐标信息,确定表格交点的坐标信息;(4)通过交点的坐标信息,准确提取选中区域中文字/数字的内容和坐标信息;(5)抽取表格内容。本发明所具有的有益效果包括:(1)本发明提供的通过浏览器直接获取pdf中表格内容的方法,不依赖于后台服务,通过浏览器的计算能力,即可完成表格的解析,服务器资源占用少;(2)由于canvas技术会对pdf文件或选中区域进行全面扫描,使用本发明提供的方法进行表格解析时不会遗漏表格;(3)利用canvas技术对表格中的绘图元素进行精准的扫描和记录,并最终统一为浏览器的坐标信息,使得表格框线在解析时不会出现乱码问题,解析效果好;(4)可以根据需求选中目标区域进行表格解析,可以快速解析得到所需要的表格,针对性强。附图说明图1示出根据本发明一种优选实施方式的通过浏览器获取pdf表格内容方法的流程图;图2示出实施例1中待解析的表格;图3示出实施例1中解析后得到的表格;图4示出实施例2中待解析的表格;图5示出实施例2中待解析的表格框线补充完整后的表格样式;图6示出实施例2中解析后得到的表格。具体实施方式下面通过附图和实施例对本发明示例性详细说明。通过这些说明,本发明的特点和优点将变得更为清楚明确。在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。此外,下面所描述的本发明不同实施方式中涉及的技术特征只要彼此之间未构成冲突就可以相互结合。根据本发明提供的一种通过浏览器直接获取pdf中表格内容的方法,所述pdf文件指的是非图片格式的pdf文件。本发明提供的方法如图1所示,通过分步提取表格框线的坐标信息和表格单元格内的表格内容,实现表格的解析。具体而言,本发明提供的方法包括以下步骤:步骤(1)、将待解析的pdf文件上传至网站,在网站中打开该pdf文件,网站左侧显示pdf原文,右侧在pdf文件解析后显示对应的解析结果,浏览器获取鼠标在pdf区域划选需要解析的表格。本发明并不是利用需要下载安装的软件进行pdf文件的转换,而是利用浏览器中的计算能力完成解析,不依赖于网络的后台服务。在步骤(1)中,首先,将待解析的pdf文件上传至网站,通过浏览器对上传的pdf文件进行渲染。所述渲染是指将pdf文件在加载网页后,通过浏览器的渲染引擎对pdf文件的转化,使其成为与浏览器适应的文件或元素。通过渲染,pdf区域分为两层视图。其中,上层视图为html视图层,其中包含有pdf文件中文字/数字的内容和坐标信息;下层文件为canvas视图层,其中包含有绘图信息,例如,pdf文件中表格的背景颜色、框线等。在本发明中,可以对pdf文件中所有的表格进行解析,优选对选中区域的表格进行解析,这样,可以有针对性的快速提取所需要的表格。其中,鼠标在pdf区域划选需要解析的表格,浏览器获取鼠标的点击位置信息和范围信息,可以获取选中区域,从而确定解析区域的范围。步骤(2)、利用浏览器中的canvas(画布)技术,扫描和收集选中区域的所有像素值和位置信息,根据表格的框线位置信息确定表格交点的位置信息。canvas技术通过javascript逐像素渲染进行图形绘制的,所述像素是指图像中的一个基本单元,通过多个基本单元的组合形成不同形状和颜色的图形。所述浏览器中的canvas技术,可以对浏览器中显示屏上的图像进行像素扫描和位置信息收集;当选中浏览器中的部分区域时,canvas技术还可以对选中区域的图像进行像素扫描和位置信息收集。在步骤(2)中,利用canvas技术对上传至浏览器的pdf文件进行扫描,收集pdf文件或pdf文件中选中区域的像素值和位置信息。在pdf文件或浏览器页面中,左右方向为x轴,上下方向为y轴,任意一点的位置记录为(x,y)。在pdf文件或浏览器页面中,可以设定页面的任意一个页边拐角点为原点,优选在浏览器的pdf文件页面中,以文件页面顶端的左侧拐角点为原点,例如可以记为(0,0);当沿原点向下移动时,y轴值变大;当沿原点向右移动时,x轴值变大。而对于pdf文件的选中区域,可以设定选中区域的任意一个边缘线拐点为定位点,优选以选中区域顶端的左侧拐点为定位点,例如可以记为[0,0];当沿定位点向下移动时,y轴值变大;当沿定位点向右移动时,x轴值变大。在pdf文件的选中区域中,以定位点在选定区域的对角点作为表格的终点,以定位点沿x轴和y轴延伸,以终点沿x轴和y轴延伸,二者形成的封闭区域即为待解析的表格区域。利用canvas技术对pdf文件的选中区域分别进行x轴方向和y轴方向的逐像素扫描,记录各个方向扫描得到的像素值和位置信息。扫描时,canvas技术对pdf文件选中区域进行整行或整列的扫描,能够扫描选中区域的所有像素值,得到表格中每个单元格的准确位置,通过单元格的位置来提取出每个单元格的内容。在本发明中,所述pdf文件选中区域中优选含有待解析表格,所述待解析的表格可以为无边框表格或有边框表格。当所述待解析的表格为有边框表格时:利用canvas技术在选中区域平行于y轴、沿x轴方向移动进行扫描,扫描到黑色连续区域,即整列黑色像素单元时,记录黑色连续区域在x轴的位置信息;例如,扫描和记录到的位置信息为[0,0]、[a1,0]、[a2,0]、[a3,0]和[a4,0],a1、a2、a3和a4可以为任意阿拉伯数字或数字范围。在选中区域平行于x轴、沿y轴方向移动进行扫描,扫描到黑色连续区域,即整行黑色像素单元时,记录黑色连续区域在y轴的位置信息;例如,扫描和记录到的位置信息为[0,0]、[0,b1]、[0,b2]、[0,b3]和[0,b4],b1、b2、b3和b4可以为任意阿拉伯数字或范围。由于canvas技术扫描和记录的是整行和整列连续区域的像素值和位置信息,因此,通过x轴的位置信息和y轴的位置信息,可以确定有边框表格中黑色框线交点处的位置信息。例如,当canvas技术扫描和记录得到的x轴信息为[0,0]、[a1,0]、[a2,0]、[a3,0]和[a4,0],y轴信息为[0,0]、[0,b1]、[0,b2]、[0,b3]和[0,b4]时,可以得到表格中框线交点的位置信息,即:[0,0]/[0,b1]/[0,b2]/[0,b3]/[0,b4];[a1,0]/[a1,b1]/[a1,b2]/[a1,b3]/[a1,b4];[a2,0]/[a2,b1]/[a2,b2]/[a2,b3]/[a2,b4];[a3,0]/[a3,b1]/[a3,b2]/[a3,b3]/[a3,b4];[a4,0]/[a4,b1]/[a4,b2]/[a4,b3]/[a4,b4]。在对有边框表格进行扫描时,canvas技术扫描和记录灰度值为0-180的黑色连续区域的像素值和位置信息,这样,当有边框表格中线条的黑色颜色稍淡时,依旧可以使用本发明提供的方法对有边框表格进行解析和提取表格内容。有些表格中存在有边框和无边框并存的情况,对于这样的表格进行内容提取时,任选地,可以将表格框线补充完全后,按照有边框表格进行扫描和位置信息提取。例如,当表格中的框线缺少行线和/或列线时,可以对缺少的行线和/或列线手动补充,使表格中框线完整。优选移动鼠标在待补充框线的表格中绘制行线和/或列线,更优选移动鼠标在选中区域内绘制行线和/或列线。鼠标移动时,浏览器可以监控到鼠标的移动位置,canvas技术沿着鼠标移动位置绘制线条。然后,将框线补充完整后的表格按照上述步骤进行像素值扫描和位置信息提取。当所述待解析的表格为无边框表格时:对于无边框表格而言,可以认为其表格内容被不同的“白色线条”分割,因此,当canvas技术在扫描时选中区域,在x轴方向和y轴方向如果没有扫描到黑色连续区域,即,整行或整列黑色像素单元时,则以白色为扫描对象。canvas技术在选中区域平行于y轴、沿x轴方向移动进行扫描,扫描到白色连续区域,即整列白色像素单元时,记录白色连续区域在x轴的位置信息。在选中区域平行于x轴、沿y轴方向移动进行扫描,扫描到白色连续区域,即整行白色像素单元时,记录白色连续区域在y轴的位置信息。通过x轴的位置信息和y轴的位置信息,可以确定无边框表格中“白色线条”交点处的位置信息,从而解析和还原无边框表格中的表格。根据得到的表格“白色线条”交点位置信息可以确定表格中“白色框线”的位置信息,从而解析和还原无边框表格中的表格。在对无边框表格进行扫描时,canvas技术扫描和记录灰度值为180-255的白色区域的像素值和位置信息,这样,当无边框表格中填充有淡颜色时,依旧可以使用本发明提供的方法对无边框表格进行解析和提取表格内容。当利用canvas技术对pdf文件的选中区域进行解析时,还可以这样解析并得到选中区域的位置信息:当鼠标选中上传至浏览器的pdf文件中的待解析区域时,浏览器可以监控到到鼠标的选中区域,canvas技术对选中区域分别进行x轴方向和y轴方向的扫描,并读取选中区域在canvas视图层中框线的像素值和坐标信息,从而得到不同框线之间的相互位置关系。例如,对于选中区域的定位点,其在选中区域的位置信息为[0,0],其在canvas视图层中的坐标信息为(c,d),c和d可以为任意阿拉伯数字或数字范围。利用pdf文件上传至浏览器后渲染得到的下层视图层(canvas视图层)得到选中区域的坐标信息,同样适用于有边框表格、无边框表格和边框不完全表格的解析。通过canvas技术扫描,可以将pdf文件中的表格或pdf文件中选中区域的表格,通过框线交点位置信息,准确定位表格中各框线在解析后文件中的相互位置,即,实现了pdf文件中表格的解析。步骤(3)、将canvas技术扫描得到的框线位置信息转换为浏览器中的坐标信息,确定框线的坐标信息。由于canvas技术扫描得到的框线位置信息是以定位点为基础,而通过浏览器的html视图层获取的文字/数字的内容和坐标信息是以浏览器中pdf页面边缘拐点为原点,二者位置信息的基准(原点)不同,无法直接利用获取的内容和位置信息解析和还原pdf表格内容。因此,有必要将canvas扫描得到的框线位置信息和通过浏览器的html视图层获取的文字/数字的坐标信息进行转换,使二者位置信息基于相同的基准(原点)。在一种优选的实施方式中,将canvas扫描得到的框线的位置信息转换为canvas视图层中的坐标位置信息。由于pdf文件经浏览器渲染后得到的html视图层和canvas视图层的坐标原点相同,所以,当将canvas扫描得到的框线的位置信息转换为canvas视图层中的坐标位置信息后,即可使canvas扫描得到的框线与通过浏览器的html视图层获取的文字/数字具有相同的坐标原点。例如,将canvas扫描得到的框线的位置信息转换为以浏览器中pdf页面上端和左侧边缘拐点为原点的坐标位置信息。这时,根据选中区域的定位点在浏览器渲染后的canvas中获取的在浏览器中的坐标信息,确定选中区域定位点与浏览器中pdf页面原点的转换值,从而将步骤(2)中得到的表格框线交点的位置信息转换为表格框线在浏览器中的坐标信息。例如,通过转换,表格框线交点在浏览器中的坐标信息为:[0+c,0+d]/[0+c,b1+d]/[0+c,b2+d]/[0+c,b3+d]/[0+c,b4+d];[a1+c,0+d]/[a1+c,b1+d]/[a1+c,b2+d]/[a1+c,b3+d]/[a1+c,b4+d];[a2+c,0+d]/[a2+c,b1+d]/[a2+c,b2+d]/[a2+c,b3+d]/[a2+c,b4+d];[a3+c,0+d]/[a3+c,b1+d]/[a3+c,b2+d]/[a3+c,b3+d]/[a3+c,b4+d];[a4+c,0+d]/[a4+c,b1+d]/[a4+c,b2+d]/[a4+c,b3+d]/[a4+c,b4+d]。当canvas技术通过canvas视图层获取表格框线的位置信息时,所述位置信息便为在浏览器中坐标信息,其与通过浏览器的html视图层获取的文字/数字具有相同的坐标原点,不必再进行位置信息的转换。步骤(4)、通过框线的坐标信息,在浏览器的html视图层中准确提取选中区域中文字/数字的内容和坐标信息。pdf文件上传至浏览器后,经浏览器渲染后的html视图层中包含有pdf文件中文字/数字内容,同时,还具有该文字/数字内容所对应的坐标信息,即,pdf文件中文字/数字在浏览器中的位置信息;对于选中区域内的文字/数字内容和坐标信息,同样可以通过pdf文件在浏览器中的html视图层中获取。在步骤(3)中,通过canvas技术获得了表格中框线的准确位置信息,并将位置信息转换为坐标信息。通过框线的坐标信息,可以在html视图层中提取pdf文件或选中区域内表格中每个单元格内的内容和坐标信息,从而实现了pdf文件中或pdf文件选中区域中文字/数字内容的解析。步骤(5)、抽取表格内容将得到的表格框线坐标信息、表格内容、内容所对应的坐标信息分别再次经浏览器的渲染引擎转化,提取形成可视化的、可编辑的转化表格,在转化表格中保留了原表格中框线的相对位置、文字的内容以及文字的相对位置,从而实现了从pdf文件表格中抽取表格内容。优选的,解析后的表格展示在网页的右侧,也就是待解析的pdf文件的右侧;更优选的,所述解析后的表格时可编辑的。并且,所述表格还可以在下载时设置为excel格式,便于对表格内容进行更为系统的计算和编辑。由于canvas技术会对pdf文件或选中区域进行全面扫描,因此,使用本发明提供的方法进行表格解析时不会遗漏表格;同时,利用canvas技术对表格中的绘图元素进行精准的扫描和记录,并最终统一为浏览器的坐标信息,使得表格框线在解析时不会出现乱码问题,解析效果好。本发明提供的通过浏览器直接获取pdf中表格内容的方法,不依赖于后台服务,通过浏览器的计算能力,即可完成表格的解析,服务器资源占用少;另外,还可以根据需求选中目标区域进行表格解析,可以快速解析得到所需要的表格,针对性强。实施例实施例1pdf文件内容为某校某年级1班的期中考试成绩,该成绩是一个无边框表格,如图2所示,对该pdf格式的表格进行内容提取。将该pdf文件上传至网站中,浏览器的渲染引擎对pdf文件进行渲染,分为html视图层和canvas视图层。其中,html视图层中包含有文字与数字的内容和坐标信息;canvas视图层包括背景颜色和框线信息。浏览器可以监控到鼠标选中的表格区域浏览器中的canvas技术对无边框表格(如图2所示)进行扫描,扫描和收集表格的像素值和位置信息,确定框线交点的位置信息。从canvas视图层中得到的表格横线在y轴坐标信息为:107,131,151,170,190,209,228,248,267,287,306,325,345,364,384,403,422,442,461,480;竖线在x轴的坐标信息为:47,131,188,225,267,320,379,430,485,533,581,683。在表格框线交点canvas视图层中的坐标信息为:(47,107),(131,107),(188,107),(225,107),(267,107),(320,107),(379,107),(430,107),(485,107),(533,107),(581,107),(683,107);(47,131),(131,131),(188,131),(225,131),(267,131),(320,131),(379,131),(430,131),(485,131),(533,131),(581,131),(683,131);(47,151),(131,151),(188,151),(225,151),(267,151),(320,151),(379,151),(430,151),(485,151),(533,151),(581,151),(683,151);(47,170),(131,170),(188,170),(225,170),(267,170),(320,170),(379,170),(430,170),(485,170),(533,170),(581,170),(683,170);(47,190),(131,190),(188,190),(225,190),(267,190),(320,190),(379,190),(430,190),(485,190),(533,190),(581,190),(683,190);(47,209),(131,209),(188,209),(225,209),(267,209),(320,209),(379,209),(430,209),(485,209),(533,209),(581,209),(683,209);(47,228),(131,228),(188,228),(225,228),(267,228),(320,228),(379,228),(430,228),(485,228),(533,228),(581,228),(683,228);(47,248),(131,248),(188,248),(225,248),(267,248),(320,248),(379,248),(430,248),(485,248),(533,248),(581,248),(683,248);(47,267),(131,267),(188,267),(225,267),(267,267),(320,267),(379,267),(430,267),(485,267),(533,267),(581,267),(683,267);(47,287),(131,287),(188,287),(225,287),(267,287),(320,287),(379,287),(430,287),(485,287),(533,287),(581,287),(683,287);(47,306),(131,306),(188,306),(225,306),(267,306),(320,306),(379,306),(430,306),(485,306),(533,306),(581,306),(683,306);(47,325),(131,325),(188,325),(225,325),(267,325),(320,325),(379,325),(430,325),(485,325),(533,325),(581,325),(683,325);(47,345),(131,345),(188,345),(225,345),(267,345),(320,345),(379,345),(430,345),(485,345),(533,345),(581,345),(683,345);(47,364),(131,364),(188,364),(225,364),(267,364),(320,364),(379,364),(430,364),(485,364),(533,364),(581,364),(683,364);(47,384),(131,384),(188,384),(225,384),(267,384),(320,384),(379,384),(430,384),(485,384),(533,384),(581,384),(683,384);(47,403),(131,403),(188,403),(225,403),(267,403),(320,403),(379,403),(430,403),(485,403),(533,403),(581,403),(683,403);(47,422),(131,422),(188,422),(225,422),(267,422),(320,422),(379,422),(430,422),(485,422),(533,422),(581,422),(683,422);(47,442),(131,442),(188,442),(225,442),(267,442),(320,442),(379,442),(430,442),(485,442),(533,442),(581,442),(683,442);(47,461),(131,461),(188,461),(225,461),(267,461),(320,461),(379,461),(430,461),(485,461),(533,461),(581,461),(683,461);(47,480),(131,480),(188,480),(225,480),(267,480),(320,480),(379,480),(430,480),(485,480),(533,480),(581,480),(683,480)。在html视图层中提取数字和文字的内容信息与坐标信息。将得到的表格框线坐标信息、表格内容、内容所对应的坐标信息分别再次经浏览器的渲染引擎的渲染作用,在网站右侧展示出抽提得到的表格内容,如图3所示。实施例2pdf文件中的表格为某人的个人信息,该表格为边框不完全表格,如图4所示,对该表格进行内容提取。将该pdf文件上传至网站,浏览器的渲染引擎对pdf文件进行渲染,将该pdf文件渲染为html视图层和canvas视图层。浏览器可以监控到鼠标选中的表格区域,使用者移动鼠标将该表格的边框补充完全,浏览器感应到鼠标移动,canvas技术沿鼠标移动位置绘制框线,将表格内缺失的框线绘制完全,如图5所示。浏览器中的canvas技术对该边框表格进行扫描,得到表格在选中区域中的位置信息。其中,竖线在x轴的位置信息为:[0,0]、[171,0]、[576,0];横线在y轴的位置信息为:[0,0]、[0,28]、[0,55]、[0,83]、[0,111]、[0,138]、[0,166]、[0,194]、[0,238]。canvas技术在pdf文件的canvas视图层中获取选中区域原点[0,0]在canvas视图层中的坐标信息,为(109,727)。将框线转换为canvas视图层中的坐标信息,即竖线在x轴坐标信息为:109,280,685;横线在y轴坐标信息为:727,755,782,810,838,865,893,921,965。由于canvas视图层的坐标原点与html视图层的坐标原点相同,因此,框线交点在浏览器中的坐标信息为:(109,727),(280,727),(685,727)(109,755),(280,755),(685,755)(109,782),(280,782),(685,782)(109,810),(280,810),(685,810)(109,838),(280,838),(685,838)(109,865),(280,865),(685,865)(109,893),(280,893),(685,893)(109,921),(280,921),(685,921)(109,965),(280,965),(685,965)。在html视图层中提取数字和文字的内容信息与坐标信息。将得到的表格框线坐标信息、表格内容、内容所对应的坐标信息分别再次经浏览器的渲染引擎的渲染作用,在网站右侧展示出抽提得到的表格内容,如图6所示。在本发明的描述中,需要说明的是,术语“上”、“下”、“内”、“外”“前”“后”等指示的方位或位置关系为基于本发明工作状态下的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”、“第四”仅用于描述目的,而不能理解为指示或暗示相对重要性。以上结合了优选的实施方式对本发明进行了说明,不过这些实施方式仅是范例性的,仅起到说明性的作用。在此基础上,可以对本发明进行多种替换和改进,这些均落入本发明的保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1