Gav*_*vrk 5 python pdf pypdf python-3.x pdf-extraction
为了从多页 PDF 中获取单个字符串,我这样做:
import PyPDF2
pdfFileObject = open('sample.pdf', 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObject)
count = pdfReader.numPages
for i in range(count):
page = pdfReader.getPage(i)
output = page.extractText()
output
Run Code Online (Sandbox Code Playgroud)
结果是来自单个页面(文档中的最后一页)的字符串 - 正如PyPDF2 文档中应有的那样。我应用这种方法是因为我读过一些人建议它阅读整个 PDF,但这对我来说不起作用。
显然,这是一个基本操作,对于我缺乏经验,我提前表示歉意。我尝试了其他解决方案,如 Tika、PDFMiner 和 Textract,但 PyPDF 似乎是迄今为止唯一让我满意的解决方案。
任何帮助,将不胜感激。
更新:
按照建议,我将 an 定义output为一个列表,然后将所有页面附加到它(正如我所想的)循环中,如下所示:
for i in range(count):
page = pdfReader.getPage(i)
output = []
output.append(page.extractText())
Run Code Online (Sandbox Code Playgroud)
结果是列表中的单个字符串,例如['sample content from the last page of PDF']
难道是因为这一行:
output = page.extractText()
Run Code Online (Sandbox Code Playgroud)
试试这个:
output += page.extractText()
Run Code Online (Sandbox Code Playgroud)
因为在您的代码中,您将覆盖“输出”变量的值,而不是附加到它。不要忘记在 for 循环之前声明“输出”变量。所以output = ''之前for i in range(count):