pdf-renamer

Lokales KI-Tool, das PDFs einliest und sinnvolle Dateinamen vorschlägt. In einer Stunde gebaut, weil mir in einem Call jemandes Pain-Point aufgefallen ist.

Python Ollama Local AI Docker Privacy Vibe Coding
pdf-renamer Vorschau

Was es ist

Ein kleines lokales KI-Tool, das eine PDF einliest und einen sinnvollen Dateinamen vorschlägt. Aus handbuch_final_v2.pdf wird zum Beispiel Bauknecht_Waschmaschine_WA-Eco-8_Bedienungsanleitung.pdf. Komplett auf dem eigenen Rechner, kein Cloud-API, keine Daten verlassen den Host.

Repo: github.com/jemimakilab/pdf-renamer.

Wie es entstanden ist

In einem Call mit jemandem, der gerade mit Vibe-Coding angefangen hatte. Wir haben eigentlich über andere Sachen gesprochen, und nebenbei ist mir aufgefallen, dass ihm ein konkretes Tool fehlt: hunderte PDFs auf der Platte, alle mit nichtssagenden Namen wie Scan_2024-03-12_001.pdf. Eine Stunde später lag eine erste lauffähige Version auf GitHub.

Das ist eigentlich der ganze Layer-8-Punkt in einem Beispiel. Die Tech war nicht das Problem, die war in einer Stunde gebaut. Das Problem war zu hören, was tatsächlich fehlt, statt zu zeigen was Tools alles können.

Wie es funktioniert

  • Du wirfst eine PDF rein per Drag-and-drop oder zeigst auf einen Ordner (Batch-Modus)
  • Ein lokales LLM via Ollama liest die ersten Seiten
  • Es extrahiert Metadaten und schlägt einen strukturierten Dateinamen vor
  • Du prüfst den Vorschlag, korrigierst Felder wenn nötig, übernimmst die Umbenennung
  • Im Batch-Modus läuft das für hunderte Dateien durch und du gehst einmalig die Review-Tabelle durch

Bei eingescannten PDFs ohne Text-Layer fällt es kaskadierend zurück: zuerst pypdf, dann pdfplumber, am Ende Tesseract-OCR mit deutschem und englischem Sprachpaket.

Tech-Stack

  • Python als Hauptsprache
  • Ollama für die lokalen LLMs (Default qwen2.5:32b-instruct für gute Qualität, qwen2.5:7b-instruct oder llama3.1:8b für schwächere Hardware)
  • JSON-Schema-Constraint über Ollamas strukturierten Output, kein Parsing-Roulette mit ungültigen LLM-Antworten
  • Docker + Docker Compose zum Deployment
  • Tesseract für OCR-Fallback bei Scans
  • MIT-Lizenz auf GitHub

Konfigurierbare Namensschemata

In config/schemas.yaml kannst du eigene Templates definieren, zum Beispiel ein Schema für Rechnungen, eines für Bedienungsanleitungen, eines für Verträge. Beim Verarbeiten wählst du live aus, welches Schema angewendet wird. Das LLM wird durch das Schema geleitet, um Felder wie Marke, Typ, Modellnummer, Dokumenttyp gezielt zu extrahieren.

Privacy-Hinweis

Alles läuft on-premise. Keine Cloud, kein API-Key, keine Daten verlassen den Rechner. Der einzige Netzwerk-Call geht an dein eigenes Ollama auf demselben Host oder im gleichen Docker-Netz. Für Leute die Verträge, Rechnungen oder andere sensible Dokumente verarbeiten ist das die einzige saubere Variante. Wer das mit ChatGPT oder Claude API machen würde, schickt die kompletten PDF-Inhalte an einen Drittanbieter, oft ohne sich Gedanken zu machen.

Was ich daraus mitgenommen habe

Speed durch Vibe-Coding ist nicht das Eindrucksvollste an dem Projekt. Eindrucksvoll ist, dass das Tool wirklich passt, weil ich die echte Aufgabe verstanden habe, nicht eine generische Vorstellung davon. Der Person, für die ich es gebaut habe, fehlte nicht “ein PDF-Tool”, sondern “ein Tool das auf seine Ablagestruktur passt”. Genau das ist die Differenz zwischen einem KI-Tool das nervt und einem das gerne benutzt wird.