使用NAS开启无纸化办公,Docker部署开源文档管理系统『Paperless-ngx』

使用NAS开启无纸化办公,Docker部署开源文档管理系统『Paperless-ngx』

哈喽小伙伴们好,我是Stark-C~

对于文案类的办公场景来说,手头堆放最多的可能就是各种文档文件,以及各种用过的打印废纸。

这么多年来,不管是领导还是员工,都希望能够使用数字化管理做到无纸化办公,抛开环保不谈,更重要的是它能节约成本开支,便于管理与提高效率。这种管理工具市面上不多,并且基本还是收费的。

今天为大家分享的这个项目『Paperless-ngx』就是一款非常不错的无纸化办公管理工具,可以轻松管理我们日常常见的各类文档,最重要的是,它还是免费开源,支持本地私有化部署也保障了文档的安全性。

关于Paperless-ngx

🔺当我们看到Paperless-ngx标识的时候,第一眼看到的绿叶就说明它的功能亮点:绿色环保(也就是它倡导的“无纸化”),实时上它对于很多职场人士来说,确实可以做到无纸化办公。简单谈说,它其实就是帮助用户实现无纸化办公和文档数字化管理工具,其核心功能包括:

  • 文档的组织与索引:通过标签、对应者、类型等多种方式组织扫描文档。

  • OCR文本识别:对文档进行光学字符识别,使包含图像的扫描文档也能搜索和选择文本。

  • 多语言支持:利用开源的Tesseract引擎,支持100多种语言。

  • 长期存储格式:文档以PDF/A格式保存,设计用于长期存储。

  • 智能标签与分类:使用机器学习自动添加标签、对应者和文档类型。

  • 广泛的文件支持:支持PDF文档、图像、纯文本文件、Office文档等。

  • 定制化的文件管理:Paperless-ngx管理文件名和文件夹,支持不同的配置。

  • 现代化的网页应用:定制仪表板、过滤器、批量编辑、拖放上传、自定义视图、共享链接等。

  • 全文搜索:自动完成、相关性排序、高亮显示匹配查询的部分。

  • 电子邮件处理:从电子邮件账户导入文档,配置多个账户和规则。

  • 多用户权限系统:内置健壮的多用户权限系统。

  • 多核系统优化:并行处理多个文档。

然后引用下其他网友总结出来的几个较为常见且实用的使用场景:

个人文件管理:无论是家庭账单、保险合同还是医疗报告,Paperless-ngx 都能帮你把纸质文件变成可搜索的电子文件,告别纸质文件的烦恼。

企业档案管理:对于企业来说,文件量庞大且分类复杂,而Paperless-ngx 的OCR和标签功能让档案的整理和查找都更有效率。特别适合中小企业,降低文件管理成本。

教育与研究:对于学术机构或研究人员来说,海量的研究报告、会议纪要和参考资料都可以借助 Paperless-ngx 进行存档和检索,为学术研究提供支持。

它还提供了演示Demo,有兴趣的小伙伴可以先体验再部署:https://demo.paperless-ngx.com/

Paperless-ngx部署

部署前的准备:

需要说明的是,今天的这个项目需要多大5个容器同时联动和配合,所以我们可以简单的使用Docker Compose即可轻松部署,而在极空间上使用Docker Compose,最简单的方案莫过于Portainer了。

🔺极空间自从上次更新上线SSH功能以后,可玩性和功能性大大增强。我也是第一时间给大家分享了它的一些基本玩法和注意事项,其中就包括Portainer的部署:

按照文中教程,部署好Portainer以及了解它的基本用法还是没有问题的。

我这里再次多嘴提醒下绝大多数的普通用户:如果你只是为了使用命令部署Docker,就和我一样在部署好Portainer之后关掉极空间的SSH功能,一个是因为安全问题,另一个是防止自己误删极空间的系统文件导致系统问题。在Portainer中支持所有容器的命令和图像化部署,哪怕不是Compose命令,大家也可以通过【composerize】官网在线转换,非常方便!

另外就是Portainer是在使用命令部署容器的时候也是需要拉取Docker镜像,所以必要的代理和网络还是少不了的,要不然也会失败,这里就不讨论了~

🔺然后在极空间的Docker目录下新建一个“paperlessngx”的文件夹,在paperlessngx文件夹下面在新建 consume、data、db、export、media、redis、trash总共7个子文件夹。

开始部署:

🔺完成准备工作之后打开Portainer,选择“堆栈--添加堆栈”。

🔺名称随意,在Web编辑器中输入以下命令(直接复制粘贴即可,注意格式很重要):

