paperless-ngx 仪表盘家里最容易失控的东西,不一定是照片,也不一定是文件夹。很多时候,是这些纸:购房合同、保险单、体检报告、车辆保养单、电子发票、保修卡、孩子证书、银行账单、物业通知。它们平时不重要,真正要用的时候却很急。翻抽屉、找文件袋、问家人“你记不记得放哪了”,最后往往变成一场家庭级搜索灾难。

今天介绍的开源项目 paperless-ngx,就是为这个问题准备的。

它可以把纸质资料、PDF、图片、邮件附件统一收进一个系统里,自动 OCR 识别文字,自动打标签,最后变成一个可以全文搜索的私人档案馆。

项目小卡片:

项目名称:paperless-ngx
项目定位:开源文档管理系统,适合扫描、索引、归档文档
适合场景:家庭档案、小团队票据、合同资料、发票归档
推荐部署:NAS / 小主机 / 软路由 / 家庭服务器
当前稳定版:v2.20.15,发布于 2026-04-27
项目热度:GitHub 约 41.9k stars

它解决的不是“存文件”,而是“找到文件”

很多人会把资料放到网盘、NAS 或电脑文件夹里。

这当然比纸堆好,但还是有三个问题:

第一,文件名经常不规范。

IMG_20260401.jpg
scan_001.pdf
合同最终版2.pdf
发票新.pdf

第二,PDF 和图片里面的文字搜不到。

第三,纸质原件和电子版本对不上。系统里有扫描件,柜子里还有原件。真正要拿原件时,还是不知道在哪个文件袋。

paperless-ngx 的价值在于:

它让文档进入系统后,不只是被保存,而是被识别、分类、检索和关联。

它长什么样?

官方界面很接近一个“文档工作台”。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

你可以用列表、卡片等方式浏览文档。

卡片视图

也可以直接全文搜索。OCR 识别后的内容、标题、标签、往来方、文档类型都能参与搜索。

搜索结果

最适合家庭的资料类型

建议优先把这些资料放进去:

类别 示例 建议标签
保险 医疗险、车险、寿险、保单批单 保险家庭成员名到期提醒
房产 房本、租赁合同、物业合同、装修资料 房产合同
汽车 行驶证、保养单、维修单、保险单 汽车保养保险
发票票据 电子发票、报销单、收据 发票报销
医疗 体检报告、病历、处方、检查单 医疗体检
证书 学历、资格证、获奖证书 证书
设备 说明书、保修卡、维修记录 家电说明书保修

不建议一开始就把所有历史资料全倒进去。先选一个小范围,比如“保险 + 合同 + 发票”,跑通流程后再扩展。

推荐部署方式:Docker Compose

如果你有 NAS、小主机、软路由,推荐用 Docker Compose。

新建目录:

mkdir -p paperless-ngx/{data,media,export,consume}
cd paperless-ngx

创建 docker-compose.yml

services:
  broker:
    image: redis:7
    restart: unless-stopped

  db:
    image: postgres:16
    restart: unless-stopped
    environment:
      POSTGRES_DB: paperless
      POSTGRES_USER: paperless
      POSTGRES_PASSWORD: paperless
    volumes:
      - ./pgdata:/var/lib/postgresql/data

  webserver:
    image: ghcr.io/paperless-ngx/paperless-ngx:latest
    restart: unless-stopped
    depends_on:
      - db
      - broker
    ports:
      - "8000:8000"
    volumes:
      - ./data:/usr/src/paperless/data
      - ./media:/usr/src/paperless/media
      - ./export:/usr/src/paperless/export
      - ./consume:/usr/src/paperless/consume
    environment:
      PAPERLESS_REDIS: redis://broker:6379
      PAPERLESS_DBHOST: db
      PAPERLESS_DBNAME: paperless
      PAPERLESS_DBUSER: paperless
      PAPERLESS_DBPASS: paperless
      PAPERLESS_SECRET_KEY: change-me-to-a-long-random-string
      PAPERLESS_TIME_ZONE: Asia/Shanghai
      PAPERLESS_OCR_LANGUAGE: chi_sim+eng
      PAPERLESS_URL: http://你的服务器IP:8000

