Beispiele für die neuen storage path templates ab Version 2.13

Klasse, ganz herzlichen Dank für diesen Beitrag! In der Doku steht sowas leider nicht und die 5000 Youtube-Videos zu paperless-ngx kennen das erst recht nicht, da gibt es nur triviale Anleitungen zur Installation und die absoluten Basics, die man sich mit minimalem Aufwand selbst erarbeiten kann

Mein Anwendungsfall dieser Technik wird so aussehen, dass ich per Tag oder Custom-Boolean-Field steuere, welche Dokumente in speziellen Unterordner versteckt werden und welche nicht

Hallo zusammen,

ich bin gerade dabei, paperless-ngx Ver. 2.14.7 auf meine Bedürfnisse zu konfigurieren, habe mich aber jetzt total festgefahren und komme einfach nicht mehr weiter.
Die paperless-ngx läuft auf einem Rasperry unter docker.

Alle neuen Dokumente sollen einen „Posteingangstag“ bekommen.

Folgendes habe ich getan:
Ich habe ein benutzerdefiniertes Feld „Kategorie“ mit dem Datentyp „Auswählen“ erstellt, welches automatisch per Arbeitsablauf jedem neuen Dokument mit dem Auslöser „Verarbeitung gestartet“ zugewiesen wird. Das funktioniert auch so weit.

Jetzt habe ich noch ein PAPERLESS_STORAGE_PATH_TEMPLATE in der docker-compose.yml eingetragen, der folgendes machen soll:

Handelt sich um ein Dokument der Kategorie „Belege“, dann in Dokumente\Belege\Dokumententyp\Tags\YYYY-MM-TT-Korrespondent-Titel.pdf abspeichern,
alle anderen Dokumente in Dokumente\Kategorie\Korrespondent\Tags\YYYY-MM-TT-Korrespondent-Titel.pdf abspeichern

PAPERLESS_STORAGE_PATH_TEMPLATE: >
{% if „Belege“ in custom_fields %}
Dokumente/Belege/{{document_type}}/{% if tags %}{{ tags|join(‚-‘) }}/{% endif %}{{created_year}}-{{created_month}}-{{created_day}}-{{correspondent}}-{{title}}.pdf
{% else %}
Dokumente/{{custom_fields}}/{{correspondent}}/{% if tags %}{{ tags|join(‚-‘) }}-{% endif %}{{created_year}}-{{created_month}}-{{created_day}}{{correspondent}}{{title}}.pdf
{% endif %}

Leider funktioniert das überhaupt nicht. Alle Dokumente werden nur unter 000000X (X = fortlaufende Nummer) in den Ordnern archive und originals abgelegt.
Die gewünschte Ordnerstruktur wird auch nicht angelegt.

Ich dachte, wenn ich die neuen Dokumente manuell bearbeite (Zuweisung Kategorie, Dokumententyp, Tags Korrespondent) und anschließend das „Posteingangstag“ entferne und dann speichere,
sollten die Dokumente dann nach o.a. Template abgelegt werden.

Warum funktioniert das nicht?
Kann hier jemand helfen?

→ Ich glaube, ich bin hier auf einem total falschen Weg, mit der Variablen PAPERLESS_STORAGE_PATH_TEMPLATE. :joy:

Ob’s damit funktionieren könnte, weiß ich nicht, aber es ist auf jeden Fall umständlich, dann später den Pfad anzupassen.

Ich mach das bei mir so:

  • Dokumente erhalten einen Storage-Path, der das Dokument beschreibt, z.B. „Versicherung“, „Arzt“, „Bank“
  • Es gibt einen Default-Storage-Path „Allgemein“ und einen Storage-Path „Noch sortieren“
  • Für jeden Pfad wird das Aussehen individuell festgelegt - bei manchen Sachen ist eine Gruppierung je Jahr sinnvoll, bei manchen fließt ein Tag mit ein oder der Correspondent oder irgend was anderes
  • Zur Zeit habe ich noch einen Automatismus drin, der den Storage-Path beim ersten Speichern nach bestimmten Kriterien setzt, aber das fliegt wahrscheinlich wieder raus

Vorteil dieser Lösung ist, dass ich die Storage-Paths jederzeit verändern kann und die Dokumente neu sortiert werden. Über PAPERLESS_STORAGE_PATH_TEMPLATE wird das wahrscheinlich nicht funktionieren

Wie wird das neu sortieren aller Dokumente denn angestoßen?

Das passiert automatisch, sobald man einen Storage-Path ändert. Aber halt nur für die in der Weboberfläche konfigurierbaren, für PAPERLESS_STORAGE_PATH_TEMPLATE in der conf muss man evtl. auf „Erneut verarbeiten“ gehen, was aber wahrscheinlich den kompletten Verarbeitungsprozess wieder anstösst

