Como ler códigos de barras em C#

C# Barcode Scanner: Read Barcodes & QR Codes in .NET Applications

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

Precisa escanear rapidamente códigos de barras ou códigos QR em sua aplicação .NET? O IronBarcode torna a leitura de códigos de barras simples e confiável, seja você processando imagens digitais perfeitas ou fotos desafiadoras do mundo real. Este guia mostra exatamente como implementar a escaneamento de códigos de barras em C# com exemplos práticos que você pode usar imediatamente.

Início Rápido: Leia um Código de Barras de um Arquivo Instantaneamente

Este exemplo rápido mostra como é fácil começar com o IronBarcode. Com apenas uma linha de código, você pode ler códigos de barras de um arquivo de imagem — sem necessidade de configuração complexa.

  1. Instale IronBarcode com o Gerenciador de Pacotes NuGet

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

    var results = IronBarCode.BarcodeReader.Read("path/to/barcode.png");
  3. Implante para testar em seu ambiente de produção.

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

    arrow pointer

Como instalo o IronBarcode no meu projeto .NET?

O IronBarcode instala facilmente através do NuGet Package Manager ou baixando o DLL diretamente. A instalação pelo NuGet é a abordagem recomendada, pois gerencia automaticamente dependências e atualizações.

Install-Package BarCode

Após a instalação, adicione using IronBarCode; aos seus arquivos C# para acessar a funcionalidade de escaneamento de códigos de barras. Para instruções detalhadas de instalação em diferentes ambientes de desenvolvimento, confira nosso guia de instalação.

Como posso ler meu primeiro código de barras usando C#?

Ler códigos de barras com IronBarcode requer apenas uma linha de código. A biblioteca detecta automaticamente formatos de código de barras e extrai todos os dados codificados.

Código de barras Code128 pronto para escanear - contém texto 'https://ironsoftware.com/csharp/barcode/' *Um código de barras Code128 padrão que o IronBarcode pode ler instantaneamente*
:path=/static-assets/barcode/content-code-examples/tutorials/reading-barcodes-3.cs
using IronBarCode;

BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    // Choose which filters are to be applied (in order)
    ImageFilters = new ImageFilterCollection() {
        new AdaptiveThresholdFilter(),
    },

    // Uses machine learning to auto rotate the barcode
    AutoRotate = true,
};

// Read barcode
BarcodeResults results = BarcodeReader.Read("TryHarderQR.png", options);
Imports IronBarCode

Private options As New BarcodeReaderOptions() With {
	.ImageFilters = New ImageFilterCollection() From {New AdaptiveThresholdFilter()},
	.AutoRotate = True
}

' Read barcode
Private results As BarcodeResults = BarcodeReader.Read("TryHarderQR.png", options)
$vbLabelText   $csharpLabel

O método BarcodeReader.Read retorna uma coleção BarcodeResults contendo todos os códigos de barras detectados. Cada BarcodeResult fornece acesso ao valor do texto do código de barras, tipo de formato, coordenadas de posição e dados binários. Essa abordagem funciona perfeitamente com formatos de código de barras comuns, incluindo Code128, Code39, códigos QR e códigos Data Matrix.

Quais opções ajudam a ler códigos de barras desafiadores ou danificados?

A leitura de códigos de barras no mundo real frequentemente envolve imagens imperfeitas - ângulos tortos, iluminação ruim ou danos parciais. As opções avançadas do IronBarcode lidam eficazmente com esses desafios.

:path=/static-assets/barcode/content-code-examples/tutorials/reading-barcodes-4.cs
using IronBarCode;
using System;

// Multiple barcodes may be scanned up from a single document or image. A PDF document may also used as the input image
BarcodeResults results = BarcodeReader.ReadPdf("MultipleBarcodes.pdf");

// Work with the results
foreach (var pageResult in results)
{
    string Value = pageResult.Value;
    int PageNum = pageResult.PageNumber;
    System.Drawing.Bitmap Img = pageResult.BarcodeImage;
    BarcodeEncoding BarcodeType = pageResult.BarcodeType;
    byte[] Binary = pageResult.BinaryValue;
    Console.WriteLine(pageResult.Value + " on page " + PageNum);
}
Imports IronBarCode
Imports System

' Multiple barcodes may be scanned up from a single document or image. A PDF document may also used as the input image
Private results As BarcodeResults = BarcodeReader.ReadPdf("MultipleBarcodes.pdf")

' Work with the results
For Each pageResult In results
	Dim Value As String = pageResult.Value
	Dim PageNum As Integer = pageResult.PageNumber
	Dim Img As System.Drawing.Bitmap = pageResult.BarcodeImage
	Dim BarcodeType As BarcodeEncoding = pageResult.BarcodeType
	Dim Binary() As Byte = pageResult.BinaryValue
	Console.WriteLine(pageResult.Value & " on page " & PageNum)
