Como ler códigos de barras e códigos QR usando OCR em C#

Como Ler Códigos de Barras e QR Codes em C# com IronOCR

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronOCR lê códigos de barras e QR codes em C# configurando ReadBarCodes = true na configuração. Esta única configuração permite a extração automática de valores de códigos de barras de PDFs e imagens juntamente com o reconhecimento de texto regular, suportando mais de 20 formatos de código de barras, incluindo QR codes, Code 128 e Data Matrix.

Início Rápido: Leia Códigos de Barras de um PDF Instantaneamente

Ative a detecção de códigos de barras com uma configuração e escaneie PDFs com o IronOCR. O código abaixo mostra como ativar a leitura de códigos de barras, processar um PDF e recuperar os valores decodificados.

  1. Instale IronOCR com o Gerenciador de Pacotes NuGet

    PM > Install-Package IronOcr
  2. Copie e execute este trecho de código.

    var result = new IronOcr.IronTesseract() { Configuration = new IronOcr.TesseractConfiguration { ReadBarCodes = true } }.Read(new IronOcr.OcrPdfInput("document.pdf"));
    foreach(var bc in result.Barcodes) Console.WriteLine(bc.Value);
  3. Implante para testar em seu ambiente de produção.

    Comece a usar IronOCR em seu projeto hoje com uma avaliação gratuita

    arrow pointer


Como Leio Códigos de Barras de Documentos PDF?

Crie um objeto IronTesseract para realizar a leitura. Defina a propriedade ReadBarCodes como verdadeira para habilitar a detecção de códigos de barras. Importe o documento PDF usando o construtor OcrPdfInput. Use o método `` para realizar OCR no PDF importado.

Aqui está um exemplo usando este documento PDF:

:path=/static-assets/ocr/content-code-examples/how-to/barcodes-read-barcodes.cs
using IronOcr;
using System;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Enable barcode reading
ocrTesseract.Configuration.ReadBarCodes = true;

// Add PDF
using var imageInput = new OcrPdfInput("pdfWithBarcodes.pdf");

// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

// Output detected barcodes and text values
Console.WriteLine("Extracted text:");
Console.WriteLine(ocrResult.Text);
Console.WriteLine("Extracted barcodes:");
foreach (var barcode in ocrResult.Barcodes)
{
    Console.WriteLine(barcode.Value);
}
$vbLabelText   $csharpLabel
Saída de depuração do IronOCR mostrando texto extraído e três códigos de barras (A,B,C) de PDF com perfis de negócios

Múltiplos valores de código de barras aparecem abaixo dos códigos de barras e são incluídos no texto extraído.

Por Que o IronOCR Extrai Tanto Texto Quanto Valores de Códigos de Barras?

A extração dupla do IronOCR fornece uma análise abrangente do documento. Ao processar documentos que contêm tanto texto quanto códigos de barras, a biblioteca realiza extração padrão de texto OCR ao mesmo tempo que decodifica simbologias de códigos de barras. Esta abordagem unificada elimina a necessidade de múltiplas passagens de processamento ou bibliotecas separadas.

A extração de texto captura elementos legíveis para humanos, enquanto a detecção de códigos de barras identifica e decodifica dados legíveis por máquinas. Isso beneficia documentos como faturas, etiquetas de envio ou relatórios de inventário, onde os valores de códigos de barras se correlacionam com o texto impresso. A classe OcrResult separa estes resultados—acessa texto através da propriedade Text e os dados do código de barras através da coleção Barcodes.

Quais Formatos de Código de Barras São Suportados?

IronOCR suporta mais de 20 formatos de códigos de barras:

Códigos de Barras 1D:

  • Código 128, Código 39, Código 93
  • EAN-13, EAN-8
  • UPC-A, UPC-E
  • Codabar
  • ITF (Interleaved 2 of 5)
  • MSI
  • Plessey

Códigos de Barras 2D:

  • Código QR
  • Data Matrix
  • PDF417
  • Código Aztec
  • MaxiCode

Para aplicações especializadas como leitura de cheques MICR ou processamento de documentos de identidade, as capacidades de código de barras do IronOCR complementam suas funcionalidades de extração de texto.

