告别纸质文件:基于Paperless-ngx的智能文档管理方案

前言

在数字化浪潮席卷各行各业的今天,办公桌上堆积如山的纸质文件、散落在各个角落的发票收据、难以检索的合同档案,依然困扰着无数个人与组织。我们一边享受着云计算与人工智能带来的高效便利,一边却仍在为纸质文档的存储、查找与归档耗费大量时间与空间——这种“数字时代下的纸质困境”,已成为提升工作效率与实现绿色办公的隐形障碍。

所幸,开源技术为我们提供了一条优雅的出路。Paperless-ngx作为一款功能强大、部署灵活的开源文档管理系统,正悄然改变着我们与纸质文件的关系。它不仅能自动扫描、识别(OCR)、分类和归档各类纸质文档,还能将其转化为可全文搜索、安全存储、随时调阅的数字资产。借助现代 AI 技术,一张随手拍摄的发票、一份手写的笔记、一叠银行对账单,都能在几秒内变成结构化、可检索的电子档案。

本文将带你从零开始,深入探索如何基于Paperless-ngx构建一套低成本、高效率、全自动的智能文档管理方案。无论你是希望整理家庭账单的个人用户,还是寻求无纸化转型的中小企业团队,这套方案都能助你彻底告别杂乱纸堆,迈向真正简洁、智能、可持续的数字生活与工作方式。

让每一份文档都有迹可循,让每一次查找都瞬间完成——是时候,向纸质文件说再见了。

1.什么是Paperless-ngx?

Paperless-ngx是一个开源、免费、自托管的文档管理系统,旨在帮助个人和团队彻底告别纸质文件,实现纸质文档(如发票、合同、收据、信件等)的自动化扫描、识别、归档与检索。

核心功能

自动OCR(光学字符识别)

  • 利用Tesseract等引擎,将扫描件或照片中的文字识别为可搜索的文本,即使原始文件是图片或 PDF 扫描件,也能全文检索。

智能分类与打标签

  • 支持通过规则(如发件人、关键词、日期)自动为文档打标签、分配对应分类(如“账单”“合同”“身份证”),减少手动整理工作。

全文搜索

  • 输入任意关键词(如“2024年电费”“张三合同”),即可秒级定位相关文档,无需翻找文件夹。

多格式支持

  • 支持PDF、JPEG、PNG、TIFF等常见格式,可直接上传扫描件、手机拍照或通过“消费文件夹”(consume folder)自动导入。

安全自托管

  • 所有数据存储在你自己的服务器上,不依赖第三方云服务,保障隐私与数据主权。

友好的Web界面

  • 提供现代化、响应式的网页操作界面,支持多用户、权限管理、文档预览、注释等功能。

自动化工作流

  • 可集成邮件接收、定时任务、API接口,甚至配合Gotenberg实现HTML/PDF转换,构建完整文档处理流水线。

技术架构(简要)

  • 前端:基于 Angular 的 Web UI
  • 后端:Python + Django
  • 数据库:SQLite(默认)、PostgreSQL 或 MariaDB/MySQL
  • OCR 引擎:Tesseract(内置),也可集成外部服务
  • 可选组件:Redis(任务队列)、Apache Tika(文档内容提取)、Gotenberg(PDF 渲染)

它是原项目paperless的活跃社区分支(”ngx” = “next generation”),功能更丰富、更新更频繁、社区更活跃。

适用场景

  • 个人:管理家庭账单、证件、医疗记录、学习资料
  • 小微企业:归档合同、发票、客户资料、会议纪要
  • 自由职业者:整理项目文档、报销凭证、税务材料
  • 开源爱好者:搭建私有化、可定制的文档中枢

为什么选择Paperless-ngx?

  • 完全免费 & 开源(MIT 许可证)
  • 一次部署,长期使用,无订阅费用
  • 高度可定制,支持插件与API扩展
  • 活跃社区支持,GitHub上持续迭代(截至2024年,Star数超20k+)

官方资源

Paperless-ngx = 你的私人智能档案馆 —— 把杂乱纸堆变成有序、可搜、安全的数字资产,真正实现“无纸化生活”。

2.前提条件

硬件要求(最低)

组件 要求
CPU 2 核以上(建议 4 核)
内存 ≥ 2 GB(建议 4 GB,尤其处理大量 PDF/OCR)
存储 至少 10 GB 可用空间(取决于文档数量)
磁盘类型 SSD 推荐(提升 OCR 和搜索性能)

