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

  • Fährnisse des Buildprozesses unter Windows

    17.07.2019

    Nachdem ich begonnen hatte, mich mit der Beschleunigung der Berechnung des Mandelbrot-Fraktals unter Zuhilfenahme der Shadereinheiten in Graphikkarten zu beschäftigen und erste Erfolge feiern konnte, wollte ich das mal auf einer richtigen Graphikkarte ausprobieren...

    Weiterlesen...

Neueste Artikel

  • Datenvalidierung UTF8 mit BiDi-Steuerzeichen (TrojanSource 2.0)

    Ich bin heute nochmal inspiriert worden, weiter über die Trojan Source Vulnerability nachzudenken. Meiner Meinung nach bestehen hier noch Probleme - speziell bei Nutzereingaben oder Daten, die über externe Schnittstellen ampfangen werden.

    Weiterlesen...
  • OpenStreetMap Navi als Docker-Container

    Ich habe die auf OpenStreetMap basierende OpenSource Navigationslösung Graphhopper in einen Docker-Container gepackt und als neuestes Mitglied in meinem Docker-Zoo willkommen geheißen.

    Weiterlesen...
  • SQL-Aggregatfunktionen in SQLite als BeanShell-Scripts

    Ich habe neulich über eine Möglichkeit berichtet, SQLite mittels der sQLshell und Beanshell-Skripten um SQL-Funktionen zu erweitern. In diesem Artikel versprach ich auch, über eine solche Möglichkeit für Aggregatfunktionen zu berichten.

    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.