Next pageResult
$vbLabelText   $csharpLabel
Código QR girado 45 graus demonstrando o manuseio de rotação do IronBarcode *Um código QR rotacionado que o IronBarcode lê com sucesso usando opções avançadas*

A propriedade ExpectBarcodeTypes melhora significativamente o desempenho ao limitar a pesquisa a formatos específicos. Para máxima precisão com imagens problemáticas, combine filtros de imagem com rotação automática:

:path=/static-assets/barcode/content-code-examples/tutorials/reading-barcodes-5.cs
using IronBarCode;

// Multi frame TIFF and GIF images can also be scanned
BarcodeResults multiFrameResults = BarcodeReader.Read("Multiframe.tiff");

foreach (var pageResult in multiFrameResults)
{
    //...
}
Imports IronBarCode

' Multi frame TIFF and GIF images can also be scanned
Private multiFrameResults As BarcodeResults = BarcodeReader.Read("Multiframe.tiff")

For Each pageResult In multiFrameResults
	'...
Next pageResult
$vbLabelText   $csharpLabel

Esses recursos avançados tornam o IronBarcode ideal para escaneamento de códigos de barras a partir de fotos, câmeras de segurança ou capturas de dispositivos móveis onde a qualidade da imagem varia significativamente.

Como escaneio múltiplos códigos de barras de documentos PDF?

O escaneamento de códigos de barras de PDF é essencial para o processamento de faturas, etiquetas de envio e documentos de inventário. O IronBarcode lê todos os códigos de barras em cada página de forma eficiente.

Lendo códigos de barras de arquivos PDF

:path=/static-assets/barcode/content-code-examples/tutorials/reading-barcodes-6.cs
using IronBarCode;

// The Multithreaded property allows for faster barcode scanning across multiple images or PDFs. All threads are automatically managed by IronBarCode.
var ListOfDocuments = new[] { "image1.png", "image2.JPG", "image3.pdf" };

BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    // Enable multithreading
    Multithreaded = true,
};

BarcodeResults batchResults = BarcodeReader.Read(ListOfDocuments, options);
Imports IronBarCode

' The Multithreaded property allows for faster barcode scanning across multiple images or PDFs. All threads are automatically managed by IronBarCode.
Private ListOfDocuments = { "image1.png", "image2.JPG", "image3.pdf" }

Private options As New BarcodeReaderOptions() With {.Multithreaded = True}

Private batchResults As BarcodeResults = BarcodeReader.Read(ListOfDocuments, options)
$vbLabelText   $csharpLabel

Múltiplos códigos de barras detectados nas páginas de um PDF mostrando a saída do console Saída do console mostrando múltiplos códigos de barras encontrados em diferentes páginas de PDF

Para faixas de páginas específicas ou processamento avançado de PDFs, use BarcodeReaderOptions:

:path=/static-assets/barcode/content-code-examples/tutorials/reading-barcodes-7.cs
// Read only specific pages to improve performance
PdfBarcodeReaderOptions pdfOptions = new PdfBarcodeReaderOptions
{
    // Scan pages 1-5 only
    PageNumbers = new[] { 1, 2, 3, 4, 5 },

    // PDF-specific settings
    DPI = 300 // Higher DPI for better accuracy
};

BarcodeResults results = BarcodeReader.ReadPdf("document.pdf", pdfOptions);
Imports System

' Read only specific pages to improve performance
Dim pdfOptions As New PdfBarcodeReaderOptions With {
    ' Scan pages 1-5 only
    .PageNumbers = New Integer() {1, 2, 3, 4, 5},

    ' PDF-specific settings
    .DPI = 300 ' Higher DPI for better accuracy
}

Dim results As BarcodeResults = BarcodeReader.ReadPdf("document.pdf", pdfOptions)
$vbLabelText   $csharpLabel

Como posso processar imagens TIFF multiframe?

Arquivos TIFF multiframe, comuns em escaneamento de documentos e sistemas de fax, recebem o mesmo suporte abrangente que PDFs.

TIFF multiframe contendo múltiplos códigos de barras em vários quadros Um arquivo TIFF multiframe com códigos de barras em diferentes quadros

:path=/static-assets/barcode/content-code-examples/tutorials/reading-barcodes-8.cs
using IronBarCode;

// TIFF files are processed similarly to regular images
// Each frame is scanned automatically
BarcodeResults multiFrameResults = BarcodeReader.Read("Multiframe.tiff");

