我已经尝试了大约一周的时间来自动从 pdf 中提取图像。不幸的是,我在这里找到的答案没有帮助。我已经看到使用 pypdf2 对同一代码进行多种变体,所有变体都包含['/XObject']
在其中,这导致KeyError
.
我正在寻找的似乎隐藏在流中,我在 's 的字典中找不到pypdf2
(即使在递归探索整个结构后,调用.getObject()
我能找到的每个间接对象)。
使用pypdf2
我已经从 pdf 中写出一页并使用 , 打开它Notepad++
,以找到一些带有/FlateDecode
过滤器的流。
pdfrw
稍微有帮助,让我可以PdfReader(path).pages[page].Contents.stream
用来获取A流(不知道如何获取其他流)。
使用zlib
,我将其解压缩,并得到以下内容:
/Part <</MCID 0 >>BDC
(它还包含很多浮点数,正负都有)
据我BDC
所知,与ghostscript有关。
此时我放弃了,决定寻求帮助。
是否有python工具至少可以提取所有流(并识别FlateDecode
标签?)
有没有办法让我识别其中隐藏的内容?我期望某些图像格式的开始标签,这显然不是。如何进一步解析此结果以找到可能隐藏在其中的任何图像?
我正在寻找可以应用于任何正确显示的 PDF 的东西。一些工具可以进一步解析,或者至少可以帮助我理解流,甚至是可以帮助我理解正在发生的事情的参考。
编辑:正如帕特里克所说,我似乎在叫错树。xObjects
我去了流,因为在打开 PDFNotepad++
或运行用于解析 PDF 的各种 python 脚本时找不到任何内容。我设法找到了我怀疑的图像,没有xObject
标签,但看起来像一个流标签 - 尽管信息没有被压缩。