安装 JBIG2 编码器

大多数 Linux 发行版不包含 JBIG2 编码器,因为 JBIG2 编码曾长期拥有专利。所有已知的 JBIG2 美国专利已于 2017 年到期,但可能存在未知专利。

JBIG2 编码推荐用于 OCRmyPDF,它用于无损地创建更小的 PDF。如果 JBIG2 编码不可用,将对单色图像使用质量较低的 CCITT 编码。

JBIG2 解码没有专利,并且大多数 PDF 查看器会自动执行。它得到广泛支持,自 2001 年以来一直是 PDF 规范的一部分。

JBIG 编码由以下 OCRmyPDF 包自动提供: - Docker 镜像(Ubuntu 和 Alpine) - Snap 包 - ArchLinux AUR 包 - Alpine Linux 包 - macOS 上的 Homebrew

对于所有其他平台,您需要从源代码构建 JBIG2 编码器

git clone https://github.com/agl/jbig2enc
cd jbig2enc
./autogen.sh
./configure && make
[sudo] make install

依赖项包括 libtoolize 和 libleptonica,在 Ubuntu 系统上它们被打包为 libtool 和 libleptonica-dev。在 Fedora (35) 上,它们被打包为 libtool 和 leptonica-devel。为了使其正常工作,请确保首先安装 autotoolsautomakelibtoolpkg-configleptonica(如果尚未安装)。根据您的系统,可能需要其他依赖项。

[sudo] apt install autotools-dev automake libtool libleptonica-dev pkg-config

有损模式 JBIG2

OCRmyPDF 提供有损模式 JBIG2 作为一项高级且潜在危险的功能。用户应查阅关于有损模式下 JBIG2 的技术问题,并决定此功能是否适用于其用例。通常,此模式不应用于存档目的,不应在原始文档不可用或将被销毁时使用,也不应在文档中出现的数字很重要时使用,因为存在 6/8 和 8/6 替换错误的风险。

JBIG2 有损模式确实比任何其他单色(双色调)压缩技术实现更高的压缩率;对于大型文本文档,节省的空间非常可观。JBIG2 无损模式仍然提供很高的压缩率,并且比旧的 CCITT G4 标准有了显著改进。

要开启 JBIG2 有损模式,添加参数 --jbig2-lossy。参数生效还需要 --optimize {1,2,3}。此外,必须按照上一节所述安装 JBIG2 编码器。

您可以使用 --jbig2-threshold 调整 JBIG2 压缩的阈值。默认值为 0.85,这意味着如果两个符号有 85% 的相似度,它们将被一起压缩。

由于疏忽,ocrmypdf v7.0 和 v7.1 默认使用了有损模式。