Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python从PDF中提取文本_Python_Pdf - Fatal编程技术网

Python从PDF中提取文本

Python从PDF中提取文本,python,pdf,Python,Pdf,我有许多不同结构的PDF,我需要从中提取文本并找到一些关键指标 我使用pyPdf模块,如果PDF没有检索任何文本,我也使用PDF Miner 问题是,对于某些文件,没有模块工作,即没有从PDF中提取文本。我看到其中一些是扫描的,或者仅仅是图像PDF,但其中一些似乎有一个可以解析的常量结构 以下是我使用的两个函数,可能我遗漏了一些东西: 使用pyPdf 使用PDF Miner 我通常使用从PDF文件中提取文本。但是,如果它们仅包含扫描的图像,则可能需要使用OCR工具运行以提取文本。请注意,某些PD

我有许多不同结构的PDF,我需要从中提取文本并找到一些关键指标

我使用pyPdf模块,如果PDF没有检索任何文本,我也使用PDF Miner

问题是,对于某些文件,没有模块工作,即没有从PDF中提取文本。我看到其中一些是扫描的,或者仅仅是图像PDF,但其中一些似乎有一个可以解析的常量结构

以下是我使用的两个函数,可能我遗漏了一些东西:

使用pyPdf 使用PDF Miner 我通常使用从PDF文件中提取文本。但是,如果它们仅包含扫描的图像,则可能需要使用OCR工具运行以提取文本。请注意,某些PDF文档可能受到版权保护,在这种情况下,提取将失败。并非所有文本都可以从所有可能的PDF中正确提取。请发布一个链接到您的代码失败的PDF之一,以便我们可以检查这是否完全无法完成,或者仅仅是由于pyPDF的缺陷。你也可以尝试用AdobeReader复制你的文本,AdobeReader是标准的PDF阅读器,也是最好的文本提取工具之一。如果它也失败了,那么非Adobe产品成功的机会非常小。我通常使用它从PDF文件中提取文本。但是,如果它们仅包含扫描的图像,则可能需要使用OCR工具运行以提取文本。请注意,某些PDF文档可能受到版权保护,在这种情况下,提取将失败。并非所有文本都可以从所有可能的PDF中正确提取。请发布一个链接到您的代码失败的PDF之一,以便我们可以检查这是否完全无法完成,或者仅仅是由于pyPDF的缺陷。你也可以尝试用AdobeReader复制你的文本,AdobeReader是标准的PDF阅读器,也是最好的文本提取工具之一。如果它也失败了,那么非Adobe产品获得成功的机会非常小。
def getPDFContent(path):
        content = ""
        pdf = pyPdf.PdfFileReader(file(path, "rb"))
        for i in range(0, pdf.getNumPages()):
            content += pdf.getPage(i).extractText() + " "
        content = " ".join(content.replace(u"/xa0", " ").strip().split())
        return content
mt = getPDFContent(filename).encode("ascii", "xmlcharrefreplace")
def getPDFContent(path):
    rsrcmgr = PDFResourceManager()
    retstr = StringIO()
    codec = 'utf-8'
    laparams = LAParams()
    device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
    fp = file(path, 'rb')
    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)
        retstr.write("nextpage")
    text = retstr.getvalue() 

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