services:redis:image: redis:7command:- /bin/sh- -c- redis-server --requirepass redispasscontainer_name: PaperlessNGX-REDIShostname: paper-redismem_limit: 512mmem_reservation: 256mcpu_shares: 768security_opt:- no-new-privileges:trueread_only: trueuser: 0:0    # 用户UID和GID,极空间用户不用改,其它NAS用户请自行修改healthcheck:test: ["CMD-SHELL", "redis-cli ping || exit 1"]volumes:- ./Docker/paperlessngx/redis:/data:rw    # 映射redis文件夹实际路径environment:TZ: Asia/Shanghairestart: unless-stopped
​db:image: postgres:17container_name: PaperlessNGX-DBhostname: paper-dbmem_limit: 1gcpu_shares: 768security_opt:- no-new-privileges:truehealthcheck:test: ["CMD", "pg_isready", "-q", "-d", "paperless", "-U", "paperlessuser"]timeout: 45sinterval: 10sretries: 10volumes:- ./Docker/paperlessngx/db:/var/lib/postgresql/data    # 映射db文件夹实际路径environment:POSTGRES_DB: paperlessPOSTGRES_USER: paperlessuserPOSTGRES_PASSWORD: paperlesspassrestart: unless-stopped
​gotenberg:image: gotenberg/gotenberg:latestcontainer_name: PaperlessNGX-GOTENBERGhostname: gotenbergsecurity_opt:- no-new-privileges:trueuser: 0:0    # 用户UID和GID,极空间用户不用改,其它NAS用户请自行修改command:- "gotenberg"- "--chromium-disable-javascript=true"- "--chromium-allow-list=file:///tmp/.*"restart: unless-stopped
​tika:image: ghcr.io/paperless-ngx/tika:latestcontainer_name: PaperlessNGX-TIKAhostname: tikasecurity_opt:- no-new-privileges:trueuser: 0:0    # 用户UID和GID,极空间用户不用改,其它NAS用户请自行修改restart: unless-stopped
​paperless:image: ghcr.io/paperless-ngx/paperless-ngx:latestcontainer_name: PaperlessNGXhostname: paperless-ngxmem_limit: 6gcpu_shares: 1024security_opt:- no-new-privileges:truehealthcheck:test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:8000"]interval: 30stimeout: 10sretries: 5ports:- 8000:8000    # 项目打开端口,冒号前面请勿和本地冲突volumes:- ./Docker/paperlessngx/data:/usr/src/paperless/data    # 映射data文件夹实际路径- ./Docker/paperlessngx/media  :/usr/src/paperless/media    # 映射media文件夹实际路径- ./Docker/paperlessngx/export:/usr/src/paperless/export    # 映射export文件夹实际路径- ./Docker/paperlessngx/consume:/usr/src/paperless/consume    # 映射consume文件夹实际路径- ./Docker/paperlessngx/trash:/usr/src/paperless/trash    # 映射trash文件夹实际路径environment:PAPERLESS_REDIS: redis://:redispass@paper-redis:6379PAPERLESS_DBENGINE: postgresqlPAPERLESS_DBHOST: paper-dbPAPERLESS_DBNAME: paperlessPAPERLESS_DBUSER: paperlessuserPAPERLESS_DBPASS: paperlesspassPAPERLESS_EMPTY_TRASH_DIR: ../trashPAPERLESS_FILENAME_FORMAT: '{{ created_year }}/{{ correspondent }}/{{ document_type }}/{{ title }}'PAPERLESS_OCR_ROTATE_PAGES_THRESHOLD: 6PAPERLESS_TASK_WORKERS: 1USERMAP_UID: 0    # 用户UID,极空间用户不用改,其它NAS用户请自行修改USERMAP_GID: 0    # 用户GID,极空间用户不用改,其它NAS用户请自行修改PAPERLESS_TIME_ZONE: Asia/ShanghaiPAPERLESS_ADMIN_USER: stark-c    # 默认管理员用户名PAPERLESS_ADMIN_PASSWORD: 123456    # 默认管理员密码PAPERLESS_OCR_LANGUAGES: chi-sim chi-traPAPERLESS_OCR_LANGUAGE: eng+chi_simPAPERLESS_TIKA_ENABLED: 1PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000PAPERLESS_TIKA_ENDPOINT: http://tika:9998restart: unless-stoppeddepends_on:db:condition: service_healthyredis:condition: service_healthytika:condition: service_startedgotenberg:condition: service_started

以上代码需要根据注释自行修改,其它没有注释的如果不懂请不要乱动。

🔺修改好之后点击页面底部的“部署堆栈”。

🔺等待的时间稍长,如果不出意外,就能看到这个项目中的5个容器都在正常运行。

Paperless-ngx体验

🔺打开方式依然是常规的【极空间本地IP:端口号】即可,首次打开需要输入用户名和密码,也就是我们部署容器时环境变量中自己设置的账户密码。

🔺登录进来之后就可以看到它默认显示的就是我们部署时候的用户名信息,并且原生都是中文显示。

