Paperless-ngx:把一柜子纸质文件变成能全文搜索的档案库

admin 开源软件 2026-10-21 7 0

它的核心价值不是「存文件」,是让文件变成可检索的数据。一份扫描的租房合同,传统方式是按文件夹整理、靠记忆找;它的方式是搜「押金」两个字,直接命中。

一、流水线长什么样

扫描仪/手机拍照 → 投递目录(consume)
   → 自动 OCR 提取文字
      → 按规则识别对应人/类型/日期
         → 重命名归档 + 全文索引

关键在于「投递目录」这个设计:你把文件丢进去,剩下的它自己做。桌面端可以用 SMB 挂载,手机端可以用扫描类 App 直接上传。

二、部署

services:
  broker:
    image: redis:7-alpine
    restart: always
  db:
    image: postgres:16
    restart: always
    environment:
      - POSTGRES_DB=paperless
      - POSTGRES_USER=paperless
      - POSTGRES_PASSWORD=改成强密码
    volumes: ["./pgdata:/var/lib/postgresql/data"]
  webserver:
    image: ghcr.io/paperless-ngx/paperless-ngx:latest
    restart: always
    depends_on: [db, broker]
    ports: ["8000:8000"]
    environment:
      - PAPERLESS_REDIS=redis://broker:6379
      - PAPERLESS_DBHOST=db
      - PAPERLESS_TIME_ZONE=Asia/Shanghai
      - PAPERLESS_OCR_LANGUAGE=chi_sim+eng
    volumes:
      - ./data:/usr/src/paperless/data
      - ./media:/usr/src/paperless/media
      - ./consume:/usr/src/paperless/consume

最容易被忽略的一行是 PAPERLESS_OCR_LANGUAGE。默认只装英文训练数据,中文扫描件出来全是乱码或空白。改成 chi_sim+eng 之后才会真正识别中文,代价是单页耗时增加。

三、让自动归档真正好用

它有三类自动规则,把它们配好,后续基本不用手动整理:

规则作用例子
对应人(Correspondent)识别文档来自谁京东、中国移动、某医院
文档类型识别这是什么发票、合同、体检报告、说明书
标签与存储路径决定归档位置按年份/类型分目录

配法是写「内容匹配规则」:文档里出现「增值税电子普通发票」就打成发票类型,出现「体检」就打上医疗标签。规则命中的越多,后续越省事。

四、扫描硬件怎么选

  • 文档为主:带自动进纸器的馈纸式扫描仪,双面扫描,一次性过几十页;
  • 偶尔扫:手机扫描 App 足够,注意拍正、避免阴影;
  • 票据多的:选支持 300dpi 彩色输出的,票据上的小字 OCR 才认得准。

分辨率不是越高越好:300dpi 对文字足够,600dpi 会让文件体积翻四倍、OCR 时间翻倍,收益很小。

五、备份怎么做才安心

它把数据分成三块:数据库(元数据、标签、索引)、media(原始文件与缩略图)、data(配置与索引)。三块要一起备份,只备 media 会丢掉所有标签和对应关系。

比较稳的做法是每晚导出一次数据库 + 用文件级同步工具把 media 镜像到另一台机器。具体方案见 Restic 与 Kopia 和 Syncthing。

六、它的边界

它是文档档案库,不是网盘:没有多人实时协作,不适合放工程文件,也不适合共享给外部人下载大文件。定位清楚,用起来才顺。

相关阅读

评论

访问统计