Danke dir. Werde ich mich in Ruhe mal mit beschäftigen.

Grüße

Jetzt nur nochmal zum Verständnis, funktioniert PAPERLESS_STORAGE_PATH_TEMPLATE eigentlich überhaupt? Selbst wenn ich da nur einen ganz einfachen Pfad eingebe wie z.B. PAPERLESS_STORAGE_PATH_TEMPLATE: >
{{ correspondent }}/{{ document_type }}/{{ title }}.pdf
werden die Dokumente weiterhin mit 0000000X in archive und originals abgelegt.

Und wenn ich diese Pfandangaben

{% if „Kategorie“ in custom_fields and custom_fields.Kategorie.value == ‚Belege‘ %}
Dokumente/Belege/{{ document_type }}/{% if tags %}{{ tags|join(‚-‘) }}/{% endif %}{{ created_year }}-{{ created_month }}-{{ created_day }}-{{ correspondent }}-{{ title }}.pdf
{% else %}
Dokumente/{% if „Kategorie“ in custom_fields %}{{ custom_fields.Kategorie.value }}{% else %}Unkategorisiert{% endif %}/{{ correspondent }}/{% if tags %}{{ tags|join(‚-‘) }}-{% endif %}{{ document_type }}/{{ created_year }}-{{ created_month }}-{{ created_day }}{{ correspondent }}{{ title }}.pdf
{% endif %}

im GUI unter Speicherpfad eingeben möchte, erhalte ich den Fehler „ungültige Variable erkannt“.
Wo ist da der Fehler?

@rrosin: Eigentlich dachte ich meine Variante mit der if-else Abfrage sei praktikabel. Kannst du mir mal ein paar Beispiele deiner Pfade zeigen? Hast du die einfach im GUI unter Speicherpfade eingetragen?

So, jetzt habe ich den Speicherpfad nochmals abgeändert und erhalte jetzt auch keinen Fehler mehr beim Abspeichern des Speicherpfades:

{% if „Kategorie“ in custom_fields %}
{% if custom_fields.Kategorie.value == ‚Belege‘ %}
Dokumente/Belege/{{ document_type }}/{{ created_year }}-{{ created_month }}-{{ created_day }}{{ correspondent }}{{ title }}
{% else %}
Dokumente/{{ custom_fields.Kategorie.value }}/{{ correspondent }}/{% if tags %}{{ tags|join(‚-‘) }}-{% endif %}{{ document_type }}{{ created_year }}-{{ created_month }}-{{ created_day }}{{ correspondent }}{{ title }}
{% endif %}
{% else %}
Dokumente/Unkategorisiert/{{ created_year }}-{{ created_month }}-{{ created_day }}{{ correspondent }}{{ title }}
{% endif %}

Das erste Dokument mit der Kategorie Belege hat auch funktioniert und wird korrekt in Dokumente/Belege/usw. abgelegt.
Dann habe ich 2 weitere Dokumente hochgeladen, auch wieder mit zugeordneten Kategorien, einmal „Versicherungen“ und einmal „Internet-Festnetz“.
Keines dieser beiden Dokumente wurde entsprechend abgelegt, sondern wieder nur mit 000000X im Ordner archive und originals.

Hat jemand eine Idee?

Ohne Gewähr: Soweit ich das verstanden habe, führt paperless-ngx zuerst OCR durch, dann werden die Auto-Zuordnungen gemacht, und als letztes wird einmalig der Pfad anhand PAPERLESS_STORAGE_PATH_TEMPLATE gesetzt. Wenn man das Dokument danach bearbeitet, wird es m.E. der Pfad nicht mehr neu angepasst. Es hat also wenig Sinn, in PAPERLESS_STORAGE_PATH_TEMPLATE irgendwelche variablen Informationen des Dokumentes zu verwenden.
Lege stattdessen einen Storage-Path „Standard“ o.ä. an und pack deine Logik dort hinein. Setze bei allen neuen Dokumenten per Automation den Storage-Path auf „Standard“.

Das mit if/else verwende ich auch und halte es für praktikabel. Beispielpfad:

arzt/
{% if "ally" in tag_name_list %}ally
{%else %}{% if "tangmo" in tag_name_list %}tangmo
         {%else %}reiner
         {% endif %}
{% endif %}
/
{% if "has_no_date" not in tag_name_list %}
        {{ created_year }}-{{ created_month }}-{{ created_day }}
{% endif %}
{% if "keep_filename" in tag_name_list %} 
       {{ original_name }}
{% else %}
       {{ title }}
{% endif %}