Ich gehe davon aus, dass du an dieser Stelle bereits eine laufende Paperless-ngx-Installation zur Verfügung hast. Falls nicht, ist das gar nicht tragisch: ich möchte die folgenden Themen auf dieser Seite etwas mehr veranschaulichen. Nun drücke ich dem Ganzen auch meinen persönlichen Stempel auf, denn ich spreche von meinen Erfahrungen - von denen ich hoffe, dass sie dich zumindest einmal inspirieren werden.
Was macht Paperless-ngx?#
Auf der ersten Seite sprach ich davon, dass Paperless-ngx ein DMS ist. Toll, man kann damit also seine Dokumente organisieren. Das können Leitz-Ordner auch 😆. Ja, die Arbeit eines DMS beginnt eben mit dem Lagern von Dokumenten, genau wie bei einem Leitz-Ordner.
Das Tolle an einem DMS aber ist, dass es Dokumente eben nicht nur lagern kann. Es kann unter anderem:
- Dokumente klassifizieren (einen Typ festlegen).
- Dokumente nach Absendern ordnen.
- Dokumente markieren (z.B. zur späteren Weiterarbeit).
- Metainformationen bereitstellen.
- Dokumente automatisiert abholen (z.B. vom Scanner, aus Emails).
- Dir sogar mitteilen, in welchem Leitz-Ordner ein Dokument physisch abgeheftet wurde.
- und vieles mehr…
Nun wird es sicher auch Leitz-Ordner-Profis geben, die mit Post-Its und anderen kleinen Helfern ähnliche Features analog umsetzen können und sich daher fragen: wozu brauche ich ein DMS? Ich bin leider nicht so ein Profi und ich arbeite einfach viel lieber digital 😅. So habe ich meinen Papierkram nämlich auch außer Haus jederzeit griffbereit in meiner Hosentasche.
Und so sieht Paperless-ngx aus, wenn man es zum ersten Mal öffnet:
Klassifizierung#
Das Klassifizieren von Dokumenten deutet eigentlich an, dass man einem Dokument einen Typ zuweist. Ich verstehe darunter allerdings den Gesamtprozess des Anheftens von Metainformationen an ein Dokument. Wenn ich also von Klassifizierung spreche, meine ich nicht nur das Zuweisen eines Dokumenttyps, sondern die Zuweisung aller Metainformationen an ein Dokument: Dokumenttyp, Korrespondent, Speicherpfad, Tags etc.
Diese Begrifflichkeiten wirst du nun sehr oft lesen, ich möchte nun näher auf sie eingehen. Auch lohnt sich ein Blick in die offizielle Dokumentation.
Was ist ein Dokument?#
Ich spreche immer von Dokumenten, doch bislang habe ich nicht erläutert, was genau ich damit meine. Du wirst dir vermutlich denken, dass das ja klar ist. Im Beruf habe ich jedoch beim Digitalisieren der Posteingangsstrecke gemerkt, dass das eben nicht immer so eindeutig ist. Es wird also Zeit für ein bisschen Theorie 🙈.
Fallbeispiel#
Nehmen wir einen praktischen Fall: dich erreicht ein Brief ✉️. Enthalten sind vier Blatt Papier 📃, die wiederum doppelseitig bedruckt sind; die gesamte Sendung besteht also aus acht bedruckten Seiten 📄. Aus dem Inhalt geht hervor, dass es sich bei sechs Seiten um zwei unterschiedliche Rechnungen (A und B) 🖇️ handelt. Die verbliebenen zwei Seiten sind eine Aufstellung von Leistungspositionen, die als Anlage 📊 zu Rechnung B mitgekommen sind.
Analyse#
Wie du siehst, nimmt das Thema schnell ungeahnte Komplexität an. Was wäre für dich in diesem Beispiel denn nun ein Dokument? Aus meiner Sicht gibt es zu dieser Fragestellung erst einmal mehrere Antwortmöglichkeiten:
- Da alle Seiten in einem Brief verpackt waren, handelt es sich um ein Dokument (= Sendung).
- Hier liegen zwei Dokumente vor, eine Rechnung A und eine weitere Rechnung B nebst Anlage.
- Es handelt sich um drei Dokumente, zwei Rechnungen A + B und eine Anlage.
Alle drei Möglichkeiten sind gangbare Wege, soviel sei dazu gesagt. Jede Person definiert ihr eigenes Ablagesystem und muss es natürlich so strukturieren, dass sie selbst im Bedarfsfall die korrekten Dokumente wiederfinden kann. Ich persönlich halte allerdings Antwort 2 für die effizienteste Vorgehensweise und setze dies auch selbst so um. Doch warum?
Schlussfolgerung#
Die erst einmal schnellste Methode ist natürlich Antwort 1: ich packe den Brief aus, scanne ihn ein und lasse ihn in Paperless-ngx verschwinden. Das funktioniert sehr gut bis zu dem Tag, an dem ich genau diese eine Rechnung B nebst Anlage wiederfinden muss. Durch die Kapselung mehrerer Rechnungen in ein Dokument wird die Suche nämlich unnötig erschwert. Die Zeit, die ich bei der Klassifizierung also eingespart habe, geht bei der längeren Suche locker dreifach wieder verloren.
Anders verhält es sich mit Antwort 3: hier stecke ich sehr viel Zeit in die Klassifizierung von drei Dokumenten und habe dann alles sauber abgelegt. Doch welchen Vorteil habe ich davon, die Anlage von ihrer eigentlichen Rechnung B zu trennen? Wenn der Tag kommt, an dem ich Rechnung B und ihre passende Anlage wiederfinden muss, suche ich nach zwei Dokumenten im System1. Schlimmstenfalls enthält die Rechnung keinen Hinweis darauf, dass ihr eine Anlage beigefügt worden ist, und das hätte die zusätzliche negative Auswirkung, dass wir eine lose Anlage im DMS herumschwirren haben.
Aus diesen Gründen halte ich Antwort 2 für den effizientesten Weg. Die Sendung wird in ihre zwei Rechnungen A + B aufgetrennt und die Anlage zur Rechnung B gepackt. So entstehen in Paperless-ngx zwei Dokumente mit ihrer jeweils korrekten Klassifizierung. Darüber hinaus ist die Anlage immer direkt mit ihrer Rechnung zusammen auffindbar. Und falls ich einmal nur nach der Anlage suchen muss, kann ich mir sicher sein, dass mich niemand nach der Rechnungsanlage von Datum XY, sondern immer nach einer Anlage im Kontext einer bestimmten Rechnung fragen wird.
Zu *) Hierüber kann man streiten, ich änderte zu dem Thema auch selbst andauernd meine Meinung. Letztendlich habe ich mich aber festgelegt und behalte es so bei.
Hast du andere Erfahrungen gemacht? Lass es mich wissen 😁.
Korrespondent#
Unter Korrespondenten versteht man den Absender von Dokumenten, die dich erreichen. In der anderen Richtung sind Korrespondenten die Empfänger von Dokumenten, die du verschickst.
In Paperless-ngx können wir uns Korrespondenten als virtuelle Schubladen vorstellen, in denen alle Dokumente einer Person oder Firma abgelegt sind. Mit nur einem Klick finden wir alle Dokumente, die einem bestimmten Korrespondenten zugeordnet sind.
Dokumenttyp#
Mit dem Dokumenttyp legst du fest, um was für eine Art Dokument es sich handelt. Hier kann man beliebig granular werden, doch Simplizität schlägt aus meiner Sicht Komplexität. Die Klassifizierung von Dokumenten zu einem Dokumenttyp erfolgt nach Regeln, die wir uns selbst ausdenken und auferlegen müssen. Es sollte uns also auf einen Blick klar sein, was für ein Dokument vor uns liegt und welcher Dokumenttyp das sein könnte.
Sehen wir uns alle Dokumente an, die wir im Laufe der Zeit erhalten, kristallisieren sich ein paar Dokumenttypen deutlich heraus.
In meinem Fall sind das diese hier:
Dokumenttyp | Beschreibung |
---|---|
Bescheid | Bescheide von Behörden, z.B. Steuerbescheide, Bewilligungen, etc. |
Dokument | Abstrakter Typ für Dokumente, die keinem Typ eindeutig zuordenbar sind. |
Kontoauszug | Der Name ist Programm, egal ob Girokonto, ETF-Sparplan, Depot. |
Korrespondenz | Allgemeine Schriftwechsel, auf die eine Antwort folgen soll, z.B. Beschwerde beim Internetanbieter. |
Kündigung | Kündigungen und Kündigungsbestätigungen von Verträgen aller Art. |
Lohnabrechnung | Hiermit werden alle monatlichen Lohnzettel klassifiziert. |
LSt-Bescheinigung | Lohnsteuerbescheinigungen kommen in der Regel 1x im Jahr, sind aber wichtig genug für einen eigenen Typ. |
NK-Abrechnung | Lange habe ich Nebenkostenabrechnungen einfach als Rechnung klassifiziert, zur schnelleren Auffindbarkeit habe ich aber dann einen eigenen Dokumenttyp erstellt. |
Rechnung | Enthält alle Rechnungen, z.B. vom Internetanbieter, Mobilfunk, Käufe mit Garantie, etc. |
Spendennachweis | Ich spende jedes Jahr, die Quittungen erhalten diesen Dokumenttyp. |
Spesenabrechnung | Beruflich bin ich viel unterwegs und dieser Dokumenttyp enthält die Abrechnungen gegenüber meiner Arbeitgeberin, wie auch ihre Antworten darauf. |
SV-Mitteilung | Bestimmt für Sozialversicherungsmitteilungen, An- und Abmeldungen. |
Vertrag | Komplexer Dokumenttyp, enthält Verträge aller Art. Auch Versicherungspolicen und Vertragsänderungsmitteilungen. |
Zeitnachweis | Lohnabrechnungen und Zeitnachweise klassifiziere ich getrennt voneinander. Enthält auch Zeitnachweise für Freelancer-Tätigkeiten. |
Zertifikat | Nachweise über Schulungen, Weiterbildungen und Seminare. |
Zeugnis | Dokumenttyp für Schul-, Ausbildungs- und Arbeitszeugnisse. |
Tagging#
Die einen lieben sie, die anderen hassen sie, und die übrigen 80% nutzen sie nicht: Tags. Auch ich selbst habe mich lange vor dem Einsatz von Tags gesträubt, weil es Dingen eine Komplexität verleihen kann, die schnell unüberschaubar ist. Denn zu jedem Tag gibt es eine Story: wann nutze ich ihn? Wann muss er wieder entfernt werden? Was sagt er aus? Hier sind uns überhaupt keine Grenzen gesetzt.
Tagging ist prima: bei Paperless-ngx kann man einem Dokument damit einen Kontext verleihen, oder sogar mehrere. Ähnlich wie bei Korrespondenten kann man Tags wie virtuelle Schubladen verstehen, in denen Dokumente liegen. Sie eignen sich erstklassig, um Dokumenten eine Thematik zuzuweisen, die über viele Korrespondenten und Dokumenttypen verteilt ist (z.B. Kfz) - oder einfach nur als Status Indikator.
Damit es jedoch nicht zu komplex wird, beschränke ich mich auf einige wenige, dafür eindeutige Tags.
Tag | Beschreibung |
---|---|
Ausgang | Das Dokument ist ein Ausgangsdokument, wurde also von mir initiiert. |
Kfz | Verträgen, Rechnungen, etc. verleihe ich mit diesem Tag einen Kfz-Kontext. So kann ich schnell sämtliche Unterlagen zu meinen Autos wiederfinden. |
Neu | Hierbei handelt es sich um meinen Posteingangs-Tag. Alle Dokumente mit diesem Tag haben den Status neu. |
Problem | Dieser Tag wird von meiner Middleware verwendet, wenn ich an einem Dokument noch etwas nacharbeiten muss. Darauf gehe ich später detailliert ein. |
Steuer | Dokumente mit diesem Tag werden von mir für die nächste Steuererklärung benötigt. |
Todo | Das sind Dokumente, mit denen ich zu einem späteren Zeitpunkt noch etwas vorhabe, oder bei denen ich noch auf eine Antwort warte. |
Wichtig | Extrem wichtige Dokumente, die ich schnell wiederfinden muss, wenn ich sie brauche. |
Speicherpfade#
Paperless-ngx bietet noch eine weitere Möglichkeit, Schubladen zu erschaffen. Nicht dass wir davon nicht schon bereits einige hätten 😓. In diesem Fall handelt es sich um echte Ordner im Dateisystem, in denen die echten PDF-Dateien dann abgelegt werden, die du im DMS abspeicherst. Das ist natürlich ein reines Kosmetik-Feature und bietet Vorteile für Backups, oder wenn man all seine Dokumente bspw. zusätzlich bei einem Cloud-Anbieter speichern möchte.
Ich nutze zwar die physischen Dateiordner nicht, Speicherpfade stellen für mich allerdings ein zusätzliches Klassifizierungsmerkmal dar. So existiert nicht nur für jedes meiner Autos ein echter Dateiordner mit allen Dokumenten drin, meine Middleware weiß hierdurch sogar, um welches Auto es sich handelt. So spare ich mir für jedes Auto einen eigenen Tag anzulegen, denn viele Speicherpfade sind aus meiner Sicht weniger störend, als viele Tags.
Middleware#
Ich habe nun mehrmals eine Middleware erwähnt. Hierbei handelt es sich um eine selbst entwickelte Python App, die wiederkehrende Monitoring-Aufgaben wahrnimmt. Die App baut auf diesem Python Modul auf, welches ich auch entwickelt habe:
Little api client for paperless(-ngx).
Wenn du ein bisschen mehr darüber erfahren möchtest, solltest du hier weiterlesen 😄.
Erkennungs-Algorithmen#
Die Klassifizierung ist der Prozess, bei dem man Dokumenten jeweils Korrespondenten, Dokumenttyp, Tags und ggf. einen Speicherpfad zuweist. Das muss man glücklicherweise nicht jedes Mal komplett per Hand machen, Paperless-ngx wird mit einigen Erkennungs-Algorithmen ausgeliefert. Darüber kannst du hier mehr lesen. Falls die automatische Erkennung nicht zum gewünschten Ergebnis führt, kann man natürlich selbst den korrekten Wert einstellen. Im Falle der Auto-Erkennung lernt Paperless-ngx dann von deiner Entscheidung und macht es mit ein bisschen Glück direkt beim nächsten Mal richtig.
Keine#
Die Verwendung von Erkennungs-Algorithmen wird deaktiviert.
Irgendein Wort, Alle#
Der Inhalt eines Dokuments wird nach den Wörtern im Zuweisungsmuster durchsucht. Legst du das Zuweisungsmuster auf Rechnung
fest, werden alle Dokumente entsprechend klassifiziert, wenn sie das Wort Rechnung enthalten.
Beim Zuweisungsmuster Rechnung Baumarkt Köln
trifft der Erkennungs-Algorithmus Irgendein Wort, sobald eines der drei Wörter im Dokument vorkommt. Alle trifft nur dann, wenn alle Wörter erkannt werden konnten. Du hast richtig erkannt: mehrere Wörter werden einfach durch ein Leerzeichen voneinander getrennt.
Es ist aber auch möglich, nach Wörtern mit enthaltenen Leerzeichen zu suchen. Das Prinzip ist fast dasselbe wie mit einzelnen Wörtern: Rechnung "Baumarkt Köln"
. Irgendein Wort trifft nur, wenn die Wörter Rechnung oder (Achtung!) Baumarkt Köln im Dokument vorkommen. Du kennst das von gängigen Suchmaschinen, denn dort ist es genauso. Alle trifft wieder nur, wenn beide Wörter vorkommen.
Die Reihenfolge der Wörter im Dokument spielt übrigens keine Rolle, wichtig ist nur, dass sie vorkommen.
Exakt#
Dieser Erkennungs-Algorithmus verhält sich ähnlich wie Irgendein Wort und Alle, nur dass hier nicht im Kontext von Wörtern, sondern Zeichenketten gesucht wird.
Das Zuweisungsmuster Rechnung Baumarkt Köln
setzt also dann voraus, dass im Dokument auch tatsächlich Rechnung Baumarkt Köln am Stück ausgeschrieben wurde, damit Exakt treffen kann.
Regulärer Ausdruck (Regex)#
Liebhaber von regulären Ausdrücken werden auf ihre Kosten kommen, auch ich bin ein großer Freund davon. Aufgrund der Komplexität von Regex empfehle ich die Verwendung allerdings nur, wenn du wirklich weißt, was du da machst. Es gibt leider extrem beschränkte Debugging Funktionen dafür in Paperless-ngx, neben der Logdatei gibt es nämlich keine. Im schlimmsten Fall bekommst du niemals mit, dass dein Zuweisungsmuster also gar nicht funktioniert.
Möchtest du Regex besser kennenlernen, empfiehlt sich die offizielle Python Dokumentation.
Ungenau (Fuzzy)#
Ich bin mir nicht sicher, was ich hierüber schreiben soll. Fuzzy Match war bislang niemals die Lösung einer meiner Use-Cases, aber vielleicht underrate ich den Erkennungs-Algorithmus ja auch einfach bodenlos. Ich werde mir vornehmen, mehr damit zu arbeiten und zu sehen, ob und wie er lebensverändernd sein könnte.
Auto#
Paperless-ngx erlernt die Zuweisung mit der Zeit automatisch. Ich nutze die Auto-Erkennung, wann immer ich bei einem Klassifizierungsmerkmal genügend Dokumente erwarte; ein Model muss schließlich mit genug Daten trainiert werden.
Die automatische Zuweisung funktionierte bereits mit der Vorgänger-Software recht zuverlässig und ich bin sehr zufrieden damit.
Feature-Foto von blocks auf Unsplash
Seit Paperless-ngx v2.2.0 gibt es logische Dokumentenverknüpfungen, womit sich Dokumente verbinden lassen. Dies hat Stand 02.01.2024 jedoch weder eine Auswirkung auf die Qualität der Suchergebnisse, noch eine Visualisierung im UI. ↩︎