Python 文本提取不适用于某些 pdf

Python text extraction does not work on some pdfs

我正在尝试通过 url 阅读 pdf。我遵循了许多 Whosebug 的建议,并使用 PyPdf2 FileReader 从 pdf 中提取文本。 我的代码如下所示:

url = "http://kat.kar.nic.in:8080/uploadedFiles/C_13052015_ch1_l1.pdf"
#url = "http://kat.kar.nic.in:8080/uploadedFiles/C_06052015_ch1_l1.pdf"
f = urlopen(Request(url)).read()
fileInput = StringIO(f)
pdf = PyPDF2.PdfFileReader(fileInput)

print pdf.getNumPages()
print pdf.getDocumentInfo()
print pdf.getPage(1).extractText()

我能够成功提取第一个 link 的文本。但是如果我对第二个 pdf 使用相同的程序。我没有收到任何文字。页码和文档信息似乎显示出来了。

我尝试通过终端从 Pdfminer 中提取文本,并且能够从第二个 pdf 中提取文本。

知道 pdf 有什么问题或者我使用的库有什么缺点吗?

如果您阅读 pyPDF 文档中的评论,您会发现它就在那里写着此功能不适用于某些 PDF 文件;换句话说,您正在查看库的限制。

查看这两个PDF文件,我看不出文件本身有什么问题。但是...

第一个文件包含完全嵌入的字体 第二个文件包含子集字体

这意味着第二个文件更难从中提取文本,并且库可能不支持正确的。仅供参考,我使用 callas pdfToolbox(注意,我隶属于此工具)进行了文本提取,它使用 Acrobat 文本提取,并且为两个文件正确提取了文本(确认问题不是 PDF 文件) .