foreach (var result in multiFrameResults)
{
    // Access frame-specific information
    int frameNumber = result.PageNumber; // Frame number in TIFF
    string barcodeValue = result.Text;
    
    Console.WriteLine($"Frame {frameNumber}: {barcodeValue}");
    
    // Save individual barcode images if needed
    result.BarcodeImage?.Save($"barcode_frame_{frameNumber}.png");
}
Imports IronBarCode

' TIFF files are processed similarly to regular images
' Each frame is scanned automatically
Dim multiFrameResults As BarcodeResults = BarcodeReader.Read("Multiframe.tiff")

For Each result In multiFrameResults
    ' Access frame-specific information
    Dim frameNumber As Integer = result.PageNumber ' Frame number in TIFF
    Dim barcodeValue As String = result.Text

    Console.WriteLine($"Frame {frameNumber}: {barcodeValue}")

    ' Save individual barcode images if needed
    result.BarcodeImage?.Save($"barcode_frame_{frameNumber}.png")
Next
$vbLabelText   $csharpLabel

Os mesmos BarcodeReaderOptions se aplicam ao processamento de TIFF, incluindo filtros de imagem e configurações de rotação. Para cenários detalhados de manipulação de TIFF, veja nossos tutoriais de processamento de imagem.

Posso acelerar o processamento com multithreading?

O processamento de múltiplos documentos beneficia dramaticamente do processamento paralelo. O IronBarcode utiliza automaticamente os núcleos de CPU disponíveis para desempenho ótimo.

:path=/static-assets/barcode/content-code-examples/tutorials/reading-barcodes-9.cs
using IronBarCode;

// List of documents to process - mix of formats supported
var documentBatch = new[] 
{ 
    "invoice1.pdf", 
    "shipping_label.png", 
    "inventory_sheet.tiff",
    "product_catalog.pdf"
};

// Configure for batch processing
BarcodeReaderOptions batchOptions = new BarcodeReaderOptions
{
    // Enable parallel processing across documents
    Multithreaded = true,
    
    // Limit threads if needed (0 = use all cores)
    MaxParallelThreads = Environment.ProcessorCount,
    
    // Apply consistent settings to all documents
    Speed = ReadingSpeed.Balanced,
    ExpectBarcodeTypes = BarcodeEncoding.All
};

// Process each document, tracking the source path externally
foreach (var document in documentBatch)
{
    BarcodeResults results = BarcodeReader.Read(document, batchOptions);

    Console.WriteLine($"\nDocument: {document}");
    foreach (var barcode in results)
    {
        Console.WriteLine($"  - {barcode.BarcodeType}: {barcode.Text}");
    }
}
Imports IronBarCode

' List of documents to process - mix of formats supported
Dim documentBatch = New String() {
    "invoice1.pdf",
    "shipping_label.png",
    "inventory_sheet.tiff",
    "product_catalog.pdf"
}

' Configure for batch processing
Dim batchOptions As New BarcodeReaderOptions With {
    ' Enable parallel processing across documents
    .Multithreaded = True,

    ' Limit threads if needed (0 = use all cores)
    .MaxParallelThreads = Environment.ProcessorCount,

    ' Apply consistent settings to all documents
    .Speed = ReadingSpeed.Balanced,
    .ExpectBarcodeTypes = BarcodeEncoding.All
}

' Process each document, tracking the source path externally
For Each document In documentBatch
    Dim results As BarcodeResults = BarcodeReader.Read(document, batchOptions)

    Console.WriteLine(vbCrLf & "Document: " & document)
    For Each barcode In results
        Console.WriteLine($"  - {barcode.BarcodeType}: {barcode.Text}")
    Next
Next
$vbLabelText   $csharpLabel

Essa abordagem paralela processa documentos simultaneamente, reduzindo o tempo total de escaneamento em até 75% em sistemas multicore. Para processamento de códigos de barras em escala empresarial, explore nosso guia de otimização de desempenho.

Resumo

O IronBarcode transforma escaneamentos de códigos de barras complexos em código C# simples. Seja você desenvolvendo sistemas de inventário, processadores de documentos ou aplicativos móveis, a biblioteca lida com tudo, desde códigos de barras digitais impecáveis até capturas desafiadoras do mundo real.

Capacidades-chave cobertas:

  • Leitura de código de barras de linha única a partir de imagens
  • Opções avançadas para códigos de barras danificados ou girados
  • Digitalização abrangente de documentos PDF e TIFF
  • Processamento em lote de alto desempenho com multithreading
  • Suporte para todos os principais formatos de código de barras

Leitura complementar

Expanda suas capacidades de processamento de código de barras com estes recursos:

Downloads de Código Fonte

Execute estes exemplos você mesmo:

Pronto para implementar a leitura de códigos de barras em seu aplicativo? Comece seu teste gratuito e adicione leitura de códigos de barras profissional ao seu projeto .NET hoje.

