Paperless

出自 ArchWiki

Paperless 是一个开源文档管理系统,它可以索引您扫描的文档,并允许您轻松搜索文档和存储文档的元数据。本文档指的是 Paperless-ngx,它是 Paperless-ng 的社区维护分支,而 Paperless-ng 本身又是 原始 Paperless 项目的分支,这两个项目都已被放弃。

安装

安装 paperless-ngx-venvAUR 软件包。

文件夹

Paperless 安装到 /usr/share/paperless。Paperless 的持久存储位于 /var/lib/paperless,包含 media 文件夹、data 文件夹(默认包含 SQLite 数据库)、用于文档消耗的 consume 文件夹、临时 uploads 文件夹和 tmp 转换文件夹。consume 文件夹对 paperless 组中的每个人都具有写入权限。

消耗文件夹权限

如果您希望允许用户(例如 "http")将文档放入消耗文件夹中,请将他们添加到 paperless 用户组

OCR 语言

如果您希望 Paperless 消耗非英语语言的文档,您需要安装相应的 tesseract 语言数据包。对于德语,应该是 tesseract-data-deu

减小生成的 PDF 文档的大小

您可能需要安装可选依赖项 jbig2enc-gitAUR,以便 Paperless 可以使用它来减小生成的 PDF 文档的大小。

从 Paperless-ng 迁移

如果您已安装 paperless-ng 并希望迁移到 paperless-ngx-venvAUR,您可以安装 paperless-ngx-venvAUR,并在询问时选择删除 paperless-ng。数据不会丢失。不过,您仍然需要以 root 身份运行

# paperless-manage makemigrations

之后,以 paperless 用户身份应用通常的数据库迁移

[paperless]$ paperless-manage migrate

最后,重启 paperless.target

开始

启动/启用 paperless.target。您的 Paperless 实例现在应该可以通过端口 8000 访问。

配置

有关 Paperless 配置的详细信息,请访问其官方文档。配置文件位于 /etc/paperless.conf

注意: paperless-ngx-venvAUR 软件包创建了一个 paperless 系统用户,并提供了一个 paperless-manage 命令,该命令应始终以 paperless 用户身份运行。有关示例,请参见下方。在官方文档中提到 python3 manage.py 的地方,都应使用 paperless-manage 命令。

修改配置后,请不要忘记重启 paperless.target

根据您的需求调整配置

打开位于 /etc/paperless.conf 的配置文件,并根据您的需求调整参数,特别是与 OCR 相关的参数。有关各个设置的说明,请参阅官方文档

设置密钥

首次安装后,您应该生成并设置一个密钥。您无需记住它,但由于它用于保护签名数据,因此您应该对其保密。要设置密钥,请取消注释并修改以下行

/etc/paperless.conf
#PAPERLESS_SECRET_KEY=change-me

要生成密钥并在配置文件中设置它,您可以简单地运行以下命令

# sed -i /etc/paperless.conf -e "s|#PAPERLESS_SECRET_KEY=change-me|PAPERLESS_SECRET_KEY=$(tr -dc A-Za-z0-9 </dev/urandom | head -c 32)|"

运行数据库迁移

首次安装后以及更新后,您应该运行数据库迁移

[paperless]$ paperless-manage migrate

创建管理员用户

首次安装后,您应该为您的 Paperless 实例创建一个管理员用户

[paperless]$ paperless-manage createsuperuser

Nginx

安装 Nginx 并使用以下配置作为 Paperless 虚拟主机的起点

/etc/nginx/sites-available/paperless.domain.tld
server {

    server_name paperless.domain.tld;
    listen 80;
    listen [::]:80;

    location / {

        # Adjust host and port as required.
        proxy_pass https://127.0.0.1:8000/;

        # These configuration options are required for WebSockets to work.
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $server_name;
    }

}
注意: 子路径安装在 uvicorn > 0.25.0 中已损坏。[1]。但是,[2] 中讨论了解决方法

Pacman hook

要自动为软件包更新运行 Paperless 数据库的迁移,您可以利用包含的 pacman hook

# mkdir -vp /etc/pacman.d/hooks
# ln -sv /usr/share/paperless/docs/paperless.hook /etc/pacman.d/hooks/

故障排除

尝试导入文档时记录 BadSignature 错误

如果您在尝试导入文档时看到 BadSignature 错误,则可能是因为位于 /etc/paperless.conf 的配置文件未被考虑,因为模板配置文件 /usr/share/paperless/paperless.conf 具有优先权。在这种情况下,删除或重命名 /usr/share/paperless/paperless.conf重启 paperless.target

关于错误配置的重试和超时的警告

如果您看到关于错误配置的重试和超时的警告,您可以安全地忽略它,并等待 python-django-qAUR 中的简单的上游修复。警告看起来像这样

gunicorn[29457]: /usr/lib/python3.9/site-packages/django_q/conf.py:136: UserWarning: Retry and timeout are misconfigured. Set retry larger than timeout,
gunicorn[29457]:         failure to do so will cause the tasks to be retriggered before completion.
gunicorn[29457]:         See https://django-q.readthedocs.io/en/latest/configure.html#retry for details.
gunicorn[29457]:   warn("""Retry and timeout are misconfigured. Set retry larger than timeout,

使用 ImageMagick 生成缩略图失败

您必须在 /etc/ImageMagick-7/policy.xml 中禁用策略规则。添加 <!----> 来注释掉以下行

/etc/ImageMagick-7/policy.xml
<!-- <policy domain="delegate" rights="none" pattern="gs" /> -->

请考虑 ImageMagick 文章开头提到的可能的安全隐患。另请注意,如果 ImageMagick 策略规则保持活动状态,Paperless 无论如何都会回退到使用 ghostscript。

消费者服务持续占用一个 CPU 核心 100%

取消注释您的 /etc/paperless.conf 配置文件中关于 PAPERLESS_CONSUMER_POLLING 设置的行

/etc/paperless.conf
PAPERLESS_CONSUMER_POLLING=10