Leitor de Códigos QR
Lê códigos QR a partir da tua câmara ou de uma imagem carregada, inteiramente no teu navegador.
A carregar Leitor de Códigos QR… Se nada acontecer, ativa o JavaScript.
Os códigos QR codificam URL, cartões de contacto, credenciais de Wi-Fi, informação de pagamento e texto arbitrário num código de barras bidimensional compacto que qualquer câmara de smartphone consegue ler em menos de um segundo. Mas e se precisares de descodificar um código QR a partir de uma captura de ecrã, de um ficheiro de imagem ou de um ecrã secundário, sem tirar o telemóvel? Os navegadores modernos expõem agora a API BarcodeDetector, uma interface nativa que processa os dados de imagem localmente no dispositivo, o que torna possível a leitura de QR totalmente baseada no navegador, sem qualquer carregamento para um servidor nem aplicação de terceiros.
Perguntas frequentes
As imagens lidas ou os fotogramas da câmara são carregados para um servidor?
Como funciona tecnicamente a API BarcodeDetector?
Que navegadores e formatos de código de barras são suportados?
Que permissão pede o navegador ao usar a câmara?
Posso ler um código QR a partir de uma captura de ecrã ou de uma imagem no meu computador?
Porque é que a leitura às vezes falha num código QR válido?
Em que é que isto difere de simplesmente usar a câmara do meu telemóvel?
Posso usar isto para verificar um código QR que acabei de gerar?
É seguro ler um código QR desconhecido com esta ferramenta?
A ferramenta funciona em navegadores móveis?
Sobre Leitor de Códigos QR
Os casos de utilização de um leitor de QR baseado no navegador são mais amplos do que podem parecer à primeira vista. Os programadores deparam-se frequentemente com códigos QR em documentação, maquetas de design, fluxos de autenticação e ambientes de teste onde ler com um telemóvel é incómodo. Os profissionais de TI verificam as credenciais de Wi-Fi codificadas em QR antes de implementar sinalética. Os investigadores de segurança inspecionam códigos QR em campanhas de phishing em segurança, descodificando o URL sem clicar nele. Os criadores de conteúdo e os profissionais de marketing descodificam os códigos QR da concorrência para ver para onde redirecionam. Qualquer pessoa que receba uma imagem com um código QR incorporado pode arrastá-la para esta ferramenta e ler o conteúdo instantaneamente.
A ferramenta usa duas vias de descodificação consoante a compatibilidade do navegador. Nos navegadores baseados em Chromium (Chrome 88+, Edge 88+, Opera 74+) e no Safari 17+, usa a API nativa `BarcodeDetector`, que entrega os dados de imagem em bruto ao motor de descodificação integrado do navegador, o mesmo motor que a aplicação de câmara do sistema operativo usa. Nos navegadores que não suportam `BarcodeDetector`, recorre a uma implementação em JavaScript. Em ambos os casos, os dados de imagem são processados inteiramente no teu dispositivo; nada é carregado para qualquer servidor. Para o modo de câmara, a ferramenta usa a API `getUserMedia` para aceder à transmissão da tua webcam, processa os fotogramas localmente e para a transmissão no momento em que sais da página.
Para obteres os melhores resultados ao carregar uma imagem, usa uma versão de alto contraste do código com pelo menos 10 píxeis por módulo (cada quadrado preto ou branco). As imagens JPEG comprimidas podem introduzir artefactos nos limites dos módulos que confundem os descodificadores; os ficheiros PNG são descodificados de forma mais fiável. Se uma leitura falhar, tenta aumentar o brilho e o contraste da imagem em qualquer editor de imagens antes de a carregar. Para a leitura em direto com a câmara, garante uma iluminação uniforme sem reflexos fortes na superfície do código, e mantém a câmara firme a uma distância em que o código inteiro preencha cerca de metade do enquadramento.
Câmaras que leem códigos: como a leitura de códigos de barras no navegador se tornou possível
Durante a maior parte dos 70 anos de história do código de barras, ler um exigia hardware especializado: leitores laser nos supermercados, leitores de mão específicos nos armazéns ou, no mínimo, uma aplicação móvel nativa com acesso direto à câmara. A ideia de que uma página web pudesse descodificar um código de barras em tempo real sem qualquer software instalado teria parecido implausível ainda em 2015. A mudança veio de dois desenvolvimentos que convergiram: a rápida melhoria do desempenho das GPU móveis e o acordo dos fabricantes de navegadores para normalizar o acesso às câmaras dos dispositivos através da API `getUserMedia`, que alcançou suporte generalizado por volta de 2016.
Os primeiros leitores de QR baseados no navegador dependiam inteiramente de bibliotecas de JavaScript que implementavam o algoritmo de descodificação Reed-Solomon por software. Funcionavam, mas eram lentos, consumiam muita CPU e eram propensos a falhar com imagens de baixo contraste ou ligeiramente desfocadas. A melhoria crítica chegou quando a Google propôs a Shape Detection API, mais tarde refinada na API BarcodeDetector, que expõe os mesmos pipelines de análise de imagem acelerados por hardware que as aplicações nativas usam. Ao delegar nas frameworks Vision ou ML Kit do sistema operativo, a velocidade de deteção melhorou em ordens de grandeza e a fiabilidade igualou a das aplicações de câmara nativas.
A API BarcodeDetector foi lançada no Chrome 83 em 2020 e representa uma tendência mais ampla de navegadores que absorvem capacidades que antes exigiam aplicações nativas: acesso ao sistema de ficheiros, Bluetooth, USB, área de transferência e agora a visão por computador. Cada capacidade normalizada reduz a distância entre as aplicações web e as nativas, embora os fabricantes de navegadores discordem sobre até onde estender este acesso. A decisão do Firefox de não implementar o BarcodeDetector reflete um debate filosófico em curso sobre se os navegadores devem sequer expor API de hardware de baixo nível, um debate que o caso de uso da leitura de códigos de barras torna concreto e prático.