Docker和Docker Compose

必须已安装并正常运行:

# 检查 Docker
docker --version        # ≥ 20.10

# 检查 Docker Compose
docker compose version   # ≥ v2.5(或 docker-compose ≥ 1.29)

网络要求

  • 主机需能访问互联网(首次拉取镜像)
  • 若使用外部数据库/Redis,需确保网络互通
  • 开放Web访问端口(如8000或自定义端口)

数据库

Paperless-ngx必须连接一个PostgreSQL数据库,可任选其一:

不支持SQLite或MySQL!仅支持PostgreSQL ≥ 12

消息队列

Paperless-ngx使用Redis作为任务队列和缓存:

方式 说明
内置 Redis 容器(推荐) docker-compose.yml 中定义 redis 服务
外部 Redis 如已有 Redis 服务器,需提供连接地址和密码

3.在postgres创建用户

还没有postgres的小伙伴,可以参考这篇文章:谁说没公网IP不能远程连数据库?PostgreSQL+cpolar打通任督二脉

你需要 先创建paperless用户,然后再设置密码。

在PostgreSQL的psql命令行中(你已经以postgres身份登录了),执行以下命令:

-- 1. 创建用户(角色)
CREATE USER paperless WITH LOGIN PASSWORD 'Sj***520!';

-- 2. 创建数据库(如果还没建)
CREATE DATABASE paperless OWNER paperless;

-- 3. (可选)授予权限
GRANT ALL PRIVILEGES ON DATABASE paperless TO paperless;

注意:CREATE USER = CREATE ROLE … LOGIN
密码必须和你docker-compose.yml中的PAPERLESS_DBPASS: Sj***520!完全一致(包括大小写、特殊字符)

image-20260602142252233

能不能直接用postgres用户?

技术上可以,比如后续编写docker-compose.yml文件时:

但强烈不建议,原因:

风险 说明
权限过大 postgres 是超级用户,能删整个数据库集群
安全审计困难 所有操作都显示是 postgres 做的
配置冲突 多个应用共用 postgres 用户容易互相干扰
不符合最小权限原则 应用只需操作自己的数据库,不需要全局权限

4.安装Paperless-ngx

通过Docker部署Paperless-ngx:

在开始部署之前,确保你的系统已经安装了Docker。可以通过以下命令检查 Docker 是否已安装:

docker --version

image-20260507155742946

首先创建一下安装的目录并进入到该目录:

mkdir -p /docker/paperless
chmod -R 777 /paperless

创建并编辑 docker-compose.yml文件:

vi docker-compose.yml
version: "3.6"
services:
  webserver:
    image: ghcr.io/paperless-ngx/paperless-ngx:2.19.6
    restart: unless-stopped
    ports:
      - "9981:8000"
    volumes:
      - ./data:/usr/src/paperless/data
      - ./media:/usr/src/paperless/media
      - ./export:/usr/src/paperless/export
      - ./consume:/usr/src/paperless/consume
    environment:
      # 改为指向内部 redis 容器
      PAPERLESS_REDIS: redis://:my_redis_password@redis:6379
      PAPERLESS_DBHOST: 192.168.42.140   # 数据库仍用外部
      PAPERLESS_DBUSER: paperless        # 输入刚建好的账号密码
      PAPERLESS_DBPASS: Sjixin520!
      PAPERLESS_DBNAME: paperless
      PAPERLESS_TIKA_ENABLED: 1
      PAPERLESS_TIKA_ENDPOINT: http://tika:9998
      PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000

  redis:
    image: redis:7-alpine
    restart: unless-stopped
    command: redis-server --requirepass my_redis_password
    # 如果需要持久化,可加 volume

  tika:
    image: apache/tika:latest
    restart: unless-stopped

  gotenberg:
    image: gotenberg/gotenberg:8.19
    restart: unless-stopped

启动容器:

docker-compose up -d

5ab702ee12299ed21a715225b688cd65

验证是否启动成功:

docker logs -f paperless-webserver-1

出现下图所示信息,即为成功!

996602f69e84e721c0f37e34a8df9290

部署完成后,在浏览器中输入 http://IP:9981 就能看到paperless的界面:

e5c2507016890fd33338b1a9d9110d3f

5.使用Paperless-ngx

下载完成后,注册用户:

