O que é um leitor de QR code?
Um QR code é um código de barras matricial bidimensional definido pela ISO/IEC 18004. Codifica texto, URLs, cartões de contacto, credenciais Wi-Fi e outros payloads curtos numa grelha de módulos quadrados a preto e branco, juntamente com dados de correção de erros Reed-Solomon para que o símbolo ainda descodifique após danos parciais ou uma sobreposição de logótipo. Um leitor de QR code faz o inverso: recebe a imagem de um símbolo QR e recupera a string do payload original. Este leitor executa o pipeline de descodificação diretamente no seu navegador usando a biblioteca de código aberto jsQR (cerca de 130 KB, licença MIT). A imagem que soltar, colar ou digitalizar com a câmara nunca sai do separador. Não há etapa de upload. Abra as DevTools durante a descodificação e o painel Network permanece silencioso — a página não faz XHR, fetch, nem beacon de análise ligado ao conteúdo da sua imagem.
Como funciona a descodificação de QR?
A descodificação corre inteiramente na sua máquina. Cada imagem passa por um pipeline fixo antes de o texto do payload ser devolvido:
- O ficheiro de imagem (PNG, JPG, WebP ou um fotograma de câmara) é desenhado num
<canvas>HTML fora do ecrã. A API canvas devolve os dados brutos de pixels como um array de bytes RGBA. - A biblioteca jsQR converte o array de pixels num bitmap em escala de cinzentos e procura os três quadrados de padrão localizador característicos nos cantos de um símbolo QR.
- Uma vez localizados os padrões, o descodificador calcula a transformação de perspetiva e extrai a grelha completa de módulos, lendo cada célula como 0 ou 1 binário.
- A grelha de módulos é analisada de acordo com a especificação QR: as informações de formato e versão são lidas primeiro, depois os módulos de dados são desinterlaçados e a correção de erros Reed-Solomon é aplicada.
- As palavras de código de dados corrigidas são descodificadas de acordo com o modo de segmento (numérico, alfanumérico, byte ou kanji), produzindo a string do payload original.
- A ferramenta analisa então o payload com um pequeno conjunto de expressões regulares para identificar o tipo de conteúdo (URL, credencial Wi-Fi, vCard, etc.) e apresenta o resultado com um botão de ação adequado.
Por que usar um leitor de QR baseado no navegador?
- Os bytes da imagem nunca saem do seu dispositivo. Cole um QR que esconde uma senha Wi-Fi, um URL de staging interno ou um vCard com o número de telefone pessoal de alguém, e esse conteúdo fica no seu computador. Outros leitores de QR executam a descodificação num servidor remoto e pedem-lhe para fazer upload da imagem primeiro — este não.
- Após o carregamento da página, a descodificação funciona offline. A biblioteca jsQR vive no seu separador. Pode desligar o Wi-Fi, soltar uma imagem QR na página e ainda obter o payload — útil em voos, caves e em qualquer lugar onde a rede corporativa bloqueie scanners de terceiros.
- Se o seu computador tem webcam, pode apontá-la a um QR code impresso e lê-lo sem instalar uma aplicação. O fluxo de câmara fica no navegador e para no momento em que um código é descodificado.
- O leitor reconhece URLs, strings de ligação Wi-Fi, vCard, MeCard, mailto, SMS e payloads geo e apresenta um botão de ação correspondente. Abrir um URL, copiar a senha Wi-Fi, guardar o cartão de contacto — seja o que for que o QR contém.
Usos comuns para um leitor de QR code
Sempre que precisar de ver o que um QR code realmente diz sem apontar um telemóvel:
- Depurar códigos que acabou de gerar. Cole o QR que a sua aplicação produziu e confirme se o URL ou payload codificado corresponde ao que pretendia antes de o enviar para impressão, embalagem ou um cartaz.
- Recuperar credenciais Wi-Fi. Digitalize o QR Wi-Fi de uma página de configuração do router, um cartão de boas-vindas de hotel ou uma foto de anúncio de alojamento local, e o leitor devolve o SSID, o tipo de segurança e a senha como texto simples que pode copiar para outro dispositivo.
- Auditoria e acessibilidade. Descodifique QR codes em documentos digitalizados, etiquetas de produtos, crachás de conferência ou capturas de ecrã de publicações em redes sociais para extrair o seu conteúdo para uma folha de cálculo, um registo de conformidade ou software de apoio.
Como é a descodificação de um QR code real?
Considere um QR code Wi-Fi impresso na vitrina de uma cafeteria. Por trás do símbolo, o payload bruto segue o esquema URI WIFI:: WIFI:S:CafeGuest;T:WPA;P:espresso2026;H:false;;. Fotografe o símbolo, solte a imagem na zona de upload acima, e o pipeline entra em ação: o canvas lê os pixels, o jsQR localiza os três padrões localizadores nos cantos, a transformação de perspetiva endireita a grelha, o Reed-Solomon repara qualquer brilho ou dano de compressão, e o segmento de modo byte produz a string URI. O leitor analisa então o prefixo WIFI: e classifica o tipo como Wi-Fi, interpreta o nome da rede como CafeGuest, o tipo de segurança como WPA e a senha como espresso2026. Um botão Copiar coloca a senha na área de transferência para poder colá-la no seletor de rede do sistema operativo. Para um QR URL simples contendo https://tools.ultim8soft.com, o mesmo pipeline devolve o emblema de tipo URL e um botão Abrir que navega para o destino num novo separador. De qualquer forma, a única coisa que aconteceu na rede foi o carregamento da página em si — a descodificação é local.
Este leitor de QR code foi construído para uma função: mostrar exatamente o que um QR code codifica, no seu navegador, sem servidor intermédio. Solte uma imagem, cole do clipboard ou deixe a webcam a funcionar, e o conteúdo descodificado mais o seu tipo aparecem no ecrã em menos de um segundo. Os bytes da imagem não são enviados. Os fotogramas da câmara não são gravados. O payload descodificado não passa pelos registos de mais ninguém no caminho até si. Use-o em conjunto com o Gerador de QR Code quando precisar de confirmação de ida e volta de que o que codificou é o que outra pessoa verá.
A imagem é enviada para um servidor?
Não. A imagem é desenhada num canvas HTML em memória e descodificada inteiramente por JavaScript do lado do cliente a correr no seu separador. Nenhum pixel da sua imagem é enviado para um servidor, registado ou guardado. Pode confirmar isso abrindo as DevTools e observando o painel Network enquanto solta uma imagem: não há XHR, fetch nem beacon de análise ligado ao conteúdo do ficheiro.
Como funciona a digitalização com câmara?
Quando ativa o modo de câmara, o navegador pede permissão para aceder à câmara do dispositivo através da API getUserMedia padrão. Os fotogramas de vídeo são capturados num canvas fora do ecrã com resolução até 640×480 e entregues ao jsQR para descodificação. Cada fotograma é descartado no momento em que o seguinte chega, e o fluxo de câmara é parado na primeira descodificação bem-sucedida. Não são gravados fotogramas, não são transmitidos fotogramas, e o pedido de permissão só aparece quando ativa a opção — não no carregamento da página.
Por que algum conteúdo QR é detetado automaticamente como Wi-Fi ou vCard?
Os payloads QR para credenciais Wi-Fi seguem o formato WIFI:S:ssid;T:tipo;P:senha;;, e os vCards começam com BEGIN:VCARD. Este leitor reconhece esses padrões juntamente com outros prefixos padrão (mailto:, geo:, smsto:, MECARD:, https://) e classifica automaticamente o tipo de conteúdo para que o botão de ação corresponda ao que realmente quer fazer com o payload.
Por que o meu QR code não foi lido?
Causas comuns: a imagem é muito pequena ou tem baixa resolução (~100×100 px é o mínimo, 300×300+ lê de forma fiável), o símbolo tem danos graves ou está parcialmente obstruído por um logótipo sem correção de erros suficiente, a zona de silêncio (a borda em branco em torno dos módulos) está em falta ou foi cortada, ou o contraste entre módulos escuros e claros é baixo. Para o modo de câmara, melhore a iluminação ou aproxime o código da lente — o jsQR precisa de resolver módulos individuais com clareza para localizar os padrões.