!{--0100110001001001010000100101001001000001010100100101100101011111010001110100010101010100010111110101001101010100010000010101001001010100010001010100010001011111010101110100100101010100010010000101111101010000010 100100100111101000100010101010100001101010100010111110101010001010010010010010100000101001100010111110100010101011000010101000100010101001110010001000100010101000100010111110100001001001100010011110100001101001011--}

Perguntas frequentes

Como posso instalar uma biblioteca de leitura de código de barras em um projeto .NET?

Você pode instalar a biblioteca IronBarcode através do Gerenciador de Pacotes NuGet usando o comando dotnet add package BarCode ou através da interface NuGet do Visual Studio. Como alternativa, baixe o arquivo DLL para instalação manual.

Qual é o método para ler um código de barras a partir de uma imagem usando C#?

Utilize o método BarcodeReader.Read do IronBarcode com uma única linha de código: var results = BarcodeReader.Read('image.png'); Este método detecta e lê todos os formatos de código de barras presentes na imagem.

É possível detectar vários códigos de barras em uma única imagem ou documento?

Sim, o IronBarcode pode detectar e ler automaticamente vários códigos de barras em uma imagem, PDF ou TIFF multiframe, retornando o valor, o tipo e a posição de cada código de barras em uma coleção BarcodeResults .

Como faço para ler códigos de barras de um PDF usando C#?

Utilize o método BarcodeReader.ReadPdf do IronBarcode para escanear todas as páginas de um documento PDF: var results = BarcodeReader.ReadPdf('document.pdf'); Cada resultado inclui o número da página onde o código de barras foi encontrado.

O que devo fazer se as imagens dos códigos de barras estiverem desfocadas ou rotacionadas?

Configure BarcodeReaderOptions para lidar com imagens complexas definindo AutoRotate = true e aplicando filtros de imagem como SharpenFilter ou AdaptiveThresholdFilter . Use Speed = ExtremeDetail para obter maior precisão.

Quais formatos de código de barras são suportados em aplicativos .NET?

O IronBarcode é compatível com todos os principais formatos de código de barras, como QR Code, Code 128, Code 39, EAN-13, UPC-A, Data Matrix, PDF417 e muitos outros. Utilize BarcodeEncoding.All para digitalizar qualquer formato compatível.

Como posso melhorar o desempenho da leitura de código de barras em um aplicativo C#?

Melhore o desempenho especificando os tipos de código de barras esperados com ExpectBarcodeTypes , habilitando o processamento multithread e escolhendo as configurações Speed apropriadas. Para tarefas em lote, utilize BarcodeReader.Read com caminhos de arquivo.

Qual é a abordagem recomendada para lidar com erros de leitura de código de barras?

Encapsule a leitura do código de barras em blocos try-catch e verifique se os resultados são nulos ou vazios. O IronBarcode fornece mensagens de erro detalhadas e uma propriedade de Confiança para indicar a confiabilidade da detecção.

Posso extrair imagens de códigos de barras depois de serem digitalizadas?

Sim, BarcodeResult do IronBarcode inclui uma propriedade BarcodeImage que contém um Bitmap do código de barras detectado, o qual pode ser salvo ou processado separadamente.

Como faço para ler códigos de barras em páginas específicas de um documento PDF?

Defina a propriedade PageNumbers em BarcodeReaderOptions para especificar as páginas: options.PageNumbers = new[] {1, 2, 3}; Isso otimiza o desempenho, escaneando apenas as páginas designadas.

Quais formatos de imagem são compatíveis com a leitura de código de barras no .NET?

O IronBarcode suporta a digitalização em formatos como PNG, JPEG, BMP, GIF, TIFF (incluindo multiframe) e PDF. Você pode carregar imagens a partir de caminhos de arquivo, fluxos ou matrizes de bytes.

Como posso acessar dados binários de códigos de barras escaneados em C#?

Utilize a propriedade BinaryValue de BarcodeResult para obter dados binários brutos, especialmente útil para códigos de barras que contêm dados não textuais, como informações compactadas ou protocolos binários.

Jacob Mellor, Diretor de Tecnologia da Team Iron
Diretor de Tecnologia

Jacob Mellor é Diretor de Tecnologia da Iron Software e um engenheiro visionário pioneiro na tecnologia C# PDF. Como desenvolvedor original do código-fonte principal da Iron Software, ele moldou a arquitetura de produtos da empresa desde sua criação, transformando-a, juntamente com o CEO Cameron Rimington, em uma ...

Leia mais
Pronto para começar?
Nuget Downloads 2,317,217 | Versão: 2026.7 recém-lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package BarCode
executar um exemplo Veja seu fio se transformar em um código de barras.