接上一篇笔记: Linux 系统上安装 Ghostscript 压缩PDF体积,其实在 windows 下安装更简单,直接下载压缩包安装即可,然后把 Ghostscript 安装目录的 bin 加到环境变量 Path 中,另外使用 gswin32c 或 gswin64c 命令而不是 gs 了。

现在使用 Ghostscript 来将 PDF 文档的每一页拆分成单张图片,我们直接使用命令:
gs -sDEVICE=png16m -dNOPAUSE -dQUIET -dBATCH -dSAFER -dGraphicsAlphaBits=4 -r300 -sOutputFile=output_path/page-%04d.png"
主要参数说明:
-sDEVICE=png16m用来输出png图片-r300控制分辨率-sOutputFile=output_path/page-%04d.png拆分的图片保存到output_path目录下,批量命名为page-0001.png,page-0002.png。
Ghostscript 当然还支持更多格式的输出,比如 JPEG,TIFF 等,具体参考文档:Details of Ghostscript Output Devices
刚拆完一本两百页的扫描件过来补充:-r300 出来的 png 单页能到 1.5MB,一百页就是一两个 G,磁盘直接告急。后来我改成先 -r200 出 jpeg,-dJPEGQ=75,体积降了一大截,肉眼几乎看不出差别。如果只是为了预览,200dpi 足够了。
刚在 Windows 上试了 Ghostscript 批量拆 PDF,第一个坑就是中文路径直接报错,得先改文件名。想问下如果是扫描件的双层 PDF(带 OCR 文本层),拆成图片之后文字层会不会丢?我现在的做法是先拆图,再单独用 OCR 重新识别一遍,但这样等于白跑一次,有点浪费。
理论上这个工具只负责拆,应该跟解析没啥关系,扫描件一般就直接OCR了,在自己电脑上部署一个小模型OCR还是很好用的,准确率也非常高。
另外,如果有打印需求,建议分辨率不能太低