Poppler: 超强的 PDF 转换和导出工具

Poppler Logo

poppler 是一个用于 PDF 提取、转换、修改等用途的 lib 库,功能强大,速度飞快。

本文里使用 https://arxiv.org/abs/2411.03628 这篇 PDF 来演示 poppler 的用途。

安装 poppler

在 Ubuntu 下可以安装 poppler-utils 包 apt install poppler-utils。macOS 下 brew install poppler

它包含 12 个命令行工具。

pdfimages–提取 PDF 中的图片

使用 pdfimages 命令来提取 PDF 中的图片

例如 PDF 原文档 15 页如下

图片提取出来可能包含多个文件(多个alpha通道?不懂)

pdftoppm–把 PDF 页面转成图片

使用 pdftoppm 直接把 PDF 页面转成图片。支持生成 png、jpg、ppm 格式。

这里提取 PDF 的第 15 页,生成 png 图片。默认按照 ppi 为 150 生成 png。

PDF 文件按 A4 纸大小计算,ppi 是 72。所以指定 ppi 为 150 时,实际上图片被放大为 2 倍。

可以用 -r 参数来指定 ppi(放大倍数)

pdftoppm 还可以截取 PDF 页面的部分内容而不是整页生成图片。使用x、y、W、H 来指定截取范围。x、y是截图区域的左上角(0坐标是页面的左上角),W、H 是截图区域的宽度和高度

切图时的 x, y, W, H 示意图

转换并切图的效果

pdftocairo–PDF 页面转成图片 Cairo 版

pdftocairo 支持生成的图片格式更多,支持:png、jpeg、tiff,支持 svg 无损矢量图,支持转成 pdf 文件。同样支持使用x、y、W、H 来指定截取范围,但注意这里的数值是原页面 100% 缩放时的坐标和宽高

这张图片是 svg 格式,右键“新建标签页打开图像”后,可以无损放大图片

pdftotext–提取pdf中的文本

pdftotext 直接提取 PDF 中的文本

提取第 15 页的文本如下

pdftohtml 把 PDF 转成 html

pdftohtml 可以直接把 PDF 转成 html,内嵌图片、表格、自带链接

生成的 html 内嵌图片,但图片背景是整页
生成的html文字是绝对定位,表格处理的不好

总结

poppler-utils 包含了几个特别有用的工具:PDF转图片、html、文本等。转图片的工具非常实用,支持指定范围切图。转文本、html 的工具对表格处理不够好,还不足以 LLM Ready。这套工具速度特别快,适合作为底层工具构建其他产品。