DokumentenmanagementKIOpen SourceLLMPython

AIDocSynth – Intelligente Dokumenten-Assistentin für Ordnung ohne Aufwand

Wie ich mit AIDocSynth das Dokumentenchaos durch automatisierte Klassifizierung und semantische Ablage nach MIT-Standards löse. Offline-First-Architektur mit OCR, lokalen LLMs und Prompt-Optimierung.

Autor: Tobias Müller, ispringen.dev

Ich kenne das Problem aus eigener Erfahrung. Über Monate sammeln sich PDF-Rechnungen, gescannte Verträge und Office-Dokumente an. Anfangs halte ich mich noch an selbst gesetzte Regeln für Dateinamen und Ordnerstrukturen. Doch mit der Zeit schleichen sich Inkonsistenzen ein. Eine Rechnung benenne ich Rechnung_2025-01.pdf, die nächste 2025_Rechnung_Januar.pdf. Aus drei geplanten Ordnerebenen werden schnell sieben oder mehr. Irgendwann verbringe ich mehr Zeit mit Suchen als mit Arbeiten.

Die größte Hürde ist nicht das Fehlen von Tools, sondern das Fehlen automatisierter, konsistenter Regeln.

Backups auf der NAS sichern zwar die Daten, lösen aber nicht das eigentliche Problem, die Wiederauffindbarkeit. Ohne klare semantische Metadaten bleibt jede Suche ein Ratespiel. Tiefe Ordnerhierarchien verschärfen das Problem. Studien zeigen, dass Nutzer sich Pfade mit mehr als vier Ebenen kaum merken können. Die Suchzeit steigt exponentiell.

Bestehende Lösungen helfen nur bedingt. Cloud-Dokumentenmanagementsysteme ersetzen das Dateisystem durch eigene Datenbanken. Lokale Suchtools wie grep oder Windows Search finden zwar Dateien, klassifizieren sie aber nicht automatisch. Händisches Verwalten wird dadurch nicht erleichtert. Es fehlt ein Tool, das intelligente Benennung und Sortierung übernimmt, ohne bestehende Strukturen zu ersetzen.

Die Methode Data Management: File Organization der MIT Libraries zeigt den Weg. Sie definiert klare Regeln für semantische Hierarchien und konsistente Benennungskonventionen. Doch ohne Automatisierung entsteht ein Teufelskreis. Je mehr Dateien, desto höher der manuelle Aufwand, desto inkonsistenter die Ablage. Typische Inkonsistenzen in manueller Benennung sind:

  1. Rechnung_2025-01.pdf vs. 2025_Rechnung_Januar.pdf
  2. Scan_Handy.jpg vs. Vertrag_Mobilfunk_20250120.jpg
  3. Dokument1_final_v2.pdf ohne inhaltlichen Bezug

Bestehende Ansätze im Vergleich:

LösungstypKlassifizierungAutomatische AblageOffline-fähig
Cloud-DMSJaJaNein
Lokale SuchtoolsNeinNeinJa
AIDocSynthJaJaJa

Die Lösung: Wie AIDocSynth OCR, LLM und MIT-Regeln kombiniert

AIDocSynth löst das Problem durch eine klare Verarbeitungskette. Ich ziehe eine PDF- oder Bilddatei per Drag & Drop in die App. Sofort startet die Verarbeitung. On-Device OCR extrahiert den Text, selbst aus Scans. Dafür nutze ich doctr, eine lokale OCR-Bibliothek. Keine Cloud-Uploads, keine Datenschutzbedenken.

Ein optimierter System-Prompt steuert die LLM-Klassifizierung. Er definiert zwölf Metadatenfelder wie headline, specifier und target_directory. Jedes Feld hat strikte Formatvorgaben. Die headline darf maximal 15 Zeichen lang sein, der target_directory muss ein relativer Pfad ohne führenden Schrägstrich sein. Das LLM generiert daraus strukturierte Metadaten im JSON-Format.

Die Datei wird automatisch in die semantisch passende Ordnerstruktur einsortiert. Der Zielname folgt dem Schema [headline]_[yyyymmdd]_[specifier].[ext]. Die Sortierung orientiert sich an den MIT-Standards für File Organization: flache Hierarchien, Domain als oberste Ebene, maschinenlesbare Namen. Die LLM-Abstraktionsschicht unterstützt lokale Modelle wie Ollama, aber auch OpenAI API und Azure OpenAI.

