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

Extract images from PDF, how to handle JBIG2 encoded

我有一堆 PDF 文件,有些是纯文本,但有些完全或部分保存为 "One image per page",因为它们是从扫描仪生成的。

我需要提取 PDF 中包含的所有图像,然后分别检查每个图像。

我能够使用在此处找到的 python 脚本提取 大部分图像 请参阅问题:

Extract images from PDF without resampling, in python?

一些包含的图像是使用 JBIG2 编码的,我找不到任何 python 或其他工具来将 jbig2 转换成可以用通用图形工具轻松打开的东西。

嗯,我已经为此苦苦挣扎了好几个星期,SO 的许多答案帮助我度过了难关,但总有一些遗漏,显然这里没有人遇到过 jbig2 编码图像的问题。

在我要扫描的一堆PDF中,jbig2编码的图片很受欢迎。

据我了解,有许多 copy/scan 机器可以扫描文件并将其转换为充满 jbig2 编码图像的 PDF 文件。

所以经过多天的测试,决定去寻找很久以前 dkagedal 提出的 here 的答案。

这是我在 linux 上的逐步:(如果你有另一个 OS 我建议使用 linux docker 会容易得多。)

第一步:

apt-get 安装 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 个不同的文件中,一个用于 header,一个用于数据

我又浪费了很多天的时间试图找出如何将这些文件转换成可读的东西,最后我遇到了这个名为 jbig2dec

的工具

所以首先你需要安装这个神奇的工具:

apt-get 安装 jbig2dec

那么你可以运行:

jbig2dec -t png -145.jb2g -145.jb2e

您将最终能够将所有提取的图像转换成有用的东西。

祝你好运!