Quando Devo Usar OCR para Leitura de Códigos de Barras em Vez de Bibliotecas Dedicadas de Códigos de Barras?

Escolha a leitura integrada de códigos de barras do IronOCR quando:

  1. Processamento de Conteúdo Misto: Documentos contêm tanto texto quanto códigos de barras (etiquetas de envio, faturas, ou documentos digitalizados)
  2. Preferência por Biblioteca Única: Você deseja minimizar dependências e usar uma única solução
  3. Processamento de PDF: Você já está usando o IronOCR para extração de texto OCR de PDF
  4. Layouts de Documento Complexos: Documentos têm códigos de barras embutidos em regiões de texto ou tabelas

Use bibliotecas dedicadas de códigos de barras quando:

  • Processar imagens de alto volume contendo apenas códigos de barras
  • Requerer escaneamento de códigos de barras em tempo real (resposta < 50ms)
  • Trabalhar com códigos de barras danificados ou de baixa qualidade que exigem algoritmos especializados
  • Implementar escaneamento de códigos de barras móveis com otimização de câmera

Como Leio Códigos QR de Documentos?

Assim como na leitura de código de barras, defina a propriedade ReadBarCodes como verdadeira. Não são necessárias outras alterações de código além do caminho do arquivo. Processe este documento PDF com códigos QR:

:path=/static-assets/ocr/content-code-examples/how-to/barcodes-read-qr-codes.cs
using IronOcr;
using System;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Enable barcode reading
ocrTesseract.Configuration.ReadBarCodes = true;

// Add PDF
using var imageInput = new OcrPdfInput("pdfWithQrCodes.pdf");

// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

// Output detected barcodes and text values
Console.WriteLine("Extracted text:");
Console.WriteLine(ocrResult.Text);
Console.WriteLine("Extracted barcodes:");
foreach (var barcode in ocrResult.Barcodes)
{
    Console.WriteLine(barcode.Value);
}
$vbLabelText   $csharpLabel
Saída do IronOCR no Visual Studio mostrando texto extraído e códigos QR A, B e C decodificados com sucesso do documento

Por Que a Mesma Configuração Funciona Tanto Para Códigos de Barras Quanto para Códigos QR?

O motor de detecção de códigos de barras unificado do IronOCR trata todos os códigos legíveis por máquina igualmente. The ReadBarCodes configuration activates a comprehensive symbology detector that recognizes both 1D (linear barcodes) and 2D (QR codes, Data Matrix) formats without requiring format-specific settings. Este design simplifica a implementação e reduz a complexidade da configuração.

O algoritmo de detecção automaticamente:

  • Identifica o tipo de simbologia com base no reconhecimento de padrões
  • Aplica os algoritmos de decodificação apropriados
  • Lida com variações de orientação e tamanho
  • Retorna os resultados em um formato consistente, independentemente do tipo de código de barras

Essa abordagem espelha como os modelos de Visão Computacional funcionam—treinando em múltiplos formatos para fornecer capacidades de detecção universal.

Quais São os Problemas Comuns ao Ler Códigos QR com OCR?

Desafios comuns ao processar códigos QR incluem:

  1. Problemas de Resolução: Códigos QR em PDFs podem ser subamostrados abaixo do tamanho mínimo do módulo. Use configurações de DPI para garantir resolução adequada (mínimo recomendado de 300 DPI).

  2. Qualidade da Imagem: Códigos QR digitalizados frequentemente sofrem com desfoque, ruído ou distorção. Aplique filtros de correção de imagem para melhorar a clareza:
// Apply filters to improve QR code readability
ocrTesseract.Configuration.ReadBarCodes = true;
var input = new OcrImageInput("qr-code-scan.jpg");
input.DeNoise();
input.Sharpen();
input.EnhanceResolution();

var result = ocrTesseract.Read(input);
// Apply filters to improve QR code readability
ocrTesseract.Configuration.ReadBarCodes = true;
var input = new OcrImageInput("qr-code-scan.jpg");
input.DeNoise();
input.Sharpen();
input.EnhanceResolution();