🔺我这里尝试先上传一个Word文档,直接在首页(仪表盘)这里点击上传,或者拖拽都可以。

🔺几秒钟的时间,文件就会出现在“文档”菜单。

🔺点开可以直接查看,同时还能OCR识别。可以看到它对文字类的OCR识别可以说是做到了准确率极高,几乎没有漏掉和错误。

🔺多用户还能方便在这里编辑权限。

🔺同样的方法,我上传了一张照片并打开。

🔺可以看到照片中的文字也被成功识别。

🔺不过稍微复杂的图片文字就少点意思了,并且明显英文的识别率要高于中文很多。

🔺对于TXT格式的文档支持的也非常不错,比如说我这里上传的一段Docker Compose.yaml代码,夹杂着中文注释,它都是完美支持。

🔺最后看看对于PDF的支持,依然没任何问题,并且OCR识别同样准确率很高。

🔺它还有一个很好的功能就是智能搜索,给出关键字,很快就能找到我们保存在上面的文档。

🔺有点遗憾的是它目前不支持我写文章的Markdown格式,如果后期支持那就太合我意了!

最后

今天分享的这个项目还是非常实用了,它可以让我们更好地管理他们的文档,提高生产力,减少纸张使用,不管是对企业还是个人都是一个实用的解决方案,有兴趣的小伙伴可以整起来了!

最近正逢极空间双十一感恩回馈大促销活动,极空间的多款产品都有好价。如果你近期有入手NAS的计划,不妨关注下极空间。

好了,以上就是今天给大家分享的内容,我是爱分享的Stark-C,如果今天的内容对你有帮助请记得收藏,顺便点点关注,咱们下期再见!谢谢大家~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/887684.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ES 基本使用与二次封装

概述 基本了解 Elasticsearch 是一个开源的分布式搜索和分析引擎,基于 Apache Lucene 构建。它提供了对海量数据的快速全文搜索、结构化搜索和分析功能,是目前流行的大数据处理工具之一。主要特点即高效搜索、分布式存储、拓展性强 核心功能 全文搜索:…

矩阵的拼接

矩阵的拼接分为横向拼接和纵向拼接 注意:横向拼接要求两矩阵行数相同,纵向拼接要求两矩阵列数相同 h o r z c a t horzcat horzcat和 v e r t c a t vertcat vertcat函数 h o r z c a t ( a , b ) horzcat(a,b) horzcat(a,b)将 a a a和 b b b横向拼接&a…

【Qt】重写QComboBox下拉展示多列数据

需求 点击QComboBox时&#xff0c;下拉列表以多行多列的表格展示出来。 实现 直接上代码&#xff1a; #include <QComboBox> #include <QTableWidget> #include <QVBoxLayout> #include <QWidget> #include <QEvent> #include <QMouseEve…

七牛云AIGC内容安全方案助力企业合规创新

随着人工智能生成内容(AIGC)技术的飞速发展,内容审核的难度也随之急剧上升。在传统审核场景中,涉及色情、政治、恐怖主义等内容的标准相对清晰明确,但在AIGC的应用场景中,这些界限变得模糊且难以界定。用户可能通过交互性引导AI生成违规内容,为审核工作带来了前所未有的不可预测…

告别 Kafka,拥抱 Databend:构建高效低成本的用户行为分析体系

用户行为数据埋点指标是数据仓库中不可或缺的重要数据源之一&#xff0c;同时也是企业最宝贵的资产之一。通常情况下&#xff0c;用户行为数据分析包含两大数据源&#xff1a;用户行为分析日志和上游关系型数据库&#xff08;如 MySQL&#xff09;。基于这些数据&#xff0c;企…

数据结构 (8)线性表的应用——一元多项式的表示及应用

一、一元多项式的定义 一元多项式是代数学研究的基本对象之一&#xff0c;可以表示为&#xff1a; P_n(x) p_0 p_1x p_2xn 其中&#xff0c;p_0, p_1, ..., p_n 是数域 F 中的数&#xff0c;n 是非负整数&#xff0c;x 是变量。 二、一元多项式的线性表表示 在计算机中&…

如何安全高效地打开和管理动态链接库(DLL)?系统提示dll丢失问题的多种有效修复指南

动态链接库&#xff08;DLL&#xff09;文件是Windows操作系统中非常重要的一部分&#xff0c;它们包含了程序运行所需的代码和数据。当系统提示DLL文件丢失时&#xff0c;可能会导致应用程序无法正常运行。以下是一些安全高效地打开和管理DLL文件以及修复DLL丢失问题的方法&am…

基于微信小程序的平价药房管理系统+LW参考示例

1.项目介绍 系统角色&#xff1a;管理员、医生、普通用户功能模块&#xff1a;用户管理、医生管理、药品分类管理、药品信息管理、在线问诊管理、生活常识管理、日常提醒管理、过期处理、订单管理等技术选型&#xff1a;SpringBoot&#xff0c;Vue&#xff0c;uniapp等测试环境…

