>_ DevTrendsit

Lingua

Home

Linguaggi

Sezioni

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicurezza
TypeScript

Come Trasformare un Menu Cartaceo in Foto Culinarie Appetitose con Llama 3.2 e Flux

Una situazione familiare: entri in un ristorante all'estero o ordini da un servizio di consegna con cucina autentica, e trovi una lunga lista di nomi di piatti incomprensibili senza nemmeno una foto. Finisci per cercare ogni piatto su Google alla cieca o sperare nel meglio.

Lo sviluppatore Hassan El Mghari (Nutlope) ha assemblato un piccolo progetto open-source chiamato PicMenu che risolve questo problema in pochi secondi. Carichi una foto di un menu cartaceo, e il servizio riconosce tutti gli elementi e genera un'immagine realistica per ciascun piatto.

PicMenu

Come funziona sotto il cofano

Non ci sono microservizi ingombranti o modelli ML personalizzati in esecuzione su fattorie di GPU qui. Il progetto è costruito con Next.js e TypeScript, con tutta la magia computazionale gestita da una combinazione di modelli open attraverso il servizio API di Together AI.

La pipeline di elaborazione è piuttosto elegante:

  1. Riconoscimento del menu: la foto viene inviata al modello Llama 3.2 Vision 90B. Estrae i nomi dei piatti anche da moduli sgualciti o con design complesso.
  2. Strutturazione dei dati: il modello di testo veloce Llama 3.1 8B converte il testo estratto in JSON pulito con nomi e descrizioni dei piatti.
  3. Generazione delle foto: il modello generativo Flux Schnell crea un'immagine per ciascun piatto trovato direttamente in base alla sua descrizione.
  4. Archiviazione e visualizzazione: le immagini generate vengono archiviate in AWS S3 (o storage compatibile), e l'interfaccia basata su Tailwind e Shadcn UI mostra il menu come schede ordinate.

L'idea di separare il riconoscimento e la strutturazione in due modelli Llama sembra pratica. Il modello grande da 90B gestisce la parte ottica pesante, mentre il modello leggero da 8B formatta rapidamente il risultato in JSON, risparmiando tempo di risposta e token.

Come distribuire il progetto localmente

Puoi avviare il repository sulla tua macchina in letteralmente cinque minuti. Avrai bisogno di una chiave API da Together AI e di qualsiasi storage compatibile con S3 per caricare le immagini.

Clona il repository:

git clone https://github.com/Nutlope/picmenu
cd picmenu

Crea un file .env basato sull'esempio .env.example e compila le variabili:

TOGETHER_API_KEY=your_together_api_key # Настройки AWS S3 для загрузки картинок NEXT_PUBLIC_S3_BUCKET_NAME=your_bucket S3_UPLOAD_KEY=your_access_key S3_UPLOAD_SECRET=your_secret_key S3_UPLOAD_BUCKET=your_bucket_name S3_UPLOAD_REGION=your_region

Installa le dipendenze e avvia il server di sviluppo:

npm install
npm run dev

Dopo di ciò, l'applicazione è disponibile all'indirizzo http://localhost:3000.

Cosa funziona già e cosa necessita miglioramenti

Al momento, PicMenu è un solido prototipo funzionante (MVP). L'interfaccia appare ordinata grazie ai componenti Shadcn, e la combinazione del modello Vision con Flux funziona sorprendentemente veloce.

Tuttavia, il progetto presenta alcune limitazioni che l'autore elenca onestamente nella sezione todo:

  • Se il menu è troppo grande, la generazione di tutti gli elementi può richiedere fino a un minuto. L'app manca di un avviso sui lunghi tempi di risposta o di animazioni di caricamento fluide.
  • Flux Schnell è veloce, ma a volte non raggiunge il livello di realismo della versione precedente Flux Dev.
  • La versione attuale manca di tag per restrizioni dietetiche (vegano, senza glutine, piccante) e del filtraggio per questi.
  • Non c'è ancora una finestra modale con informazioni dettagliate sul piatto: calorie, ingredienti e profilo di sapore.

A chi tornerà utile questo progetto

Se stai pianificando un servizio per turisti, un aggregatore di menu di ristoranti, o vuoi semplicemente vedere come collegare praticamente modelli vision, la modalità JSON nei LLM e la generazione di immagini attraverso Flux, questo repository servirà come eccellente template. Il codice è semplice, le dipendenze sono standard, e l'architettura non è sovraccarica di astrazioni inutili.

Progetti correlati