Zurück zu Projekten
Case Study · Nebenprojekt · Health Tech

Gesundheits-Analyzer

Offline KI-Gesundheits-Tracker. Laborbefund hochladen — eine OCR-Pipeline extrahiert jeden Marker aus dem PDF, und ein lokal laufendes Llama 3.1 erklärt in einfacher Sprache, was außerhalb des Referenzbereichs liegt. Nichts verlässt den Laptop.

Problem

Zweimal im Jahr bekomme ich einen Stapel Laborwerte — zwölf PDFs, fünfzig Marker, drei verschiedene Konventionen für Referenzbereiche. Das Interessante ist selten ein einzelner schlechter Wert; es ist der Trend über zwei Jahre. Aber ich kippe sicher nicht mein komplettes Blutbild in ChatGPT, und die SaaS-Tracker, die das versprechen, kosten entweder 15 €/Monat oder leiten Daten still an eine Drittanbieter-API weiter.

Warum lokales Ollama

Gesundheitsdaten sind der Lehrbuchfall fürs On-Device-Bleiben. Hormonpanels, Lipid-Trends, alles Leberbezogene — sobald es deinen Rechner verlässt, bekommst du es nicht zurück. Llama 3.1 8B über Ollama läuft mit 4 GB RAM, etwa 30 Tokens/s auf einem M2 Air, und der einzige Netzwerkverkehr der App ist der Check auf localhost:11434. Keine Accounts, keine API-Schlüssel, keine Cloud-Rechnung, die mit meiner wöchentlichen Neugier wächst.

So funktioniert es — OCR + Bulk-Import

Einen Ordner mit PDFs in die Import-Zone ziehen. Tesseract OCR scannt jede Seite, ein kleiner Parser erkennt Markername + Wert + Einheit + Referenzbereich (deutsche und tschechische Labors haben unterschiedliche Layouts, daher gibt es ein Pro-Labor-Template-Register). Marker werden normalisiert, gegen die Historie dedupliziert und in Postgres gespeichert. Sobald ein Jahr drin ist, klickst du "Erklären" — die App baut eine strukturierte Markdown-Zusammenfassung (aktueller Wert vs. Bereich vs. 12-Monats-Trend) und schickt diese, nicht die rohen PDFs, an das lokale LLM. Das Modell liefert drei Abschnitte: was beobachten, was ignorieren, was den Hausarzt fragen.

Tech Stack

Next.js 15
Ollama
Llama 3.1
Tesseract OCR
PostgreSQL
Tailwind

Hauptfunktionen

100 % lokale Inferenz

Llama 3.1 8B über Ollama auf localhost. Keine API-Schlüssel, keine Rate Limits, kein Abo. Funktioniert im Flugzeug.

Bulk-PDF-Import + OCR

Einen Ordner mit Labor-PDFs in die Import-Zone ziehen. Tesseract extrahiert Text, ein Pro-Labor-Parser zieht Markername + Wert + Einheit + Bereich heraus.

Trendanalyse über Jahre

Jeder Marker wird normalisiert und über die Zeit gespeichert, sodass du siehst, ob Ferritin tatsächlich driftet oder nur wöchentlich rauscht.

Erklärungen in einfacher Sprache

Das LLM bekommt eine strukturierte Zusammenfassung, nicht die rohen PDFs. Es liefert drei Abschnitte: was beobachten, was ignorieren, was den Hausarzt fragen.

Zeitstrahl — wie es wuchs

  1. Abend 1

    Schmerzhafter Spike: ein Labor-PDF in Claude einfügen und Analyse anfordern. Output war stark. 0,40 € pro Request war nicht das Problem — meine Werte an Dritte zu senden, war es.

  2. Abend 2

    Ollama installiert, llama3.1:8b gezogen, eine kleine Next.js-Seite verkabelt, die an localhost:11434 POSTet. Erste lokale Antwort nach 6 Sekunden.

  3. Wochenende 1

    OCR-Pipeline mit Tesseract. Erste drei tschechische Labor-Templates parsten sauber; das deutsche brauchte einen eigenen Regex.

  4. Wochenende 2

    Postgres-Schema für Marker + Historie. Bulk-Import von 18 Monaten PDFs. Erste Trendansicht.

  5. Abend (später)

    Prompt Engineering: strukturierte Markdown-Zusammenfassung, Few-Shot-Beispiele für den Ton, dreiteiliger Output. Qualität sprang über die ursprüngliche Cloud-Version.

  6. Laufend

    Templates ergänzen, wenn neue Layouts auftauchen. Als Nächstes: eine Ollama-basierte natürlichsprachliche Abfrageschicht ("zeig mir Ferritin seit 2023").

Zahlen

100 %
Lokale Inferenz
0 €
Monatliche API-Rechnung
4 GB
RAM für das Modell
~30
Tokens / Sekunde auf M2
50+
Verfolgte Marker
0
Bytes verlassen den Laptop

Screenshots

Bulk-Import — Ordner mit PDFs ziehen

Screenshots geschwärzt — echte Labordaten innen

Marker-Trend über 12 Monate

Screenshots geschwärzt — echte Labordaten innen

LLM-Erklärungs-Panel — drei Abschnitte

Screenshots geschwärzt — echte Labordaten innen

Pro-Labor-Template-Editor

Screenshots geschwärzt — echte Labordaten innen

Was ich gelernt habe

Lokal-first ändert, was du dir zu speichern erlaubst

Wenn Inferenz 0 € kostet und Daten den Laptop nie verlassen, hörst du auf, dich beim Importieren zu zensieren. Der Datensatz wurde reicher, weil die Privacy-Kosten auf null fielen.

Prompt > Parameteranzahl, schon wieder

Llama 3.1 8B mit strukturierter Zusammenfassung schlägt GPT-4 mit rohen PDFs. Der Gewinn lag in der Eingabeform, nicht in der Modellgröße — die gleiche Lektion, die ich immer wieder lerne.

OCR ist die unsexy 80 %

Ich hatte ein Wochenende fürs LLM und einen Abend für OCR eingeplant. Es war umgekehrt. Labor-PDFs haben wild inkonsistente Layouts; ein Pro-Labor-Template-Register war unvermeidbar.

Gesundheitsdaten verdienen mehr als 'wir verschlüsseln in Transit'

Die meisten SaaS-Tracker schicken dein Blutbild ohne zu zögern durch ein Drittanbieter-LLM. Ich bin nicht bereit anzunehmen, dass das gut endet. Lokal-first war kein Feature — es war der ganze Grund, das zu bauen.

Möchtest du das ganze Build-Journal?

Den technischen Bericht lesen