Zpět na projekty
Případová studie · Vedlejší projekt · Health Tech

Zdravotní analyzátor

Offline AI health tracker. Nahraj laboratorní výsledky, OCR pipeline vytáhne z PDF každý ukazatel a lokálně běžící Llama 3.1 srozumitelně vysvětlí, co je mimo normu. Nic neopouští notebook.

Problém

Dvakrát ročně dostávám balík labáků — dvanáct PDF, padesát ukazatelů, tři různé konvence referenčních rozsahů. To zajímavé bývá málokdy jedna špatná hodnota; je to trend přes dva roky. Jenže do ChatGPT nenahraju celý krevní obraz a SaaS trackery, co tohle slibují, buď stojí 400 Kč měsíčně nebo tiše posílají data do třetí strany.

Proč lokální Ollama

Zdravotní data jsou učebnicový příklad, kdy mají zůstat na zařízení. Hormonální panely, lipidy, cokoliv jaterního — jakmile to opustí tvůj stroj, už to nedostaneš zpátky. Llama 3.1 8B přes Ollamu se vejde do 4 GB RAM, běží ~30 tokenů/s na M2 Air a jediný síťový provoz, který aplikace dělá, je dotaz na Ollamu na localhost:11434. Žádné účty, žádné API klíče, žádný cloud bill, který škáluje s tím, jak jsem ten týden zvědavý.

Jak to funguje — OCR + bulk import

Hodíš složku s PDF na import zónu. Tesseract OCR projde každou stránku, malý parser detekuje název ukazatele + hodnotu + jednotku + referenční rozsah (české a německé labrky mají různé layouty, takže máme per-laboratoř template registry). Ukazatele se normalizují, deduplikují proti historii a uloží do Postgresu. Když je tam rok dat, klikneš "Vysvětli" — app vytvoří strukturovaný markdown sumář (aktuální hodnota vs. rozsah vs. 12měsíční trend) a pošle ten, ne syrová PDF, do lokálního LLM. Model vrátí tři sekce: co sledovat, co ignorovat, na co se zeptat doktora.

Tech Stack

Next.js 15
Ollama
Llama 3.1
Tesseract OCR
PostgreSQL
Tailwind

Klíčové funkce

100% lokální inference

Llama 3.1 8B přes Ollamu na localhostu. Žádné API klíče, žádné rate limity, žádné předplatné. Funguje v letadle.

Bulk import PDF + OCR

Přetáhni složku s laboratorními PDF. Tesseract vytáhne text, per-laboratorní parser zpracuje název ukazatele + hodnotu + jednotku + rozsah.

Analýza trendu přes roky

Každý ukazatel se normalizuje a ukládá v čase, takže vidíš, jestli ferritin opravdu klesá nebo to je týdenní šum.

Vysvětlení v běžné řeči

LLM dostává strukturovaný sumář, ne syrová PDF. Vrátí tři sekce: co sledovat, co ignorovat, na co se zeptat doktora.

Časová osa — jak to rostlo

  1. Večer 1

    Bolavý spike: vlož jedno PDF labáku do Claude a požádej o analýzu. Výstup výborný. Problém nebylo 10 Kč za request — bylo posílání mého panelu třetí straně.

  2. Večer 2

    Nainstaloval Ollamu, stáhl llama3.1:8b, zdrátoval malou Next.js stránku, co POSTuje na localhost:11434. První lokální odpověď za 6 sekund.

  3. Víkend 1

    OCR pipeline s Tesseractem. První tři české laboratorní šablony parsovaly čistě; německá si vyžádala vlastní regex.

  4. Víkend 2

    Postgres schema pro ukazatele + historie. Bulk import 18 měsíců PDF. První pohled na trendy.

  5. Večer (později)

    Prompt engineering: strukturovaný markdown sumář, few-shot příklady pro tón, tři sekce ve výstupu. Kvalita přeskočila původní cloudovou verzi.

  6. Průběžně

    Přidávám šablony, jak narážím na nové layouty. Příště: vrstva přirozeného dotazování přes Ollamu ("ukaž mi ferritin od 2023").

Čísla

100%
Lokální inference
0 Kč
Měsíční API účet
4 GB
RAM pro model
~30
Tokenů / sekundu na M2
50+
Sledovaných ukazatelů
0
Bajtů opustí notebook

Screenshoty

Bulk import — přetažení složky s PDF

Screenshoty redigovány — uvnitř jsou reálná data

Trend ukazatele za 12 měsíců

Screenshoty redigovány — uvnitř jsou reálná data

Panel s LLM vysvětlením — tři sekce

Screenshoty redigovány — uvnitř jsou reálná data

Editor per-laboratorních šablon

Screenshoty redigovány — uvnitř jsou reálná data

Co jsem se naučil

Lokální default mění, co si dovolíš ukládat

Když inference stojí 0 Kč a data neopouští notebook, přestaneš si autocenzurovat, co naimportuješ. Dataset zbohatl, protože náklad na soukromí klesl na nulu.

Prompt > velikost modelu, znovu

Llama 3.1 8B se strukturovaným sumářem překoná GPT-4 se syrovými PDF. Výhra byla ve tvaru vstupu, ne ve velikosti modelu — stejná lekce, kterou se opakovaně učím.

OCR je nesexy 80 %

Naplánoval jsem víkend na LLM a večer na OCR. Bylo to obráceně. Laboratorní PDF mají divoce nekonzistentní layouty; per-laboratorní šablony byly nevyhnutelné.

Zdravotní data zaslouží vyšší laťku než 'šifrujeme přenos'

Většina SaaS trackerů ti rád prožene krevní obraz přes třetí stranu. Nejsem ochotný předpokládat, že to dopadne dobře. Lokální default nebyla feature — byl to celý důvod, proč to stavět.

Chceš celý build journal?

Číst technický článek