Paperless-ngx
综合介绍
Paperless-ngx 是一款开源的文档管理系统,它可以将你的纸质文件和电子文档,全部转换成一个统一的、可全文搜索的电子档案库。 这个项目是一个由社区支持的版本,它继承并发展自已停止维护的 Paperless-ng 项目,目标是提供一个功能强大且易于使用的无纸化解决方案。 系统的核心功能是光学字符识别(OCR),当你扫描或上传一份文件(如PDF、图片甚至Office文档)后,它会自动识别其中的文本内容,无论原文是扫描件还是照片。 通过这项技术,你可以像搜索网页一样,轻松地在堆积如山的文档中找到任何你需要的信息。此外,Paperless-ngx 还能通过机器学习技术,自动为你的文档添加标签、识别发件人并进行分类,大大减少了手动整理的工作量。 你可以为文档设置对应的发件人、类型、标签等多种分类方式,建立清晰的组织结构。对于需要长期保存的文档,系统会将其转换为 PDF/A 格式,这是一种为长期归档设计的标准格式。
功能列表
- 光学字符识别 (OCR): 自动从PDF文件和图片中提取文本,使其内容可以被搜索。支持超过100种语言。
- 支持多种文件类型: 支持处理PDF、图片、纯文本文件以及微软Office和LibreOffice的文档。
- 归档与索引: 提供标签、发件人、文档类型等多种方式来组织和索引文件,方便分类管理。
- 机器学习自动分类: 系统能从你整理的文档中学习,并自动为新录入的文档添加标签、发件人和文档类型。
- 强大的全文搜索: 提供类似搜索引擎的体验,包括自动补全、相关度排序,并能在文档中高亮显示搜索结果。
- 直观的网页应用: 拥有一个用户友好的网页界面,支持仪表盘定制、批量编辑、拖拽上传和自定义视图等功能。
- 电子邮件集成: 可以配置IMAP邮箱,系统会自动拉取邮件附件并将其作为文档进行归档。
- 长期存储格式: 所有文档最终会以PDF/A格式保存,确保文件可以被长期、可靠地访问。
- 多用户支持: 支持创建多个用户账户,可以分别设置权限,方便家庭或团队共享使用。
- 安装简便: 主要通过Docker进行部署,提供了安装脚本,大大简化了环境配置的复杂度。
使用帮助
Paperless-ngx 设计的初衷就是为了简化文档管理的流程,而其最推荐的部署方式是使用 Docker,这样可以确保环境的一致性并简化安装和更新流程。
第一步:环境准备 (Docker)
在开始之前,你需要在你的服务器或个人电脑上安装 Docker 和 Docker Compose。这是运行 Paperless-ngx 的基础环境。你可以从 Docker 官方网站找到适合你操作系统的安装指南。
第二步:下载并配置 Paperless-ngx
官方提供了一个非常方便的安装脚本,可以自动完成大部分配置工作。你只需要在终端中运行以下命令即可:
bash -c "$(curl -L https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/install-paperless-ngx.sh)"
这个脚本会引导你完成一系列的设置,包括创建必要的文件夹(如consume
, media
, data
, export
等)以及生成一个基础的 docker-compose.yml
文件和 .env
配置文件。
如果你想进行更详细的手动配置,可以按照以下步骤操作:
- 创建目录结构:首先,为你 Paperless-ngx 的所有数据创建一个主目录,并在其中创建几个子目录。
mkdir -p /opt/stacks/paperless-ngx cd /opt/stacks/paperless-ngx
- 创建配置文件:在
paperless-ngx
目录下,你需要创建两个核心文件:docker-compose.yml
用于定义服务,以及.env
用于存放环境变量。.env
文件内容示例:这个文件用来存放敏感信息和个性化配置。# 设置用户和组ID,确保文件权限正确 # 在Linux/macOS下通过运行 `id` 命令获取 USERMAP_UID=1000 USERMAP_GID=1000 # 设置系统时区,例如中国的时区 PAPERLESS_TIME_ZONE=Asia/Shanghai # 一个用于加密的随机密钥,务必修改成一个无人知晓的复杂字符串 PAPERLESS_SECRET_KEY=a_very_long_and_random_string_of_characters # 默认的OCR语言,chi_sim代表简体中文 PAPERLESS_OCR_LANGUAGE=chi_sim
docker-compose.yml
文件内容示例:这是一个比较基础的配置,使用了 PostgreSQL 作为数据库。version: "3.4" services: broker: image: docker.io/library/redis:7 restart: unless-stopped volumes: - redisdata:/data webserver: image: ghcr.io/paperless-ngx/paperless-ngx:latest restart: unless-stopped depends_on: - broker - db ports: - 8000:8000 healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000"] interval: 30s timeout: 10s retries: 3 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_DBENGINE: postgresql PAPERLESS_DBHOST: db PAPERLESS_DBPORT: 5432 PAPERLESS_DBUSER: paperless PAPERLESS_DBPASS: paperless PAPERLESS_DBNAME: paperless USERMAP_UID: ${USERMAP_UID:-1000} USERMAP_GID: ${USERMAP_GID:-1000} PAPERLESS_TIME_ZONE: ${PAPERLESS_TIME_ZONE:-UTC} PAPERLESS_SECRET_KEY: ${PAPERLESS_SECRET_KEY} PAPERLESS_OCR_LANGUAGES: chi_sim eng PAPERLESS_OCR_LANGUAGE: ${PAPERLESS_OCR_LANGUAGE:-eng} 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 volumes: data: media: export: consume: pgdata: redisdata:
第三步:启动服务
配置完成后,在 docker-compose.yml
文件所在的目录中,运行以下命令来启动 Paperless-ngx 服务:
docker-compose up -d
Docker 会自动下载所需的镜像并根据你的配置启动所有容器。这个过程可能需要几分钟时间。
第四步:创建管理员用户
服务首次启动后,你需要创建一个管理员账户才能登录系统。执行以下命令,并按照提示输入你的用户名、邮箱(可选)和密码。
docker-compose run --rm webserver create_superuser
第五步:开始使用 Paperless-ngx
现在,一切准备就绪。打开你的网页浏览器,访问 http://<你的服务器IP>:8000
。你会看到登录界面,使用刚刚创建的管理员账户登录即可。
核心操作流程:
- 上传文档:最直接的方式是将你的PDF或图片文件拖拽到网页仪表盘的上传区域。
- 设置消费文件夹 (Consume Folder):这是 Paperless-ngx 强大的自动化功能之一。你可以将你的扫描仪设置为自动将扫描件保存到
consume
文件夹中。系统会定期检查这个文件夹,一旦发现新文件,就会自动将其导入、执行OCR并进行归档处理。 - 整理与搜索:
- 处理文档:新导入的文档会出现在收件箱中。你可以点击文档,在右侧的编辑面板中为其添加标签、设置发件人、文档类型和创建日期等。
- 利用机器学习:当你手动整理了足够多的文档后,Paperless-ngx 的机器学习功能就会开始发挥作用。它会自动为你推荐或直接应用标签和分类,你只需要检查并确认即可。
- 全文搜索:在顶部的搜索框中输入任何关键词,无论是文件名、标签还是文档内容里的词语,系统都能快速帮你找到相关文件。
应用场景
- 个人家庭资料管理对于个人用户,Paperless-ngx 可以成为一个家庭数字文件中心。你可以用它来归档所有的账单、银行对账单、合同、保单、证书和收据。通过设置,扫描仪可以直接将文件发送到系统进行自动处理和分类,从此告别杂乱的纸质文件和在硬盘里难以查找的扫描件。
- 小型企业与团队知识库小型企业或团队可以利用 Paperless-ngx 来共享和管理项目文档、报告、发票和客户资料。通过多用户权限管理,可以确保不同成员只能访问与其工作相关的文档,同时利用其强大的搜索功能,快速找到历史文件,提高整个团队的工作效率。
- 学术研究与学习学生和研究人员需要处理大量的学术论文、笔记和参考资料。Paperless-ngx 可以将这些PDF文档全部索引起来,当需要查找某个特定理论或数据时,只需通过关键词搜索,就能在所有论文中定位到相关内容,极大地提升了文献管理的效率。
QA
- Paperless-ngx 和 Paperless-ng 有什么区别?Paperless-ngx 是 Paperless-ng 项目的一个社区维护分支。由于原作者停止了对 Paperless-ng 的维护,社区成员创建了 ngx 版本,并持续为其添加新功能、修复错误和提供支持,它被认为是事实上的官方后续版本。
- 这个系统支持哪些文件类型?Paperless-ngx 主要支持PDF文档和常见的图片格式(如PNG, JPG, TIFF)。此外,通过与Tika等工具集成,它还可以处理微软Office文档(Word, Excel, PowerPoint)和LibreOffice的对应文件。
- 我的文档数据安全吗?Paperless-ngx 是一个自托管(Self-Hosted)的应用,意味着所有数据都存储在你自己的服务器上,你拥有完全的控制权。官方强调,由于文档可能包含敏感信息,不应将此系统部署在不受信任的主机上。最安全的方式是在你家里的本地服务器上运行,并做好数据备份。
- 系统如何处理我的原始文件?系统会保留你上传的原始文件,同时会创建一个经过OCR处理并优化用于长期存档的PDF/A版本。这意味着你随时可以访问未经修改的原始文档,同时又能享受到可搜索存档版本带来的便利。