孙亮亮
返回 小企业信息化系统开发

小企业信息化系统开发

小微企业用 Stirling-PDF 自建 PDF 工具箱:合并拆分压缩水印 OCR 与本地化部署避坑

2026年11月4日

自托管 Stirling-PDF 处理 PDF,合并拆分压缩OCR 不出内网。

PDFStirling-PDF文档处理自托管

小微企业用 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。默认镜像只带英文语言包,处理中文会乱码。两个办法:

  1. 在 environment 设 OCR_LANGUAGES=chi_sim+eng,让应用在启动脚本里尝试下载语言包(需联网一次);
  2. 手动把 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 社区版没有账号体系,所以不能裸奔。正确做法:

  1. 容器只监听 127.0.0.1,前面放 Nginx/Caddy 反代;
  2. 反代层套一层 Authelia 或 Basic Auth,让内部员工凭账号登录;
  3. 若需外网访问,务必走 VPN(如 WireGuard)而非直接开端口;
  4. 挂载的 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 处理能力,数据不出内网。部署记住三句话:镜像挂中文包、端口只绑回环、反代加鉴权。把它纳入企业文档中台,财务行政每天省下的时间很可观。

本模块其他文章

小微企业自建在线文档协作实战:用 OnlyOffice 替代 Office、多人编辑与权限管控小微企业自托管团队即时通讯:用 Rocket.Chat 搭建内部沟通、频道分组与 Webhook 机器人小微企业用 Jitsi Meet 自建视频会议系统:Docker Compose 部署、JWT 鉴权与 TURN 穿透安全接入小微企业内部系统统一登录实战:Authelia 单点登录、MFA 与反向代理访问控制小微企业用 Paperless-ngx 搭建智能文档归档系统:发票合同 OCR 识别、标签检索与权限管理小微企业用 PostgREST 把 PostgreSQL 直接变成 REST API:只读接口、行级权限与内部数据对接小微企业用 Uptime Kuma 自建服务监控与宕机告警:网站、接口、SSL 证书与心跳检测小微企业用 Gitea 自建内网代码与文档版本管理:Git 服务、Issues 跟踪与 Webhook 自动部署小微企业用 FreeScout 自建客服工单系统:邮件转工单、SLA 与协作回复实战小微企业用 Odoo 搭建一体化 ERP:进销存、CRM 与财务模块落地实战小微企业用 Nextcloud 自建企业网盘:文件同步、权限分级与异地容灾小微企业用 Metabase 做业务数据分析:连接数据库、可视化图表与定时报表小微企业内部知识库搭建实战:用 Wiki.js 实现文档协作、权限分级与全文检索小微企业用 Appsmith 搭建零代码内部管理后台:数据看板、工单与权限小微企业用 n8n 搭建业务自动化工作流:表单收集到消息通知实战小微企业用 Docker + NocoDB 搭建轻量业务数据库:零代码管理客户与订单小企业进销存轻量化落地:用 SQL + 轻量 Web 替代 Excel 的实操路径小企业业务系统数据备份实战:从每日自动备份到异地容灾小企业自建系统的权限设计实战:从“谁都能改”到 RBAC 与数据范围隔离小企业库存管理怎么起步:从 Excel 到轻量进销存的平滑迁移从 Excel 进销存到一套能演进的系统小企业 CRM:买现成还是自己搭?
小微企业用 Stirling-PDF 自建 PDF 工具箱:合并拆分压缩水印 OCR 与本地化部署避坑 · 孙亮亮