DEV Community

Marco
Marco

Posted on • Originally published at blog.disane.dev

Wie ich Massen an Dokumenten digitalisiert habe 🧻

Wie ich mit Hilfe dem DMS Paperless und einigen Tweaks Massen an Dokumenten digitalisiert habe, zeige ich dir in diesem Artikel 🚀


Vorweg: Toilettenpapier kann leider noch nicht digitalisiert werden aber für alles andere kann ich dir helfen! Wobei, es gibt auch papierlose Toiletten. Aber das ist ein anderes Thema.

Rechnungen, Verträge, Notizen – alles stapelt sich und wenn du mal ein Dokument brauchst, suchst du ewig. Das normale Papierchaos kann schon echt richtig nervig sein. Die Lösung? Ein Dokumenten-Management-System (DMS)! Und mit Paperless, einem Dokumentenscanner und den Patch-T-Seiten kannst du deine Dokumente nicht nur effizient digitalisieren, sondern sie auch direkt automatisch sortieren lassen. Klingt gut? Dann zeige ich dir, wie du das alles einrichtest! 💪

In einem anderen Artikel habe ich Dir schon mal die Vorteile des DMS Paperless dargelegt und warum Du das auch brauchst:

Preview image

Neujahrsvorsätze 🥳

Nun wollte ich über die Feiertage aber alle(!) meine Dokumente digitalisieren. Wirklich alle. Worauf ich mich da eingelassen habe, sollte mir erst später bewusst werden.

Meine Verlobte arbeitet bei einer deutschen Behörde, daher war alles schön fein säuberlich in Leitz-Ordnern nach Person, Thema und Datum sortiert, auch kleine Einleger gab es. Akkurat gelocht und, wenn nötig, geheftet. Aber nach gut 12 Jahren Beziehung, werden die Ordner einfach zu viel.

Vieles davon muss man nicht mal aufheben. Ich schätze mal, dass man gerade einmal 10% von den alltäglichen Dokumenten aufheben muss. Dazu zählen alle Schriftstücke von Behörden, Bescheide, Verträge und generell alles von offizieller Stelle (Notarsachen, Grundbuchauszüge etc.). Gibst du eine Steuererklärung ab, dann natürlich auch alles was darin enthalten ist (Rechnungen zu Werbungskosten, eventuell auch noch Zahlungsnachweise wie z.B. Kontoauszüge).

Jetzt stehe ich da, mit gefühlt 100 Ordnern, die ich digitalisieren muss. Puh.

Klar kann man alles auch manuell machen oder mit einer App für Paperless, aber das ist nicht nur nervig, sondern auch elendig ineffizient. Schließlich hab ich mit meiner Zeit besseres zutun, als stundenlang Seiten zu drehen und Fotos mit dem Handy zu machen. Da ist also sehr großer Optimierungsbedarf.

Die Ernüchterung kam aber schnell 🥱

Zwischen den Jahren ist auch noch mein Drucker kaputt gegangen, weswegen ich nach einem guten Ersatz gesucht habe, der auch per Einzug scannen und idealerweise das sogar noch beidseitig. Da wir aber jetzt nicht so viel Drucken, wollte ich keine 600€ ausgeben, denn solche Geräte findet man eher im professionellem Bereich und da wird's dann halt happig.

Der kann aber nur ADF (Automatic Document Feeder) und kein DADF (Duplex Automatic Document Feeder) und somit wäre das Einscannen von hunderten Dokumenten echt sehr langwierig. Been there, done that. Also ist es ein ein HP OfficeJet Pro 8123e geworden, rein zum Drucken.

Preview image

Für einzelne Dokumente ist das okay, für sehr viele oder einer initialen Digitalisierung, ist das aber nix.

Dokumentenscanner for the win 🏆

Aus dem beruflichen Umfeld kannte ich natürlich schon Dokumentenscanner. Die haben den großen Vorteil, dass sie genau für diese Aufgaben spezialisiert sind und sie vermutlich besser schaffen, als jeder Consumer-Multifunktionsdrucker.

Preview image

Wenn man nicht gerade eine Einsteigervariante nimmt, dann erfüllt er genau meine Anforderungen:

  • Schneller und automatischer (Batch)-Einzug
  • Duplex Scan
  • Erkennung von leeren Seiten
  • Doppelblatterkennung (Erkennt wenn mehr als eine Seite eingezogen wird)
  • Scannen von verschiedenen Formaten (Quittungen, Belege, Kassenbons etc.)
  • Ablage der Scans in eine Netzfreigabe via WLAN oder LAN#
  • Alleinständig nutzbar (Rechner oder Handy)
  • Optional: Eingebaute OCR

Nach einer Recherche bin ich dann auf einen ScanSnap iX1600 aufmerksam geworden und hab mir den kurzerhand direkt geholt.