鸿蒙ArkUI-X已更新适配API13啦

ArkUI-X 5.0.1 Release版配套OpenHarmony 5.0.1 Rlease&#xff0c;API 13&#xff0c;新增适配部分API 13接口支持跨平台&#xff1b;框架能力进一步完善&#xff0c;支持Android应用非压缩模式&#xff0c;支持Android Fragment对接跨平台。ACE Tools工具易用性提升&#xff…

《生成式 AI》课程 第3講 CODE TASK执行文章摘要的机器人

课程 《生成式 AI》课程 第3講&#xff1a;訓練不了人工智慧嗎&#xff1f;你可以訓練你自己-CSDN博客 任务1:总结 1.我们希望你创建一个可以执行文章摘要的机器人。 2.设计一个提示符&#xff0c;使语言模型能够对文章进行总结。 model: gpt-4o-mini,#gpt-3.5-turbo, import…

【人工智能】深入解析GPT、BERT与Transformer模型|从原理到应用的完整教程

在当今人工智能迅猛发展的时代&#xff0c;自然语言处理&#xff08;NLP&#xff09;领域涌现出许多强大的模型&#xff0c;其中GPT、BERT与Transformer无疑是最受关注的三大巨头。这些模型不仅在学术界引起了广泛讨论&#xff0c;也在工业界得到了广泛应用。那么&#xff0c;G…

Python开发环境搭建+conda管理环境

下载Miniconda 推荐从清华镜像下载安装包 Index of /anaconda/miniconda/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 打开网页后&#xff0c;下拉到最后找到Miniconda3-latest前缀的文件&#xff0c;或者网页中直接搜索Miniconda3-latest&#xff0c;都可以找…

python控制鼠标,键盘,adb

python控制鼠标&#xff0c;键盘&#xff0c;adb 听说某系因为奖学金互相举报&#xff0c;好像拿不到要命一样。不禁想到几天前老墨偷走丁胖子的狗&#xff0c;被丁胖子逮到。他面对警察的问询面不改色坚持自我&#xff0c;反而是怒气冲冲的丁胖子被警察认为是偷狗贼。我觉得这…

使用 exe4j 将 Spring Boot 项目打包为 EXE 可执行文件

使用 exe4j 将 Spring Boot 项目打包为 EXE 可执行文件 文章目录 使用 exe4j 将 Spring Boot 项目打包为 EXE 可执行文件什么是 exe4j准备工作打包 Spring Boot 项目为 EXE 文件1.启动 exe4j2. 选择项目类型3. 配置项目名称和输出目录4. 配置项目类型或可执行文件名称5. java配…

【操作文档】mysql分区操作步骤.docx

1、建立分区表 执行 tb_intercept_notice表-重建-添加分区.sql 文件&#xff1b; DROP TABLE IF EXISTS tb_intercept_notice_20241101_new; CREATE TABLE tb_intercept_notice_20241101_new (id char(32) NOT NULL COMMENT id,number varchar(30) NOT NULL COMMENT 号码,cre…

使用 pycharm 新建不使用 python 虚拟环境( venv、conda )的工程

有时候我们发现一个好玩的 demo&#xff0c;想赶快在电脑上 pip install 一下跑起来&#xff0c;发现因为 python 的 venv、conda 环境还挺费劲的&#xff0c;因为随着时间的发展&#xff0c;之前记得很清楚的 venv、conda 的用法&#xff0c;不经常使用&#xff0c;半天跑不起…

安全设备-日志审计-数据管理

7 日志审计系统数据管理 7.1 日志审计系统数据管理概述 日志审计系统数据管理系统自身数据存储管理&#xff0c;并对自身配置、采集的日志进行统一管理。 7.2 日志审计系统数据管理配置举例 7.2.1 用户场景 用户通过数据管理配置&#xff0c;实现对系统的备份、清理、转存…

简单的Activiti Modoler 流程在线编辑器

简单的Activiti Modoler 流程在线编辑器 1.需求 我们公司使用的流程是activiti5.22.0&#xff0c;版本有些老了&#xff0c;然后使用的编辑器都是eclipse的流程编辑器插件&#xff0c;每次编辑流程需要打开eclipse进行编辑&#xff0c;然后再导入到项目里面&#xff0c;不是特…

玩转 uni-app 静态资源 static 目录的条件编译

一. 前言 老生常谈&#xff0c;了解 uni-app 的开发都知道&#xff0c;uni-app 可以同时支持编译到多个平台&#xff0c;如小程序、H5、移动端 App 等。它的多端编译能力是 uni-app 的一大特点&#xff0c;让开发者可以使用同一套代码基于 Vue.js 的语法编写程序&#xff0c;然…

云技术-docker

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团…