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.