Preview image

Dokumentenscanner an Paperless anbinden 🔗

Da Paperless, wie in dem anderen Artikel erwähnt, auch die Möglichkeit hat Dokumente von einem Ordner zu Scannen, kann man den Scanner direkt in den Ordner scannen lassen der dann von Paperless abgegrast werden kann.

Preview image

Hierfür muss man lediglich den Consume-Order im Netzwerk freigeben und dem ScanSnap bekannt machen. Dafür kann man sich, zumindest in dem Modell, in der Software (nicht am Gerät selbst) Profile anlegen. Die sind recht umfassend und sollten eigentlich alles bieten, was man so als semiprofessioneller Digitalisierer für zuhause braucht. Hier mal mein Profil zur Ablage direkt in die Netzwerkfreigabe von Paperless:

Wichtig sind hierbei vor allem die Einstellungen, dass er Duplex scannt und als PDF auf eine Netzfreigabe ablegt, damit Paperless damit umgehen kann. Das Profil ist dann in der Software und im Gerät gespeichert und kann direkt, auch ohen Rechner oder Handy, genutzt werden.

Jetzt stellst du dir aber sicher die Frage:

"Ja aber das ist alles schön und gut, damit kann ich ja jetzt erstmal nur einzelne Dokumente scannen, was ist wenn ich einen ganzen Stapel scannen möchte und jedes Dokument in eine eigene PDF soll?"

Ja, das geht. Sogar einfacher als erwartet. 👇🏼

Batch-Scan in einzelne PDFs trennen 📖

Paperless kann das bereits und auch dafür gibt es einen Branchenstandard.

Preview image

Dieser nennt sich PATCH(-T). Hierbei handelt es sich nur um eine Delimiter-Seite die mit einem Barcode ausgestattet ist. Erkennt Paperless diese Seite, trennt es die Dokumente in einzelne PDFs. Eine solche PATCH-T-Seite sieht z.B. so aus:

Die kannst du ganz easy hier herunterladen:

PATCH-T-for-printing-on-a4-paperPATCH-T-for-printing-on-a4-paper.pdf96 KBdownload-circle

Das war's aber leider noch nicht. Du musst das Feature der Erkennung erst einmal in Paperless aktivieren. Das geht aber recht einfach über die Umgebungsvariablen (wenn du Paperless in Docker hostest):

PAPERLESS_CONSUMER_ENABLE_BARCODES: true
Enter fullscreen mode Exit fullscreen mode

Das reicht schon aus. Du kannst aber mit PAPERLESS_CONSUMER_BARCODE_STRING auch eigene Strings definieren. Die Doku sagt dazu:

Enables the scanning and page separation based on detected barcodes. This allows for scanning and adding multiple documents per uploaded file, which are separated by one or multiple barcode pages. For ease of use, it is suggested to use a standardized separation page, e.g. here. If no barcodes are detected in the uploaded file, no page separation will happen.The original document will be removed and the separated pages will be saved as pdf. See additional information in the advanced usage documentation. Defaults to false.

Preview image

Hießt also im Klartext:

Du suchst dir einen Haufen an Dokumenten, trennst jedes Dokument miteiner solchen PATCH-T-Seite von anderen und Paperless erledigt den Rest. Dafür solltest du dir diese PATCH-T-Seite aber ein paar mal ausdrucken.

Die Dokumente werden genau an der Stelle der PATCH-T-Seite getrennt und in einzelne PDFs abgelegt und entsprechend be- und verarbeitet. Keine Sorge, die PATCH-T-Seiten landen nicht in deinem Scan, die sortiert Paperless schön brav aus.

Leere Seiten sind ein Problem 🪹

Nach dem ich den ersten Stapel eingescannt hatte (das waren schon knapp 30 Dokumente) fiel mehr aber vermehrt auf, dass die Erkennung von leeren Seiten des ScanSnap gut klappt, aber nicht immer. Das hat offenbar damit zutun, dass die PATCH-T-Seiten, die ich anfangs gedruckt habe, natürlich nur einseitig bedruckt waren. Dadurch kommt es manchmal vor, dass das Dokument nach der PATCH-T-Seite mit einer leeren Seite angefangen hatte. Das betraf vor allem Seiten, die nicht ganz sauber waren und der Threshold an weiß, wohlmöglich überschritten hatten, so dass der ScanSnap dachte "Hey, da ist ja was drauf, das scanne ich mit".

Aber auch dafür gibt es eine Lösung komplett in Paperless. Hier kommen dann die PreConsume-Scripts zum Tragen.

Preview image

Damit kannst du in den Prozess der Verarbeitung eingreifen und Dinge erledigen lassen, in dem Falle ein Script, was leere Seiten anhand eines Schwellenwertes erkennt und aussortiert.

