使用 PyPDF2 从 PDF 文件中提取文本

Posted

技术标签:

【中文标题】使用 PyPDF2 从 PDF 文件中提取文本【英文标题】:Extracting text from a PDF file using PyPDF2 【发布时间】:2019-10-22 19:12:06 【问题描述】:

这是我在这里的第一个问题,所以如果它最终出现在错误的地方或者我错过了任何有价值的信息,我深表歉意。总的来说,我对编码和 python 也非常陌生。

我正在使用 Python 3.7.4(v3.7.4:e09359112e,2019 年 7 月 8 日,14:54:52)

我正在尝试编写一些代码,从 PDF 文件中提取所有文本并将其放入一个值中(我知道,简单的东西!)。

我已经设法让它在 1 页 pdf 上正常工作,但是在尝试 96 页 PDF 时,我只能将第一页和最后一页提取到该值。这是我正在使用的代码:

pdfFile2 = open('/filepath/ir-2030.pdf', 'rb')
irReader = PyPDF2.PdfFileReader(pdfFile2)

pageNum2 = str(irReader.numPages)
print('Your document has ' + pageNum2 + ' pages' + '\n')

for pN in range(irReader.numPages):
    ir2030 = irReader.getPage(pN).extractText()

print(ir2030)

我之前使用过几乎相同的编码,它可以正常工作,但由于我不知道的原因,我只从print(ir2030) 获得了 pdf 文档的第 1 页和第 96 页的返回

任何帮助将不胜感激,或者如果有更好的方法来做我想做的事情......

干杯

【问题讨论】:

【参考方案1】:

每次迭代,您都会重置 ir2030 的值。也许将值附加到列表中?

ir2030s = []
for pN in range(irReader.numPages):
    ir2030s.append(irReader.getPage(pN).extractText())

print(ir2030)

或者使用列表推导:

ir2030s = [irReader.getPage(pN).extractText() for pN in range(irReader.numPages)]

【讨论】:

以上是关于使用 PyPDF2 从 PDF 文件中提取文本的主要内容,如果未能解决你的问题,请参考以下文章

用python操作PDF文件

pdf及word文档的读取 pyPDF2,docx

PyPDF2如何实现按照PDF页码提取后并另存为PDF格式文件?

从 PDF 中提取文本 - 所有页面和输出 - 使用 Python 的文件

利用python去除pdf水印

用PDFMiner从PDF中提取文本文字