Stirling-PDF 搭建教程:宝塔面板 + Docker Compose 完整指南

1.介绍

Stirling-PDF 是一个功能强大、开源且免费的 PDF 工具箱,旨在满足用户对 PDF 文档的多样化需求。它提供了一系列直观的功能来处理 PDF 文件,帮助用户快速编辑、转换和管理 PDF 文档。

Github 项目地址:https://github.com/stirlinglabs/stirling-pdf

官方演示地址:https://stirlingpdf.io/

核心特点

  1. 多功能工具箱
    • 合并 PDF:将多个 PDF 文件合并为一个。
    • 分割 PDF:将一个 PDF 文件拆分为多个文件。
    • 压缩 PDF:优化 PDF 文件大小以便于存储和传输。
    • 加密/解密 PDF:为 PDF 文件添加密码保护,或移除已有密码。
    • 旋转 PDF 页面:调整页面方向。
  2. 格式转换
    • 将 PDF 转换为其他格式(如 Word、Excel、PNG、JPG 等)。
    • 支持将图片、Office 文档等转换为 PDF。
  3. 页面编辑
    • 重新排序、删除、提取页面。
    • 为 PDF 页面添加水印或注释。
  4. 跨平台支持
    • 支持多种操作系统,包括 Windows、Linux 和 macOS。
  5. 用户友好的界面
    • Stirling-PDF 提供了一个直观的图形界面,使用户可以快速上手。
  6. 完全开源
    • 项目基于开源许可,用户可以免费下载、修改或自行部署。它的代码托管在 GitHub

使用场景

  • 办公文档管理:适合企业和个人整理和编辑日常的 PDF 文件。
  • 教育与学习:学生和教师可以用它创建或编辑教学材料。
  • 法律与合同:律师可以快速合并或分割合同文件。

2.安装教程

使用 Docker Compose 启动 Stirling-PDF

步骤 1:安装必要工具

  • 官方 docker 库安装:
curl -fsSL https://get.docker.com | bash -s docker
apt install docker-compose
  • 国内服务器可以使用阿里云 docker 库安装:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
apt install docker-compose
  • 验证安装是否成功:
docker --version
docker-compose --version

步骤 2:创建 docker-compose.yml 文件

  • 创建 /root/Stirling-PDF 路径和进入该路径
mkdir -p /root/StirlingPDF && cd /root/StirlingPDF
  • 在 /root/Stirling-PDF 目录中,创建一个 docker-compose.yml 文件,内容如下:

文件说明:

  • image: 拉取 Stirling-PDF 的官方 Docker 镜像。
  • ports: 映射容器内的 8080 端口到主机的 8089 端口。
  • volumes: (可选)挂载本地目录,保存生成的 PDF 文件或其他持久化数据。
  • restart: 容器退出时会自动重启,保持服务运行。
nano /root/StirlingPDF/docker-compose.yml
version: '3.3'

services:
  stirling-pdf:
    image: stirlingtools/stirling-pdf:latest
    container_name: stirling-pdf
    ports:
      - '8089:8080'
    restart: unless-stopped
    volumes:
    - /root/StirlingPDF/trainingData:/usr/share/tessdata # Required for extra OCR languages
    - /root/StirlingPDF/extraConfigs:/configs
    - /root/StirlingPDF/customFiles:/customFiles/
    - /root/StirlingPDF/logs:/logs/
    - /root/StirlingPDF/pipeline:/pipeline/
    environment:
    - DOCKER_ENABLE_SECURITY=false
    - INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false
步骤 3:启动服务
  1. docker-compose.yml 所在目录中,运行以下命令启动服务:
    cd /root/StirlingPDF
    docker-compose up -d
  2. 等待 Docker Compose 拉取镜像并启动容器。
  3. 服务启动后,访问 http://localhost:8089 即可使用 Stirling-PDF。如果在远程服务器部署,请替换 localhost 为服务器的 IP 地址。

步骤 4:下载 OCR 基础包

下载 OCR 基础包的主要目的是为软件(如 Stirling-PDF 或其他支持 OCR 的工具)提供光学字符识别(OCR,Optical Character Recognition)所需的基础数据或模型文件。这些包通常包含语言模型和算法支持,使软件能够从图片或 PDF 中提取文字内容。

  • 先停止 Stirling-PDF
docker compose down
  • 下载 OCR 基础包
apt install git -y
cd /root/StirlingPDF/trainingData && rm -rf *
git clone https://github.com/tesseract-ocr/tessdata_fast.git /root/StirlingPDF/trainingData
  • 编辑配置文件(可选)
nano /root/StirlingPDF/extraConfigs/settings.yml

# 更改默认语言
system:
defaultLocale: 'zh-CN'

# 更改应用名、标题及简介,去掉 ui 及子集前的井号,并按需求配置
ui:
appName: exampleAppName # Application's visible name
homeDescription: I am a description # Short description or tagline shown on homepage.
appNameNavbar: navbarName # Name displayed on the navigation bar

  • 再次运行
docker compose up -d

步骤 5:管理容器

  • 查看运行状态:
    docker-compose ps
  • 停止服务:
    docker-compose down
  • 查看日志:
    docker-compose logs -f
  • 重启服务:
    docker-compose restart

步骤 6:更新服务

当有新版本时,只需执行以下命令更新镜像并重启服务:

docker-compose pull
docker-compose up -d

3.配置 Nginx 反向代理

  • Nginx 配置参数参考:
server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://localhost:8089;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

我这里以宝塔面板为例子

  • 创建网站,域名解析到自己的服务器IP,建议开启 SSL 证书。
  • 在网站配置那里,找到反向代理(Reverse Proxy),目标 URL 填入你的运行服务地址和运行端口。代理名字(Proxy name)可以任意


总结

通过本教程,我们成功完成了 Stirling-PDF 的部署和配置,并了解了如何使用 OCR 功能提取图片和 PDF 中的文字信息。以下是本文的关键点回顾:

  1. Stirling-PDF 的优势
    Stirling-PDF 是一个功能强大的开源 PDF 工具,支持合并、分割、压缩、OCR 等多种功能,非常适合个人和企业用户使用。
  2. 搭建步骤
    我们详细介绍了如何通过 Docker Compose 部署 Stirling-PDF,包括挂载持久化存储和配置 OCR 语言包等关键环节。
  3. OCR 的实用性
    下载并配置 OCR 语言包后,Stirling-PDF 能够高效地从 PDF 或图片中提取文本,支持多语言,离线运行,保护数据隐私。
  4. 扩展性和更新
    Stirling-PDF 不仅功能强大,还支持社区贡献。如果有更多需求,可以参与开发或使用其插件。