加快(但保持文件大小较小)将多个 PNG 转换为 PDF?
Posted
技术标签:
【中文标题】加快(但保持文件大小较小)将多个 PNG 转换为 PDF?【英文标题】:Speed up (yet keep file size low) conversion of multiple PNGs to PDF? 【发布时间】:2017-08-01 03:36:34 【问题描述】:我需要清理/运行 OCR 的 9k PDF 扫描文本。每个 PDF 的页面都是保存为 .ccitt
的图像,我使用此 Poppler(对于 Windows7)命令将其提取并转换为 .png
:
pdfimages.exe -png file_in.pdf output/images/path
清理.png
图像后,我使用this ImageMagick command 将它们重新组合成pdf
:
magick.exe convert -compress Group4 -type bilevel -monochrome input/images/path file_out.pdf
生成的 file_out.pdf
实际上小于 file_in.pdf
,但 Group4 仅压缩 18 张图像(大小从 58kb 到 140kb)最多需要 25 秒。 以这种方式将所有图像转换为 9k+ pdf 需要 65 小时 :'(
同样的事情通过GraphicsMagick:
gm convert -compress Group4 -type bilevel -monochrome input/images/path file_out.pdf
将file_out.pdf
膨胀到大小是file_in.pdf
的 40 倍以上。
我错过了什么?我认为 GraphicsMagick 应该比 ImageMagick 更精简/更简洁。
【问题讨论】:
不幸的是,如果不安装mingw
和 GNU Parallel,您将无法在 Windows 下简单地使用所有 CPU 内核,因此一般来说,除了其中一个之外,其他所有内核都会闲置。考虑将您的 PDF 列表拆分为 4 个相等的子列表,并一次运行 4 个命令提示符,每个命令提示符处理一个列表。
【参考方案1】:
ImageMagick 不是用于 PDF 等矢量图像的良好处理器。它将光栅化您的 PDF 并将每个点保存为 pdf 的一个元素。这可能是它需要这么长时间的原因。 PDF 现在是矢量外壳中的光栅图像(比原始矢量图像大得多)。
如果您输入的 PDF 已经是黑白的,那么您只需要压缩组 4。
从 25 KB PDF 开始
如果我只是转换它。
time magick ImageOnly.pdf result1.pdf
real 0m0.276s
user 0m0.563s
sys 0m0.038s
time magick ImageOnly.pdf -compress Group4 result2.pdf
real 0m0.275s
user 0m0.562s
sys 0m0.036s
所以不是第 4 组压缩导致它下降。
但是,质量不会很好。因此,在阅读 PDF 之前应该添加 -density 300 。但这会减慢速度。
time magick -density 300 ImageOnly.pdf -compress Group4 result3.pdf
real 0m2.026s
user 0m2.863s
sys 0m0.182s
【讨论】:
这很好地加快了速度。它肯定仍然很慢......但删除无关的convert
语句有很大帮助。感恩!以上是关于加快(但保持文件大小较小)将多个 PNG 转换为 PDF?的主要内容,如果未能解决你的问题,请参考以下文章