Como Transformar um Cardápio de Papel em Fotos Apetitosas de Comida com Llama 3.2 e Flux
Uma situação familiar: você entra em um restaurante no exterior ou faz um pedido de um serviço de delivery com culinária autêntica, e há uma longa lista de nomes de pratos incompreensíveis sem uma única foto. Você acaba pesquisando cada prato no google às cegas ou torcendo para o melhor.
O desenvolvedor Hassan El Mghari (Nutlope) montou um pequeno projeto open-source chamado PicMenu que resolve esse problema em poucos segundos. Você envia uma foto de um cardápio de papel, e o serviço reconhece todos os itens e gera uma imagem realista de cada prato.
Como funciona nos bastidores
Não há microsserviços pesados ou modelos de ML personalizados rodando em farms de GPU aqui. O projeto é construído com Next.js e TypeScript, com toda a mágica computacional tratada por uma combinação de modelos open-source através do serviço de API da Together AI.
O pipeline de processamento é bastante elegante:
- Reconhecimento do cardápio: a foto é enviada ao modelo Llama 3.2 Vision 90B. Ele extrai os nomes dos pratos mesmo de formulários amassados ou com design complexo.
- Estruturação dos dados: o modelo de texto rápido Llama 3.1 8B converte o texto extraído em JSON limpo com nomes e descrições dos pratos.
- Geração de fotos: o modelo generativo Flux Schnell cria uma imagem para cada prato encontrado diretamente com base em sua descrição.
- Armazenamento e visualização: as imagens geradas são armazenadas no AWS S3 (ou armazenamento compatível), e a interface baseada em Tailwind e Shadcn UI exibe o cardápio como cards organizados.
A ideia de separar reconhecimento e estruturação em dois modelos Llama parece prática. O modelo grande de 90B lida com a parte óptica pesada, enquanto o modelo leve de 8B formata rapidamente o resultado em JSON, economizando tempo de resposta e tokens.
Como fazer deploy do projeto localmente
Você pode subir o repositório na sua máquina em literalmente cinco minutos. Você vai precisar de uma chave de API da Together AI e qualquer armazenamento compatível com S3 para fazer upload das imagens.
Clone o repositório:
git clone https://github.com/Nutlope/picmenu
cd picmenu
Crie um arquivo .env baseado no exemplo .env.example e preencha as variáveis:
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
Instale as dependências e inicie o servidor de desenvolvimento:
npm install
npm run dev
Depois disso, a aplicação está disponível em http://localhost:3000.
O que já funciona e o que precisa ser melhorado
No momento, o PicMenu é um protótipo funcional sólido (MVP). A interface parece organizada graças aos componentes do Shadcn, e a combinação do modelo Vision com o Flux funciona surpreendentemente rápido.
No entanto, o projeto tem algumas limitações que o autor lista honestamente na seção de tarefas:
- Se o cardápio for muito grande, gerar todos os itens pode levar até um minuto. O app não tem um aviso sobre longos tempos de resposta ou animações suaves de carregamento.
- O Flux Schnell é rápido, mas às vezes fica aquém do realismo comparado à versão mais antiga do Flux Dev.
- A versão atual não tem tags de restrições dietéticas (vegano, sem glúten, picante) e filtragem por elas.
- Ainda não há uma janela modal com informações detalhadas do prato: calorias, ingredientes e perfil de sabor.
Quem achará este projeto útil
Se você está planejando um serviço para turistas, um agregador de cardápios de restaurantes, ou apenas quer ver como conectar praticamente modelos de visão, modo JSON em LLMs e geração de imagens através do Flux, este repositório servirá como um excelente template. A base de código é direta, as dependências são padrão e a arquitetura não está sobrecarregada com abstrações desnecessárias.
Projetos relacionados