2

Medi 7 modelos de IA lendo cardápio. O mais barato custou 1/15 e errou menos

Fala, pessoal. Eu trabalho com produto de delivery e tinha uma dúvida chata: o lojista manda a foto do cardápio, a IA monta o cadastro, e aí qual modelo usar? Todo mundo escolhe no palpite, então eu resolvi medir.

Spoiler: o mais caro não foi o mais certo.

Amostras do conjunto: PDF digital, foto, foto com pouca luz, quadro-negro e captura de tela

Como eu medi

Gerei 60 cardápios sintéticos (1.561 itens, 10 estilos, de PDF limpo a foto torta com pouca luz). Sintético porque assim eu sei exatamente o que tem em cada um, e não preciso usar cardápio de lojista nenhum.

O avaliador casa cada item pelo nome e depois confere preço e categoria. Antes de confiar nele, testei com leitores falsos de erro conhecido:

LeitorF1 de itensRevocaçãoInventado
oráculo (devolve o gabarito)1,00001,00000,0000
erra 10% de propósito0,87870,85840,1001
erra 30% de propósito0,65570,58940,2610

Todo gasto com API tem teto (--max-usd), checado antes de cada chamada. As duas rodadas custaram US$ 0,43 no total.

O resultado

Primeira rodada: 7 modelos da OpenAI em 10 cardápios (243 itens), um de cada estilo.

Custo por 1.000 cardápios

F1 contra custo

ModeloF1 estritoF1 toleranteUS$ por 1.000 cardápiosMediana
gpt-6-luna, sem raciocínio1,00001,00000,775,8 s
gpt-6-luna, raciocínio low1,00001,00001,0511,8 s
gpt-5.6-luna, raciocínio low1,00001,00001,957,7 s
gpt-4.1-mini0,96680,99172,617,2 s
gpt-5.4-nano, raciocínio low0,96690,99172,7610,6 s
gpt-4.1 (a régua)0,96510,985612,026,5 s

O gpt-4.1-nano nem entrou: a página de preços ainda lista, mas a API respondeu 404 (descontinuado).

Onde o dinheiro vai

Custo dividido em entrada e saída

Sem raciocínio, mais da metade do custo é entrada (a imagem). Ligar o raciocínio empurra o gasto para a saída, e no gpt-4.1 a saída já pesa 68%. No gpt-6-luna, o raciocínio deu a mesma nota e só encareceu:

Efeito do raciocínio no custo e na latência

O avaliador me enganou

Na primeira rodada, vários modelos escreveram "Água Mineral 500 ml" onde o gabarito tem o nome "Água Mineral" e a descrição "500 ml". É a mesma informação, mas meu avaliador contava como um item inventado e um perdido ao mesmo tempo.

Criei então o modo tolerante, que aceita o nome com a descrição colada. Só que eu criei depois de ver os resultados, o que é meio suspeito, então as duas notas aparecem sempre lado a lado:

Estrito contra tolerante

E nos 60 cardápios?

Os dois melhores leram o conjunto inteiro:

ModeloF1 estritoF1 tolerantePreço certoCardápios sem erroUS$ por 1.000
gpt-6-luna, sem raciocínio0,99940,99940,998755 de 600,89
gpt-4.1-mini0,99420,99680,996151 de 602,77

Erros nos 60 cardápios

O gpt-6-luna acertou 1.560 dos 1.561 itens. Os erros dos dois são do mesmo tipo: preço trocado entre dois itens vizinhos num quadro-negro, coluna perdida num PDF de duas colunas. Ler os 60 cardápios com o gpt-6-luna custou US$ 0,053.

O que isso não prova

  • Sintético é mais fácil que real. Fonte limpa, sem letra de mão, sem foto de cardápio dobrado. Os números são um teto.
  • Só OpenAI. Anthropic, Gemini e modelos locais ficam para a próxima.
  • Com 10 cardápios dá para ver o tipo de erro, mas não para ranquear modelos parecidos (a diferença é de 3 a 4 itens em 243). E zero erro em 243 itens é compatível com até uns 1,2% de erro real.
  • Os preços são de 01/11/2026 e mudam.

O repositório

Está tudo aberto: o gerador recria os cardápios em uns 30 segundos com a mesma semente, e são 57 testes.

github.com/Juan-Severiano/menu-reader-lab

Se você achar algum furo no avaliador, me fala nos comentários.

Carregando publicação patrocinada...
1

Como o avaliador lida com dois itens de mesmo nome em categorias diferentes? Eu incluiria esse caso no conjunto, para não contar uma troca de preço entre eles como acerto.