Die eigentliche Innovation liegt nicht in der Kombination von OCR und LLM, sondern in der Prompt-Optimierung für kleine Modelle.

Die Methode Data Management: File Organization der MIT Libraries zeigt den Weg.

Metadatenfelder des System-Prompts:

  1. headline: Prägnantes Substantiv (≤ 15 Zeichen)
  2. specifier: Unterscheidungsmerkmal (≤ 20 Zeichen)
  3. target_directory: Relativer Pfad nach MIT-Standards

Vergleich der LLM-Provider-Integration:

ProviderModellbeispielOffline-fähigAPI-Kosten
Ollamamistral-small3.1JaNein
OpenAIgpt-4o-miniNeinJa
Azuregpt-4NeinJa

Tabelle 1: Vergleich der LLM-Provider-Integration.

Wie AIDocSynth funktioniert

Die Architektur ist modular aufgebaut und besteht aus drei Hauptkomponenten: einer Drag-and-Drop-Oberfläche (GUI), einer Verarbeitungs-Pipeline im Hintergrund und einer Abstraktionsschicht für die Anbindung verschiedener Sprachmodelle.

Ein modernes technisches Architekturdiagramm von AIDocSynth, das den Datenfluss von links nach rechts zeigt. Es beginnt bei der GUI-Eingabe (DropArea) und führt in einen zentralen asynchronen Worker-Thread. Dieser durchläuft fünf Pipeline-Schritte: Backup, OCR-Textextraktion, LLM-Klassifizierung (mit Abzweigung zu lokalen/Cloud-Providern), Datei-Operationen und Metadaten-Schreiben. Der Prozess endet rechts in einer hierarchischen Dateisystem-Ausgabe, während Status-Updates via Qt Signals an das JobTableModel zurückgemeldet werden.

Die Pipeline führt folgende Schritte vollautomatisch aus:

  1. Backup: Sicherung der Originaldatei vor jeder Änderung.
  2. Textextraktion: Nutzung von OCR (Optical Character Recognition), als ergänzung oder falls kein Textlayer vorhanden ist.
  3. Klassifizierung: Analyse des Inhalts durch ein Sprachmodell (LLM).
  4. Operation: Umbenennung und Verschiebung basierend auf dem Regelwerk.
  5. Metadaten: Schreibe von Tags unter weiteren Informationen in die Dateieigenschaften.

Entwickler können dank Pydantic-Modellen und strikter Datenvalidierung eigene Provider für Sprachmodelle einbinden. Die Benutzeroberfläche basiert auf Qt und reagiert in Echtzeit über asynchrone Signals, damit die UI während der Verarbeitung nicht einfriert.

Prompt-Optimierung: Wie ich kleine Modelle wie Mistral Nemo stabil steuere

Kleine Modelle wie Mistral Nemo mit 3 Milliarden Parametern sind weniger zuverlässig bei komplexen Tasks wie Dokumentenklassifizierung. Ich habe viel Arbeit in die Prompt-Optimierung gesteckt, um trotzdem stabile Ergebnisse zu erzielen. Der System-Prompt definiert zwölf Metadatenfelder mit strikten Constraints. Die headline ist auf 15 Zeichen begrenzt, der target_directory muss ein relativer Pfad ohne führenden Schrägstrich sein.

Der Analysis-Prompt nutzt Template-Variablen wie {{ content_string }} und {{ directory_structure_json }}. Die bestehende Ordnerstruktur wird als JSON eingebunden. Das Modell lernt so aus vorhandenen Mustern und vermeidet disruptive Umzüge. Pydantic-Validierung sichert die JSON-Ausgabe ab und löst bei Fehlern einen Retry aus.

Es gibt einen dokumentierten Trade-off. Bei Ordnerstrukturen mit mehr als acht Ebenen sind größere Modelle zuverlässiger. Die Prompt-Optimierung ermöglicht es dennoch, ressourcenschonende Modelle offline zu nutzen. Der System-Prompt ignoriert explizit Zusatzinformationen wie Datenschutzerklärungen, um den Fokus auf den Hauptinhalt zu legen.

Constraint-Beispiele aus dem System-Prompt:

  1. headline: ≤ 15 Zeichen, prägnantes Substantiv (z. B. “Rechnung”)
  2. specifier: ≤ 20 Zeichen, Unterscheidungsmerkmal (z. B. “Strom_202601”)
  3. target_directory: relativer Pfad, flache Hierarchie (z. B. “Finanzen/Verträge”)

Vergleich der Modellzuverlässigkeit:

