0

这是我的代码。到目前为止,它会将 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
4

1 回答 1

0

打印文本将允许最后一个 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
于 2020-07-19T15:28:33.777 回答