python - PyPDF2==1.26.0 文本提取不适用于某些 pdf

标签 python pdf web-scraping pypdf pdfminer

我正在尝试通过 url 阅读 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 有什么问题或者我正在使用的库有缺陷吗?

最佳答案

如果您阅读 pyPDF 文档中的注释,您会发现该功能不适用于某些 PDF 文件;换句话说,您正在考虑库的限制。

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

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

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

关于python - PyPDF2==1.26.0 文本提取不适用于某些 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30272269/

相关文章:

python - 将 Python 列表传递给 WCF 服务

python - 如何在 tensorflow 中批量训练时限制RAM使用?

linux - 来自 PDF 的图像作为 Web 服务

python - 为什么我的 linkExtractor 在 scrapy 蜘蛛中伪装成不抓取允许的链接?

python - TensorFlow PTB 教程中需要 m.initial_state.eval()

python - 使用 df.apply() 将带参数的函数应用于每一行

r - 使用 magick R 导入 PDF 时出错

php - 如何使 PDF 文件可在 HTML 链接中下载?

node.js - Nightmare : How to block loading resources?

python - 如何将 cookie/session 从 Mechanize 导出到 Selenium