本文采用 Paperless-ngx 作为核心档案管理软件。这是一款基于 Django 的开源文档管理系统,支持 OCR 文字识别、全文检索及自动标签归档,完全适合个人或企业单机版档案数字化管理。系统运行环境基于 Docker Compose,能够屏蔽底层依赖差异,实现一键部署。
在开始部署前,需确保操作系统已安装 Docker 和 Docker Compose。以下是基于 CentOS 7/8 或 Ubuntu 20.04/22.04 的安装命令:
安装 Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
启动 Docker 并设置开机自启
systemctl start docker
systemctl enable docker
安装 Docker Compose (如果未自带)
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
执行 docker --version 和 docker-compose --version 确认安装成功。
为了数据持久化与管理方便,请在数据挂载目录下创建专门的文件夹。这里假设创建在 /opt/paperless:
mkdir -p /opt/paperless
cd /opt/paperless
创建数据存储目录
mkdir -p consume export data db redis
目录说明:
在 /opt/paperless 目录下创建 docker-compose.yml 文件。请直接复制以下完整配置,无需修改即可运行。该配置已内置中文 OCR 支持与 Tika 转换服务。
version: "3.5"
services:
broker:
image: docker.io/library/redis:7
restart: always
volumes:
- ./redis:/data
db:
image: docker.io/library/postgres:15
restart: always
volumes:
- ./db:/var/lib/postgresql/data
environment:
POSTGRES_USER: paperless
POSTGRES_PASSWORD: paperless
POSTGRES_DB: paperless
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
restart: always
depends_on:
- db
- broker
- gotenberg
- tika
ports:
- "8000:8000"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000"]
interval: 30s
timeout: 10s
retries: 5
volumes:
- ./data:/usr/src/paperless/data
- ./consume:/usr/src/paperless/consume
- ./export:/usr/src/paperless/export
- ./media:/usr/src/paperless/media
env_file:
- .env
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
设置时区为上海时间
PAPERLESS_TIME_ZONE: Asia/Shanghai
配置 OCR 使用中文简体 + 英文
PAPERLESS_OCR_LANGUAGE: chi_sim+eng
配置自动重试
PAPERLESS_OCR_RETRY_DELAY: 5
PAPERLESS_OCR_RETRY_MAX: 3
禁用管理员创建向导(可选)
PAPERLESS_DISABLE_ADMIN_CREATION_PROMPT: true
consumer:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
restart: always
depends_on:
- db
- broker
- gotenberg
- tika
volumes:
- ./data:/usr/src/paperless/data
- ./consume:/usr/src/paperless/consume
- ./export:/usr/src/paperless/export
- ./media:/usr/src/paperless/media
env_file:
- .env
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
PAPERLESS_CONSUMER_POLLING: 30
PAPERLESS_TIME_ZONE: Asia/Shanghai
PAPERLESS_OCR_LANGUAGE: chi_sim+eng
PAPERLESS_OCR_RETRY_DELAY: 5
PAPERLESS_OCR_RETRY_MAX: 3
gotenberg:
image: docker.io/gotenberg/gotenberg:7
restart: always
environment:
- DISABLE_GOOGLE_CHROME=1
tika:
image: apache/tika:latest
restart: always
在同目录下创建 .env 文件,用于设置管理员账号密码。如果不创建,系统会在首次启动时生成随机密码显示在日志中,建议手动指定:
PAPERLESS_ADMIN_USER=admin
PAPERLESS_ADMIN_PASSWORD=your_secure_password
注意: 请将 your_secure_password 替换为强密码。
执行以下命令拉取镜像并启动容器:
docker-compose up -d
首次启动需要下载镜像,耗时取决于网络速度。启动成功后,通过浏览器访问 http://服务器IP:8000 即可看到登录界面。
系统部署完成后,核心工作在于建立标准化的档案整理流程。以下步骤将演示如何将杂乱的电子文件转化为可检索的数字档案。

在 Paperless 中,标签是档案分类的核心。建议按照“档案类型-年份-部门”的维度建立标签。
操作步骤:
将本地电脑上的 PDF 或图片文件导入系统。系统会自动调用 Tesseract OCR 引擎提取文字内容。
操作步骤:
采购合同_A公司.pdf)上传。单靠文件名无法满足管理需求,需对每份档案进行元数据打标。
操作步骤:
2024-03-15_采购合同_A公司。HT-2024-001。为了提高效率,不应每次手动打标签。利用 Paperless 的 Automation Rules 功能,可根据文件名或内容自动匹配标签。
场景: 所有文件名包含“发票”的文档,自动打上“财务凭证”标签,并归档到对应年份。
操作步骤:
自动识别发票。发票。此后,上传任何文件名带有“发票”字样的文件,系统将自动执行上述规则,无需人工干预。
单机版数据安全至关重要。建议编写脚本定期备份数据库和文件数据。
备份命令示例:
备份数据库
docker-compose exec -T db pg_dump -U paperless paperless > /backup/paperless_db_$(date +%Y%m%d).sql
打包数据文件
tar -czvf /backup/paperless_data_$(date +%Y%m%d).tar.gz /opt/paperless/data /opt/paperless/media /opt/paperless/export
将上述命令加入系统的 crontab 定时任务中,即可实现每日凌晨自动备份。通过以上流程,您已成功搭建了一套具备 OCR 识别、自动分类及标准化归档能力的单机版档案管理系统。