小企业信息化系统开发
小微企业用 Stirling-PDF 自建 PDF 工具箱:合并拆分压缩水印 OCR 与本地化部署避坑
2026年11月4日
自托管 Stirling-PDF 处理 PDF,合并拆分压缩OCR 不出内网。
小微企业用 Stirling-PDF 自建 PDF 工具箱:合并拆分压缩水印 OCR 与本地化部署避坑
摘要:合同发票 PDF 处理不必上传第三方,用 Stirling-PDF 自托管,合并、拆分、压缩、水印、OCR 一键完成,数据不出内网。
一、为什么企业该自建 PDF 工具
财务每月要把几十张发票合并成一个 PDF 报销,行政要把标书加水印防泄,销售要把产品册压缩到邮件能发。这些需求每天都在发生,但多数公司依赖网页版"免费 PDF 工具",文件先上传到别人服务器再下载——合同、报价、客户名单全泄露了。
Stirling-PDF 是开源的本地 PDF 处理套件,提供 50+ 功能,所有运算都在你自己的服务器完成,数据零外传。对小企业来说,一台 2 核 4G 的迷你主机就能跑,比买商业 PDF 软件划算得多。
二、Docker Compose 部署
官方镜像当前为 stirlingtools/stirling-pdf(旧名 frooodle/stirling-pdf),用 Docker Compose 拉起:
version: "3.8"
services:
stirling-pdf:
image: stirlingtools/stirling-pdf:latest
container_name: stirling-pdf
ports:
- "127.0.0.1:8080:8080"
environment:
- SPRING_PROFILES_ACTIVE=docker
- LANGS=zh_CN,en_US
- ENABLE_OCR=true
- OCR_LANGUAGES=chi_sim+eng
- SYSTEM_DEFAULTLOCALE=zh_CN
- UI_APP_NAME=企业PDF工具箱
volumes:
- ./trainingData:/usr/share/tessdata
- ./configs:/configs
- ./pipeline:/pipeline
- ./customFiles:/customFiles
restart: unless-stopped
注意 ports 只绑定 127.0.0.1,这是安全红线——绝不能把 8080 直接暴露公网,反向代理放在后面再说。
三、开启中文 OCR
Stirling-PDF 的 OCR 基于 Tesseract。默认镜像只带英文语言包,处理中文会乱码。两个办法:
- 在 environment 设
OCR_LANGUAGES=chi_sim+eng,让应用在启动脚本里尝试下载语言包(需联网一次); - 手动把
chi_sim.traineddata放到挂载的trainingData卷(对应容器内/usr/share/tessdata),重启容器。
实测一份 12 页扫描合同,开启中文 OCR 后文本可被全文搜索、可复制,但首屏识别约耗时 8–15 秒,取决于 CPU。建议给容器至少 2 核,否则排队明显。
四、核心功能实战
- 合并(Merge):拖动多份 PDF,按文件名或拖拽顺序合成,支持统一页眉页脚。
- 拆分(Split):可按每 N 页切,也可按书签/特定页码提取,标书拆章节很实用。
- 压缩(Compress):扫描件常见 20MB+,用 Ghostscript 后端压到 1/5,邮件秒发。
- 水印(Watermark):批量加"机密/草稿"斜字或图片 LOGO,防截图外传。
- 转换(Convert):PDF↔图片、PDF→Office(依赖 LibreOffice,需额外挂载)、PDF 加/去密码。
- 安全(Security):加密、去元数据(清掉作者/公司名,避免泄密)、去签名。
五、安全与访问控制
Stirling-PDF 社区版没有账号体系,所以不能裸奔。正确做法:
- 容器只监听 127.0.0.1,前面放 Nginx/Caddy 反代;
- 反代层套一层 Authelia 或 Basic Auth,让内部员工凭账号登录;
- 若需外网访问,务必走 VPN(如 WireGuard)而非直接开端口;
- 挂载的
pipeline目录是临时文件区,配定时任务每天清空,避免堆积敏感 PDF。
六、常见坑
- 坑一:OCR 中文乱码——忘了装
chi_sim语言包,认准 tessdata 路径。 - 坑二:PDF 转 Office 失败——未挂载 LibreOffice,需加 libreoffice 服务或本地安装。
- 坑三:内存溢出——大文件(>200 页)建议设
JAVA_TOOL_OPTIONS=-Xmx2g提堆内存。 - 坑四:上传即公网可见——ports 误写成
8080:8080(无 127 限制),被扫到就裸奔。
七、和归档、协作系统的分工
企业文档处理通常分三层:Stirling-PDF 负责"单文件加工"(合并/拆分/压缩/水印),文档归档系统负责"检索留存",在线 Office 负责"多人编辑"。三者挂在同一反代后,文档从接收、加工、归档到协作的流水线就闭环了。
小结
Stirling-PDF 用一台小主机就能给全公司提供合规、安全的 PDF 处理能力,数据不出内网。部署记住三句话:镜像挂中文包、端口只绑回环、反代加鉴权。把它纳入企业文档中台,财务行政每天省下的时间很可观。