Paperless-ngx:终极无纸化办公系统
家里是不是堆满了水电煤账单、保险单、说明书、发票?想找的时候永远找不到?Paperless-ngx 就是你的救星。它是一个开源的文档管理系统,能自动对扫描件进行 OCR(文字识别)、分类、打标签,让你在 NAS 上拥有一个可全文搜索的私人档案库。
为什么选择 Paperless-ngx?
- OCR 强力支持:基于 Tesseract,支持中文、英文等多种语言识别。上传图片或 PDF,内容里的字都能被搜到。
- 自动整理:通过匹配规则(例如:如果文档包含“中国电信”,自动标记为“账单”并归档到“2024”文件夹)。
- 消费记录:不仅是文档,还能自动提取发票金额,生成年度消费报表。
- 多端适配:有优秀的 Web 界面,也有第三方手机 App(如 Paperless Mobile)。
1. 部署 Paperless-ngx (Docker Compose)
Paperless-ngx 依赖 Redis 和 PostgreSQL,同时需要 Tika(用于解析文档)和 Gotenberg(用于转换 PDF)。这是一个比较复杂的堆栈。
准备工作
- 在
/volume1/docker/下创建paperless目录。 - 创建
docker-compose.yml和.env文件。
docker-compose.yml
services:
broker:
image: docker.io/library/redis:7
restart: unless-stopped
volumes:
- redisdata:/data
db:
image: docker.io/library/postgres:15
restart: unless-stopped
volumes:
- pgdata:/var/lib/postgresql/data
environment:
POSTGRES_DB: paperless
POSTGRES_USER: paperless
POSTGRES_PASSWORD: paperless_password # 请修改
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
restart: unless-stopped
depends_on:
- db
- broker
ports:
- 8000:8000
volumes:
- /volume1/docker/paperless/data:/usr/src/paperless/data
- /volume1/docker/paperless/media:/usr/src/paperless/media
- /volume1/docker/paperless/export:/usr/src/paperless/export
- /volume1/docker/paperless/consume:/usr/src/paperless/consume
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
PAPERLESS_DBPASS: paperless_password # 请修改
PAPERLESS_OCR_LANGUAGE: chi_sim+eng # 开启中文简体和英文 OCR
PAPERLESS_TIME_ZONE: Asia/Shanghai
PAPERLESS_URL: https://paperless.yourdomain.com # 你的域名
USERMAP_UID: 1026
USERMAP_GID: 100
volumes:
redisdata:
pgdata:
关键点解析
- PAPERLESS_OCR_LANGUAGE: 必须设置为
chi_sim+eng,否则中文无法识别。Paperless 镜像默认已包含中文语言包(如果使用的是精简版镜像可能需要手动挂载tessdata)。 - consume 目录: 这是“吞噬”目录。你可以把扫描仪或手机扫描 App 的保存路径指向这里,Paperless 监测到新文件会自动导入并删除源文件。
2. 初始化与配置
容器启动后,必须先创建超级管理员才能登录。
创建管理员
- SSH 进入 NAS。
- 执行命令:
- 按提示输入用户名、邮箱、密码。
登录
访问 http://nas-ip:8000,使用刚才创建的账号登录。
3. 核心功能实战
3.1 消费目录 (Consume Folder)
这是最自动化的入口。 1. 在 NAS 上把 /volume1/docker/paperless/consume 共享出来(通过 SMB)。 2. 配置你的扫描仪(如爱普生、兄弟)直接扫描 PDF 到这个 SMB 目录。 3. 或者在手机上用 Scanner Pro / Adobe Scan 扫描后,分享到这个 SMB 目录。 4. 几秒钟后,Paperless 后台就会出现该文档,且已完成 OCR。
3.2 匹配算法 (Matching Algorithms)
Paperless 的灵魂在于“训练”。 1. 上传一张“中国电信话费账单”。 2. 手动给它打标签:Bills (账单), Telecom (电信)。对应人:Me。 3. 自动学习:Paperless 提供了神经网络匹配器。当你手动处理了几张类似的账单后,它会学会“长这样的文档就是电信账单”,下次自动打标签。 4. 正则匹配:你也可以硬编码规则。例如:内容包含 发票 且包含 京东 -> 标签 Shopping。
3.3 全文搜索
在搜索框输入“冰箱”,它能搜到你 3 年前买冰箱时的发票和说明书,直接高亮显示关键词位置。
4. 手机端 App
推荐使用 Paperless Mobile (Android) 或 Swift Paperless (iOS)。 * 配置 URL: http://nas-ip:8000 * 功能:可以直接调用手机摄像头扫描,上传到 Paperless,随时随地查阅文档。
5. 常见问题
Q1: 中文 OCR 乱码或不准确?
- 确保
PAPERLESS_OCR_LANGUAGE包含了chi_sim。 - 检查 PDF 是否是纯图片。如果是已经有文字层的 PDF,Paperless 默认会跳过 OCR。可以在设置中强制开启 OCR。
Q2: 备份策略?
- Paperless 的核心数据在
media(原文件) 和data(数据库/索引) 目录。 - 定期导出:Paperless 提供了一个导出命令
document_exporter,可以把所有文件和元数据导出为标准格式,防止被锁死在系统里。