
合同、发票、扫描件,为什么不该上传到别人的服务器
很多人处理 PDF 的第一反应是搜一个在线工具,把文件拖进去,点一下,下载。方便,但代价是文件离开了你的电脑。合同、身份证、体检报告、工资单,都属于不该随便上传的类型。
好消息是,PDF 处理这件事早就有一整套成熟的开源工具,全部可以本地跑。下面按“合并拆分、压缩、OCR、签名”四类需求,给出五件工具和一条完整工作流。
1. QPDF:命令行里的手术刀
QPDF 不负责“编辑内容”,它负责在不损失画质的前提下操作 PDF 的结构:合并、拆分、旋转、解密、加密、线性化、重写对象流。
# 合并
qpdf --empty --pages a.pdf b.pdf 1-3 -- merged.pdf
# 拆分:取出第 2 到第 5 页
qpdf input.pdf --pages . 2-5 -- out.pdf
# 解密(已知密码)
qpdf --password=xxx --decrypt in.pdf out.pdf
# 线性化:让网页端可以边下边看
qpdf --linearize in.pdf out.pdf
它最大的价值是无损。很多在线工具为了“处理方便”,会把 PDF 重新渲染成图片再打包,结果是文件变大、文字变成图像、再也搜不到。QPDF 只动结构,不动内容。凡是能用 QPDF 解决的,不要用“另存为图片再合成”。
2. PDF Arranger:图形界面的页面重排
命令行适合批量,但整理一份几十页的扫描件时,可视化更重要。PDF Arranger 提供的是缩略图式的页面管理:拖动排序、删除空白页、把两页拼成一页、把多个文件拖进同一个窗口合并。
它的定位很明确——只做页面级的操作,不做文字编辑。这个边界让它轻、快、不容易出错。适合处理扫描件、合并报销单据、删掉扫描时多出来的空白页。
3. OCRmyPDF:给扫描件加一层看不见的文字
扫描出来的 PDF 本质是一堆图片,搜索不到、复制不了、也没法被检索。OCRmyPDF 做的事是在原图下面叠加一层不可见的文字层,视觉上完全不变,但从此可以搜索和复制。
ocrmypdf -l chi_sim+eng --deskew --clean input.pdf output.pdf
三个参数值得记住。-l 指定语言包,中文要用 chi_sim,需要提前装 Tesseract 的对应语言数据。–deskew 自动纠偏,扫描时放歪的页面会被转正。–clean 做图像清理,去掉噪点和杂色,识别率通常会有改善。
它底层调用的是 Tesseract 引擎,所以识别质量取决于扫描清晰度和语言包。手写体、复杂表格、竖排繁体,效果都会明显下降——这不是工具的问题,是当前 OCR 的普遍边界。
4. Ghostscript:压缩的正确姿势
PDF 太大,多半是因为里面的图片分辨率过高。Ghostscript 通过重采样图像来压缩,官方提供了几档预设:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.7 \
-dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH \
-sOutputFile=small.pdf input.pdf
四档预设的差别主要在图像采样上:/screen 约 72dpi,适合屏幕阅读;/ebook 约 150dpi,适合一般文档;/printer 约 300dpi,适合打印;/prepress 保留更高精度。日常传阅用 /ebook 通常就够,一份几十兆的扫描件能降到几兆。
注意一个副作用:Ghostscript 会把整个 PDF 重写一遍,原有的书签、表单域、部分元数据可能丢失。所以压缩前先留一份原始文件,别在原件上操作。
5. Stirling PDF:把上面这些装进一个网页
如果你不想记命令,Stirling PDF 是一个可以自托管的工具箱:用 Docker 一条命令跑起来,浏览器打开就是界面,功能覆盖合并、拆分、压缩、旋转、加水印、OCR、格式转换、签名。关键在于它是跑在你自己机器或内网服务器上的,文件不出局域网。
docker run -d -p 8080:8080 \
-v ./data:/data stirlingtools/stirling-pdf
它适合的场景是家庭或小团队共用:一台常开的小主机,全家人用浏览器访问,不用每个人装一堆软件。代价是要自己维护容器和更新。
6. 五件工具怎么分工
| 工具 | 形态 | 强项 | 短板 | 适合谁 |
|---|---|---|---|---|
| QPDF | 命令行 | 无损结构操作、批量脚本 | 无图形界面 | 愿意写脚本的人 |
| PDF Arranger | 桌面 GUI | 页面重排、删除、合并 | 不能编辑文字 | 整理扫描件 |
| OCRmyPDF | 命令行 | 加文字层、纠偏、清理 | 依赖 Tesseract 语言包 | 处理纸质归档 |
| Ghostscript | 命令行 | 压缩、格式转换 | 会重写文件、丢书签 | 控制文件体积 |
| Stirling PDF | 自托管 Web | 功能全、多人共用 | 需要 Docker 维护 | 家庭 / 小团队 |
7. 一条完整工作流
以“把一叠纸质材料整理成一份可检索的 PDF”为例:
- 扫描,输出为图片型 PDF,分辨率 300dpi 左右
- 用 OCRmyPDF 加文字层,参数带 –deskew –clean
- 用 PDF Arranger 删空白页、调整顺序
- 用 Ghostscript 的 /ebook 预设压到合适体积
- 需要签名时,用 Xournal++ 或 Okular 手写签名后导出
整个流程全部离线,不依赖任何在线服务。唯一需要联网的步骤是第一次安装依赖。
8. 什么时候还是该花钱
开源工具解决不了的部分,也要说清楚。PDF 表单的创建与填写逻辑、复杂版面的文字重排、跨页内容的深度编辑,这些是 Adobe Acrobat 这类商业软件的强项。另外,大批量、高准确率的中文 OCR,商业引擎通常仍优于开源方案。
判断标准很简单:如果你只是“处理”文件,开源够用;如果你要“创作”PDF 内容,再考虑付费。
写在最后
PDF 这个格式的设计初衷就是“所见即所得、跨设备一致”,所以它天生不适合被随意编辑。理解这一点,就不会再到处找“一键修改 PDF 文字”的工具了。
真正高效的做法是按需求选工具,而不是找一个万能工具。合并用 QPDF,排页用 Arranger,识别用 OCRmyPDF,压体积用 Ghostscript——四件小事,四把专用的刀。
你处理 PDF 时最常卡在哪一步?

评论 (0)