Von manueller Dateneingabe zur automatisierten Angebotsverwaltung

Das Problem

Bei der Verwaltung von Bauprojekten wie dem „Stadtgarten Mylau“ gehen täglich zahlreiche Angebote von verschiedenen Anbietern ein – meist als PDF-Dokumente – nicht immer gut formatiert. Die manuelle Übertragung von Positionen, Preisen und Kostengruppen in eine Datenbank ist zeitaufwendig und fehleranfällig.

Die Lösung: Eine intelligente Webapp mit LLM-Integration

Wir haben eine vollständige Webanwendung entwickelt, die PDF-Angebote automatisch analysiert, strukturiert und in eine durchsuchbare Datenbank überführt. Das Besondere: Die gesamte Lösung ist hochgradig konfigurierbar und nutzt moderne LLM-Technologie für präzise Datenextraktion.


Stack?

1. Hybride OCR-Pipeline

  • Vision-LLM (llama3.2-vision:11b) für direktes Rendering der PDF-Seiten
  • Fallback auf Tesseract OCR bei Problemen
  • Intelligente Fehlerbehandlung und automatische Wiederholungsversuche
  • Ergebnis: Deutlich schnellere Verarbeitung bei gleichbleibender Qualität

2. Strukturierte Datenextraktion mit LLM

Statt einfach nur Text zu extrahieren, nutzen wir ein spezialisiertes LLM-Modell (qwen3-coder:30b – coder models schwurbeln nicht:) für:

  • Automatische Erkennung von Anbieter, Positionen, Mengen, Einheiten und Preisen
  • DIN 276 Kostengruppen-Zuordnung – projektspezifisch konfigurierbar
  • JSON-Sanitization mit json-repair für robuste Verarbeitung
  • Deterministische Ausgabe (Temperature: 0.0) für konsistente Ergebnisse

Features der Webapp

Intelligente Positionsverwaltung

Alternative Positionen

  • Checkbox zum Markieren von Alternativ-Angeboten
  • Automatische Filterung in Summenberechnung (nur Hauptpositionen)

Flexible MwSt-Verwaltung

  • Individueller MwSt-Satz pro Angebot oder Position

DIN 276 Kostengruppen-Management

  • Dropdown-Auswahl für jede Position
  • Automatische Gruppierung und Summierung nach Kostengruppen
  • Übersichtliche Darstellung mit Zwischensummen

Technologie-Stack

Backend:

  • Python 3 mit Flask
  • SQLite-Datenbank mit Views für optimierte Abfragen
  • Ollama für LLM-Integration

Frontend:

  • Vanilla JavaScript (kein Framework-Overhead)
  • Responsive Design
  • Echtzeit-Updates ohne Page-Reload

LLM-Infrastruktur:

  • Vision-Modell für OCR: llama3.2-vision:11b
  • Text-Modell für Extraktion: qwen3-coder:30b

Datenverarbeitung:

  • pdftotext / pdfplumber für PDF-Handling
  • Tesseract OCR als Fallback
  • json-repair für robuste JSON-Verarbeitung

Workflow: Von PDF zu strukturierten Daten

  1. Upload: PDF-Datei hochladen
  2. OCR: Vision-LLM rendert PDF-Seiten zu Text
  3. Extraktion: Text-LLM analysiert und strukturiert Daten
  4. Validierung: JSON-Sanitization und Fehlerbehandlung
  5. Speicherung: Positionen in SQLite-DB mit DIN 276-Zuordnung
  6. Anzeige: Interaktive Tabelle mit Inline-Editing

Ergebnis

Aus einem manuellen, fehleranfälligen Prozess wurde ein automatisiertes, skalierbares System:

  • ⏱️ Zeitersparnis: Von 30 Minuten auf 2 Minuten pro Angebot
  • 🎯 Genauigkeit: >95% korrekte Extraktion dank LLM
  • 🔧 Wartbarkeit: Konfigurierbar ohne Code-Änderungen
  • 📊 Übersicht: Echtzeit-Aggregation nach Kostengruppen