var result = ocrTesseract.Read(input);
$vbLabelText   $csharpLabel
  1. Problemas de Orientação: Códigos QR em ângulos podem não ser decodificados corretamente. Habilite a detecção de rotação de página para lidar com documentos desalinhados.

  2. Interferência de Conteúdo Misto: Texto ou gráficos sobrepostos aos códigos QR podem impedir a detecção. Use regiões de corte para isolar áreas de códigos QR quando necessário.

Como Posso Melhorar a Precisão do Reconhecimento de Códigos QR?

Otimize o reconhecimento de códigos QR com estas técnicas:

  1. Pré-processar Imagens: Use o Assistente de Filtro para determinar as melhores configurações de aprimoramento:
// Enhanced QR code reading with preprocessing
var ocrTesseract = new IronTesseract();
ocrTesseract.Configuration.ReadBarCodes = true;

// Configure for better QR detection
var input = new OcrImageInput("document-with-qr.pdf");
input.TargetDPI = 300; // Ensure sufficient resolution
input.Binarize(); // Convert to black and white
input.DeNoise(); // Remove image artifacts

var result = ocrTesseract.Read(input);
// Enhanced QR code reading with preprocessing
var ocrTesseract = new IronTesseract();
ocrTesseract.Configuration.ReadBarCodes = true;

// Configure for better QR detection
var input = new OcrImageInput("document-with-qr.pdf");
input.TargetDPI = 300; // Ensure sufficient resolution
input.Binarize(); // Convert to black and white
input.DeNoise(); // Remove image artifacts

var result = ocrTesseract.Read(input);
$vbLabelText   $csharpLabel
  1. Gerenciar Múltiplas Páginas: Para documentos com várias páginas com códigos QR em várias páginas:
// Process multi-page documents efficiently
using var pdfInput = new OcrPdfInput("multi-page-qr-document.pdf");
pdfInput.TargetDPI = 300;

var results = ocrTesseract.Read(pdfInput);
foreach (var page in results.Pages)
{
    Console.WriteLine($"Page {page.PageNumber}:");
    foreach (var barcode in page.Barcodes)
    {
        Console.WriteLine($"  QR Code: {barcode.Value}");
        Console.WriteLine($"  Location: X={barcode.X}, Y={barcode.Y}");
    }
}
// Process multi-page documents efficiently
using var pdfInput = new OcrPdfInput("multi-page-qr-document.pdf");
pdfInput.TargetDPI = 300;

var results = ocrTesseract.Read(pdfInput);
foreach (var page in results.Pages)
{
    Console.WriteLine($"Page {page.PageNumber}:");
    foreach (var barcode in page.Barcodes)
    {
        Console.WriteLine($"  QR Code: {barcode.Value}");
        Console.WriteLine($"  Location: X={barcode.X}, Y={barcode.Y}");
    }
}
$vbLabelText   $csharpLabel
  1. Processamento Assíncrono: Para melhor desempenho com vários documentos, use métodos assíncronos:
// Asynchronous QR code reading
var result = await ocrTesseract.ReadAsync(imageInput);
// Asynchronous QR code reading
var result = await ocrTesseract.ReadAsync(imageInput);
$vbLabelText   $csharpLabel
  1. Depurar Problemas de Reconhecimento: Ative a realce de resultados para visualizar o que o IronOCR detecta:
result.SaveAsHighlightedImage("qr-detection-debug.png");
result.SaveAsHighlightedImage("qr-detection-debug.png");
$vbLabelText   $csharpLabel

Otimização de Desempenho para Processamento em Grande Escala de Códigos de Barras

Ao processar milhares de documentos com códigos de barras e QR codes, implemente estas estratégias de otimização:

  1. Multithreading: Aproveite o processamento multithreaded para lidar com vários documentos simultaneamente:
