gpt4 book ai didi

python - 如何使用 PDFPlumber 从两列 PDF 中提取文本

转载 作者:行者123 更新时间:2023-12-05 04:46:13 26 4
gpt4 key购买 nike

我正在使用 Python 进行主题建模任务,我想从年度/可持续发展报告中提取文本。但是我的问题是,当我尝试提取报告时,提取的行在页面中两个不同的列之间被断开,即它连接了相邻段落中的两个不同的行来组成一个句子。如何完全按照报告中显示的方式提取行。我附上了报告的版本和函数提取的行。

下面是我使用的函数:

#function to get the pdf from a url:

def converter(url):
text=[]
req= requests.get(url)
with pdfplumber.open(BytesIO(req.content)) as pdf:
for i in range(0, len(pdf.pages)):
pages= pdf.pages[i]
text.append(pages.extract_text())
return "\n".join(str(i) for i in text)

The image is a snippet from the report I am extracting, the text in the report is divided into two columns and the extract_content function mixes up these two columns to get a line, i.e., joins lines in two columns and presents as a single line.

这是报告的第一行(第一列和第二列的开始由函数合并在一起):

\nOne of my first duties in 2019 was an interview When weembarked on a new strategy period \non the “Good Morning Norway” showto talk in 2016, I expressed a hope that AF would feel \nabout AF’sgoal of doubling the percentage of just as close-knit when wehopefully surpass \nwomen

如果我能按照报告中给出的准确方式提取句子,那将会很有帮助。

最佳答案

这是基于 response by samkit-jain包裹上的问题。

关键是page.crop

假设没有页眉信息,将页面裁剪成两半:

left = page.crop((0, 0, 0.5 * page.width, 0.9 * page.height))
right = page.crop((0.5 * page.width, 0, page.width, page.height)

然后提取文本并连接:

l_text = left.extract_text()
r_text = right.extract_text()
text = l_text + " " + r_text

当然,如果您报告中的某个页面有一个数字跨越两列,这种方法会搞砸,因此您可能必须按页面自定义。

关于python - 如何使用 PDFPlumber 从两列 PDF 中提取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68919080/

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