image-20260602145313828

登录成功!

设置为自己喜欢的布局:

image-20260602154431544

上传文档:

image-20260602155837624

上传成功后,点击打开文档,可以在这里修改并编辑文档:

image-20260602165311914

创建新的联系人一起编辑文档:

image-20260602165342637

可以在这里讲文档排序,显示,编辑等等:

屏幕截图 2026-06-02 165249

Paperless-ngx是一款强大的开源文档管理系统,而通过与cpolar结合,用户可以轻松实现内网穿透,将本地部署的Paperless-ngx服务安全、稳定地暴露到公网,无需复杂的网络配置或固定IP。cpolar凭借其简单易用、高可靠性和多协议支持的优势,成为远程访问Paperless-ngx的理想桥梁,让用户随时随地通过浏览器高效管理文档,真正释放Paperless-ngx的全部潜能——这一切,都得益于cpolar强大的内网穿透能力。

6.安装cpolar实现随时随地开发

6.1 什么是cpolar?

cpolar是一款安全高效的内网穿透工具,无需公网IP或复杂配置,只需一条命令,即可将本地服务器、Web服务或任意端口映射到公网,让你随时随地远程访问内网应用,特别适合开发调试、远程运维和应急部署等场景。

6.2 部署cpolar

cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。

❤️以下是安装cpolar步骤:

官网在此:https://www.cpolar.com

使用一键脚本安装命令:

sudo curl https://get.cpolar.sh | sh

image-20250725104019896

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

sudo systemctl status cpolar

22e5adfaf290a17fc3384bb296055259

Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://ip:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。

8a6698b1bf26d64ba3645827fbfb1c29

7.配置公网地址

登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

  • 隧道名称:可自定义,本例使用了:paperless,注意不要与已有的隧道名称重复
  • 协议:http
  • 本地地址:9981
  • 域名类型:随机域名
  • 地区:选择China Top

image-20260603110724531

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用地址访问。

image-20260603110831659

访问成功。

image-20260603111154930

8.保留固定公网地址

使用cpolar为其配置二级子域名(cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站),该地址为固定地址,不会随机变化。

image-20250918151358733

点击左侧的预留,选择保留二级子域名,地区选择china Top,然后设置一个二级子域名名称,我使用的是paperless,大家可以自定义。填写备注信息,点击保留。

image-20260603110937381

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑

image-20260603111005279

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名
  • 地区: China Top

点击更新

image-20260603111054651

更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。

image-20260603111243350

最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问的页面,这样一个永久不会变化的二级子域名公网网址即设置好了。

image-20260603111300176

总结

在数字化浪潮席卷各行各业的今天,传统纸质文档管理方式已难以满足高效、安全与环保的需求。堆积如山的文件不仅占用物理空间,还带来检索困难、易损毁、难共享等痛点。为此,越来越多的个人与组织开始寻求智能化、自动化的文档管理解决方案。其中,开源项目 Paperless-ngx 凭借其强大的功能与灵活的部署能力,正成为构建无纸化办公体系的核心工具。

Paperless-ngx 是一个基于 Web 的文档管理系统,能够自动接收扫描件、PDF 或图像文件,并通过 OCR(光学字符识别)技术将其转化为可全文搜索的数字档案。它支持标签分类、自定义元数据、自动匹配规则和归档流程,极大提升了文档处理效率。用户只需将纸质文件扫描上传,系统即可自动识别内容、打标签、归档,甚至根据预设规则触发后续操作,真正实现“一次录入,终身可用”。

更令人欣喜的是,Paperless-ngx 支持本地私有化部署,保障数据隐私与安全;配合 cpolar 等内网穿透工具,还能轻松实现远程访问,让家庭用户或中小企业无需公网 IP 也能随时随地管理文档。这种“本地存储 + 智能识别 + 远程访问”的组合,既兼顾了安全性,又不失便利性。

通过 Paperless-ngx 构建的智能文档管理方案,不仅减少了纸张消耗,降低了存储成本,更提升了信息检索与协作效率。它不仅是技术工具,更是一种面向未来的数字生活方式。告别杂乱的文件柜,拥抱整洁高效的数字档案库——Paperless-ngx 正在帮助我们迈出无纸化办公的关键一步。

感谢您对本篇文章的喜爱,有任何问题欢迎留言交流。cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站

Share:

发表回复

目录

On Key

推荐文章