当前位置: 首页 > 知识库问答 >
问题:

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

曹臻
2023-03-14

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

共有1个答案

束帅
2023-03-14

如果您阅读pyPDF留档中的注释,您会看到它就写在那里,该功能对某些PDF文件不起作用;换句话说,您正在查看库的限制。

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

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

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

 类似资料:
  • 问题内容: alert(myVar1); return false; var myVar1; 上面的代码在IE,FF和Opera中引发错误,表明return语句必须包含在函数中。但它可以在Safari和Chrome中运行(显示)。 以上代码已在全局范围内编写。以外的所有功能。 任何原因? 问题答案: 在javaScript中,将变量移到脚本顶部,然后运行。所以当你运行它会做 这是因为javascr

  • 我在GitHub中使用这个项目:https://github.com/gankit0701/Face-Mask-Detection-In-android-App 这个使用TensorFlow Lite for mobile(Android)。它检测一个人是否戴面具。它在面部顶部绘制一个框(红色/绿色)。 我奇怪的问题是,如果我直接在设备上安装演示APK,面罩检测工作正常。但是当我在Android

  • 我们用FCM创建了一个带有通知的聊天应用程序,我的代码是正确的,我的设备也得到了推送通知数据,但一些中国制造的设备,如vivo、oppo、一加、小米,不允许通知显示,除非我在各自厂商的受保护的应用程序列表中添加应用程序。他们有没有办法解决这个问题。 https://hackernoon.com/notifications-in-android-are-horribly-broken-b8dbec6

  • 问题内容: 我正在尝试在本地文件中发出请求,但是我不知道何时尝试在计算机上显示错误。是否可以在项目中提取文件? 问题答案: 您的JSON文件需要由服务器提供服务,因此您需要快速服务器(或任何其他服务器)。在这个例子中,我们使用 express 。 注意: 您也可以下载git repo App.js文件 server.js

  • 问题内容: 我想知道是否可以仅使用Javascript将文本包含在PDF文件中?如果是,谁能告诉我如何? 我知道有一些服务器端的Java,C#等库,但我宁愿不使用服务器。谢谢 问题答案: 这是一个古老的问题,但是由于pdf.js多年来一直在发展,所以我想给出一个新的答案。也就是说,它可以在本地完成,而无需涉及任何服务器或外部服务。新的pdf.js具有一个函数:page.getTextContent

  • 我的问题是: 如何从按列划分的PDF文件中提取文本,以获得由该列分隔的结果? 背景:我从事一个关于文本分析(尤其是科学文本)的项目。这些文本有时以多列布局发布,每列都有单独的页码。要按布局页码对提取的文本进行排序,按列提取文本会很有用。 我使用pdfBox并尝试/搜索了以下内容: 我尝试了类的getThreadBeads()方法- 问题是pdfBox似乎会自动将文本按列划分:如果我将PDFText