Níveis de correção de erro do QR Code: L, M, Q e H
A correção de erro é o que faz um QR Code riscado, sujo ou parcialmente coberto continuar sendo lido. O QR Code usa códigos Reed-Solomon, os mesmos do CD, do DVD e das sondas espaciais — e oferece quatro níveis, de 7% a 30% de recuperação.
Os quatro níveis
| Nível | Recupera até | Quando usar |
|---|---|---|
| L (Low) | 7% | Conteúdo longo em espaço apertado, impressão de qualidade, ambiente limpo. Uso digital (tela, e-mail, site) em que não há risco de dano. |
| M (Medium) | 15% | O padrão. Equilíbrio entre tamanho e resistência. Cobre a maioria dos casos de material impresso comum. |
| Q (Quartile) | 25% | Ambiente hostil: mesa de restaurante, embalagem, etiqueta de equipamento, superfície que suja ou arranha. |
| H (High) | 30% | Quando há logotipo no meio do código, quando a peça vai ficar exposta ao tempo ou quando a leitura é crítica e não pode falhar. |
Os percentuais são de codewords recuperáveis, não de área da imagem. Como o dano em impressão costuma ser localizado e os blocos são intercalados, na prática a resistência aparente é próxima desses números.
O custo de cada nível
Correção ocupa espaço. Com o mesmo conteúdo — https://www.exemplo.com.br/promocao-de-setembro, de
47 bytes — veja o que muda de um nível para outro:
| Nível | Recupera | Versão | Módulos | Codewords de dados | Codewords de correção | Lado mínimo |
|---|---|---|---|---|---|---|
| L | 7% | 3 | 29×29 | 55 | 15 | 1,5 cm |
| M | 15% | 4 | 33×33 | 64 | 36 | 1,6 cm |
| Q | 25% | 5 | 37×37 | 62 | 72 | 1,8 cm |
| H | 30% | 6 | 41×41 | 60 | 112 | 2 cm |
Repare que subir de L para H não dobra o tamanho: acrescenta algumas versões. Em material pequeno, essa diferença decide entre um código que lê e outro que não lê — em qualquer direção.
Como a correção funciona
Os codewords de dados são divididos em blocos, e cada bloco recebe seus próprios codewords de
correção, calculados por divisão polinomial no campo de Galois GF(256), com o polinômio primitivo
0x11D definido na norma. Um bloco com n codewords de correção consegue
reparar até n/2 codewords errados em posições desconhecidas — ou até n quando o
leitor sabe onde está o dano (o que a norma chama de erasure).
Dividir em blocos e depois intercalar os codewords no símbolo é o que dá resistência a dano concentrado: uma mancha de tinta que cobre um pedaço do código atinge poucos codewords de cada bloco, e cada bloco corrige o seu.
O que a correção não salva: dano nos três localizadores dos cantos e na zona quieta. Sem eles o leitor sequer encontra o símbolo — não há o que corrigir.
Logotipo no meio do código
É o uso mais popular da correção alta, e também o mais mal executado. As regras práticas:
- Use nível H e mantenha o logotipo abaixo de 20% da área do símbolo — a margem entre 20% e 30% existe para o dano real, não para o design.
- Centralize. O centro é a região com menos concentração de informação estrutural.
- Nunca cubra os localizadores nem os padrões de alinhamento.
- Ponha um fundo branco atrás do logotipo, com borda limpa. Logotipo transparente sobre módulos confunde o leitor mais que o próprio logo.
- Teste em pelo menos três celulares antes de imprimir — e a distância real de leitura.
Nada disso está na norma: a ISO define a capacidade de recuperação, não autoriza cobrir o símbolo. É prática de mercado com margem de segurança.
Qual nível para cada situação real
| Situação | Nível | Por quê |
|---|---|---|
| QR num e-mail, num site ou num slide | L | Não há dano físico possível. Símbolo menor lê mais rápido em tela. |
| Cartão de visita, folheto, cartaz | M | Papel guardado no bolso amassa, mas não se degrada muito. M dá margem suficiente. |
| Mesa de restaurante, balcão, cardápio | Q | Gordura, respingo, álcool de limpeza e arranhão diário. Q recupera um quarto do símbolo. |
| Embalagem, etiqueta de produto | Q | Dobra, fita adesiva por cima e atrito no transporte. |
| Equipamento industrial, patrimônio | H | Óleo, poeira, desgaste por anos. Aqui a releitura precisa funcionar sempre. |
| Código com logotipo no meio | H | O logotipo é dano permanente e proposital: precisa da maior reserva disponível. |
| Placa externa, fachada, adesivo de vitrine | Q ou H | Sol desbota, chuva descola, poeira acumula. Some a isso a leitura à distância. |
| Conteúdo longo em espaço pequeno | L | Quando não há alternativa. Mas primeiro tente encurtar o conteúdo. |
Repare no padrão: o nível segue o ambiente, não o conteúdo. O mesmo endereço merece L num e-mail e Q numa mesa de bar. O erro comum é escolher o nível pensando no tamanho do arquivo, que é justamente o critério menos importante.
Um exemplo concreto de bloco
Na versão 5 com correção Q, o símbolo tem 134 codewords no total: 62 de dados e 72 de correção, distribuídos em 4 blocos. Cada bloco recebe entre 15 e 16 codewords de dados e 18 de correção. Como um bloco corrige até metade dos seus codewords de correção, cada um desses blocos tolera 9 codewords danificados.
Agora o detalhe que faz diferença: os codewords não são gravados bloco a bloco, e sim intercalados — o primeiro codeword do bloco 1, depois o do bloco 2, o do bloco 3, o do bloco 4, e assim por diante. Uma mancha que destrua 20 codewords consecutivos no símbolo atinge 5 codewords de cada bloco, e todos os quatro se recuperam. Sem a intercalação, os mesmos 20 codewords destruiriam um bloco inteiro e o código seria perdido.
Perguntas frequentes
Qual nível de correção devo usar?
M, na dúvida. Suba para Q quando o código for para superfície que suja ou arranha (mesa, embalagem, equipamento), e para H quando houver logotipo no meio ou exposição ao tempo. Use L só quando o conteúdo for longo e o espaço, apertado.
Nível H protege 30% da imagem?
Recupera até 30% dos codewords, o que na prática é próximo de 30% da área de dados. Mas isso não inclui os localizadores nem a zona quieta: dano ali é fatal em qualquer nível.
Dá para mudar o nível de correção depois de gerar?
Não: o nível faz parte da informação de formato gravada no símbolo e altera a distribuição de todos os codewords. É preciso gerar de novo — o que, com o mesmo conteúdo, leva alguns segundos.
Por que meu código ficou maior quando aumentei a correção?
Porque os codewords de correção ocupam espaço que era dos dados. Quando não sobra espaço na versão atual, o codificador sobe para a próxima versão, que tem 4 módulos a mais de lado.