feat: Update README and next steps with Mistral AI model details and parsing rules for receipts
Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
@@ -20,8 +20,9 @@ Tolkar Markdown-recept till strukturerat JSON utan databas.
|
||||
|
||||
### Kvittoparsning (`POST /api/receipt-import/parse`)
|
||||
- Bild (JPEG/PNG/WebP/HEIC/HEIF) eller PDF
|
||||
- Mistral AI vision med retry-logik (3 försök vid 503/429)
|
||||
- Returnerar `ParsedReceiptItem[]`
|
||||
- **Modell:** `mistral-small-2603` (vision-kapabel) med retry-logik (3 försök vid 503/429)
|
||||
- Returnerar `ParsedReceiptItem[]` med fälten `rawName`, `quantity`, `unit`, `price`, `brand`, `origin`
|
||||
- Inbyggda regler i AI-prompten styr tolkning av `quantity`/`unit` (se nedan)
|
||||
|
||||
### Health (`GET /api/health`)
|
||||
Används av Docker-healthcheck i `recipe-app/compose.yml`. Returnerar `{ status: "ok" }`.
|
||||
@@ -77,7 +78,21 @@ src/
|
||||
|
||||
**Viktigt:** Backend har _INGEN_ databaskonfiguration — stateless service.
|
||||
|
||||
---
|
||||
|
||||
## Kvittoparsning — regler för quantity och unit
|
||||
|
||||
Följande regler är inbyggda i AI-prompten och styr hur Mistral tolkar mängd och enhet per produkt:
|
||||
|
||||
| Typ | Regel | Exempel |
|
||||
|---|---|---|
|
||||
| **Lösvikt** (kött, ost, frukt/grönt vägt i kassan) | `quantity` = faktisk vikt från kvittot, `unit` = `kg`/`g` | `BLANDFÄRS 20%` 0.997 kg → `quantity=0.997, unit="kg"` |
|
||||
| **Förpackad vara med storlek i namn** (mejeri, dryck, konserver) | `quantity` = antal förpackningar, `unit` = `"förp"` | `MJÖLK 1,5L` × 3 → `quantity=3, unit="förp"` |
|
||||
| **Multipack** (`NxYg`/`NxYml` i namn) | `quantity=1`, `unit="förp"` — räkna inte upp N | `BACON 3X120G` → `quantity=1, unit="förp"` |
|
||||
| **Förpackat innehåll** (bröd, kex, chips) | `quantity` = antal förpackningar, `unit` = `"förp"` | `BRIOCHE SESAM` × 2 → `quantity=2, unit="förp"` |
|
||||
| **Lösa styckvaror** (enstaka frukt/bröd per st) | `quantity` = antal, `unit` = `"st"` | `BANAN` × 1 → `quantity=1, unit="st"` |
|
||||
|
||||
Tillåtna enheter: `st`, `kg`, `g`, `l`, `dl`, `cl`, `ml`, `förp`, `pak`, `burk`, `flaska`
|
||||
|
||||
---
|
||||
|
||||
@@ -145,7 +160,7 @@ docker exec importer-api wget -qO- http://localhost:3001/api/health
|
||||
- **Node.js** 22-alpine — Runtime (Alpine Linux)
|
||||
- **pdf-parse** — PDF text extraction
|
||||
- **tesseract.js** — OCR (bild och skannade PDFs, svenska + engelska)
|
||||
- **@mistralai/mistralai** — AI-kvittoparsning
|
||||
- **@mistralai/mistralai** — AI-kvittoparsning (`mistral-small-2603`)
|
||||
- **multer** — Multipart file upload handling
|
||||
- **Ingen databas** — Stateless service
|
||||
|
||||
|
||||
Reference in New Issue
Block a user