Barcode Detection API

Detectar códigos de barras lineares e bidimensionais em imagens nunca foi tão simples.

Esta é uma especificação escrita por um grupo da comunidade W3C, nomeado como Accelerated Shape Detection in Images (shape detection api).

Introdução

Fotos e imagens constituem a maior parte da Web e muitas incluem informações detectáveis por métodos computacionais, que por sua vez são um tanto caros de processar, no entanto levaria a casos de uso interessantes como marcação de pessoas ou objetos em fotos e encaminhamento para páginas com facilidade. Você pode estar pensando "mas clicar em um link não é mais simples que ler um QRCode?" e a resposta é sim!

Porém, existem outros casos de uso onde estamos no mundo real e desejamos acessar um recurso do mundo virtual, um exemplo bem útil e comum de encontrar é quando chegamos a um restaurante e o acesso ao cardápio é feito através de um QRCode impresso, sem isso precisamos descobrir a URL e digita-la letra por letra. Pode não parecer, mas em algumas ocasiões isso pode ser frustrante ou desafiador, caso o domínio não seja amigável ou até mesmo em casos de acessibilidade para um surdo-mudo ou alguém com dificuldades especiais.

Compatibilidade

Chrome

83+

Edge

83+

Opera

69+

Android Browser

126

Chrome for Android

126

Opera Mobile

80+

Samsung Internet

13+

Safari on iOS

Firefox

Safari

Conceitos e uso

Alguns casos de uso por meio de formatos de código de barras suportados. Os códigos QR podem ser usados ​​para pagamentos on-line, navegação na web ou estabelecimento de conexões de mídia social, os códigos Aztec podem ser usados ​​para escanear cartões de embarque e os aplicativos de compras podem usar códigos de barras EAN para comparar preços de itens físicos.

Exemplos de tipos de código

Format
Description
Image

aztec

Uma matriz quadrada bidimensional seguindo iso24778 e com um padrão quadrado de alvo no centro, lembrando assim uma pirâmide asteca. Não requer uma zona vazia circundante.

code_128

Um código de barras linear (unidimensional), decodificáveis bidirecionalmente e autoverificável seguindo iso15417 e capaz de codificar todos os 128 caracteres do ASCII (daí o nome).

code_39

Um código de barras linear (unidimensional) de autoverificação seguindo iso16388. É um tipo de código de barras discreto e de comprimento variável.

data_matrix

Um código de barras bidimensional independente de orientação composto por módulos preto e branco dispostos em um padrão quadrado ou retangular seguindo a iso16022.

ean_13

Um código de barras linear baseado no padrão UPC-A e definido em iso15420.

ean_8

Um código de barras linear definido em iso15420 e derivado de EAN-13.

qr_code

Um código de barras bidimensional que utiliza o padrão iso18004. As informações codificadas podem ser texto, URL ou outros dados.

unknown

Este valor é usado pela plataforma para indicar que ela não sabe ou especifica qual formato de código de barras está sendo detectado ou suportado.

Conceitos técnicos

Entrando nos conceitos técnicos, a detecção é obtida por meio do método detect(), que recebe um objeto, podendo ser um dos a seguir, HTMLImageElement, SVGImageElement, HTMLVideoElement, HTMLCanvasElement, ImageBitmap, OffscreenCanvas, VideoFrame, Blob, ou ImageData. Além de parâmetros opcionais que podem fornecer dicas sobre quais formatos de código detectar.

Implementação

Bem, agora podemos começar a explorar as APIs disponíveis no objeto window

Verifique se está utilizando algum dos navegadores que tenham suporte, conforme a tabela acima e usando o console JavaScript, execute:

BarcodeDetector.getSupportedFormats().then(console.log)

O retorno é um array contendo os formatos de códigos que podem ser lidos.

Recursos

Faça o download do pacote de imagens em SVG que preparei para nossos testes.

17KB
Open

Exemplo

Para testar essa API da Web apenas um arquivo HTML simples será suficiente, vamos lá.

Hoje paramos por aqui mas em breve escrevo uma implementação mais avançada usando esta API.

Valeu, abraço.

[]s

Last updated

Was this helpful?