解析PDF时忽略表格

时间:2019-12-15 20:38:57

标签: python pdf xml-parsing pypdf2 pdfminer

我想解析pdf并删除所有表格,图片。我已经使用PyPDF2和pdfminer来解析pdf,但是它也可以解析表的内容以及其他内容。我试图将pdf转换为xml(使用pdfminer)以获得某种结构,以便可以忽略表。但是我没有有用的结构。我得到了具有不同ID的元素

 <textbox id="1" bbox="56.760,740.908,82.824,751.816">

我知道,我可以使用这些id属性忽略该表,但是我有大量的文档,使用这种方法,我必须手动检查属于表的id,以便我可以忽略它。我还有其他方法可以自动执行此任务吗?

Here is示例pdf和xml文件。

3 个答案:

答案 0 :(得分:0)

您可以使用pdfreader提取包含“ pdf markdown”的文本,然后使用您喜欢的工具(如正则表达式)解析它以跳过表格:

from pdfreader import SimplePDFViewer, PageDoesNotExist

fd = open(you_pdf_file_name, "rb")
viewer = SimplePDFViewer(fd)

pdf_markdown = ""

try:
    while True:
        viewer.render()
        pdf_markdown += viewer.canvas.text_content
        viewer.next()
except PageDoesNotExist:
    pass

text = my_cool_tables_parser(pdf_markdown)

答案 1 :(得分:0)

我也遇到过类似的问题。我想忽略表格和图表。由于我的表格和图表主要包含数字数据,因此选择了以下方法。 1.使用tika提取文本。 2.将文本分成句子。 3.使用停用词作为参考,并过滤掉至少包含一个停用词的句子。(一个句子没有任何介词就不可能)

这在很大程度上解决了问题。同样,使用这种方法,我们可以在一定程度上消除页脚,段落标题

答案 2 :(得分:0)

你能给我一些关于如何使用正则表达式跳过表格的指示吗?我在执行上面的代码时得到以下结果。
0.750000 0.000000 0.000000 -0.750000 0.000000 841.920044 厘米 q 0.000000 0.000000 0.000000 rg BT 0 吨 /F1 14.720600 Tf 1 0 0.000000 -1 96.000000 109.919998 Tm [(L) -0.851563 (i) -0.605469 (s) -12.000000 (t) 16.000000 ( ) -0.074219 (o) -0.597656 (f) -0.406250 ( ) -0.079040040.040p.04 ) 6.000000 (o) 7.000000 (r) -0.468750 (t) -0.679688 (a) -0.652344 (b) 6.000000 (l) -0.605469 (e) -7.000000 (e) -7.000000.0) (0.679688 (a) -0.652344 (b) -0.605469 (e) -7.000000.0) (0.07) 07) (07) 07 (0) -0.679688 (i) -0.605469 (n) 6.000000 (g) -6.000000 ( ) -0.074219] TJ ET 问 q 0.000000 0.000000 0.000000 rg BT 0 吨 /F2 14.720600 Tf 1 0 0.000000 -1 502.559998 109.919998 [( ) -0.074219] TJ ET