从PDF中提取图像,如何处理JBIG2编码

4
我有一堆PDF文件,其中一些是纯文本,但有些是完全或部分保存为“每页一个图像”,因为它们是从扫描仪生成的。
我需要提取PDF中包含的所有图像,然后单独检查每个图像。
我能够使用在SO中找到的Python脚本提取大多数图像,请参见问题: Extract images from PDF without resampling, in python? 其中一些包含的图像是使用JBIG2编码的,我找不到任何Python或其他工具将jbig2转换为可以轻松用通用图形工具打开的格式。
2个回答

5

我已经苦苦挣扎了好几周,虽然stackoverflow上有很多答案帮助了我,但总感觉缺了些什么。显然没有人遇到过jbig2编码图片的问题。

在我要扫描的PDF文件中,使用jbig2编码的图像非常普遍。

据我所知,有许多复印/扫描机可以将纸张扫描并转换为充满jbig2编码图像的PDF文件。

因此,在经过多天的测试后,决定采用dkagedal很久以前在这里提出的答案。

以下是我在Linux上的逐步实现方法:(如果你使用另一个操作系统,我建议你使用Linux docker,这样会更容易)

第一步:

apt-get install poppler-utils 之后,我就能够运行命令行工具pdfimages,如下所示:

pdfimages -all myfile.pdf ./images_found/

使用上述命令,您将能够提取myfile.pdf中包含的所有图片并将它们保存在images_found文件夹中(您需要先创建images_found文件夹)。
在列表中,您可能会发现几种类型的图像(取决于您的pdf),如png、jpg、tiff等;所有这些都可以使用任何图形工具轻松阅读。
然后,您会看到一些文件名类似于:-145.jb2e和-145.jb2g。
这2个文件包含一个以jbig2编码的图像,存储在2个不同的文件中,其中一个用于头部,另一个用于数据。
我曾经花费了很多天的时间试图找出如何将这些文件转换为可读的内容,最终我找到了一个名为jbig2dec的工具。
因此,首先您需要安装这个神奇的工具: apt-get install jbig2dec 然后您就可以运行以下命令:
jbig2dec -t png -145.jb2g -145.jb2e

你最终将能够将所有提取出来的图片转换成有用的东西。
祝好运!

-t png真的有效吗?使用file工具,我得到的是Netpbm图像数据,大小为902 x 1523,原始位,位图,它更加可用,但似乎没有生成png类型的文件。我得到的是-145.pbm。 - undefined

1

你的回答可以通过提供更多支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人能够确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接