【问题标题】:How to return all extracted text from multiple PDFs in python?如何在python中从多个PDF中返回所有提取的文本?
【发布时间】:2020-11-08 21:56:33
【问题描述】:

这是我的代码。到目前为止,它会将 pdf 的所有内容打印到 pages 变量中。但是,我似乎无法返回相同的提取文本。我一直在通过从随机 pdf 中提取信息并将其放在我正在调用的文件夹中来测试它。如何让它以与打印相同的方式返回提取的文本?

import os
import PyPDF2 as pdf
import pandas as pd

def scan_files(root):
    for path, subdirs, files in os.walk(root):
        for name in files:
            if name.endswith('.pdf'):
                #print(name)
                pdf = PyPDF2.PdfFileReader(os.path.join(path,name))
                numPages = pdf.getNumPages()
                for p in range(0, numPages):
                        pages = ''
                        page = pdf.getPage(p)
                        pages += page.extractText()
                        pages = pages.replace('\n', '')
                        #print(pages)
                        return pages

【问题讨论】:

  • 您通过 for 循环调用的函数将在给定的 return 语句处停止,如果我是正确的,它可能只会返回第一页?描述你得到的输出
  • 现在在哪里,是的,它只打印第一页。
  • 检查我在下面给出的答案

标签: python pdf machine-learning nlp pdf-scraping


【解决方案1】:

打印文本将允许最后一个 for 循环迭代(使用您提到的“打印(页面)”)。但是,返回页面将终止正在运行的循环,并将吐出到目前为止所涵盖的文本。尝试使用类似的东西:

def scan_files(root):
    pdftext = ''
    for path, subdirs, files in os.walk(root):
        for name in files:
            if name.endswith('.pdf'):
                #print(name)
                pdf = PyPDF2.PdfFileReader(os.path.join(path,name))
                numPages = pdf.getNumPages()
                
                pages = ''                    

                for p in range(0, numPages):
                    page = pdf.getPage(p)
                    pages += page.extractText()
                    pages = pages.replace('\n', '')

                pdftext += pages

    return pdftext

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多