Cómo ajustar la velocidad de lectura en C# con IronBarcode
IronBarcode ofrece cuatro opciones de velocidad de lectura (Faster, Balanced, Detailed, ExtremeDetail) que le permiten controlar el equilibrio entre la velocidad de procesamiento y la precisión al leer BarCodes en C#, siendo Balanced el punto de partida recomendado para la mayoría de las aplicaciones.
Introducción
La precisión es esencial cuando se leen grandes conjuntos de códigos de barras, pero la asignación de recursos y la eficiencia del procesamiento son consideraciones igualmente importantes. La calidad de las imágenes de entrada determina cómo debe procesarlas un lector de códigos de barras: si debe omitir el preprocesamiento para las imágenes claras o utilizar opciones que consuman más recursos para mejorar la precisión de los códigos de barras degradados.
IronBarcode ofrece flexibilidad para elegir la velocidad de procesamiento y el nivel de precisión, lo que permite controlar todos los aspectos del proceso de lectura de códigos de barras. Puede tomar decisiones en función de las imágenes de entrada y los recursos disponibles. Para escenarios de lectura de códigos de barras más avanzados, explore nuestro tutorial completo de lectura de códigos de barras que cubre varios formatos y técnicas.
En este artículo se ofrecen directrices para elegir la velocidad de lectura óptima en diferentes situaciones. Utilizaremos ejemplos de códigos QR para demostrar cómo afecta a los resultados cambiar la velocidad de lectura. Si trabaja específicamente con códigos QR, consulte nuestro tutorial C# QR Code Generator para crear muestras de prueba.
Inicio rápido: Leer un código de barras con velocidad equilibrada
Utilice BarcodeReaderOptions de IronBarcode para establecer al instante el nivel Speed de su escaneo. Este ejemplo muestra cómo leer rápidamente BarCodes utilizando la configuración Balanced para obtener resultados rápidos y fiables.
-
Instala IronBarcode con el Administrador de Paquetes NuGet
PM > Install-Package BarCode -
Copie y ejecute este fragmento de código.
var results = IronBarCode.BarcodeReader.Read("path/to/image.png", new IronBarCode.BarcodeReaderOptions { Speed = IronBarCode.ReadingSpeed.Balanced }); -
Despliegue para probar en su entorno real
Comienza a usar IronBarcode en tu proyecto hoy mismo con una prueba gratuita
Flujo de trabajo mínimo (5 pasos)
- Descargue la biblioteca C# para ajustar la velocidad de lectura
- Utilice la clase BarcodeReaderOptions para establecer la velocidad de lectura
- Utilice el método
Readpara extraer valores de código de barras de varios formatos de imagen - Imprime los valores de códigos de barras
- Evaluar el equilibrio de rendimiento entre diferentes velocidades de lectura
¿Cuáles son las diferentes opciones de velocidad de lectura?
IronBarcode ofrece cuatro opciones: ReadingSpeed, Faster, Balanced, Detailed y ExtremeDetail. Examinaremos cada opción utilizando un conjunto de muestras que contiene imágenes de códigos de barras degradadas en su mayoría, con algunas imágenes claras para demostrar las capacidades de la biblioteca. Para obtener una lista completa de los formatos compatibles, visite nuestra página formatos de códigos de barras compatibles.
Utilizaremos una biblioteca de referencia de .NET para medir el tiempo de procesamiento y el uso de memoria, mostrando cómo se compara cada opción e identificando escenarios ideales para cada velocidad de lectura. Demostraremos un código de evaluación comparativa y un método sencillo para contar los códigos de barras degradados leídos con éxito. Para más detalles sobre la configuración de las opciones del lector, consulte nuestro ejemplo de configuración del lector de códigos de barras.
¿Cuándo debo utilizar la opción de velocidad más rápida?
La opción Faster ofrece la lectura de BarCodes más rápida con un mínimo de recursos, pero reduce la precisión. Este proceso omite el preprocesamiento de imágenes y funciona mejor cuando las imágenes de entrada ya son nítidas y claras.
Este ejemplo establece la propiedad Speed en ReadingSpeed.Faster, importa un directorio de BARCODES e imprime los BARCODES encontrados con sus valores, tipos y recuento por imagen. Para comprender mejor la lectura de códigos de barras a partir de distintos formatos de imagen, consulte nuestra guía sobre lectura de códigos de barras a partir de imágenes.
:path=/static-assets/barcode/content-code-examples/how-to/reading-speed-option-faster.cs
using IronBarCode;
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
var optionsFaster = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Faster
};
// Directory containing PDF files
string folderPath = @"YOUR_FILE_PATH";
// Get all PDF files in the directory
var pdfFiles = Directory.GetFiles(folderPath, "*.jpg");
int countFaster = 0;
var stopwatch = Stopwatch.StartNew();
foreach (var file in pdfFiles)
{
// Read the barcode
var results = BarcodeReader.Read(file, optionsFaster);
if (results.Any())
{
Console.WriteLine($"Barcode(s) found in: {Path.GetFileName(file)}");
foreach (var result in results)
{
Console.WriteLine($" Value: {result.Value}, Type: {result.BarcodeType}");
countFaster++;
}
}
else
{
Console.WriteLine($"No barcode found in: {Path.GetFileName(file)}");
}
}
stopwatch.Stop();
// Print number of images the barcode reader could decode
Console.WriteLine($"Faster could read = {countFaster} out of {pdfFiles.Length} in {stopwatch.ElapsedMilliseconds}ms");
Imports IronBarCode
Imports System
Imports System.Diagnostics
Imports System.IO
Imports System.Linq
Dim optionsFaster As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Faster
}
' Directory containing PDF files
Dim folderPath As String = "YOUR_FILE_PATH"
' Get all PDF files in the directory
Dim pdfFiles = Directory.GetFiles(folderPath, "*.jpg")
Dim countFaster As Integer = 0
Dim stopwatch As Stopwatch = Stopwatch.StartNew()
For Each file In pdfFiles
' Read the barcode
Dim results = BarcodeReader.Read(file, optionsFaster)
If results.Any() Then
Console.WriteLine($"Barcode(s) found in: {Path.GetFileName(file)}")
For Each result In results
Console.WriteLine($" Value: {result.Value}, Type: {result.BarcodeType}")
countFaster += 1
Next
Else
Console.WriteLine($"No barcode found in: {Path.GetFileName(file)}")
End If
Next
stopwatch.Stop()
' Print number of images the barcode reader could decode
Console.WriteLine($"Faster could read = {countFaster} out of {pdfFiles.Length} in {stopwatch.ElapsedMilliseconds}ms")
La opción Faster detectó 146 resultados de BarCodes de un total de 430 en 25 segundosegundos, alcanzando una precisión del 33,95 %. Aunque es rápido, este método sólo se adapta a condiciones de imagen prístinas. Cuando trabaje con varios códigos de barras en una sola imagen, tenga en cuenta nuestra guía sobre lectura de varios códigos de barras para una configuración óptima.
¿Por qué Balanced es la opción de velocidad recomendada?
La opción Balanced equilibra la precisión y la legibilidad. IronBarcode aplica un ligero procesamiento de imágenes para aclarar el área del código de barras, facilitando su detección y lectura. Se recomienda esta configuración para la mayoría de las imágenes modernas, ya que un procesamiento ligero suele producir resultados precisos.
Usemos las mismas imágenes para demostrar cómo Balanced afecta a los resultados de salida. Para operaciones asíncronas, explore nuestra guía sobre async y multithreading con IronBarcode.
:path=/static-assets/barcode/content-code-examples/how-to/reading-speed-option-balanced.cs
using IronBarCode;
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
var optionsFaster = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced
};
// Directory containing PDF files
string folderPath = @"YOUR_FILE_PATH";
// Get all PDF files in the directory
var pdfFiles = Directory.GetFiles(folderPath, "*.jpg");
int countFaster = 0;
var stopwatch = Stopwatch.StartNew();
foreach (var file in pdfFiles)
{
// Read the barcode
var results = BarcodeReader.Read(file, optionsFaster);
if (results.Any())
{
Console.WriteLine($"Barcode(s) found in: {Path.GetFileName(file)}");
foreach (var result in results)
{
Console.WriteLine($" Value: {result.Value}, Type: {result.BarcodeType}");
countFaster++;
}
}
else
{
Console.WriteLine($"No barcode found in: {Path.GetFileName(file)}");
}
}
stopwatch.Stop();
// Print number of images the barcode reader could decode
Console.WriteLine($"Balanced could read = {countFaster} out of {pdfFiles.Length} in {stopwatch.ElapsedMilliseconds}ms");
Imports IronBarCode
Imports System
Imports System.Diagnostics
Imports System.IO
Imports System.Linq
Dim optionsFaster As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Balanced
}
' Directory containing PDF files
Dim folderPath As String = "YOUR_FILE_PATH"
' Get all PDF files in the directory
Dim pdfFiles = Directory.GetFiles(folderPath, "*.jpg")
Dim countFaster As Integer = 0
Dim stopwatch As Stopwatch = Stopwatch.StartNew()
For Each file In pdfFiles
' Read the barcode
Dim results = BarcodeReader.Read(file, optionsFaster)
If results.Any() Then
Console.WriteLine($"Barcode(s) found in: {Path.GetFileName(file)}")
For Each result In results
Console.WriteLine($" Value: {result.Value}, Type: {result.BarcodeType}")
countFaster += 1
Next
Else
Console.WriteLine($"No barcode found in: {Path.GetFileName(file)}")
End If
Next
stopwatch.Stop()
' Print number of images the barcode reader could decode
Console.WriteLine($"Balanced could read = {countFaster} out of {pdfFiles.Length} in {stopwatch.ElapsedMilliseconds}ms")
La opción Balanced detectó 237 resultados de BarCodes de un total de 430 en 43 segundosegundos. Ofrece una precisión del 55,11 % —una mejora significativa con respecto a Faster— con solo un ligero aumento del tiempo. Esta opción mantiene un equilibrio eficaz entre memoria y velocidad, por lo que es ideal para la mayoría de las situaciones y el punto de partida recomendado. Este enfoque equilibrado funciona especialmente bien con técnicas adecuadas de preprocesamiento de imágenes.
¿Cuándo necesito la opción de velocidad detallada?
Cuando las imágenes estén muy borrosas o distorsionadas y Balanced no pueda producir resultados claros, utilice la opción Detailed. Aplica un preprocesamiento medio para aclarar el área del código de barras y reducir el ruido digital para una mejor detección. Para imágenes muy degradadas, consulte nuestra guía de corrección de imágenes que cubre varias técnicas de preprocesamiento.
Apliquemos la configuración Detailed y observemos su efecto en el resultado.
:path=/static-assets/barcode/content-code-examples/how-to/reading-speed-option-detailed.cs
using IronBarCode;
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
var optionsFaster = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Detailed
};
// Directory containing PDF files
string folderPath = @"YOUR_FILE_PATH";
// Get all PDF files in the directory
var pdfFiles = Directory.GetFiles(folderPath, "*.jpg");
int countFaster = 0;
var stopwatch = Stopwatch.StartNew();
foreach (var file in pdfFiles)
{
// Read the barcode
var results = BarcodeReader.Read(file, optionsFaster);
if (results.Any())
{
Console.WriteLine($"Barcode(s) found in: {Path.GetFileName(file)}");
foreach (var result in results)
{
Console.WriteLine($" Value: {result.Value}, Type: {result.BarcodeType}");
countFaster++;
}
}
else
{
Console.WriteLine($"No barcode found in: {Path.GetFileName(file)}");
}
}
stopwatch.Stop();
// Print number of images the barcode reader could decode
Console.WriteLine($"Detailed could read = {countFaster} out of {pdfFiles.Length} in {stopwatch.ElapsedMilliseconds}ms");
Imports IronBarCode
Imports System
Imports System.Diagnostics
Imports System.IO
Imports System.Linq
Dim optionsFaster As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Detailed
}
' Directory containing PDF files
Dim folderPath As String = "YOUR_FILE_PATH"
' Get all PDF files in the directory
Dim pdfFiles = Directory.GetFiles(folderPath, "*.jpg")
Dim countFaster As Integer = 0
Dim stopwatch As Stopwatch = Stopwatch.StartNew()
For Each file In pdfFiles
' Read the barcode
Dim results = BarcodeReader.Read(file, optionsFaster)
If results.Any() Then
Console.WriteLine($"Barcode(s) found in: {Path.GetFileName(file)}")
For Each result In results
Console.WriteLine($" Value: {result.Value}, Type: {result.BarcodeType}")
countFaster += 1
Next
Else
Console.WriteLine($"No barcode found in: {Path.GetFileName(file)}")
End If
Next
stopwatch.Stop()
' Print number of images the barcode reader could decode
Console.WriteLine($"Detailed could read = {countFaster} out of {pdfFiles.Length} in {stopwatch.ElapsedMilliseconds}ms")
La opción Detailed detectó 237 resultados de BarCodes de un total de 430 en 5 minutos y 30 segundos. Su tasa de éxito del 55,11 % en códigos de barras muy degradados demuestra su precisión. Sin embargo, el considerable aumento del tiempo de procesamiento hace que esta opción deba reservarse exclusivamente para imágenes de códigos de barras degradadas. Cuando trabaje con códigos de barras imperfectos, consulte nuestro ejemplo de manejo de códigos de barras imperfectos para conocer estrategias adicionales.
¿Qué situaciones requieren una velocidad de detalle extrema?
La configuración ExtremeDetail aplica un procesamiento intensivo a las imágenes de BarCode, lo que reduce significativamente el rendimiento de lectura. Esta opción, que consume mucha CPU, funciona mejor para escanear varios códigos de barras poco claros o borrosos dentro de un mismo archivo de entrada. Utilícela como último recurso cuando otras opciones no produzcan los resultados deseados. Para situaciones de procesamiento de gran volumen, explore lectura de códigos de barras de archivos PDF, que a menudo contienen varios códigos de barras por página.
Apliquemos la configuración ExtremeDetail para observar su impacto.
:path=/static-assets/barcode/content-code-examples/how-to/reading-speed-option-extreme-detailed.cs
using IronBarCode;
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
var optionsFaster = new BarcodeReaderOptions
{
Speed = ReadingSpeed.ExtremeDetail
};
// Directory containing PDF files
string folderPath = @"YOUR_FILE_PATH";
// Get all PDF files in the directory
var pdfFiles = Directory.GetFiles(folderPath, "*.jpg");
int countFaster = 0;
var stopwatch = Stopwatch.StartNew();
foreach (var file in pdfFiles)
{
// Read the barcode
var results = BarcodeReader.Read(file, optionsFaster);
if (results.Any())
{
Console.WriteLine($"Barcode(s) found in: {Path.GetFileName(file)}");
foreach (var result in results)
{
Console.WriteLine($" Value: {result.Value}, Type: {result.BarcodeType}");
countFaster++;
}
}
else
{
Console.WriteLine($"No barcode found in: {Path.GetFileName(file)}");
}
}
stopwatch.Stop();
// Print number of images the barcode reader could decode
Console.WriteLine($"ExtremeDetail could read = {countFaster} out of {pdfFiles.Length} in {stopwatch.ElapsedMilliseconds}ms");
Imports IronBarCode
Imports System
Imports System.Diagnostics
Imports System.IO
Imports System.Linq
Dim optionsFaster As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.ExtremeDetail
}
' Directory containing PDF files
Dim folderPath As String = "YOUR_FILE_PATH"
' Get all PDF files in the directory
Dim pdfFiles = Directory.GetFiles(folderPath, "*.jpg")
Dim countFaster As Integer = 0
Dim stopwatch As Stopwatch = Stopwatch.StartNew()
For Each file In pdfFiles
' Read the barcode
Dim results = BarcodeReader.Read(file, optionsFaster)
If results.Any() Then
Console.WriteLine($"Barcode(s) found in: {Path.GetFileName(file)}")
For Each result In results
Console.WriteLine($" Value: {result.Value}, Type: {result.BarcodeType}")
countFaster += 1
Next
Else
Console.WriteLine($"No barcode found in: {Path.GetFileName(file)}")
End If
Next
stopwatch.Stop()
' Print number of images the barcode reader could decode
Console.WriteLine($"ExtremeDetail could read = {countFaster} out of {pdfFiles.Length} in {stopwatch.ElapsedMilliseconds}ms")
La opción ExtremeDetail identificó 313 de las 430 imágenes de BarCodes en aproximadamente 10 minutos. Aunque alcanza una impresionante precisión del 72,79% en códigos de barras muy degradados, su elevado consumo de recursos hace que solo sea adecuado como último recurso. Considere la posibilidad de preprocesar las imágenes antes de utilizar esta opción.
¿Cómo se comparan las distintas velocidades?
| Modo | Códigos de barras encontrados | Tiempo medio | Tiempo por archivo | Presión de GC | Ganancia de precisión |
|---|---|---|---|---|---|
| Más rápido | 147/430 (33,95%) | 25 segundos | 0,058 s | Alto (Gen2: 177K) | Base |
| Equilibrado | 237/430 (55,11%) | 43 segundos | 0,1 segundos | Alto (Gen2: 151K) | +62,32% vs Más rápido |
| Detallado | 237/430 (55,11%) | 5,50 minutos | 0,767 s | Muy alto (Gen2: 297K) | +0% vs Equilibrado |
| Detalle extremo | 313/430 (72,79%) | 10.14 minutos | 1.414 segundos | Extremo (Gen2: 4,74 millones) | +32,08% vs Detallado |
¿Cómo elegir la velocidad adecuada para mi aplicación?
Basándose en las comparaciones anteriores, comience con la configuración Faster y avance por Balanced, Detailed y ExtremeDetail para identificar diferencias significativas en el resultado. En la mayoría de los casos, Balanced se encarga de todo adecuadamente. Utilice Detailed y ExtremeDetail solo para imágenes muy distorsionadas. En el caso de BarCodes delgados o de baja calidad, combine su configuración de velocidad con MinScanLines = 1 para aumentar la sensibilidad de detección.
Aunque Detailed y ExtremeDetail aplican un procesamiento medio y pesado, a veces es más eficiente dividir el proceso: aplicar filtros de imagen manualmente antes de la lectura del BARCODE en lugar de utilizar un único proceso. Para obtener más información sobre el preprocesamiento de imágenes, consulte esta guía.
¿Qué configuración de velocidad se ajusta a mi caso de uso?
Preguntas Frecuentes
¿Cuáles son las cuatro opciones de velocidad de lectura de códigos de barras disponibles?
IronBarcode ofrece cuatro opciones de velocidad de lectura: Faster, Balanced, Detailed y ExtremeDetail. Cada opción proporciona un equilibrio diferente entre velocidad de procesamiento y precisión, siendo Balanced el punto de partida recomendado para la mayoría de las aplicaciones.
¿Cómo se ajusta la velocidad de lectura al escanear códigos de barras?
Puede establecer la velocidad de lectura mediante la clase BarcodeReaderOptions de IronBarcode. Simplemente cree un nuevo objeto BarcodeReaderOptions y establezca la propiedad Speed en el valor ReadingSpeed que desee (Faster, Balanced, Detailed o ExtremeDetail), luego páselo al método Read.
¿Qué opción de velocidad de lectura debo utilizar para mi solicitud?
IronBarcode recomienda comenzar con la configuración de velocidad Equilibrada para la mayoría de las aplicaciones. Si dispone de imágenes de códigos de barras claras y de alta calidad, puede utilizar el modo Más rápido. En el caso de imágenes degradadas o de baja calidad, considere la posibilidad de utilizar los modos Detallado o Detalleextremo para obtener una mayor precisión.
¿Cuál es el equilibrio entre las distintas opciones de velocidad de lectura?
El compromiso en las velocidades de lectura de IronBarcode está entre la velocidad de procesamiento y la precisión. El modo más rápido procesa las imágenes con rapidez, pero puede pasar por alto códigos de barras en imágenes de baja calidad. El modo ExtremeDetail proporciona la máxima precisión, pero requiere más tiempo de procesamiento y recursos de memoria.
¿Puedo leer varios formatos de códigos de barras con diferentes velocidades?
Sí, IronBarcode admite la lectura de varios formatos de códigos de barras, incluidos los códigos QR, con todos los ajustes de velocidad. La configuración de velocidad afecta al enfoque de procesamiento, pero no limita los tipos de códigos de barras que puede leer. Visite la página de formatos de código de barras compatibles para obtener una lista completa.
¿Cómo afecta la calidad de la imagen a la velocidad de lectura que debo elegir?
La calidad de la imagen afecta directamente a su selección de velocidad en IronBarcode. Las imágenes de códigos de barras claras y de alta calidad se pueden procesar eficazmente con el modo Faster. Las imágenes degradadas, borrosas o de bajo contraste requieren los modos Detallado o Detalle extremo para garantizar una detección y lectura precisas de los códigos de barras.
¿Cuál es el flujo de trabajo mínimo para leer códigos de barras con opciones de velocidad?
El flujo de trabajo mínimo con IronBarcode consta de 5 pasos: 1) Descargar la biblioteca de C#, 2) Utilizar BarcodeReaderOptions para establecer la velocidad de lectura, 3) Llamar al método Read con la ruta de la imagen, 4) Extraer e imprimir los valores del código de barras, 5) Evaluar las compensaciones de rendimiento entre las diferentes velocidades.
¿Cómo puedo medir el impacto en el rendimiento de las diferentes velocidades de lectura?
El rendimiento de IronBarcode con diferentes velocidades de lectura puede medirse utilizando bibliotecas de referencia .NET para realizar un seguimiento del tiempo de procesamiento y el uso de memoria. Esto le ayuda a identificar la configuración de velocidad óptima para su caso de uso específico y sus limitaciones de recursos.