// Process multiple documents in parallel
var documents = new[] { "doc1.pdf", "doc2.pdf", "doc3.pdf" };
var results = documents.AsParallel().Select(doc =>
{
    var tesseract = new IronTesseract();
    tesseract.Configuration.ReadBarCodes = true;
    return tesseract.Read(new OcrPdfInput(doc));
}).ToList();
// Process multiple documents in parallel
var documents = new[] { "doc1.pdf", "doc2.pdf", "doc3.pdf" };
var results = documents.AsParallel().Select(doc =>
{
    var tesseract = new IronTesseract();
    tesseract.Configuration.ReadBarCodes = true;
    return tesseract.Read(new OcrPdfInput(doc));
}).ToList();
$vbLabelText   $csharpLabel
  1. Gerenciamento de Memória: Use tokens de abortar para operações de longa duração:
// Implement cancellation for large batch processing
using var cts = new CancellationTokenSource();
ocrTesseract.Configuration.CancellationToken = cts.Token;

// Cancel if processing takes too long
cts.CancelAfter(TimeSpan.FromMinutes(5));
// Implement cancellation for large batch processing
using var cts = new CancellationTokenSource();
ocrTesseract.Configuration.CancellationToken = cts.Token;

// Cancel if processing takes too long
cts.CancelAfter(TimeSpan.FromMinutes(5));
$vbLabelText   $csharpLabel
  1. Exportação de Resultados: Economize resultados como PDFs pesquisáveis para manter ambos os dados de texto e código de barras:
// Export results with embedded barcode values
result.SaveAsSearchablePdf("output-with-barcodes.pdf");
// Export results with embedded barcode values
result.SaveAsSearchablePdf("output-with-barcodes.pdf");
$vbLabelText   $csharpLabel

Integração com Aplicações de Negócios

As capacidades de código de barras do IronOCR se integram perfeitamente com aplicativos .NET existentes. Cenários comuns de integração incluem:

  • Gerenciamento de Inventário: Extraia códigos de produtos de manifestos de envio
  • Arquivamento de Documentos: Indexe documentos escaneados por identificadores de código de barras embutidos
  • Processamento de Faturas: Faça correspondência de SKUs de código de barras com itens de linha em documentos financeiros
  • Registros de Saúde: Processar códigos de barras de pulseiras de paciente juntamente com formulários médicos

Para aplicativos de produção processando altos volumes de códigos de barras e QR codes, considere implementar rastreamento de progresso para monitorar o status do processamento e otimizar o desempenho com base em métricas do mundo real.

Perguntas frequentes

Como faço para habilitar a leitura de código de barras em meu aplicativo C#?

Com o IronOCR, habilite a leitura de códigos de barras definindo ReadBarCodes = true na configuração do Tesseract. Essa configuração simples ativa a extração automática de valores de códigos de barras de PDFs e imagens, além do reconhecimento de texto comum, com suporte para mais de 20 formatos de código de barras.

Posso ler texto e códigos de barras no mesmo documento?

Sim, o IronOCR realiza extração dupla: captura texto legível por humanos através de OCR padrão e, simultaneamente, decodifica códigos de barras legíveis por máquina. A classe OcrResult separa essas saídas, com o texto acessível pela propriedade Text e os dados do código de barras acessíveis pela coleção Barcodes.

Quais formatos de código de barras podem ser detectados?

O IronOCR suporta mais de 20 formatos de código de barras, incluindo códigos de barras 1D (Code 128, Code 39, Code 93, EAN-13, EAN-8, UPC-A, UPC-E, Codabar, ITF, MSI, Plessey) e códigos de barras 2D (QR Code, Data Matrix e outros).

Como extrair códigos de barras de documentos PDF?

Crie um objeto IronTesseract, defina ReadBarCodes como true, importe seu PDF usando o construtor OcrPdfInput e, em seguida, use o método Read. O IronOCR realizará o OCR e extrairá todos os valores de código de barras detectados, que você poderá acessar por meio da coleção result.Barcodes.

Preciso de bibliotecas separadas para OCR de texto e leitura de código de barras?

Não, a abordagem unificada do IronOCR elimina a necessidade de múltiplas etapas de processamento ou bibliotecas separadas. Ele realiza a extração de texto OCR padrão enquanto decodifica simultaneamente as simbologias de código de barras em uma única operação.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais
Pronto para começar?
Nuget Downloads 5,525,971 | Versão: 2026.3 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronOcr
executar um exemplo Veja sua imagem se transformar em texto pesquisável.