Python PyPdf 2:对于某些pdf返回空结果

时间:2019-08-19 08:46:21

标签: python pdf pypdf2

嗨,我有一些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 \ n \ n \ n \ n'

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

1 个答案:

答案 0 :(得分:0)

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

Slate

在输入tesseract之前,我用来清理JPEG文件的好代码-提高了文本输出的准确性。还有关于如何在JPEG中读取以进行tesseract的代码:Here

如果您使用的是Mac OSX,则可以将os.system命令与sip一起使用,以将pdf转换为jpeg。