Como ler código de barras de uma foto
Leia o número de um código de barras EAN, UPC ou Code128 em uma foto do celular, mesmo de uma lata amassada, com o formato identificado. Se o código estiver danificado demais, você é avisado em vez de receber um número chutado. Você paga por uso, sem assinatura.
Rode online
Rode nos nossos servidores com a sua conta. As ferramentas grátis rodam no seu navegador; esta aqui é descontada do seu saldo do KIT pelo preço acima.
Substitui o leitor físico quando o que chega é imagem: fotos de recebimento, notas escaneadas, prints de etiquetas.
Por que ler pela foto é mais difícil que pelo leitor
Um leitor de mão lê o código na hora porque foi feito para uma única tarefa, com distância e luz controladas. Uma foto tirada com o celular não tem nenhuma dessas garantias: chega torta, com luz irregular, tremida e, em embalagens curvas como latas e garrafas, com as próprias barras deformadas. Antes de medir a largura das barras e recuperar os dígitos, a ferramenta localiza o código na imagem e corrige tudo isso. Ela reconhece sozinha se o código é EAN, UPC ou Code128 e devolve o número junto com o formato identificado.
Onde a leitura pela foto ajuda e o que ela não faz
É útil em inventários feitos com o celular, na conferência de devoluções, quando é preciso confirmar o produto pela embalagem antes de concluir o processo, e em aplicativos em que o cliente fotografa uma etiqueta para comparar preços. Um catálogo misto, com EAN ou UPC no varejo e Code128 em etiquetas de logística, não precisa ser separado por formato. Se o código estiver danificado, pequeno ou distorcido demais, você recebe esse aviso em vez de um número chutado, que poderia apontar para o produto errado.
Quando a foto substitui a leitora
Leitora de código de barras resolve no balcão — mas não quando o que chega é imagem: foto do recebimento, nota escaneada, print mandado pelo motorista no WhatsApp. Nenhum equipamento novo, nenhuma digitação.
Integração direta no fluxo que você já tem
Dá para plugar no formulário interno em que o conferente já anexa fotos, no fluxo que recebe imagens por e-mail ou no aplicativo de campo da equipe. Como a resposta é estruturada, a comparação com o pedido ou com a nota acontece em código — o humano só entra quando algo não bate.
A qualidade da foto manda no resultado
Barras são finas e a câmera precisa enxergá-las: foto razoavelmente focada, código inteiro no quadro e luz sem reflexo estourado já resolvem a maioria dos casos. Etiqueta amassada, plástico brilhando ou barra cortada na borda derrubam qualquer leitor — o daqui inclusive. Oriente quem fotografa com uma regra só: encher o quadro com a etiqueta.
É treinamento de um minuto que muda a taxa de acerto.
Perguntas frequentes
Tem versão grátis no navegador?
Para conferir um código ou outro manualmente, um leitor comum de celular resolve.
Que formatos de código ele entende?
Os formatos lineares (1D) correntes de varejo e logística: o EAN e o UPC dos produtos e o Code 128 das etiquetas. Se a sua operação usa um padrão específico, teste com uma amostra real antes de integrar: é uma chamada de centavos.
E se a foto vier torta, escura ou cortada?
Foto torta costuma passar; código cortado ou estourado de reflexo, não. Quando a leitura falha, trate no seu fluxo como pendência de nova foto — e oriente a equipe a preencher o quadro com a etiqueta.
Quanto custa processar mil imagens?
Sem assinatura — mês sem volume é mês sem custo.
As fotos que eu envio são guardadas?
As imagens são processadas para extrair o número; esse é o propósito do serviço e o uso que fazemos delas. Evite enviar fotos com mais informação pessoal do que a etiqueta pede — boa higiene de LGPD do seu lado também.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/dev/barcode-decode \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"image":"https://ejemplo.com/imagen.jpg"}'const res = await fetch("https://api.kit.forhosting.com/dev/barcode-decode", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"image": "https://ejemplo.com/imagen.jpg"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/barcode-decode",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"image": "https://ejemplo.com/imagen.jpg"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/barcode-decode", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"image":"https://ejemplo.com/imagen.jpg"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"image":"https://ejemplo.com/imagen.jpg"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/barcode-decode", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"image": "https://ejemplo.com/imagen.jpg"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.barcode_decode",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
O decodificador de código de barras recebe a foto ou o scan de uma etiqueta e devolve, via API, o número contido nas barras — pronto para entrar no seu sistema.
Quando a foto substitui a leitora
O decodificador cobre exatamente esse vão: o seu sistema envia a imagem via API e recebe de volta o número contido nas barras, em JSON, pronto para conferência, baixa de estoque ou cadastro.
Integração direta no fluxo que você já tem
O desenho é o mais simples possível: uma chamada HTTP com a imagem, uma resposta com o conteúdo decodificado.
Preço por imagem, sem hardware para comprar
A comparação honesta não é com a leitora do caixa, e sim com a alternativa real: alguém digitando números de treze dígitos olhando para fotos. US$ 0,002 por chamada mais US$ 0,005 por imagem processada — mil etiquetas fotografadas custam US$ 7, pagos por uso via PayPal, sem mensalidade e sem cadastro. Nessa disputa, a API ganha em custo, velocidade e taxa de erro.
Casos de integração
Recebimento fotografado no depósito
No recebimento da Distribuidora Horizonte Verde S.A., o conferente fotografa a etiqueta de cada volume. O sistema decodifica via API e cruza com o pedido de compra — divergência aparece na hora, não no fechamento do mês.
Número de série sem digitação em campo
Os técnicos da TecnoSul Soluções Digitais ME fotografam o código de barras do equipamento atendido. O aplicativo interno envia a foto para a API e grava o número de série na ordem de serviço — ninguém digita dezessete caracteres na chuva.
Print de etiqueta no WhatsApp
Uma transportadora de Curitiba recebe dos motoristas prints das etiquetas de coleta. Um fluxo interno passa cada imagem pela API e devolve o número já vinculado ao romaneio — o motorista não digita nada.
Perguntas técnicas
Como o resultado chega para o meu sistema?
Você cria a tarefa com a imagem e consulta o resultado pela API: o número decodificado vem em JSON, estruturado para automação.