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

时间:2018-10-11 13:17:26

标签: python pdf pypdf2

我正在尝试从PyPDF下载的PDF文件中获取文本。 这是我的代码:

if not PyPDF2.PdfFileReader('download.pdf').isEncrypted:
    PyPDF2.PdfFileReader('download.pdf').getPage(0).extractText()

这是输出:

'\n\n˘ˇ˘ˆ˙\n˝˛˚˜!\n\n\n\n#\nˇ˘ˆ˙ˆ˝˛˝\n˙˙˘ ˘ˆ"˝\n$!%˙(˝)˙*˜+,˝-.#/.(#0)0)/.1.+02345.\n˛˛ˇ/#.$/0/70/#.+322.32˙˘˛˘˘\n˛˘ 8˙˘9:˘ˆ;\n˛˘\n\n˝=\n˙˘˛\n.ˇ<9:˘ˇˇ%˘˛ˇ ˘˘<˘\n˝>"?˝˘$@<˘*ˆˆ˘˙˘A˘B˘˙˘˛ˇ!˛˘˙˘˛ˇ˘\n1C˙ˆ˘06˛˘8+˛9:˘D10+E˝ˆ˘8\n$˘˘9:˘˘1C˙ˆ˘+˘F˛˘D$1+FE˝˘˛˘˘<˘?˝\n////)*˘1˘˛ ?GG˜*HI\nD˘˙A˘E\nJ$\n˛\nDLE///M˛˝˛˙˘˛˘˛\n˛˘˛>"?\n˙˘˛\n˛\n/)M6;˝˛˙˘˛˘\n˛\n///˛\n\n'

当我打开文件时,它的内容很好。另外,当我使用另一个程序将pdf转换为txt时,它也可以正常工作。它是网页上用javascript呈现的pdf文件,不知道是否有任何区别。

2 个答案:

答案 0 :(得分:0)

以下内容摘自文档(https://pythonhosted.org/PyPDF2/PageObject.html

  

extractText()找到所有文本绘制命令,顺序为它们   在内容流中提供,并提取文本。这很好   对于某些PDF文件,但对于其他PDF文件则效果不佳,具体取决于生成器   用过的。将来会对此进行完善。不要依赖顺序   此功能产生的文字,如果此功能会更改   变得更加复杂。返回:一个Unicode字符串对象。

因此,该功能的性能似乎取决于pdf本身。

答案 1 :(得分:0)

在Win 7,Python 3.6下,我遇到了PyPDF2无法正确编码某些PDF文件的问题。我的解决方案是使用pdfminer.six。

pip install pdfminer.six

要从PDF中提取文本,您可以使用以下功能:https://stackoverflow.com/a/42154976/9524424

对我来说做得很好...