这是我的代码。到目前为止,它会将PDF的所有内容打印到pages变量中。然而,我似乎无法以相同的方式返回提取的文本。我通过从随机的PDF文件中提取信息并将其放入我正在调用的文件夹中来进行测试。我如何才能让它以打印的方式返回提取的文本呢?
import osimport PyPDF2 as pdfimport pandas as pddef 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循环继续迭代(使用您提到的“print(pages)”)。然而,返回pages将会终止正在运行的循环,并输出到目前为止覆盖的文本。试试使用如下代码:
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