Python文本提取在某些pdf上不起作用

时间:2015-05-16 05:45:00

标签: python pdf web-scraping pypdf pdfminer

我正在尝试通过网址阅读pdf。我遵循了许多stackoverflow建议,并使用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()

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

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

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

1 个答案:

答案 0 :(得分:0)

如果你阅读pyPDF文档中的注释,你会发现它写在那里,这个功能对某些PDF文件不起作用;换句话说,你正在考虑对图书馆的限制。

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

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

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