启动:

docker compose up -d

创建管理员账号:

docker compose run --rm webserver createsuperuser

然后打开:

http://你的服务器IP:8000

第一次部署建议先在局域网内使用,不要急着暴露到公网。如果确实需要外网访问,至少要配好反向代理、HTTPS、强密码、备份和访问控制。

最核心的入口:consume 文件夹

上面的 Compose 里,我们映射了这个目录:

./consume -> /usr/src/paperless/consume

以后你只需要把 PDF、图片、扫描件放进本地的 consume 文件夹,系统就会自动处理:

  1. 发现新文件;
  2. OCR 识别文字;
  3. 生成缩略图;
  4. 建立全文索引;
  5. 根据规则匹配标签、文档类型、往来方;
  6. 移入正式归档目录。

官方推荐工作流大概就是这个思路:

官方推荐工作流

实际家庭用法可以更简单:

手机拍照 / 扫描仪扫描
        ↓
丢到 consume 文件夹
        ↓
paperless-ngx 自动 OCR
        ↓
检查标签和文档类型
        ↓
需要保留原件的,贴编号后放入文件盒

玩法一:建立一套“家庭标签体系”

很多人第一次用文档管理系统,会想建很多文件夹。

paperless-ngx 更适合用标签。

原因很简单:一份文档可以同时属于多个标签。

比如一张车险保单,可以同时打:

汽车
保险
2026
到期提醒

如果用传统文件夹,它只能放在一个地方;用标签,它可以从多个角度被找到。

家庭用户可以先用这套简单标签:

保险
合同
发票
医疗
房产
汽车
家电
证书
孩子
父母
待处理
需保留原件

标签体系越复杂,越容易半途而废。先少后多,才是长期可用的做法。

玩法二:用“文档类型”管理资料性质

标签解决“主题”,文档类型解决“这是什么东西”。

可以这样设置:

合同
发票
保单
说明书
体检报告
证书
账单
收据
通知

以后搜索时就很方便:

type:发票 家电
type:合同 装修
type:保单 车险

你也可以直接用中文关键词搜 OCR 内容,比如:

免赔额
保修期
租赁期限
发动机号
纳税人识别号

这才是它比普通文件夹强的地方。

玩法三:给纸质原件做 ASN 编号

很多家庭资料不能只留电子版。

比如房产材料、保险合同原件、医疗重要报告、车辆登记材料、盖章合同、证书原件。

这时可以用 paperless-ngx 的 ASN,也就是 archive serial number,给原件编号。

一个简单做法:

BX-0001   医疗险保单
CAR-0001  车险保单
HOME-0001 租房合同
MED-0001  体检报告

流程是:

  1. 扫描原件;
  2. 上传到 paperless-ngx;
  3. 在文档里填写 ASN;
  4. 给纸质文件贴同样编号;
  5. 原件放入对应文件盒。

以后系统里搜到文档,就能知道原件在哪。这比“我记得放在某个抽屉”可靠多了。

玩法四:邮件附件自动归档

paperless-ngx 可以从邮箱里自动抓附件。

这个功能特别适合电子发票、银行账单、保险通知、订单凭证、公司报销材料、各种 PDF 通知。

官方界面里可以配置邮件规则:

邮件规则

实用玩法:

邮箱里建一个文件夹:Paperless
收到需要归档的邮件后,移动到这个文件夹
paperless-ngx 定时检查
发现 PDF / 图片附件后自动导入
导入后给它打上“邮件”或“发票”等标签

如果你经常收到电子发票,可以再细一点:

来自开票平台 -> 标签:发票
来自保险公司 -> 标签:保险
来自银行 -> 标签:账单
未知邮件附件 -> 标签:待处理

这会让“整理发票”这件事轻松很多。

玩法五:批量整理旧资料

刚开始用时,最容易遇到的问题是:历史资料太多。

