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

  • Aviator + Websockets

    15.06.2019

    Nachdem ich in den letzten Wochen und Monaten meine Zeit und Energie in die sQLshell gesteckt habe - was sowohl Bugfixing als auch neue Features betraf - habe ich nun endlich die Zeit gefunden, ein bereits lange überfälliges Feature an dWb+ und speziell am aviator zu implementieren.

    Weiterlesen...

Neueste Artikel

  • Neue Version plantumlinterfaceproxy napkin look

    Es gibt eine neue Version des Projektes plantumlinterfaceproxy - Codename napkin look.

    Weiterlesen...
  • Apache HTTPCore5 funktioniert nicht mit Docker

    Ich habe neulich drei Stunden meines Lebens verschwendet weil ich unbedingt die neueste Version der HTTPCore5 Library von Apache einsetzen wollte.

    Weiterlesen...
  • Entwurfsmodus für beliebige SVG Graphiken

    Nachdem ich in der Vergangenheit immer wieder Weiterentwicklungen der Idee vorgestellt habe, Graphiken mit dem Computer so zu ezeugen dass sie eine gewisse "handgemachte" Anmutung haben, habe ich nunmehr die durchschlagende Idee gehabt:

    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.