gpt4 book ai didi

python - Tabula-py 省略了我试图提取的 PDF 文档中的页面

转载 作者:行者123 更新时间:2023-12-05 06:32:00 28 4
gpt4 key购买 nike

我正在尝试使用 tabula-py 从多页 PDF 中提取表格,虽然 PDF 的某些页面上的表格被完美提取,但一些页面被完全省略

遗漏似乎是随机的,不遵循 PDF 上的任何可见视觉特征(因为每个页面看起来都一样),因此表格省略了第 1 页,提取了第 2 页,省略了第 3 和 4 页,提取了第 5 页,省略第 6 页,提取第 8 页和第 9 页,省略第 10 页,提取第 11 页等。我有 macOS Sierra 10.12.6 和 Python 3.6.3::Anaconda 自定义(64 位)。

我试过将 PDF 分成较短的部分,甚至分成一页纸,但无论我尝试什么,似乎都无法提取被省略的页面。我已经阅读了相关文档并在 Tabula-py GitHub 页面以及 Stack Overflow 上提交了问题,但我似乎没有找到解决方案。

我通过 iPython 笔记本使用的代码如下:

通过终端安装 tabula:

pip install tabula-py

要提取我的 PDF 中的表格:

from tabula import read_pdf
df = read_pdf("document_name.pdf", pages="all")

我还尝试了以下,但没有任何区别

df = read_pdf("document_name", pages="1-361")

将数据框保存到 csv 中:

df.to_csv('document_name.csv')

如果您能帮我解决这个问题,我将非常感谢,因为我感觉自己被 PDF 困住了,我只能从中提取大约 50% 的数据。这令人气愤,因为 50% 看起来绝对完美,但另外 50% 似乎超出了我的能力范围,并且使分析数据的更大项目变得不可能。

我还想知道这是否可能是 PDF 而不是 Tabula 的问题 - 文件是否会被错误地设置为 protected 或锁定,是否有人知道我如何检查并打开它?

提前致谢!

最佳答案

这可能是因为您在 PDF 文件中的数据区域超出了 tabula 正在读取的区域。尝试以下操作:

首先通过将其中一个页面解析为 JSON 格式(这里我选择第 2 页)来获取数据的位置,然后提取并打印位置:

tables = read_pdf("document_name.pdf", output_format="json", pages=2, silent=True)
top = tables[0]["top"]
left = tables[0]["left"]
bottom = tables[0]["height"] + top
right = tables[0]["width"] + left
print(f"{top=}\n{bottom=}\n{left=}\n{right=}")

您现在可以尝试通过实验稍微扩展这些位置,直到您从 PDF 文档中收到更多数据:

# area = [top, left, bottom, right]
# Example from page 2 json output: area = [30.0, 59.0, 761.0, 491.0]
# You could then nudge these locations slightly to include a wider data area:
test_area = [10.0, 30.0, 770.0, 500.0]

df = read_pdf(
"document_name.pdf",
multiple_tables=True,
pages="all",
area=test_area,
silent=True, # Suppress all stderr output
)

并且 df 变量现在将保存包含 PDF 数据的表格。

关于python - Tabula-py 省略了我试图提取的 PDF 文档中的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51585444/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com