使用python查找和识别PDF中的流

2024-04-26 18:02:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经尝试了大约一周的时间来自动从pdf中提取图像。不幸的是,我没有找到答案。我在同一个代码中看到了使用pypdf2的多个变体,其中都有['/XObject'],这导致了KeyError。在

我要寻找的似乎是隐藏在流中的,在pypdf2的字典中找不到(甚至在递归地探索整个结构之后,对我能找到的每个间接对象调用.getObject())。在

使用pypdf2我已经从pdf中写下一页,并使用Notepad++打开它,以找到一些带有/FlateDecode过滤器的流。在

pdfrw稍有帮助,允许我使用PdfReader(path).pages[page].Contents.stream来获取A流(不知道如何获取其他流)。在

{I>开始,用cd10>解压:

/Part <</MCID 0 >>BDC

(它还包含许多浮点数,包括正数和负数)

据我所知,BDC与ghostscript有关。在

这时我放弃了,决定寻求帮助。在

是否有一个python工具来至少提取所有流(并标识FlateDecode标记)在

有没有办法让我知道里面藏着什么?我期望某个图像格式的开始标记,但这显然不是。我如何进一步解析这个结果,以找到任何可能隐藏在其中的图像?在

我要找的东西,我可以适用于任何PDF,显示正确。一些工具来进一步解析,或者至少帮助我理解流,或者甚至是一个可以帮助我理解发生了什么的引用。在

编辑:帕特里克指出,我好像找错了方向。因为在Notepad++中打开PDF时,或者运行用于解析PDF的各种python脚本时,我找不到任何{}。我设法找到了我怀疑的是图像,没有xObject标记,但是有一个看起来像流标记的图像-尽管信息没有被压缩。在


Tags: 工具答案代码标记图像pdf时间变体
1条回答
网友
1楼 · 发布于 2024-04-26 18:02:23

除非您希望提取不常见的内联图像,否则内容流不是查找图像的地方。更常见的情况是XObject类型的流和Image子类型的流,这些流通常在页面的资源->XObject字典中找到(请参见@mkl指示的PDF参考的第7.3.3、7.8.3和8.95节)。在

或者,图像XObject也可以在它们自己的资源->XObject字典中的表单XObject(子类型Form,表示它们有自己的内容流)中找到,因此可以递归地搜索图像XObject。在

图像XObject也可以有一个软掩码,它本身就是它自己的图像XObject。表单xObject也用于平铺模式,因此可以想象包含图像xObject(但它们也不那么常见),或用于注释的正常外观(但图像XObject在此类注释中使用较少,可能除了3D或多媒体注释)。在

相关问题 更多 >