如何解决使用pdfminerPython从特定的轮廓或目标不是页码中提取文本
我正在使用pdfminer.six从PDF文件中提取文本。我曾尝试过其他PDF提取器,但只有pdfminer可以按他们需要的方式处理文本。
我想从符合搜索条件的特定轮廓(书签)中提取文本。
PDFDocument
类具有用于提取轮廓的方法get_outlines
。它返回一个元组生成器,其中包含大纲的 level,标题,目的地和其他信息。 “目标”值是由PDFObjRef
类实例和其他信息组成的列表。
这是从get_outlines
返回的数据的样子:
(...)
(1,“帐户信息客户端20”,[PDFObjRef:3918,/“ FitH”,36],无,无)
(1,“帐户信息客户端21”,[PDFObjRef:3931,/'FitH',36],无,无)
(...)
pdfminer文档页面上说,“某些PDF文档使用页码作为目标,而其他PDF文档则使用页码和页面的实际位置”。
上面示例中的PDFObjRef
的编号不是页码:我在此示例中使用的PDF只有933页。
正如我在一开始所说的,我只需要从PDF文件的许多轮廓之一中提取文本。 使用以下代码段,我可以创建一个生成器并提取序列中的每个页面:
from io import StringIO
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfinterp import PDFResourceManager,PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfparser import PDFParser
output_string = StringIO()
with open('samples/simple1.pdf','rb') as in_file:
parser = PDFParser(in_file)
doc = PDFDocument(parser)
rsrcmgr = PDFResourceManager()
device = TextConverter(rsrcmgr,output_string,laparams=LAParams())
interpreter = PDFPageInterpreter(rsrcmgr,device)
for page in PDFPage.create_pages(doc):
interpreter.process_page(page)
result = output_string.getvalue()
但是我不怎么指向一个特定的页面目标(或页面范围,包括两个目标之间)并仅从该片段中提取文本。
有人可以帮忙吗? 如何将PDFObjRef:3918和PDFObjRef:3931转换为页码,或者如何像这样间隔提取数据?
我正在使用Python 3.8.5和pdfminer.six。
谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。