O que o 1.4.5 exige
Se as tecnologias que estiverem sendo utilizadas puderem proporcionar a apresentação visual, é utilizado texto para transmitir informações em vez de imagens de texto exceto para o seguinte:
- Personalizável
- A imagem de texto pode ser visualmente personalizada de acordo com os requisitos do usuário;
- Essencial
- Uma determinada apresentação de texto é essencial para as informações que serão transmitidas.
Nota Os logotipos (texto que faz parte de um logotipo ou marca comercial) são considerados essenciais.
Texto original, em inglês (WCAG 2.1)
If the technologies being used can achieve the visual presentation, text is used to convey information rather than images of text except for the following:
- Customizable
- The image of text can be visually customized to the user's requirements;
- Essential
- A particular presentation of text is essential to the information being conveyed.
Note Logotypes (text that is part of a logo or brand name) are considered essential.
Pessoas com baixa visão, dificuldade de leitura ou dificuldade de acompanhar as linhas mudam a aparência do texto: tamanho maior, outra fonte, outras cores, mais espaço entre as linhas. Texto de verdade segue esses ajustes. Uma figura de texto não segue, e fica borrada quando ampliada. O Understanding 1.4.5 (em inglês) pede que quem consegue a aparência desejada com texto e CSS use texto.
Imagem de texto é texto renderizado como figura para obter um efeito visual. Texto que faz parte de uma figura com outro conteúdo visual significativo, como um gráfico, uma captura de tela ou um diagrama, não é imagem de texto. Logotipos são permitidos, assim como texto cuja aparência exata é o que importa, como uma amostra de fonte ou uma carta antiga, e uma imagem de texto que o usuário pode personalizar.
Quando o mesmo texto também está na página como texto de verdade, o 1.4.5 é cumprido. O 1.4.9, mais rigoroso e de nível AAA, só permite imagens de texto como pura decoração ou quando a aparência é essencial. A figura continua precisando de alternativa em texto, que é o 1.1.1.
Falhas comuns
Abaixo de cada exemplo: o que o axe-core e o Rampa relataram sobre a marcação de antes da correção, numa execução com o Gemma 4 12B em 9 de outubro de 2026.
Um título de seção desenhado como figura
O título da seção é uma figura de palavras em itálico com serifa. Quem amplia o texto ou troca a fonte por uma que lê melhor recebe a mesma figura pequena, borrada no zoom. Uma fonte web e algumas linhas de CSS dão a mesma aparência.
Antes, reprova no 1.4.5
<h2>
<img src="nossa-historia.svg" alt="Nossa história"
width="360" height="90">
</h2>Depois, aprova
<h2 class="titulo-historia">Nossa história</h2>- axe-core
Aprova: a
image-altencontra um alt, e nenhuma regra olha o que a figura mostra.- Rampa
✗ html > body > main > section > h2 > img A imagem mostra o texto "Nossa história" como figura; use texto real, estilizado com CSS. Evidência: "Nossa história" Patch: - <img src="nossa-historia.svg" alt="Nossa história" width="360" height="90"> + <span>Nossa história</span> confiança alta · 1/1 rodadas · evidência verificada · id 6b341ea6bf56O patch põe as palavras no lugar da figura, dentro do mesmo
h2. A aparência volta com CSS, que o patch não escreve.
Uma promoção que é só texto
A oferta é o banner inteiro: duas linhas de texto sobre um fundo colorido, com alguns grãos de café num canto. O alt repete as palavras, o que atende ao 1.1.1, mas as palavras continuam sem poder ser ampliadas ou reestilizadas.
Antes, reprova no 1.4.5
<img src="frete-gratis.svg"
alt="Frete grátis em pedidos acima de R$ 150"
width="600" height="140">Depois, aprova
<p class="promo">
<strong>Frete grátis</strong>
em pedidos acima de R$ 150
</p>- axe-core
Aprova: a
image-altencontra um alt.- Rampa
✗ html > body > main > img A imagem mostra o texto "FRETE GRÁTIS em pedidos acima de R$ 150" como figura; use texto real, estilizado com CSS. Evidência: "FRETE GRÁTIS em pedidos acima de R$ 150" Patch: - <img src="frete-gratis.svg" alt="Frete grátis em pedidos acima de R$ 150" width="600" height="140"> + <span>FRETE GRÁTIS em pedidos acima de R$ 150</span> confiança alta · 1/1 rodadas · evidência verificada · id 478d1c24a780
Um botão de imagem com uma palavra
O botão de inscrição é uma figura da palavra “Inscrever-se”. Um button com texto fica igual com CSS e segue os ajustes de texto de quem usa.
Antes, reprova no 1.4.5
<input type="image" src="inscrever-se.svg"
alt="Inscrever-se" width="180" height="52">Depois, aprova
<button type="submit">Inscrever-se</button>- axe-core
Aprova: a
input-image-altencontra um alt.- Rampa
✗ html > body > main > form > input:nth-of-type(2) A imagem mostra o texto "Inscrever-se" como figura; use texto real, estilizado com CSS. Evidência: "Inscrever-se" Patch: - <input type="image" src="inscrever-se.svg" alt="Inscrever-se" width="180" height="52"> + <button type="submit">Inscrever-se</button> confiança alta · 1/1 rodadas · evidência verificada · id 9c87e0d94440
O que o axe-core verifica
O axe-core 4.14.0 não tem regra para o 1.4.5. Saber se uma figura é quase só texto é uma pergunta sobre pixels, e o axe-core lê marcação e estilos. As regras mapeadas para o 1.1.1, como a image-alt e a input-image-alt, conferem se a figura tem alternativa em texto, o que não diz nada sobre se ela deveria ser texto.
Um título, uma promoção ou um botão desenhado como figura passa em todas as regras do axe-core, desde que tenha alternativa.
O que o Rampa julga, e como
O que vai para o modelo
Nada, a menos que o 1.4.5 seja pedido com --criteria. Aí, toda figura renderizada maior que um ícone, com mais de 40 px de lado: img, botões de imagem, canvas com nome, elementos com role="img" sem texto próprio e imagens de fundo em CSS, capturadas com o conteúdo do elemento escondido para julgar só a figura. SVG embutido fica de fora, porque o texto dele é texto de verdade, assim como qualquer figura cuja alternativa, nome de arquivo, id ou classe diga que é um logotipo.
O que o modelo vê
- A figura como aparece na página.
- Como ela é desenhada (um
img, um botão de imagem, um canvas, um fundo em CSS ourole="img") e o tamanho renderizado. - A alternativa em texto e o nome do arquivo.
- O nome do link ou botão a que ela pertence.
- O texto visível do contêiner mais próximo em volta dela. Alternativas ficam de fora, porque ninguém as vê.
O que ele precisa responder
O que a figura mostra, numa frase; cada palavra de texto dela, transcrita exatamente, como evidência; a exceção que se aplica (sem texto, texto incidental numa foto, gráfico ou captura de tela, logotipo, aparência essencial, símbolo ou decoração) ou nenhuma; um veredito e um grau de confiança.
O que derruba uma alegação
- Uma reprovação transcreve menos de três letras: um caractere solto ou um par de iniciais é símbolo ou monograma, como o “B” de negrito do documento Understanding.
- Uma reprovação aponta exceção, ou uma aprovação não aponta nenhuma.
- Uma alternativa descritiva, com três palavras de conteúdo ou mais, não tem nenhuma palavra em comum com a transcrição, então uma das duas descreve outra figura.
- A alternativa ou o nome do arquivo chama a figura de captura de tela, gráfico, diagrama ou mapa.
- As mesmas palavras aparecem como texto de verdade ao lado da figura, o que o documento Understanding diz que cumpre o critério.
- A transcrição passa de 600 caracteres, longa demais para ser o texto de uma figura.
O patch
Troca um img por um span com o texto dele, e um botão de imagem por um button; a aparência volta com CSS. Fundos e canvas não recebem patch: o texto entra à mão.
Em todo critério
- O conteúdo da página chega ao modelo marcado como dado, e o prompt manda ignorar qualquer instrução que esteja nele.
- As respostas ficam em cache por um hash do prompt, da imagem, do modelo e das configurações, então a mesma entrada nunca chama um modelo duas vezes.
- Com
--runs 3, o Rampa pergunta três vezes e fica com a maioria; quando as rodadas discordam, a confiança cai. Achados abaixo de--min-confidence(média por padrão) ficam ocultos, e o--verboselista todos. - Alegações derrubadas pela verificação são contadas em todo relatório, nunca mostradas como achados.
Como o Rampa foi medido nele
| Conjunto | Testa | Casos | axe-core, precisão / recall | Rampa, precisão / recall / F1 |
|---|---|---|---|---|
| 1.4.5, imagem não contém texto (ACT 0va7u6) | significado | 15 | não definida, nada apontado / 0,00 | 1,00 / 0,60 / 0,75 |
Pares corrompidos: o Rampa separou 4 de 4 (texto desenhado como imagem), o axe-core 0. Um par é uma página de teste que passa e uma cópia quebrada de propósito; quem dá o mesmo veredito às duas não está julgando.
Rodada em 9 de outubro de 2026: axe-core 4.14.0, Gemma 4 12B numa GPU local, raciocínio desligado, uma rodada, casos de teste ACT a9a1483e. Amostras pequenas e uma rodada só: leia os números como um pipeline que funciona, não como resultado.
Leia com estas ressalvas
- Na regra ACT 0va7u6, o Rampa achou 3 de 5 falhas, sem nenhum falso positivo. Um dos erros é uma discordância de propósito: o caso de teste mostra “Welcome” como imagem acima do parágrafo “Welcome to our website”, o que a ACT conta como falha e o documento Understanding como cumprido. O outro é erro do modelo: o texto “WCAG Rocks” lido como logotipo.
- O prompt foi revisado depois de ler os erros de rodadas anteriores nesses casos, sem copiar as páginas de teste para ele. Leia os números como um pipeline que funciona, não como resultado.
Limitações
- Vem desligado. Ele soma uma chamada com visão para cada figura maior que um ícone, além do trabalho com imagens que o 1.1.1 já faz, e se um banner que junta a foto de um produto com uma chamada é imagem de texto ainda divide as pessoas.
- Banners que juntam a foto de um produto com uma oferta ou uma chamada são apontados quando o texto domina. Equipes que os leem como figuras com outro conteúdo significativo podem dispensar o achado.
- A transcrição é a leitura do modelo e pode errar em letras miúdas.
- Em páginas reais, apontou slogans e títulos desenhados em mozilla.org e banners de carrossel em kabum.com.br, e nada em 17 fotos da BBC News nem nas capturas de tela de uma página do GitHub Docs.
- Precisa de um modelo com visão, como o 1.1.1.
Perguntas sobre o 1.4.5
Um logotipo com texto é imagem de texto?
É, mas a WCAG permite: logotipos, texto que faz parte de um logotipo ou marca comercial, são considerados essenciais. O Rampa pula qualquer figura cuja alternativa, nome de arquivo, id ou classe diga que é um logotipo, e o modelo também pode responder que o texto é um logotipo.
Uma imagem de texto está certa se o alt repete o texto?
Para o 1.1.1, sim. Para o 1.4.5, não: leitores de tela leem o alt, mas quem amplia ou reestiliza o texto continua vendo uma figura fixa. O 1.4.5 é cumprido quando o mesmo texto também está na tela como texto de verdade.
Um banner com a foto de um produto e uma chamada reprova no 1.4.5?
Depende, e há quem discorde. Texto que faz parte de uma figura com outro conteúdo visual significativo não é imagem de texto. O Rampa aponta um banner assim quando o texto domina; se a sua equipe o lê como figura, dispense o achado com um motivo.
Por que o Rampa não verifica o 1.4.5 por padrão?
Ele soma uma chamada com visão para cada figura maior que um ícone, o que dobra o trabalho com imagens que o 1.1.1 já faz, e a fronteira entre imagem de texto e figura com texto ainda é discutida. Rode com --criteria 1.4.5, ou junte-o a uma lista de critérios.
O axe-core acha imagens de texto?
Não. Nenhuma regra do axe-core é mapeada para o 1.4.5: ler as palavras de uma figura exige visão.
Verifique suas páginas
O Rampa ainda não está no npm. Clone e rode a partir do código, com Node.js 22.12 ou mais novo e Chrome ou Edge. O 1.4.5 só roda quando pedido: o --criteria 1.4.5 julga só este critério, e uma lista como --criteria 1.1.1,1.4.5 o junta a outros.
Com o Ollama rodando, o Rampa escolhe um modelo local sozinho; o node dist/cli.mjs doctor diz o que falta.
git clone https://github.com/guilhermebsantiago/rampa-cli.git
cd rampa-cli
pnpm install && pnpm build
node dist/cli.mjs check https://example.com --criteria 1.4.5Conferido com o rampa-cli (commit 0459809) e as fontes do W3C em 9 de outubro de 2026.