前言
在数字化浪潮席卷各行各业的今天,办公桌上堆积如山的纸质文件、散落在各个角落的发票收据、难以检索的合同档案,依然困扰着无数个人与组织。我们一边享受着云计算与人工智能带来的高效便利,一边却仍在为纸质文档的存储、查找与归档耗费大量时间与空间——这种“数字时代下的纸质困境”,已成为提升工作效率与实现绿色办公的隐形障碍。
所幸,开源技术为我们提供了一条优雅的出路。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+)
官方资源
- GitHub 仓库:https://github.com/paperless-ngx/paperless-ngx
- 官方文档:https://docs.paperless-ngx.com/
- Docker 镜像:ghcr.io/paperless-ngx/paperless-ngx
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!完全一致(包括大小写、特殊字符)
能不能直接用postgres用户?
技术上可以,比如后续编写docker-compose.yml文件时:
但强烈不建议,原因:
| 风险 | 说明 |
|---|---|
| 权限过大 | postgres 是超级用户,能删整个数据库集群 |
| 安全审计困难 | 所有操作都显示是 postgres 做的 |
| 配置冲突 | 多个应用共用 postgres 用户容易互相干扰 |
| 不符合最小权限原则 | 应用只需操作自己的数据库,不需要全局权限 |
4.安装Paperless-ngx
通过Docker部署Paperless-ngx:
在开始部署之前,确保你的系统已经安装了Docker。可以通过以下命令检查 Docker 是否已安装:
docker --version
首先创建一下安装的目录并进入到该目录:
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
验证是否启动成功:
docker logs -f paperless-webserver-1
出现下图所示信息,即为成功!
部署完成后,在浏览器中输入 http://IP:9981 就能看到paperless的界面:
5.使用Paperless-ngx
下载完成后,注册用户:
登录成功!
设置为自己喜欢的布局:
上传文档:
上传成功后,点击打开文档,可以在这里修改并编辑文档:
创建新的联系人一起编辑文档:
可以在这里讲文档排序,显示,编辑等等:
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步骤:
使用一键脚本安装命令:
sudo curl https://get.cpolar.sh | sh
安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)
sudo systemctl status cpolar
Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://ip:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:
打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。
7.配置公网地址
登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:
- 隧道名称:可自定义,本例使用了:paperless,注意不要与已有的隧道名称重复
- 协议:http
- 本地地址:9981
- 域名类型:随机域名
- 地区:选择China Top
创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用地址访问。
访问成功。
8.保留固定公网地址
使用cpolar为其配置二级子域名(cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站),该地址为固定地址,不会随机变化。
点击左侧的预留,选择保留二级子域名,地区选择china Top,然后设置一个二级子域名名称,我使用的是paperless,大家可以自定义。填写备注信息,点击保留。
登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑。
修改隧道信息,将保留成功的二级子域名配置到隧道中
- 域名类型:选择二级子域名
- Sub Domain:填写保留成功的二级子域名
- 地区: China Top
点击更新
更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。
最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问的页面,这样一个永久不会变化的二级子域名公网网址即设置好了。
总结
在数字化浪潮席卷各行各业的今天,传统纸质文档管理方式已难以满足高效、安全与环保的需求。堆积如山的文件不仅占用物理空间,还带来检索困难、易损毁、难共享等痛点。为此,越来越多的个人与组织开始寻求智能化、自动化的文档管理解决方案。其中,开源项目 Paperless-ngx 凭借其强大的功能与灵活的部署能力,正成为构建无纸化办公体系的核心工具。
Paperless-ngx 是一个基于 Web 的文档管理系统,能够自动接收扫描件、PDF 或图像文件,并通过 OCR(光学字符识别)技术将其转化为可全文搜索的数字档案。它支持标签分类、自定义元数据、自动匹配规则和归档流程,极大提升了文档处理效率。用户只需将纸质文件扫描上传,系统即可自动识别内容、打标签、归档,甚至根据预设规则触发后续操作,真正实现“一次录入,终身可用”。
更令人欣喜的是,Paperless-ngx 支持本地私有化部署,保障数据隐私与安全;配合 cpolar 等内网穿透工具,还能轻松实现远程访问,让家庭用户或中小企业无需公网 IP 也能随时随地管理文档。这种“本地存储 + 智能识别 + 远程访问”的组合,既兼顾了安全性,又不失便利性。
通过 Paperless-ngx 构建的智能文档管理方案,不仅减少了纸张消耗,降低了存储成本,更提升了信息检索与协作效率。它不仅是技术工具,更是一种面向未来的数字生活方式。告别杂乱的文件柜,拥抱整洁高效的数字档案库——Paperless-ngx 正在帮助我们迈出无纸化办公的关键一步。
感谢您对本篇文章的喜爱,有任何问题欢迎留言交流。cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站




























