使用pdfminer(Python)从特定大纲或目标(而不是页码)提取文本

使用pdfminer(Python)从特定大纲或目标(而不是页码)提取文本,python,pdf,outline,pdfminer,Python,Pdf,Outline,Pdfminer,我正在使用pdfminer.six从PDF文件中提取文本。我试过其他的PDF提取器,但只有pdfminer能按我需要的方式处理文本 我想从符合搜索条件的特定大纲(书签)中提取文本 PDFDocument类具有用于提取轮廓的方法get\u outlines。它返回一个元组生成器,其中包含大纲的级别、标题、目标和其他信息。“destination”值是由PDFObjRef类实例和其他信息组成的列表 这就是从get\u outlines返回的数据的样子: (……) (1,'客户账户信息20',[PDF

我正在使用pdfminer.six从PDF文件中提取文本。我试过其他的PDF提取器,但只有pdfminer能按我需要的方式处理文本

我想从符合搜索条件的特定大纲(书签)中提取文本

PDFDocument
类具有用于提取轮廓的方法
get\u outlines
。它返回一个元组生成器,其中包含大纲的级别、标题、目标和其他信息。“destination”值是由
PDFObjRef
类实例和其他信息组成的列表

这就是从
get\u outlines
返回的数据的样子:

(……)

(1,'客户账户信息20',[PDFObjRef:3918,/'FitH',36],无,无)

(1,'客户账户信息21',[PDFObjRef:3931,/'FitH',36],无,无)

(……)

pdfminer文档页面说,“一些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.6


谢谢

你找到解决办法了吗?不幸的是我没有。但我开发了一个容易出错的解决方法:我使用pyPDF2查找大纲及其页面,将它们提取到一个新的PDF对象中,将其保存为一个临时PDF文件(使用Python内置的“tempfile”库),然后将其传递给pdfminer以提取其文本。它既不漂亮也不完美,但对我来说效果很好。你找到解决办法了吗?不幸的是,我没有。但我开发了一个容易出错的解决方法:我使用pyPDF2查找大纲及其页面,将它们提取到一个新的PDF对象中,将其保存为一个临时PDF文件(使用Python内置的“tempfile”库),然后将其传递给pdfminer以提取其文本。它既不漂亮也不完美,但对我来说效果很好。