【发布时间】:2018-07-29 23:46:50
【问题描述】:
我正在尝试使用 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 notebooks 使用的代码如下:
通过终端安装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 的问题 - 文件是否会被错误地设置为受保护或锁定,你们中是否有人知道我如何检查并打开它?
提前致谢!
【问题讨论】:
-
361 页表格?是不是内存不够了?
-
感谢@Yohst 的评论!我认为这里的记忆不是问题。省略了 361 页文档的第一页,并尝试在该页面上单独使用相同的代码(作为 1 页文档)。当我尝试打印数据框时,我刚刚收到一条响应文本,说明“无”,所以我认为 Tabula-py 在此页面上不起作用,就像其他一些被省略的页面一样。 @Yohst 您还有其他建议吗?
-
我尝试运行您的设置,但在 read_pdf() 上出现 java 错误。我认为 tabula 在后台运行 java,可能需要特定的配置。我在 macOS 上,所以不想对此感到困惑。也许是时候联系 lib 的作者了?
-
感谢您再次关注@Yohst!我也尝试重新安装java,但已经有了最新版本。图书馆的作者@chezou 要求通过 Stack Overflow 向他提出所有问题,但我似乎没有办法将我的问题通知他,所以只是希望他能在某个时候看到这一点。
标签: python pdf tabula pdf-extraction