不要一次性导入几千份。

推荐节奏:

第一周,只导入最重要的 50 份。

保险
房产
汽车
证书
关键合同

第二周,导入近期高频使用的资料。

发票
报销单
设备说明书
保修卡
医疗报告

第三周,再处理历史资料。

每次导入后,用批量编辑统一处理标签、文档类型、往来方。

批量编辑

这个功能很实用,尤其是一次性导入同类资料时。

玩法六:搭配扫描工具

paperless-ngx 本身负责归档,不负责把纸变成扫描件。

你可以搭配这些方式:

工具 适合场景
手机扫描 App 少量合同、发票、证书
一体机扫描仪 家庭偶尔使用
带自动进纸扫描仪 大量历史资料整理
NAS 同步文件夹 自动把扫描件送进 consume
邮箱规则 自动归档电子发票、账单

如果你家资料很多,自动进纸扫描仪会极大提高效率。

但如果只是轻度家庭使用,手机扫描也足够起步。

中文 OCR 注意事项

中文资料建议设置:

PAPERLESS_OCR_LANGUAGE=chi_sim+eng

这样可以兼顾中文和英文。

如果识别效果不理想,可以检查:

  • 扫描件是否清晰;
  • 图片是否歪斜;
  • 分辨率是否太低;
  • 容器内是否包含对应 OCR 语言包;
  • 是否需要先把图片转成更清晰的 PDF。

OCR 不是魔法。纸张越清晰、光线越均匀、扫描越平整,识别效果越好。

备份一定要做

这是最重要的一节。

paperless-ngx 里存的不是普通文件,而是家庭档案。

至少要备份这些目录:

./data
./media
./pgdata
./export
docker-compose.yml

建议策略:

本机一份
NAS / 移动硬盘一份
异地或云端加密备份一份

如果你只备份 media,可能会丢数据库里的标签、文档类型、对应关系。

如果你只备份数据库,又会丢原始文件。

所以要把数据库、媒体文件和配置一起备份。

不建议这样用

这些坑可以提前避开:

  • 不要一上来就导入全部历史文件;
  • 不要把它直接裸奔暴露到公网;
  • 不要只依赖 OCR,重要文件仍要人工检查;
  • 不要把所有标签都设计得很复杂;
  • 不要没有备份就把纸质原件扔掉;
  • 不要只备份 PDF,忽略数据库和配置。

尤其最后一点很重要。

如果一份原件有法律、报销、医疗、保险价值,请先确认电子版是否足够,再决定要不要丢纸质原件。

我的推荐起步方案

如果你是家庭用户,可以这样开始:

部署位置:NAS 或小主机
部署方式:Docker Compose
导入入口:consume 文件夹
OCR 语言:chi_sim+eng
第一批资料:保险、合同、房产、汽车、证书
标签体系:控制在 10-15 个
原件管理:重要纸质文件贴 ASN 编号
备份策略:数据库 + media + 配置一起备份

先跑通一个小闭环:

扫描一份保单
上传到 consume
等待 OCR 完成
打标签:保险、家庭成员名、需保留原件
设置文档类型:保单
填写 ASN:BX-0001
把纸质原件放进保险资料盒

这个闭环跑通后,你就真正理解 paperless-ngx 的价值了。

写在最后

paperless-ngx 最适合的用户,不是“喜欢折腾工具的人”,而是那些真的被家庭资料、合同、票据折磨过的人。

它能做的不是简单保存文件,而是帮你建立一套可持续的家庭档案流程:

扫描、识别、分类、搜索、关联原件、定期备份。

当你某天需要找一份两年前的保单、一次维修记录、一张发票、一份合同,而不是翻箱倒柜,只要搜索一个关键词就能找到时,这个系统就值了。

项目地址:

https://github.com/paperless-ngx/paperless-ngx

如果你对 NAS、家庭服务器、开源工具、数字化收纳感兴趣,欢迎关注我。后面继续分享更多能真正用起来的开源项目和家庭实用玩法。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