feat: Enhance recipe import functionality with support for PDF, image, and URL inputs

This commit is contained in:
Nils-Johan Gynther
2026-04-14 22:48:57 +02:00
parent ea5f97ab82
commit a2038ffbec
2 changed files with 57 additions and 33 deletions
+15 -9
View File
@@ -19,6 +19,7 @@ En fullstack-applikation för hantering av hemmavaror och recept. Håll koll på
- **Skapa och redigera recept** — med ingredienser, kvantiteter, enheter och instruktioner (Markdown-stöd)
- **Receptjämförelse mot inventorie** — se direkt vilka ingredienser du har hemma, vad som saknas och enhetskonflikt
- **Importera recept från Markdown** — klistra in ett recept i enkelt format, låt systemet matcha ingredienser, granska och spara med ett klick
- **Importera recept från PDF, bild eller länk** — stöd för PDF-textutvinning, OCR av bilder och webbimport via snabbimport
- **Intelligenta matchningar** — Levenshtein-baserad likhetsbedömning hittar rätt produkt även på osäker stavning
- **Enhetskonvertering** — automatisk konvertering mellan viktenheter (g/kg), volymenheter (ml/dl) och portionsenheter (tsk/msk)
@@ -51,6 +52,8 @@ docker compose up -d
Frontend är tillgänglig på `http://localhost:3000` (eller via Caddy proxy)
Backend API är tillgänglig på `http://localhost:8080` (eller via Caddy proxy)
> Stacken använder lokala Docker-images, hälsokontroller och startordning mellan databasen, API:t och frontend för stabilare uppstarter och Portainer-deployer.
### Bygg bara backend eller frontend om behövligt
```bash
@@ -69,10 +72,10 @@ docker compose up -d recipe-frontend
```bash
# Hälsokontroll via HTTP (backend måste köra)
curl http://localhost:8080/health
curl http://localhost:8080/api/health
# Databasspecifik hälsokontroll
curl http://localhost:8080/health/db
curl http://localhost:8080/api/health/db
```
---
@@ -90,12 +93,14 @@ Snabbimport: Klistra in länk eller fil
Klistra in:
- **ICA-receptlänk** — systemet skrapar automatiskt receptet och importerar det
- En länk omdirigeras till "Skriv in recept" med förifylld Markdown
- **Andra receptlänkar** — fallback till generisk HTML/JSON-LD-parser
- En lyckad import omdirigeras till "Skriv in recept" med förifylld Markdown
**Stödda webbplatser:**
**Stödda källor:**
- ICA.se — Recept skrapas automatiskt
- Andra webbplatser — Generic HTML-parser (JSON-LD först, sedan HTML-fallback)
- (PDF-import under utveckling)
- PDF-filer — textutvinning från uppladdad PDF
- Bildfiler — OCR via Tesseract (`swe+eng`) för PNG, JPG, JPEG, WEBP och BMP
**Felmeddelandena vägleder dig:**
- "Länken är inte från ICA.se" — Försöker Generic parser istället
@@ -138,7 +143,7 @@ Innehåller:
Klicka på **Lägg till nytt recept** i receptmenyn. Du får ett val mellan:
1. **Skriv in recept** — Skriv receptet i Markdown-format med ingredienser och instruktioner
2. **Importera från fil** — Ladda upp PDF, länk eller annan receptkälla (under utveckling)
2. **Importera från fil** — Ladda upp PDF, bild eller ange receptlänk för automatisk tolkning
### Skriv in recept (Markdown)
@@ -184,11 +189,12 @@ Klicka "Spara recept" — receptet sparas med dina valida ingredienser
Navigera till **Lägg till nytt recept → Importera från fil**
I denna sektion kan du:
- Ladda upp PDF eller andra receptfiler
- Ladda upp PDF-filer med inbyggd text
- Ladda upp bilder (`png`, `jpg`, `jpeg`, `webp`, `bmp`) som tolkas med OCR
- Ange URL till en receptsida eller blogg
- Systemet tolkar filen/länken och föreslår ingredienser
- Låta systemet omvandla resultatet till Markdown och öppna det i redigeringsläget
> **Notering:** Fil- och länk-import är under utveckling. För närvarande kan du använda "Skriv in recept" för att mata in receptet manuellt.
> **Notering:** Importen använder PDF-textutvinning och Tesseract OCR för att ge en första receptversion som sedan kan granskas och sparas.
### Receptformat — regler