Cómo leer varios códigos de barras a la vez en C#
IronBarcode permite la lectura simultánea de varios códigos de barras a partir de imágenes y archivos PDF mediante la configuración de ExpectMultipleBarcodes = verdadero, lo que agiliza el procesamiento de datos para aplicaciones de logística, comercio minorista y gestión de inventarios. Tanto si está construyendo sistemas de almacén, aplicaciones de punto de venta minorista o soluciones de procesamiento de documentos, las avanzadas capacidades de lectura de IronBarcode le proporcionan la fiabilidad y el rendimiento que necesita.
Inicio Rápido: Leer Todos los Códigos de Barras de una Imagen Fácilmente
Este ejemplo muestra lo rápido que se puede utilizar IronBarcode para escanear una imagen y obtener todos los códigos de barras que contiene. Sólo tiene que establecer ExpectMultipleBarcodes = verdadero junto a los tipos de código de barras que desee, sin repeticiones ni complicaciones.
Empieza a crear PDF con NuGet ahora:
Instalar IronBarcode con el gestor de paquetes NuGet
Copie y ejecute este fragmento de código.
var results = IronBarCode.BarcodeReader.Read("image.png", new IronBarCode.BarcodeReaderOptions { ExpectMultipleBarcodes = verdadero, ExpectBarcodeTypes = IronBarCode.BarcodeEncoding.AllOneDimensional });Despliegue para probar en su entorno real
Empieza a utilizar IronBarcode en tu proyecto hoy mismo con una prueba gratuita
Flujo de trabajo mínimo (5 pasos)
- Descargue la biblioteca C# para leer múltiples códigos de barras
- Utilice el método
Readpara extraer valores de código de barras de varios formatos de imagen - Utilice la propiedad
ExpectMultipleBarcodespara configurar la lectura de uno o varios códigos de barras - Establezca la propiedad
ExpectMultipleBarcodesen false para aumentar el rendimiento - Imprime los valores de códigos de barras
¿Cómo leer varios BarCodes de una imagen?
Por defecto, IronBarcode escanea continuamente un documento para leer múltiples códigos de barras. Sin embargo, ha habido casos en los que sólo se devuelve un valor de código de barras, incluso cuando hay varios códigos de barras presentes. Para ello, personalice la configuración para permitir la lectura de varios códigos de barras, como se muestra a continuación. La propiedad ExpectMultipleBarcodes existe tanto en las clases BarcodeReaderOptions como en PdfBarcodeReaderOptions, lo que permite utilizarla para leer códigos de barras tanto en imágenes como en documentos PDF.

