【问题标题】:PDFMiner does not parse more than 1 pagePDFMiner 不解析超过 1 页
【发布时间】:2018-09-30 07:46:19
【问题描述】:

我在 Python 3.5 中使用 PDFMiner6。它比 PyPDF2 好得多(速度较慢,但​​更准确,不会吐出一堆没有空格分隔的字母)。我试图解析这个文件:

https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2963791/ (您可以从 NIH 网站免费下载 PDF)。

我使用了这段代码(它是更大蜘蛛的一部分,但其余代码与这个问题无关):

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

class PDFMiner6(object):
    def __init__(self):
        pass

    def PdfFileReader(self, fp):
        text = []
        rsrcmgr = PDFResourceManager()
        retstr = io.StringIO()
        codec = 'utf-8'
        laparams = LAParams()
        device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
        interpreter = PDFPageInterpreter(rsrcmgr, device)
        password = ""
        maxpages = 0
        caching = True
        pagenos = set()

        for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password, caching=caching, check_extractable=True): 
            interpreter.process_page(page)
            output = retstr.getvalue()
            text.append(output)

        fp.close()
        device.close()
        retstr.close()
        return text

它完美地解析第一页,然后停止。文档的其余部分没有被解析。

我使用 PyPDF2 测试了同一个文档,它解析了整个文档,但输出的垃圾没有任何空格(因此我切换到 PDFMiner6)。所以我确定不是整个文档都没有被读取,而是解析它的代码有问题。怎么了?

编辑:我继续在不同的 PDF 文件上对其进行了测试,结果各不相同 - 它完全解析了一些文件,而另一些文件则停在第一页。这令人沮丧,因为与 PyPDF2 相比,PDFMiner6 是一个更好的解析器。

有人可以帮忙吗?

【问题讨论】:

  • 您的代码使用 Python 3.7 运行良好。我通过在结果中搜索字符串“Page 10”来验证结果
  • 您是否更改了任何设置?我一直只得到 PDF 的第一页,程序停止并且不解析文档的其余部分。我正在将 Python 3.5.5 与 Anaconda 一起使用...
  • 我没有改变任何东西。我只是实例化该类并调用方法PDFMiner6().PdfFileReader(fpin) 然后循环遍历结果以将其写入文本文件。这是结果 txt 文件file.io/C23LXV。我使用pip 安装了pdfminer.six==20170720
  • 不,我想你只有第一页——就像我一样。我链接的 PDF 只有 8 页,而不是 10 页。所以,我不确定您是如何获得“第 10 页”

标签: python pypdf2 pdfminer


【解决方案1】:

确保 pdf 是由 pdf 查看器而不是网络浏览器打开的。我有同样的问题,这就是我解决它的方法。

看起来 pdfminer 会将 Web 浏览器打开的 pdf 作为一页查看。因此,您需要确保它正在由 pdf 查看器打开,以便 pdfminer 识别出 pdf 上的页面超过 1 页。

【讨论】:

    猜你喜欢
    • 2014-05-13
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多