Usando “underdrawing” para texto e números precisos
(samcollins.blog)- underdrawing é uma abordagem em que primeiro se cria, com uma ferramenta determinística, uma imagem-base contendo os números e as posições do texto, e depois um modelo de geração de imagens aplica o estilo visual por cima para aumentar a precisão
- Na tarefa de posicionar 50 pedras de apoio em espiral e numerá-las de 1 a 50, Gemini 3 Pro e ChatGPT Images 2 não conseguiram manter números e ordem de forma consistente sem underdrawing
- Na mesma tarefa, Gemini 3.0 Pro com underdrawing produziu um resultado correto em numeração, quantidade e ordem dos botões e forma espiral
- A implementação pode ser feita com ferramentas como SVG/HTML, posicionando números e texto no local e na orientação desejados, exportando isso como imagem e depois fornecendo essa imagem junto com um prompt de texto a um modelo multimodal de imagem
- Esse método não é perfeito em todas as tentativas, mas permite separar o posicionamento determinístico da capacidade de expressão visual do modelo generativo em criações de imagem nas quais a disposição de texto e números é importante
Contexto principal e forma de implementação
- É um padrão que surgiu no processo de criação de uma imagem de tabuleiro de aventura com 100 etapas, resumido como “dar um contorno e deixar que ele pinte por cima”
-
Camada determinística
- SVG/HTML é visualmente mais seco, mas muito forte em posicionamento matemático e precisão
- Basta posicionar números e texto na localização e orientação desejadas e exportar isso como uma imagem contendo esses pixels
- O formato pode usar a ferramenta que você quiser, como SVG, Python, Mermaid etc.
-
Camada generativa
- Modelos de geração de imagem produzem resultados visualmente excelentes, mas são pouco confiáveis em matemática e texto
- Em um modelo multimodal de imagem capaz de receber imagem e texto como entrada e gerar imagem como saída, como o Gemini 3.0 Pro, a imagem de underdrawing e o prompt de texto são fornecidos juntos
- No exemplo, o prompt da etapa 1 faz o modelo criar um SVG com 50 pedras de apoio organizadas em uma espiral interna no sentido anti-horário, com numeração sequencial de 1 a 50 em cada pedra
- No exemplo, o prompt da etapa 2 pede a conversão dessa imagem em um diorama em claymation com aparência fotográfica, em ângulo baixo e levemente inclinado, com chocolates artesanais e balas dispostos em um caminho em espiral
-
Automação e limitações
- Claude Code ou Codex podem executar cada etapa no lugar do usuário
- O resultado é bom, mas não é perfeito em todas as tentativas, e mesmo no resultado final o “71” não aparece
1 comentários
Comentários do Hacker News
Fico feliz em ver esse movimento de compreender mais profundamente o que os LLMs fazem bem por natureza e o que fazem mal — não que seja impossível, mas são tarefas com baixa chance de sucesso por causa de limitações fundamentais
É parecido com definir a arquitetura de software por humanos e deixar a implementação das funções para o LLM, ou fazer com que ele escreva consultas SQL em vez de tentar realizar a análise de dados em si
Seria bom ter uma taxonomia de tarefas e pesquisas mais clara sobre que tipos de unidade de trabalho se encaixam bem em LLMs e quais não se encaixam; aos poucos surge uma intuição, mas ainda vejo muita gente tropeçando nisso com frequência
Fazia-se o modelo criar primeiro um esboço e depois implementar cada função separadamente; também já apareceram algumas vezes no HN posts de blog mostrando essa abordagem com um termo emprestado do trabalho de animação
Até 2 anos atrás, tarefas como contar caracteres ou lidar com fonemas eram tratadas como impossíveis por causa de “limitações fundamentais”, e hoje muitas vezes já não são problema nem sem ferramentas
Sempre que leio prompts de geração de imagem, noto detalhes muito específicos que o modelo obviamente ignorou
Aqui também, os chocolates/doces das duas últimas imagens passam longe de ter aparência artesanal; parecem produtos esterilizados de produção em massa, e o ponto de vista também não está correto
Se o modelo ignora a maior parte, por que escrever prompts tão longos?
Termos como rustic, homemade, amateur talvez combinem melhor com a forma como esse material foi etiquetado
No começo achei que era falta de habilidade minha para escrever prompts, mas quando você passa a observar esse tipo de discrepância, percebe que ela aparece com bastante frequência
Se a meta era uma imagem como a última, com pequenos “botões” dispostos em espiral, talvez nem parecesse doce, mas mesmo alguém não muito bom em Blender provavelmente conseguiria fazer isso em uma tarde
Encontrei uma técnica simples para obter texto e números com mais consistência em imagens geradas por IA
Fiquei surpreso que os modelos de imagem ainda não façam isso sozinhos, e achei tão útil que quis compartilhar
Já venho usando há algum tempo a mesma técnica, só que com SVG como imagem-base, e funciona bem
Parece algo que os laboratórios de pesquisa em geração de imagem vão adotar em breve
Em vez de deixar o usuário fazer o modelo resolver em 0-shot, a estrutura ajuda a solução em 1-shot ou k-shot
Já usei técnicas parecidas com grande eficácia, e o campo é tão novo e se move tão rápido que ainda parece faltar terminologia comum, então o post e os exemplos são muito úteis
Dito isso, também parece possível que esse fenômeno já tenha sido observado e entendido em comunidades menores ou sob outros nomes
Isso é só img2img usando como ponto de partida uma primeira imagem com a estrutura correta feita em código
Para quem usa modelos generativos desde o começo do Stable Diffusion, essa é uma técnica bastante comum e útil: usar um esboço (SVG, desenho à mão etc.) como um ControlNet improvisado para guiar a saída do modelo generativo
Antigamente eu usava uma abordagem parecida para compor visualizações arquitetônicas
Se você queria colocar sofás, cadeiras ou outros móveis em posições específicas, podia criar uma cena simples com ferramentas como Poser para definir aproximadamente a posição das principais “peças de cenário”, gerar um mapa de profundidade a partir disso e alimentá-lo em um modelo generativo da época, como o SDXL, para orientar o posicionamento dos objetos
Esse hack é definitivamente do tipo “como eu não pensei nisso antes”
Fico feliz de ter mais uma carta na manga para a próxima vez que a geração de imagem ficar abaixo do esperado
Só que o desempenho não era tão bom quanto hoje; por isso, não entendo muito bem por que isso está sendo visto como novidade
A objeção padrão é a seguinte: se um LLM fosse realmente inteligente, por que ele mesmo não descobriria que esse processo em 2 etapas produz resultados melhores?
Para planejar estratégia, revisar o resultado e tentar de novo, é preciso um processo em estilo agente por cima disso
Parece haver um pouco disso no Nano Banana e no gpt-image-2, mas é parecido com a diferença entre pedir para o modelo escrever código de uma vez só e deixar um agente com ferramentas cuidar disso
Até um agente bem básico pode produzir código melhor do que o ChatGPT sozinho
Faço esse tipo de coisa há muito tempo; é parecido com usar mapas de profundidade ou line art para controlar a silhueta
Gostei da sensação da conclusão: “funciona, mas na verdade nem tanto”
Bem no espírito da onda de LLM/IA generativa: o texto inteiro mostra um esforço complicado para acertar um único exemplo extremamente estreito, algo que quase funciona, mas no fim não funciona direito
Para uma pessoa, é fácil verificar se os números estão corretos e, se estiverem errados, basta gerar a imagem de novo
Ainda é várias ordens de grandeza mais fácil do que criar a imagem do zero sem o modelo
Achei que, para a tarefa clássica de “um SVG de um pelicano andando de bicicleta”, talvez desse para tentar a abordagem inversa
Se você fizer o modelo cuspir SVG diretamente, a qualidade provavelmente vai ser ruim
Mas geração de imagem consegue criar facilmente uma imagem realista incrível; então talvez uma boa forma de obter um SVG decente de pelicano-de-bicicleta seja gerar primeiro a imagem e depois fazer o modelo traçá-la e transformá-la em SVG
No fim, pessoas também raramente criam obras de arte em SVG digitando apenas números em um bloco de notas; o essencial continua sendo vê-las e pensá-las como imagem
Isso também parece parecido com a forma como uma pessoa tentaria fazer algo com precisão
Se você pedir a um artista para desenhar de uma vez, sem revisão nem esboço, um grande arranjo circular de pedras e ainda numerá-las em ordem, não seria surpreendente surgirem erros de posicionamento