:path=/static-assets/barcode/content-code-examples/how-to/read-multiple-barcodes-read-multiple-barcodes.csusing IronBarCode;
using System;
// Set the option to read multiple barcodes
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
ExpectMultipleBarcodes = true,
ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional,
};
// Read barcode
var results = BarcodeReader.Read("testbc1.png", options);
foreach (var result in results)
{
Console.WriteLine(result.ToString());
}Establecer ExpectMultipleBarcodes en true permite a IronBarcode escanear todo el documento en busca de múltiples códigos de barras y almacenarlos en la variable BarcodeResults. Utilizando un bucle foreach, puede acceder fácilmente a todos los valores del código de barras e imprimirlos en la consola.
Escenarios avanzados de lectura múltiple de códigos de barras
Al trabajar con varios códigos de barras, es posible que se encuentre con situaciones que requieran una configuración adicional. He aquí un ejemplo exhaustivo que demuestra cómo leer varios códigos de barras con distintos formatos a partir de un documento complejo:
using IronBarCode;
using System;
using System.Linq;
// Configure advanced options for mixed barcode types
BarcodeReaderOptions advancedOptions = new BarcodeReaderOptions()
{
ExpectMultipleBarcodes = verdadero,
// Read both 1D and 2D barcodes
ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional | BarcodeEncoding.QRCode | BarcodeEncoding.DataMatrix,
// Apply image correction filters for better accuracy
ImageFilters = new ImageFilterCollection() {
new SharpenFilter(),
new ContrastFilter()
},
// Set speed vs accuracy balance
Speed = ReadingSpeed.Balanced
};
// Read from various sources
var imageResults = BarcodeReader.Read("mixed-barcodes.jpg", advancedOptions);
var pdfResults = BarcodeReader.ReadPdf("document-with-barcodes.pdf", advancedOptions);
// Process results with error handling
foreach (var result in imageResults)
{
Console.WriteLine($"Barcode Type: {result.BarcodeType}");
Console.WriteLine($"Value: {result.Value}");
Console.WriteLine($"Confidence: {result.Confidence}%");
Console.WriteLine($"Page: {result.PageNumber}");
Console.WriteLine("---");
}using IronBarCode;
using System;
using System.Linq;
// Configure advanced options for mixed barcode types
BarcodeReaderOptions advancedOptions = new BarcodeReaderOptions()
{
ExpectMultipleBarcodes = verdadero,
// Read both 1D and 2D barcodes
ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional | BarcodeEncoding.QRCode | BarcodeEncoding.DataMatrix,
// Apply image correction filters for better accuracy
ImageFilters = new ImageFilterCollection() {
new SharpenFilter(),
new ContrastFilter()
},
// Set speed vs accuracy balance
Speed = ReadingSpeed.Balanced
};
// Read from various sources
var imageResults = BarcodeReader.Read("mixed-barcodes.jpg", advancedOptions);
var pdfResults = BarcodeReader.ReadPdf("document-with-barcodes.pdf", advancedOptions);
// Process results with error handling
foreach (var result in imageResults)
{
Console.WriteLine($"Barcode Type: {result.BarcodeType}");
Console.WriteLine($"Value: {result.Value}");
Console.WriteLine($"Confidence: {result.Confidence}%");
Console.WriteLine($"Page: {result.PageNumber}");
Console.WriteLine("---");
}Este ejemplo avanzado muestra varias características importantes:
- Soporte de formatos de códigos de barras mixtos: Combinación de diferentes tipos de codificación de códigos de barras
- Filtros de corrección de imágenes: Uso de filtros de imagen para mejorar la precisión de la lectura
- Optimización de la velocidad de lectura: equilibrio entre velocidad y precisión con opciones de velocidad de lectura
- Puntuaciones de confianza: Acceso al umbral de confianza de cada código de barras detectado
¿Cómo puedo leer un solo BarCode para mejorar el rendimiento?
IronBarcode lee códigos de barras simples y múltiples en imágenes o PDF. Por defecto, el motor escanea todo el documento aunque solo exista un código de barras. Para aumentar el rendimiento al leer un solo código de barras, establezca ExpectMultipleBarcodes en false. Esto evita que el motor escanee todo el documento después de detectar el primer código de barras, lo que resulta en una recuperación más rápida del código de barras. El siguiente código muestra este enfoque.

