首页 > 解决方案 > Python PyPdf 2:返回一些 pdf 的空结果

问题描述

嗨,我有一些 pdf,我需要提取它们的文本信息。我在下面使用了以下代码:

pdfFileObj = open('abc.pdf', 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
pageObj = pdfReader.getPage(0)
pageObj.extractText()

但我得到的是一个特殊的pdf:

'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ n\n\n\n\n\n\n\n\n\n\n\n\n\n'

但是,此代码适用于我拥有的某些 pdf。可能是什么问题呢?谢谢你 。

标签: pythonpdfpypdf2

解决方案


有时 Py2PDF 不拾取文本。发生这种情况时我使用的解决方案是将 pdf 转换为 jpeg 并使用图像 ocr(带有 cv2 的 tesseract)来获取文本。您可以尝试使用的另一个库是 slate(或 Python3 的 slate3k)——虽然它不是很稳定,但您可能在安装和运行它时遇到一些问题。我最终确实让它工作了,当 Py2PDF 失败时,我能够提取文本。

石板

我用来在输入到 tesseract 之前清理 JPEG 文件的好代码——提高了文本输出的准确性。还有关于如何在 JPEG 中读取到 tesseract 的代码:这里

如果您有 Mac OSX,您可以使用os.system带有 sips 的命令将 pdf 转换为 jpeg。


推荐阅读