pdfminer提取LTFigure对象后面的文本

2024-09-19 23:26:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用PythonPdfMiner库从pdf文件中提取文本(请参见docs

但是,pdfminer似乎无法提取某些文件中的所有文本,而是提取LTFigure对象。假设从这个对象的位置来看,它“覆盖”了一些文本,所以这个文本并没有被提取出来

pdf文件和带有从pdf中提取信息的代码的简短jupyter笔记本都位于Github存储库中,我专门创建该存储库是为了问这个问题:

https://github.com/druskacik/ltfigure-pdfminer

我不是pdf文件工作原理方面的专家,但常识告诉我,如果我可以在浏览器中使用control + f查找文本,它应该是可提取的

我曾考虑使用其他一些库,但问题是,我还需要提取单词的位置(以便将它们用于我的机器学习模型),这似乎是pdfminer提供的功能


Tags: 文件对象代码https文本github信息docs
2条回答

好的,我终于想出了解决办法。这很简单-可以像迭代LTTextBox对象一样迭代LTFigure对象

interpreter.process_page(page)
layout = device.get_result()

for lobj in layout:
    if isinstance(lobj, LTTextBox):
        for element in lobj:
            if isinstance(element, LTTextLine):
                text = element.get_text()
                print(text)

    elif isinstance(lobj, LTFigure):
        for element in figure:
            if isinstance(element, LTChar):
                text = element.get_text()
                print(text)

请注意,正确的方法(确保解析器读取文档中的所有内容)是递归地迭代pdfminer对象,如下所示:How does one obtain the location of text in a PDF with PDFMiner?

考虑到您也考虑其他库,我建议使用PopdUTUL的pdftohtml将PDF转换成XML:

!apt-get install -y poppler-utils
!pdftohtml -c -hidden -xml document.pdf output.xml

它将输出一个xml文件,其中包含文本以及框的顶部、左侧、宽度和高度值。pdfminer不认识的文本没有问题

相关问题 更多 >