gpt4 book ai didi

python - PDFMiner - 将页面导出为字符串列表

转载 作者:行者123 更新时间:2023-11-30 21:49:58 24 4
gpt4 key购买 nike

我希望将 pdf 中的文本导出为字符串列表,其中列表是整个文档,字符串是 PDF 的页面。我正在使用 PDFMiner 来完成这项任务,但它非常复杂,而且我的截止日期很紧。

到目前为止,我已经获得了将完整 pdf 提取为字符串的代码,但我需要以字符串列表的形式。

我的代码如下

from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from cStringIO import StringIO

f = file('./PDF/' + file_name, 'rb')
data = []
rsrcmgr = PDFResourceManager()
retstr = StringIO()
codec = 'utf-8'
laparams = LAParams()
device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
# Create a PDF interpreter object.
interpreter = PDFPageInterpreter(rsrcmgr, device)
# Process each page contained in the document.

for page in PDFPage.get_pages(pdf):
interpreter.process_page(page)
data = retstr.getvalue()

print data

请帮忙。

最佳答案

当前脚本的问题是 StringIO.getvalue 始终返回一个字符串,并且该字符串包含迄今为止读取的所有数据。此外,对于每个页面,您都会覆盖存储变量data

一个修复方法是在写入之前存储 StringIO 的位置,然后从该位置读取到字符串流的末尾:

# A list for all each page's text
pages_text = []

for page in PDFPage.get_pages(pdf):
# Get (and store) the "cursor" position of stream before reading from PDF
# On the first page, this will be zero
read_position = retstr.tell()

# Read PDF page, write text into stream
interpreter.process_page(page)

# Move the "cursor" to the position stored
retstr.seek(read_position, 0)

# Read the text (from the "cursor" to the end)
page_text = retstr.read()

# Add this page's text to a convenient list
pages_text.append(page_text)

StringIO视为文本文档。您需要在添加文本时管理光标位置,并将新添加的文本一次存储一页。在这里,我们将文本存储在列表中。

关于python - PDFMiner - 将页面导出为字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28246161/

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