:path=/static-assets/barcode/content-code-examples/how-to/read-multiple-barcodes-read-single-barcode.csusing IronBarCode;
using System;
// Set the option to read single barcode
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
ExpectMultipleBarcodes = false,
ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional,
};
// Read barcode
var results = BarcodeReader.Read("testbc1.png", options);
foreach (var result in results)
{
Console.WriteLine(result.ToString());
}En este ejemplo, utilizamos la misma imagen con múltiples códigos de barras que antes, pero establecimos ExpectMultipleBarcodes en false. Como resultado, solo se devuelve el valor del primer código de barras, y el proceso de escaneo se detiene una vez que se recupera el primer código de barras.
Optimización de la lectura de códigos de barras individuales con regiones de recorte
Para obtener un rendimiento aún mejor al leer códigos de barras individuales, combine el ajuste ExpectMultipleBarcodes = falso con especificaciones de región de recorte. Esta técnica es especialmente útil cuando se conoce la ubicación aproximada del código de barras:
using IronBarCode;
using IronSoftware.Drawing;
// Define a crop region where the barcode is likely located
var cropRegion = new Rectangle(100, 100, 300, 200);
// Configure options for optimal single barcode reading
BarcodeReaderOptions optimizedOptions = new BarcodeReaderOptions()
{
ExpectMultipleBarcodes = falso,
ExpectBarcodeTypes = BarcodeEncoding.Code128,
CropArea = cropRegion,
Speed = ReadingSpeed.Faster
};
// Read with optimized settings
var result = BarcodeReader.Read("product-label.png", optimizedOptions).FirstOrDefault();
if (result != null)
{
Console.WriteLine($"Barcode found: {result.Value}");
Console.WriteLine($"Read time: {result.ReadTime}ms");
}using IronBarCode;
using IronSoftware.Drawing;
// Define a crop region where the barcode is likely located
var cropRegion = new Rectangle(100, 100, 300, 200);
// Configure options for optimal single barcode reading
BarcodeReaderOptions optimizedOptions = new BarcodeReaderOptions()
{
ExpectMultipleBarcodes = falso,
ExpectBarcodeTypes = BarcodeEncoding.Code128,
CropArea = cropRegion,
Speed = ReadingSpeed.Faster
};
// Read with optimized settings
var result = BarcodeReader.Read("product-label.png", optimizedOptions).FirstOrDefault();
if (result != null)
{
Console.WriteLine($"Barcode found: {result.Value}");
Console.WriteLine($"Read time: {result.ReadTime}ms");
}¿Cuánto más rápida es la lectura de un solo código de barras?
Establecer ExpectMultipleBarcodes en false mejora en gran medida la eficiencia de la lectura de códigos de barras individuales. El aumento del rendimiento es especialmente notable cuando se trabaja con imágenes de alta resolución o cuando se implementa lectura asíncrona de códigos de barras en aplicaciones de alto rendimiento.
Usando el fragmento de código proporcionado, aquí hay una estimación aproximada de la diferencia de rendimiento entre establecer ExpectMultipleBarcodes en verdadero y falso en la misma máquina:
| ExpectMultipleBarcodes = verdadero | ExpectMultipleBarcodes = falso |
|---|---|
| 00,91 segundos | 00.10 segundos |
Esto representa aproximadamente una mejora de 9 veces el rendimiento al leer códigos de barras individuales. La ganancia de rendimiento real varía en función de:
- Resolución y complejidad de la imagen
- Número de BarCodes presentes en la imagen
- Formatos de códigos de barras seleccionados
- Filtros de imagen aplicados
- Especificaciones de hardware
Mejores prácticas para la lectura múltiple de códigos de barras
Al implementar la lectura de códigos de barras múltiples en aplicaciones de producción, tenga en cuenta estas prácticas recomendadas:
Especifique los tipos de códigos de barras esperados: en lugar de utilizar
BarcodeEncoding.All, especifique solo los formatos que espera. Esto mejora significativamente el rendimiento.Utiliza formatos de imagen adecuados: Para obtener mejores resultados, utilice imágenes de alto contraste. Más información sobre creación de imágenes óptimas de códigos de barras.
Códigos de barras imperfectos: Los códigos de barras del mundo real pueden estar dañados o mal impresos. Utilice técnicas de corrección de imágenes para mejorar los índices de éxito en la lectura.
Procesamiento de flujos: Para grandes lotes, considere leer desde streams para optimizar el uso de memoria.
- Manejo de errores: Implemente siempre un tratamiento de errores adecuado para los escenarios en los que no se puedan leer los códigos de barras:
try
{
var results = BarcodeReader.Read("barcodes.png", new BarcodeReaderOptions
{
ExpectMultipleBarcodes = verdadero
});
if (!results.Any())
{
Console.WriteLine("No barcodes found in the image");
}
else
{
Console.WriteLine($"Found {results.Count()} barcodes");
}
}
catch (Exception ex)
{
Console.WriteLine($"Error reading barcodes: {ex.Message}");
// Log error for debugging
}try
{
var results = BarcodeReader.Read("barcodes.png", new BarcodeReaderOptions
{
ExpectMultipleBarcodes = verdadero
});
if (!results.Any())
{
Console.WriteLine("No barcodes found in the image");
}
else
{
Console.WriteLine($"Found {results.Count()} barcodes");
}
}
catch (Exception ex)
{
Console.WriteLine($"Error reading barcodes: {ex.Message}");
// Log error for debugging
}Siguiendo estas prácticas y utilizando las completas funciones de IronBarcode, podrá crear aplicaciones sólidas que gestionen de forma eficiente múltiples escenarios de lectura de códigos de barras en diversos sectores y casos de uso.
Preguntas Frecuentes
¿Cómo puedo leer varios códigos de barras a partir de una sola imagen en C#?
Con IronBarcode, puede leer varios códigos de barras de una sola imagen estableciendo ExpectMultipleBarcodes = true en BarcodeReaderOptions. Esto permite a IronBarcode escanear todo el documento y devolver todos los códigos de barras encontrados en una colección BarcodeResults que puede recorrer.
¿Cuál es la forma más rápida de escanear todos los códigos de barras de una imagen?
El método más rápido es utilizar el método Read de IronBarcode con ExpectMultipleBarcodes = true: var results = IronBarCode.BarcodeReader.Read("image.png", new IronBarCode.BarcodeReaderOptions { ExpectMultipleBarcodes = true }). Este código mínimo extrae todos los valores del código de barras sin una configuración compleja.
¿Puedo leer varios códigos de barras de documentos PDF, así como imágenes?
Sí, IronBarcode admite la lectura de múltiples códigos de barras tanto de imágenes como de documentos PDF. La propiedad ExpectMultipleBarcodes está disponible en las clases BarcodeReaderOptions y PdfBarcodeReaderOptions, lo que permite configurar la lectura de múltiples códigos de barras para cualquier tipo de documento.
¿Qué ocurre si no establezco ExpectMultipleBarcodes en true?
Por defecto, IronBarcode escanea continuamente los documentos en busca de múltiples códigos de barras. Sin embargo, en algunos casos, es posible que sólo se devuelva un valor de código de barras aunque existan varios. Al establecer ExpectMultipleBarcodes = true se garantiza explícitamente que IronBarcode explore y devuelva todos los códigos de barras del documento.
¿Cómo puedo acceder a los valores individuales de un código de barras después de leer varios códigos de barras?
Tras leer varios códigos de barras con IronBarcode, los resultados se almacenan en una variable BarcodeResults. Puede acceder fácilmente a los valores individuales de los códigos de barras utilizando un bucle foreach para iterar por la colección y procesar las propiedades de valor, texto y formato de cada código de barras.
¿Es adecuada la lectura de múltiples códigos de barras para aplicaciones de venta al por menor y logística?
Sí, la capacidad de lectura de múltiples códigos de barras de IronBarcode es ideal para sistemas de puntos de venta minoristas, gestión de almacenes, seguimiento logístico y aplicaciones de gestión de inventarios. Agiliza el procesamiento de datos mediante la lectura simultánea y eficaz de todos los códigos de barras de etiquetas de envío, catálogos de productos u hojas de inventario.
¿Puedo especificar qué tipos de códigos de barras buscar al leer varios códigos de barras?
Sí, IronBarcode permite especificar los tipos de códigos de barras esperados mediante la propiedad ExpectBarcodeTypes. Puede configurarlo para que escanee formatos específicos como AllOneDimensional, QRCode o cualquier combinación de tipos de códigos de barras compatibles para optimizar el rendimiento del escaneado.
¿Afecta la configuración de ExpectMultipleBarcodes al rendimiento del escaneado?
Establecer ExpectMultipleBarcodes = false puede aumentar el rendimiento cuando se sabe que sólo existe un código de barras en el documento. IronBarcode dejará de escanear después de encontrar el primer código de barras, por lo que es más rápido para los escenarios de un solo código de barras al tiempo que proporciona la flexibilidad para la lectura de múltiples códigos de barras cuando sea necesario.






