Dokumentenmanagement mit Docker

vorhergehende Artikel in: Docker Virtualisierung
13.09.2020

Ich habe zur Vervollständigung meines Docker-Zoos nach einem Dokumenten-Management-System gesucht, das dem Katalog meiner Anforderungen entsprach

Anforderungen

Die Anforderungen waren:
  • Self-hosted on Docker
  • Erfassung maschinell erstellter PDFs
  • Erfassung gescannter Dokumente
  • Volltextsuche
  • OCR für gescannte Dokumente
  • public API
  • benutzbares Web-Frontend
  • Batch-erfassung von Dokumenten z.B. über Input-Verzeichnis

Untersuchte Systeme

LogicalDoc

LogicalDoc sah nach ersten Tests sehr vielversprechend aus - unter anderem stellt das Projekt vorbildlicherweise eine docker-compose-Datei zur Verfügung. Es bietet eine API an und ermöglicht die automatisierte Archivierung mehrerer Dokumente über eine WebDAV-Schnittstelle. Maschinell erstellte PDFs werden für die Volltextsuche indiziert, ohne eine aufwendige OCR zu bemühen. Leider ist die Arbeit und die Suche mit gescannten Dokumenten mit diesem System nicht möglich - denn obwohl das System selbst OpenSource ist und als OCR-Lösung Tesseract eingesetzt wird muss man dafür bezahlen, dieses Feature nutzen zu können.

PaperMerge

PaperMerge bietet ebenfalls eine vorgefertigte docker-compose-Datei an. Es ist leicht in Betrieb zu nehmen und bietet eine API an. Allerdings werden hier auch maschinell erstellte PDFs durch die OCR bearbeitet, was natürlich im Vergleich zu Systmen, die das erkennen und die Textextraktion ohne OCR vornehmen können wesentlich langsamer funktioniert. OCR funktioniert automatisch und liefert erwartbare Ergebnisse. Allerdings scheint das System generell noch nicht ausgereift genug für den Einsatz im täglichen Betrieb vor allem für nicht-IT-affine Benutzer: So kommt es etwa beim Versuch, einen Ordner übder das Web-Frontend zu löschen, der noch Dokumente enthält zu einem Fehler, der dem Benutzer einen Stacktrace aus den Eingeweiden des Systems anzeigt. Generell ist auch der interne Workflow noch verbesserungswürdig: Lädt man ein Dokument hoch, beginnt der Prozess der OCR sofort. Löscht man das Dokument wieder bevor die OCR abgeschlossen ist, wird die OCR trotzdem weiter fortgeführt - sogar nach einem zwischenzeitlichen Neustart des Docker-Containers. Die OCR ist so konfiguriert, dass die Erkennung einzelner Seiten mit konfigurierbaren Pausen stattfindet, so dass der Rechner auch bei der Verarbeitung großer Dokumente noch genug Ressourcen für andere Aufgaben hat. Daher muss man sich nicht unbedingt darum kümmern, für die Container Regeln via cgroups anzulegen.

Teedy

Teedy ist eine Lösung, für die man auch bezahlen kann. Prinzipiell ist eine selbst gehostete Docker-Variante möglich, allerdings ist die Dokumentation dazu praktisch nicht existent und die Default-Datenbank ist H2. Möchte man eine andere benutzen, findet man dazu nur vage Hinweise in irgendwelchen Foren. Ich habe daher keine umfassenden Tests mit diesem System durchgeführt.

Docspell

Docspell habe ich trotz emsiger Bemühungen nicht starten können und mich daher nicht mit Tests des Systems beschäftigen können.

Mayan EDMS

Mayan ist das System gewesen, nach dessen Test ich keine weiteren Lösungen mehr gesucht habe, da es alle meine Anforderungen erfüllte. Die zur Verfügung gestellte docker-compose-Datei konnte ich meinen Wünschen entsprechend anpassen (Traefik-Unterstützung, aktuelle Version der Postgres-Datenbank,...). Maschinell erstellte PDFs werden ohne OCR indiziert. Die OCR ist so konfiguriert, dass die Erkennung einzelner Seiten mit konfigurierbaren Pausen stattfindet, so dass der Rechner auch bei der Verarbeitung großer Dokumente noch genug Ressourcen für andere Aufgaben hat. Daher muss man sich nicht unbedingt darum kümmern, für die Container Regeln via cgroups anzulegen. Das System kennt zwei Arten von überwachten Ordnern - in der einen Sorte abgelegte Dokumente werden sofort eingelesen und gegebebenfalls der OCR zugeführt und indiziert. Die andere Sorte erzeugt lediglich ein Vorschaubild - hier wird der Anwender lediglich informiert, dass neue Dokumente vorliegen und kann entscheiden, wie er damit verfahren möchte.

Artikel, die hierher verlinken

OsterProjekt 2022 - Tesseract OCR: Ergebnisse

19.04.2022

Der Osterurlaub 2022 ist um - Zeit, die Ergebnisse meines Projektes für diese Zeit vorzustellen:

Inkrementelles Backup mit Snapshots und rsync

15.09.2020

Hier mein aktuelles Backup-Script mit dem ich seit einiger Zeit erfolgreich meine diversen Home-Verzeichnisse und die Volumes meines Docker-Zoos sichere - und einige Links, die mir bei der Erstellung des Skripts geholfen haben:

Alle Artikel rss Wochenübersicht Monatsübersicht Github Repositories Gitlab Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Certstream, InfluxDB, Grafana und Netflix

    16.04.2019

    Nachdem ich vor kurzem über mein erstes Spielen mit dem certstream berichtete, habe ich weitere Experimente gemacht und die Daten zur besseren Auswertung in eine InfluxDB gepackt, um sie mit Grafana untersuchen zu können.

    Weiterlesen...

Neueste Artikel

  • Die sQLshell ist nun cloudnative!

    Die sQLshell hat eine weitere Integration erfahren - obwohl ich eigentlich selber nicht viel dazu tun musste: Es existiert ein Projekt/Produkt namens steampipe, dessen Slogan ist select * from cloud; - Im Prinzip eine Wrapperschicht um diverse (laut Eigenwerbung mehr als 140) (cloud) data sources.

    Weiterlesen...
  • LinkCollections 2024 III

    Nach der letzten losen Zusammenstellung (für mich) interessanter Links aus den Tiefen des Internet von 2024 folgt hier gleich die nächste:

    Weiterlesen...
  • Funktionen mit mehreren Rückgabewerten in Java

    Da ich seit nunmehr einem Jahr bei meinem neeun Arbeitgeber beschäftigt und damit seit ungefähr derselben Zeit für Geld mit Python arbeite, haben sich gewisse Antipathien gegenüber Python vertieft (ich kann mit typlosen Sprachen einfach nicht umgehen) - aber auch einige meiner Gründe, Python zu lieben sind ebenso stärker geworden. Einer davon ist der Fakt, dass eine Methode in Python mehr als einen Wert zurückgeben kann.

    Weiterlesen...

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muß damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen GitHub-Repositories findet man hier - meine öffentlichen GitLab-Repositories finden sich dagegen hier.