Como verificar se uma imagem foi feita por IA
Ninguém verifica se a imagem foi gerada por IA — verifica se o arquivo declara ter sido. A diferença entre as duas coisas, três formas de ler o campo, e por que “limpo” não significa autêntico.
A pergunta chega em duas situações opostas. Ou alguém recebeu uma imagem e quer saber se pode confiar nela, ou alguém vai publicar uma imagem e quer saber se vai levar o rótulo de IA antes de descobrir do jeito ruim.
As duas têm a mesma resposta técnica, e ela é mais desconfortável do que o mercado de “detectores de IA” deixa parecer: ninguém verifica se uma imagem foi feita por IA. O que dá para verificar é se o arquivo declara ter sido. São coisas diferentes, e confundir as duas é o erro que faz alguém acusar uma fotografia real de ser sintética.
Duas perguntas que parecem uma
Vale separar antes de qualquer coisa, porque toda a confusão vem daqui:
- “O que este arquivo declara?” — tem resposta exata. O arquivo carrega, ou não carrega, um registro assinado dizendo como foi produzido. Ler esse registro é uma operação determinística: o campo está lá ou não está.
- “Esta imagem foi gerada por um modelo?” — não tem resposta confiável hoje. É um problema de classificação em aberto, disputado a cada geração de modelo, e as ferramentas que respondem com uma porcentagem estão estimando.
Praticamente todo “detector de IA” com barra de confiança e resultado em porcentagem está respondendo a segunda. Praticamente toda plataforma que aplica rótulo está lendo a primeira.
O que as plataformas de fato leem
Instagram, Facebook, LinkedIn, TikTok e o Google Imagens não analisam seus pixels para decidir o rótulo. Eles leem um campo escrito dentro do arquivo.
Ferramentas generativas assinam o que produzem com um manifesto C2PA — as Content Credentials. Num JPEG ele viaja em segmentos APP11, dentro de um contêiner JUMBF, codificado em CBOR. Lá dentro há um campo IPTC chamado digitalSourceType. Os valores que importam:
trainedAlgorithmicMedia— gerado por IA. É a declaração explícita, e é o que aciona o rótulo.compositeWithTrainedAlgorithmicMedia— parte da imagem veio de IA generativa. É o que um único Preenchimento Generativo grava numa fotografia sua.digitalCapture— capturado por um sensor. Algumas câmeras assinam isso na origem, e nesse caso o C2PA está provando autenticidade, não acusando IA.
Dá para ler isso a olho nu
O manifesto é binário, mas os campos que decidem o veredicto são strings de texto dentro dele. Numa imagem gerada pelo Gemini, um strings simples já entrega:
dnamex"Google C2PA Core Generator Library
factionkc2pa.openedkdescriptionx Opened by Google Generative AI.
factionlc2pa.resizedkdescriptionx Resized by Google Generative AI.
qdigitalSourceTypexFhttp://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMediaOs prefixos soltos — d, f, k, q, x — não são lixo: são os cabeçalhos de text string do CBOR. Cada byte carrega o tipo (major type 3) e o tamanho no mesmo lugar, então dname é a chave name com quatro caracteres, porque 0x60 + 4 = 0x64 = d. É por isso que dá para ler os campos certos sem decodificar o manifesto inteiro.
Repare no que mais está ali: o nome da biblioteca que assinou e as ações registradas, em inglês, legíveis. O arquivo não está escondendo nada — a transparência é o propósito declarado do padrão. O problema é que quase ninguém sabe que o texto está lá.
Três formas de verificar
1. No terminal, com exiftool
O caminho mais direto para quem já tem a ferramenta instalada:
exiftool -G -a imagem.jpg | grep -i jumbfSe houver manifesto, aparece um bloco de linhas do grupo [JUMBF], incluindo o Claim_Generator_InfoName. Sem manifesto, o comando não devolve nada — e é justamente esse silêncio que costuma ser mal interpretado como “a imagem é autêntica”.
2. No Verify, da Content Authenticity Initiative
A ferramenta oficial da coalizão que criou o padrão. Aceita upload e mostra o manifesto assinado com a cadeia de certificação — é a referência quando o que está em jogo é a validade criptográfica da assinatura, e não só a presença do campo. Em troca, o arquivo é enviado ao serviço.
3. No detector do MetaWipe
Escrevemos um leitor que percorre os segmentos do arquivo direto no navegador: APP11 num JPEG, o chunk caBX num PNG. Ele extrai o digitalSourceType, o gerador e as ações registradas, e diz em português o que aquilo significa para quem vai publicar.
A diferença prática é que nada é enviado: é JavaScript rodando na sua aba, sobre bytes que o navegador já tem. Depois que a página carregou, você pode desconectar da internet e ela continua funcionando. Abrir o detector.
O que a resposta “limpo” não quer dizer
Esta é a parte que as ferramentas costumam omitir, e é a razão de este texto existir.
Quando um leitor de metadados diz que a imagem está limpa, ele está dizendo o arquivo não declara origem generativa. Isso é compatível com pelo menos quatro situações bem diferentes:
- a imagem é mesmo uma fotografia;
- a imagem é de IA e o marcador foi removido — o que leva alguns segundos e não altera um pixel;
- a imagem é de IA e passou por um print de tela, que produz um arquivo novo sem o manifesto original;
- a imagem é de IA e saiu de uma ferramenta que simplesmente não grava Content Credentials — várias não gravam.
Para quem vai publicar, isso basta: o que a plataforma vai ler é exatamente o que o detector leu. Para quem está apurando a origem de uma imagem recebida, isso não basta nem de longe — e nenhuma ferramenta que devolva uma porcentagem resolve melhor.
Sobre os detectores por pixel
Vale ser direto, porque eles aparecem primeiro em qualquer busca. Os serviços que analisam a imagem e devolvem “87% de probabilidade de ser IA” têm três problemas que raramente aparecem na página de vendas:
- Erram nos dois sentidos. Falso positivo em fotografia real — em especial retrato com pele lisa e fundo desfocado — e falso negativo em imagem gerada por modelo mais recente que os exemplos de treino.
- Degradam com recompressão. Uma imagem que passou pelo Instagram ou pelo WhatsApp perde boa parte dos artefatos que o classificador procura. Ou seja: falham exatamente onde seriam mais úteis.
- Envelhecem sozinhos. Cada geração nova de modelo gerador desatualiza os classificadores existentes, e a corrida é estruturalmente favorável a quem gera.
Nada disso quer dizer que sejam inúteis como sinal adicional. Quer dizer que uma porcentagem não é uma verificação, e que tratá-la como prova — para acusar alguém, para reprovar um trabalho — é um erro com consequência real sobre uma pessoa.
O caso prático: conferir antes de postar
Se a sua pergunta é a do segundo grupo — publicar sem levar rótulo — a rotina que evita surpresa é curta:
- Confira o arquivo exportado, não o original. O manifesto sobrevive a alguns caminhos de exportação e não a outros, e conferir é mais rápido do que deduzir.
- Confira depois da última edição. Um retoque generativo aplicado no fim reintroduz o marcador num arquivo que estava limpo.
- Se aparecer, remova antes de publicar. O marcador mora num bloco separado dos pixels, então tirá-lo não toca na qualidade da imagem — a foto que sai é idêntica à que entrou, alguns kilobytes menor. Remover custa 1 crédito, e os primeiros de cada dia não custam nada.
E uma ressalva que não é técnica: remover a credencial apaga o registro, não muda o que a imagem é. Se o conteúdo foi gerado por IA, declarar isso continua sendo responsabilidade de quem publica — em muitos contextos, inclusive, obrigação contratual ou legal. O que a limpeza resolve é o caso em que o rótulo está errado: a fotografia autoral que levou marca porque passou dois segundos num editor com recurso generativo ligado.