PDFMiner不解析超过1个pag

2024-10-03 17:24:04 发布

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

我在python3.5中使用PDFMiner6。它远比PyPDF2好得多(速度慢,但更准确,不会吐出一堆没有空格隔开的字母)。我试着分析这个文件:

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

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

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文件上测试了它,结果各不相同——它会完全解析某些文件,而另一些文件则会在第一页停止。这是令人沮丧的,因为PDFMiner6是比PyPDF2更好的解析器。在

有人能帮忙吗?在


Tags: 文件代码textfrom文档importdevicepdfminer
1条回答
网友
1楼 · 发布于 2024-10-03 17:24:04

确保pdf是由pdf查看器而不是web浏览器打开的。我也有同样的问题,我就是这样解决的。在

看起来pdfminer将以一个页面的形式查看由web浏览器打开的pdf。因此,您需要确保它是由pdf查看器打开的,这样pdfminer才能识别出pdf中有超过1个页面。在

相关问题 更多 >