Hierzu definierst du den Pfad zu einem Script als Umgebungsvariable

PAPERLESS_PRE_CONSUME_SCRIPT: /usr/src/paperless/scripts/pre-consume.sh
Enter fullscreen mode Exit fullscreen mode

Das Script dort ist nur eine Sammeldatei für alle Skripte, damit ich den Container nicht nochmal anpassen muss. Das Skript bindet also nur wiederum andere Skripte ein:

#!/bin/sh
set -x

# Remove blank pages
/usr/src/paperless/scripts/remove-blank-pages.sh
Enter fullscreen mode Exit fullscreen mode

Das eigentlich spannende ist das remove-blank-pages.sh-Skript:

#!/bin/bash
#set -x -e -o pipefail
set -e -o pipefail
export LC_ALL=C

#IN="$1"
IN="$DOCUMENT_WORKING_PATH"

# Check for PDF format
TYPE=$(file -b "$IN")

if [ "${TYPE%%,*}" != "PDF document" ]; then
  >&2 echo "Skipping $IN - non PDF [$TYPE]."
  exit 0
fi

# PDF file - proceed

#PAGES=$(pdfinfo "$IN" | grep ^Pages: | tr -dc '0-9')
PAGES=$(pdfinfo "$IN" | awk '/Pages:/ {print $2}')

>&2 echo Total pages $PAGES


# Threshold for HP scanners
# THRESHOLD=1
# Threshold for Canon MX925
THRESHOLD=1  


non_blank() {
  for i in $(seq 1 $PAGES) ; do
    PERCENT=$(gs -o -  -dFirstPage=${i} -dLastPage=${i} -sDEVICE=ink_cov "${IN}" | grep CMYK | nawk 'BEGIN { sum=0; } {sum += $1 + $2 + $3 + $4;} END {  printf "%.5f\n", sum } ')
    >&2 echo -n "Color-sum in page $i is $PERCENT: "
    if awk "BEGIN { exit !($PERCENT > $THRESHOLD) }"; then
      echo $i
      >&2 echo "Page added to document"
    else
      >&2 echo "Page removed from document"
    fi
  done
}

NON_BLANK=$(non_blank)

if [ -n "$NON_BLANK" ]; then
  NON_BLANK=$(echo $NON_BLANK  | tr ' ' ",")
  qpdf "$IN" --replace-input --pages . $NON_BLANK --
fi
Enter fullscreen mode Exit fullscreen mode

💡 Das Skript ist nicht auf meinem Mist gewachsen, sondern die Lorbeeren gehen dafür an Andere, aber ich habe damit bisher gute Ergebnisse erzielt.

Preview image

⚠️

Du solltest das Skript nicht direkt produktiv nutzen. Ich rate dringend dazu, dass du vorher eine leere Seite einscannst und den Threshold für deinen Drucker anpasst, da es sonst zu "False positives" kommen kann und so wertvolle Seiten verloren gehen.

Und wenn es mehrere Personen gibt? 🧑🏼‍👩🏼‍👧🏼

