Pdfplumber 无法识别表 python

Joa*_*Mok 1 python tabular pdf-extraction

我使用 Pdfplumber 提取第 2 页第 3 节(通常)上的表格。但它仅适用于某些 pdf,其他则不起作用。对于失败的 pdf 文件,似乎 Pdfplumber 读取按钮表而不是我想要的表。

我怎样才能拿到桌子?无效的pdf链接: pdfA

有效的pdf链接: pdfB

这是我的代码:

import pdfplumber
pdf = pdfplumber.open("/Users/chueckingmok/Desktop/selenium/Shell Omala 68.pdf")
page = pdf.pages[1]
table=page.extract_table()

import pandas as pd
df = pd.DataFrame(table[1:], columns=table[0])
df
Run Code Online (Sandbox Code Playgroud)

结果是 在此处输入图片说明

但是我想要在第 2 页中的表格是 在此处输入图片说明

但是,此代码适用于 pdfB(我在上面提到过)。

顺便说一句,我想要在每个 pdf 中的表格在第 3 节中。

任何人都可以帮忙吗?

非常感谢琼

Fai*_*aiz 5

嘿,这是该问题的正确解决方案,但首先请阅读我下面的一些观点

  • 好吧,您使用 pdfplumber 进行表格提取,但我认为您应该阅读有关表格设置的信息,当您根据需要阅读表格时,表格设置太多了,您肯定会从那里找到答案。PdfPlumber API - 表提取在这里
  • 到目前为止,我在下面为您的问题提供了完美的解决方案,但首先正确检查 pdfplumber API 的文档,您肯定可以从那里找到所有答案,而且我确信将来您不需要询问有关使用表提取的问题pdfplumber,因为您肯定会从那里找到有关表格提取以及其他内容(例如文本提取、单词提取等)的所有解决方案。
  • 为了更好地理解表格设置,您还可以使用可视化调试,这是 pdfplumber 的最佳功能,用于了解表格设置对表格的作用以及它如何使用表格设置提取表格。表的可视化调试

以下是您问题的解决方案,

import pandas as pd
import pdfplumber 
pdf = pdfplumber.open("GSAP_msds_01259319.pdf")
p1 = pdf.pages[1]
table = p1.extract_table(table_settings={"vertical_strategy": "lines", 
                                         "horizontal_strategy": "text", 
                                         "snap_tolerance": 4,})
df = pd.DataFrame(table[1:], columns=table[0])
df
Run Code Online (Sandbox Code Playgroud)

查看上面代码的输出