ModellParameterKomplexität (Ebenen)Offline-fähig
Mistral Nemo3B≤ 8Ja
Mistral Small 3.222B> 8Ja
GPT-4o-mini~30B> 12Nein

Tabelle 2: Vergleich der Modellzuverlässigkeit.

Architektur: Wie ich die Pipeline modular und skalierbar aufbaute

Die Architektur von AIDocSynth ist pragmatisch und skalierbar. Ich beginne mit der DropArea, die Dateipfade per Drag & Drop entgegennimmt. Der MainController legt einen Job mit Status pending an und aktualisiert die JobTableModel. Ein Worker Thread führt die asynchrone Pipeline aus. Backup im .aidocsynth/backup-Verzeichnis, Text-Extraktion via doctr oder native Extraktion, LLM-Klassifizierung mit System- und Analysis-Prompt, Dateiumbenennung und -verschiebung nach target_directory und target_filename.

Der Provider-Layer abstrahiert verschiedene LLM-Anbieter durch ein einheitliches Interface. Das LLMProviderProtocol definiert Methoden wie classify_document(). Die JobTableModel aktualisiert die UI in Echtzeit über Qt-Signals und zeigt Status wie pending, processing, completed oder failed an. Modulare Services für OCR, LLM und File-Operations sind als separate Python-Klassen implementiert und über Dependency Injection angebunden.

Job-Status und UI-Aktualisierung:

  1. pending: Job angelegt, wartet auf Worker Thread
  2. processing: Verarbeitung läuft (OCR → LLM → File-Ops)
  3. completed: Datei erfolgreich verschoben, Metadaten geschrieben
  4. failed: Fehler aufgetreten (z. B. OCR fehlgeschlagen)

Vergleich des Provider-Interfaces:

MethodeParameterRückgabe
classify_document()content: str, prompt: strDocumentMetadata (Pydantic)
is_available()bool

Tabelle 3: Vergleich des Provider-Interfaces.

Markt und Haltung: Warum AIDocSynth eine echte Lücke füllt

AIDocSynth schließt eine echte Marktlücke. Bestehende Lösungen adressieren entweder Legacy-Code-Dokumentation wie A.I.DOC oder Template-basierte Dokumentengenerierung wie AI Document. Keine dieser Lösungen bietet intelligente Sortierung bestehender Dateien. AIDocSynth kombiniert OCR, LLM-Klassifizierung und automatische Ablage nach MIT-Standards.

AIDocSynth schließt eine echte Marktlücke. Bestehende Lösungen adressieren entweder Legacy-Code-Dokumentation oder Template-basierte Dokumentengenerierung.

Die Offline-First-Architektur ist ein entscheidender Vorteil. On-Device OCR via doctr und lokale LLM-Integration mit Ollama erfüllen DSGVO-Anforderungen und vermeiden Cloud-Abhängigkeiten. Beta-Tester schätzen die Einfachheit: “Ich schiebe nur noch die PDFs in das Feld. Sekunden später ist alles sortiert.” Die Roadmap sieht Erweiterungen wie einen Wizard für Ersteinrichtung und ein Plug-in-System für Custom-Prompts vor.

Ich denke, die größte Marktlücke ist nicht das Fehlen von Dokumenten-Tools, sondern das Fehlen intelligenter Assistenten, die bestehende Dateien ohne manuellen Aufwand konsistent strukturieren. Offline-First ist keine Option, sondern technische Notwendigkeit. Sensible Daten gehören nicht in die Cloud, und lokale Modelle wie Mistral Small 3.1 beweisen, dass Performance kein Ausschlusskriterium mehr ist.

Vergleich der Lösungsansätze:

LösungstypIntelligente SortierungOffline-fähigZielgruppe
AIDocSynthJaJaEndnutzer, Entwickler
Cloud-DMS (z. B. AI Document)NeinNeinUnternehmen
OCR-Tools (z. B. Tesseract)NeinJaEntwickler

Tabelle 4: Vergleich der Lösungsansätze.

Cite this article Tobias Müller (2026): *AIDocSynth: Intelligente Dateiverwaltung mit OCR, LLM und MIT-Standards.* https://ispringen.dev Lizenz: CC BY 4.0 – Bitte mit Namensnennung „Tobias Müller, ispringen.dev“.

Quellen

Kontakt und Community

Ich stehe gerne für Fragen und Diskussionen zur Verfügung. Die beste Anlaufstelle ist das GitHub-Repository, wo Issues und Diskussionen geführt werden.