Auch dafür hat Paperless eine Lösung. Paperless kann nämlich den Consume-Folder rekursiv durchlaufen, also auch Unterordner durchforsten. und anhand dessen direkt Tags oder Besitzer anwenden. Dazu musst du nur die Umgebungsvariable PAPERLESS_CONSUMER_RECURSIVEaktivieren, verschiedene Ordner dort ablegen (z.B. die Namen der betreffenden Personen die Dokumente erhalten) und dann einen Worflow in Paperless anlegen. Alternativ könntest du auch die Verzeichnisnamen automatisch als Tags anlegen lassen (mit Hilfe der Umgebungsvariable PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS und darauf dann Workflows legen, aber das wollte ich nicht.

Mit Hilfe der Workflows kannst du dann eine "Automation" auf den Pfad legen:

Und in genau den Pfad lasse ich über das Profil des Dokumentenscanners reinscannen. Für meine Verlobte habe ich ebenfalls ein Profil angelegt und einen Workflow. Scanne ich nun Dokumente von mir, dann wähle ich mein Profil aus und alles aus dem Ordner wird automatisch mit einem Besitzer ausgestattet und wahlweise noch Tags und anderen Zuordnungen. Das selbe Spielchen mit Dokumenten meiner Verlobten, nur halt eben in einen anderen Ordner der Dateifreigabe.

Da man da mit Regex arbeiten kann, kann man da recht großzügige und detaillierte Abfragen erstellen.

Preview image

Es gibt da aber ein Problem 🥴

Diese Workflows werden nicht ausgeführt, wenn der Stapelscan via PATCH-T-Seiten läuft und automatisch Seiten getrennt werden sollen. Das scheint offenbar auch kein Bug zu sein, sondern das ist, zumindest aktuell, "made by intention". Ich hatte das mal als Bug bei Paperless gemeldet:

Preview image

Heißt also für dich: Viele Dokumente müssen dann manuell mit Besitzern oder weiteren Tags versehen werden, einzelne Scans gehen aber problemlos, so dass hier, zumindest das einzelne Scannen, kein Problem mit den Workflows machen sollte.

Ich habe mir aber so geholfen, dass ich alle Dokumente, getrennt nach Personen, im Stapel eingescannt habe, diese mit der Mehrfachsleektion in Paperless markiert und Benutzer zugewiesen habe. Bisher habe ich da noch keinen besseren Workflow gefunden.

Wichtig ist nur, dass du die Dokumente automatisch mit einem Tag ungeprüftoder todoablegst, damit du sie später auch wiederfindest.

Workflows nehmen dir Arbeit ab 🧑🏼‍🏭

Generell sind die Workflows aber Gold wert. Ich habe zum Beispiel einen Workflow gemacht, der auf bestimmte Dokumenttypen und Tags reagiert und einen weiteren Tag hinzufügt. Damit realisiere ich eine Kategorisierung ob ein Dokument steuerrechtlich relevant sein könnte und kann es mir dann am Ende des Jahres über eine benutzerdefinierte Ansicht auf ein Jahr eingrenzen und so alles sehen, was ich in meine kommende Steuererklärung aufnehmen muss.

Tschüss Ordner 👋🏼

Mit all den Anpassungen oder Workflows kann ich nun meine Dokumente alle einmalig digitalisieren und alle Ordner in den Müll werfen. Alle digitalisierten Dokumente kann ich damit auch prinzipiell schreddern, solange ich sie nicht aufbewahren muss.

Da man dadurch seine Ordner definitiv sehr viel entschlackt, kann man nun aber von der ASN in Paperless Gebrauch machen. Die ASN (Archive Serial Number) ist prinzipiell eine Archiv-Nummer eines Dokumentes, um es schnell physikalisch wieder zu finden. Jedes Dokument bekommt automatisch eine und kann auch ggf. abweichend vergeben werden. So kannst du alle physikalischen Dokumente, es sollten ja nicht mehr viele sein, mit dieser ASN ausstatten (ob gestempelt oder beklebt spielt keine Rolle) und dann in einen Ordner ablegen. Mit Einlegern könnte man auch eine gewisse Ordnung reinbringen und die Dokumente so thematisch abgrenzen.

So findest du deine physikalischen Dokumente, wenn du sie mal brauchst, recht schnell und zuverlässig wieder und musst nicht wenig suchen.

Aktuell nutze ich das Verfahren noch nicht, aber ich überlege tatsächlich, das irgendwann einzuführen. Im Moment bin ich aber noch nicht soweit, dass ich alle Dokumente schreddern will.

Kein Dokumentenscanner notwendig 🫰🏼

Wie ich später herausgefunden habe, wäre der Dokumentenscanner prinzipiell nicht notwendig gewesen, da Paperless auch ein automatisches Zusammenfügen von Dokumenten durch einen einseitigen Scan auch beherrscht. Dafür gibt es die Umgebungsvariable PAPERLESS_CONSUMER_ENABLE_COLLATE_DOUBLE_SIDED. Damit kannst du erst alle geraden Seiten scannen und ablegen lassen und dann den Stapel umdrehen und alle ungeraden Seiten ablegen lassen, Paperless erkennt dann, dass diese zusammengehören und fügt sie ein eine PDF zusammen. Das Verfahren und seine Fallstricke sind bei Paperless in der Doku beschrieben:

Preview image

Damit bräuchte man also auch keine teuren Dokumentenscanner mit DADF-Scan sondern kann auch einen normalen Consumer-Drucker mit ADF-Scan nutzen. Aber in der Doku wird auch beschrieben, dass das Verfahren recht fehleranfällig sein kann und ich wollte nicht noch alle eingescannten Dokumente prüfen müssen. Da war mir die Lösung mit dem Dokumentenscanner tatsächlich das Geld wert, weil es mir eventuelle Kopfschmerzen erspart.

Fazit 💡

Wie du siehst ist es recht einfach, schnell und effizient alle deine bisherigen Dokumente in Paperless abzulegen und entsprechend (fast) komplett automatisiert zu bearbeiten. In manchen Punkten muss man noch etwas in Paperless nacharbeiten oder sich mit simplen Lösungen behelfen. Es ist aber alles besser als alles manuell einzuscannen und man bekommt so schnell einen Stand, mit dem man weiter arbeiten kann.

So habe ich es geschafft in 3 Abenden knapp 4 Leitz-Ordner mit knapp 700 Dokumenten einzuscannen. Was will man mehr?


If you like my posts, it would be nice if you follow my Blog for more tech stuff.

Top comments (0)