首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从我试图提取的PDF文档中省略页面

从我试图提取的PDF文档中省略页面
EN

Stack Overflow用户
提问于 2018-07-29 23:46:50
回答 2查看 3.5K关注 0票数 3

我试图用tabula-py从多页PDF中提取表格,虽然PDF的某些页面上的表被完美地提取出来,但是-一些页面被完全省略了

遗漏似乎是随机的,并且不遵循PDF上任何可见的视觉特性(因为每一页看起来相同),因此表格省略了第1页、提取的第2页、省略的第3和第4页、提取的第5页、省略的第6页、提取的第8和9页、省略的10、提取的11等等。我有macOS塞拉利昂10.12.6和Python 3.6.3 ::Anaconda自定义(64-bit)。

我尝试过将PDF分成更短的部分,甚至是一个寻呼机,但是不管我尝试了什么,省略的页面似乎都不可能提取出来。我已经阅读了相关文档,并在Tabula-py GitHub页面上以及在堆栈溢出上归档了问题,但我似乎没有找到解决方案。

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

要通过终端安装tabula:

代码语言:javascript
复制
pip install tabula-py

要提取PDF中的表格:

代码语言:javascript
复制
from tabula import read_pdf
df = read_pdf("document_name.pdf", pages="all")

我还尝试了以下几种方法,但没有起到任何作用

代码语言:javascript
复制
df = read_pdf("document_name", pages="1-361")

要将数据帧保存到csv中:

代码语言:javascript
复制
df.to_csv('document_name.csv')

如果你能帮我做这件事的话,我真的很感激,因为我觉得我被一个PDF文件困住了,我只从其中提取了大约50%的数据。这是令人恼火的,因为50%看起来绝对完美,但其余的50%似乎超出了我的能力范围,使得分析数据的更大项目无法进行。

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

提前谢谢你!

EN

回答 2

Stack Overflow用户

发布于 2020-03-27 11:55:07

这可能是因为PDF文件中的数据区域超过了表格正在读取的区域。尝试以下几点:

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

代码语言:javascript
复制
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文档收到更多数据:

代码语言:javascript
复制
# 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数据保存表。

票数 1
EN

Stack Overflow用户

发布于 2018-08-08 07:15:03

尝试使用java_options (如:java_options="-Xmx4g" )

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51585444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档