如何部署 Papermerge用 Docker Compose 为扫描文档搭一个可全文检索的数字档案中心【免费下载链接】papermergeOpen Source Document Management System for Digital Archives (Scanned Documents)项目地址: https://gitcode.com/gh_mirrors/pa/papermergePapermerge 是一个面向扫描文档的开源文档管理系统PDF 传上去它用 OCR 把图片里的文字抽出来、建索引之后你可以按关键词搜到某份扫描合同里的一句话。这篇文章带你在 5 分钟内从空机跑到上线再覆盖首启验证、按需调优和故障排查。先用 30 秒判断Papermerge 是不是你要的东西Papermerge 只解决一个痛点扫描件是图片搜不到。它接管扫描文档后的三件事OCR 抽取文字底层是 Tesseract对文字建全文索引支持跨文档关键词检索用文件夹层级、彩色标签、文档类型把文档归档并提供类似桌面文件管理器的高亮、双栏拖拽界面。支持 PDF、TIFF、JPEG、PNG 四种格式附带页级操作删页、换序、抽取页面和多用户权限。适合你如果你手里有持续增长的扫描文档——发票、合同、证书、病历——且希望在浏览器里直接管理和检索。部署前体检系统、硬件、网络三项前置条件动手前花 1 分钟核对面这张表缺哪项先补哪项检查项要求说明系统Linux Docker Docker ComposeCompose 插件形式即可无需单独装内存≥ 2 GBOCR 阶段吃 CPU存量文档多建议再放宽磁盘≥ 20 GB 空闲放 PostgreSQL 库、媒体文件、Redis 数据网络能拉取公开镜像共 4 个镜像app、worker、postgres、redis端口8000 未被占用冲突时在docker-compose.yml的ports里改映射极速部署三条命令让 4 个容器跑起来第一步拉代码进入部署目录git clone https://gitcode.com/gh_mirrors/pa/papermerge cd papermerge/docker预期看到当前目录有docker-compose.yml和config/下的三份生产配置app.production.py、worker.production.py、papermerge.config.py。第二步启动全部服务docker-compose up -d预期看到docker ps里 4 个容器全部 Up——postgres_db、redis、papermerge_app、papermerge_worker。第三步盯首启日志等迁移完成docker-compose logs -f app预期看到日志里依次跑完migrate、collectstatic最后出现 mod_wsgi-express 启动服务的信息。看到后即可 CtrlC 退出。4 个容器的依赖关系值得记一下排障时会用到dbPostgreSQL 12.3和redisRedis 6先起前者存元数据后者当 OCR 任务队列app声明了depends_on: db / redis等两者就绪后才起监听 8000 端口首次启动会自动建库并创建管理员账号worker与app共享media_root卷在后台消费 OCR 任务不阻塞 Web 响应。首启验证用 admin 账号登录确认检索链路通了打开浏览器访问http://localhost:8000。初始账号admin/admin首启由启动脚本创建仅在该账号不存在时创建应该看到双栏文档浏览器左栏是空的文件夹树和文档列表。确认装成功的最小验证路径上传一份带文字的扫描 PDF → 等 worker 完成 OCR文档状态从处理中变为就绪→ 在搜索框输入文档正文里的一个关键词 → 命中即链路全通。如果不想开浏览器可以先用下面命令探活curl -I http://localhost:8000预期看到返回 200 或 302跳转登录页而不是 connection refused。登录成功后第一件事改掉初始密码。按需调优配置项按必须、常用、可选三级分层所有配置集中在docker/config/下papermerge.config.py管业务参数app.production.py管 Web 端worker.production.py管 worker 端。改完对应文件后重启相应容器生效。层级配置项位置说明必须管理员密码Web 用户管理初始密码是公开的上线前改掉必须对外端口docker-compose.yml的ports例如8080:8000换成自己的端口常用OCR 默认语言papermerge.config.py的OCR_DEFAULT_LANGUAGE镜像默认是deu德语处理中文场景少的英文文档就改成eng并让OCR_LANGUAGES列表覆盖实际文档语言常用数据库凭据papermerge.config.py的DBUSER/DBPASS/DBNAME与 compose 的POSTGRES_*环境变量两边要一致生产环境建议换掉默认值可选上传体积上限官方镜像启动脚本的--limit-request-body默认 20971520 字节20 MB需要更大量上传时改docker/app.startup.sh里的该参数并用docker/app.dockerfile重建镜像可选元数据抽取格式参考仓库根目录papermerge.conf.py.example中的METADATA_DATE_FORMATS、METADATA_CURRENCY_FORMATS自动从文档里提取日期、金额等字段可选自动导入同上的IMPORTER_DIR监听目录及 IMAP 系列参数把文档落盘到某目录或收邮件附件即可自动入库可选界面语言LANGUAGE_CODE默认英文不支持的语言回退英文疑难速查五个高频现象的原因与解法现象浏览器访问 8000 拒绝连接。原因app还在跑首启迁移或容器启动失败退出了。 解法docker-compose logs -f app看日志停在哪一步确认挂掉后用docker-compose up -d --force-recreate app重建。现象超过 20 MB 的文件上传失败。原因启动脚本把请求体限制在 20 MB20971520 字节。 解法拆分成小文件或压缩后再传确有大量文件需求时改docker/app.startup.sh的--limit-request-body后重建镜像。现象英文文档 OCR 出来是乱码或识别率极低。原因镜像默认 OCR 语言是德语deu。 解法在papermerge.config.py把OCR_DEFAULT_LANGUAGE改成文档对应语言如eng重启app和worker两个容器。现象文档传上去了但一直停在处理中。原因OCR 任务在 Redis 队列里没人消费——worker或redis没跑起来。 解法docker ps确认papermerge_worker和redis都是 Up再看docker-compose logs worker有没有报错。现象担心数据丢失不知道备份什么。原因数据分散在两类卷里——元数据在 PostgreSQL原文档和 OCR 结果在媒体卷。 解法备份postgres_data7数据库和media_root文件两个命名卷也可以在 compose 里把卷改成宿主机路径挂载备份更直接。收束上线之后还有三件事Papermerge 部署到此完成三条命令起服务上传一份扫描件验证全文检索剩下的是按文档量调优 OCR 语言和数据卷备份。下一步建议按顺序做在管理端定义文档类型如发票、合同、证照并挂自定义字段配一条自动化规则试试按规则自动归档和打标签正式使用前先把两个数据卷备份一遍。【免费下载链接】papermergeOpen Source Document Management System for Digital Archives (Scanned Documents)项目地址: https://gitcode.com/gh_mirrors/pa/papermerge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考