Cómo ajustar la velocidad de lectura en C# con IronBarcode

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

La precisión es esencial para la escalabilidad y la lectura de grandes conjuntos de códigos de barras, pero también debe considerarse cómo un lector de códigos de barras asigna sus recursos y cuán eficientemente lo hace. Dependiendo de las imágenes de entrada y la calidad de las propias imágenes, es vital que los desarrolladores decidan cómo debe un lector de códigos de barras abordar y leer las imágenes, como si deben omitir el preprocesamiento de imágenes si las imágenes están claras, o optar por una opción más intensiva en recursos para mejorar la precisión de lectura del lector de códigos de barras.

IronBarCode le proporciona la flexibilidad de elegir la velocidad y precisión del detalle de procesamiento de códigos de barras, permitiéndole ajustar y controlar cada aspecto del proceso. Puede tomar la decisión basada en las imágenes de entrada que tenga y los recursos que desee asignar.

El artículo a continuación sería una guía general sobre la situación más óptima para decidir qué velocidad de lectura usar. Usaríamos un conjunto de muestras de códigos QR para dar breves ejemplos de cómo cambiar la velocidad de lectura afecta los resultados.

Inicio rápido: Leer un código de barras con velocidad equilibrada

Utilice las BarcodeReaderOptions de IronBarcode para establecer instantáneamente el nivel de Speed para su escaneo. Este ejemplo muestra cómo los desarrolladores pueden leer rápidamente códigos de barras utilizando la configuración Balanced para un resultado rápido y confiable.

Nuget IconEmpieza a crear PDF con NuGet ahora:

  1. Instalar IronBarcode con el gestor de paquetes NuGet

    PM > Install-Package BarCode

  2. Copie y ejecute este fragmento de código.

    var results = IronBarCode.BarcodeReader.Read("path/to/image.png", new IronBarCode.BarcodeReaderOptions { Speed = IronBarCode.ReadingSpeed.Balanced });
  3. Despliegue para probar en su entorno real

    Empieza a utilizar IronBarcode en tu proyecto hoy mismo con una prueba gratuita
    arrow pointer


Velocidad de Lectura

Dentro de IronBarCode, los desarrolladores pueden establecer la ReadingSpeed en cuatro opciones diferentes: Faster, Balanced, Detailed y ExtremeDetail. Revisaremos cada una de estas opciones, y un conjunto de muestras como referencia sobre cómo el valor de ReadingSpeed afecta la salida del proceso. El conjunto de muestras contiene una mezcla de imágenes de códigos de barras degradadas y imágenes más claras, inclinándose fuertemente hacia imágenes severamente degradadas para ilustrar la funcionalidad de la biblioteca.

También utilizaremos una popular biblioteca de evaluación de .NET para evaluar los tiempos y el uso de memoria, ilustrando cómo cada opción se compara con las demás y identificando los escenarios y situaciones ideales para cada opción de velocidad de lectura. Mostraremos el código para evaluar con la biblioteca, y también una forma más sencilla de deducir la cantidad de códigos de barras degradados que IronBarCode podría leer.

Opción de Velocidad Más Rápida

El primer valor es Faster. En general, establecer la propiedad Speed en este valor habilita la lectura de códigos de barras más rápida con recursos mínimos, pero conlleva un compromiso de precisión reducida. El proceso omitiría el preprocesamiento de imágenes y, en general, se recomienda si la imagen en sí ya está nítida y clara antes de ser ingresada al proceso.

Para este ejemplo, establecimos la propiedad Speed en ReadingSpeed.Faster, importamos el directorio que contiene todos los códigos de barras e imprimimos cualquier código de barras encontrado, junto con su valor y tipo y el número de códigos de barras encontrados en cada imagen.

: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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

El Faster detectó 146 resultados de códigos de barras de 430 en 25 segundosegundos. Esta opción es rápida y puede decodificar alrededor del 33,95% del código de barras. Aunque rápido, este método generalmente solo es adecuado para imágenes en condiciones prístinas.

Opción de Velocidad Balanceada

El valor Balanced equilibra la precisión y el rendimiento de la lectura. Al aplicar esta configuración, IronBarcode aplica un procesamiento ligero a la imagen para aclarar el área del código de barras, hacerlo destacar para que el lector de códigos de barras lo detecte y facilitar su lectura. En general, esta es la configuración recomendada para la mayoría de las imágenes modernas, ya que el procesamiento ligero debería ser suficiente para producir resultados precisos.

Utilicemos las mismas imágenes y demostremos cómo el valor Balanced afecta los resultados de salida.

: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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

El Balanced detectó 237 resultados de códigos de barras de 430 en 43 segundosegundos. Proporciona una mejora de precisión del 55,11% sobre la opción Faster, con solo un ligero aumento en el tiempo. La opción Balanced mantiene un equilibrio eficiente entre memoria y velocidad, convirtiéndola en la elección ideal para la mayoría de las situaciones, y es el punto de partida recomendado.

Opción de Velocidad Detallada

En situaciones donde las imágenes están fuertemente desenfocadas o distorsionadas y situaciones donde la opción Balanced no puede detectar claramente y producir resultados, los desarrolladores pueden optar por usar la propiedad Detailed para aplicar un preprocesamiento medio a las imágenes para aclarar aún más el área del código de barras y despejar más ruido digital para que el lector de códigos de barras detecte el código de barras.

Apliquemos la configuración Detailed a la propiedad Speed esta vez y veamos si afecta la salida general de las imágenes.

: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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

El Detailed detectó 237 resultados de códigos de barras de 430 en 5 minutos y 30 segundos. Su tasa de éxito del 55,11% en un conjunto de datos de códigos de barras severamente degradados es una prueba de su precisión. Sin embargo, el compromiso es significativo, ya que el tiempo de proceso se incrementa en un margen grande. Por lo tanto, es crucial que esta opción se use exclusivamente para imágenes de códigos de barras degradadas.

Opción de Velocidad de Detalle Extremo

La configuración final de la propiedad Speed es ExtremeDetail, que aplica un procesamiento intensivo a la imagen del código de barras para que el lector pueda leerlo, generalmente reduciendo el rendimiento de lectura de IronBarcode. Esta opción es ideal para escanear grandes cantidades de códigos de barras dentro de un archivo de entrada que también esté claro o borroso en lotes. La operación es intensiva en CPU y debería usarse como último recurso cuando las otras opciones no están produciendo los resultados deseados.

Apliquemos la configuración ExtremeDetail a la propiedad Speed para ver si afecta el resultado.

: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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

La opción ExtremeDetail, con su capacidad de identificar 313 de 430 imágenes de códigos de barras, toma un promedio de 10 minutos por ejecución. Es una herramienta poderosa, adecuada solo como último recurso para opciones muy degradadas debido a su alto consumo de recursos. Puede encontrar la mayoría de los códigos de barras con una impresionante precisión del 72,79% en un conjunto de datos de códigos de barras severamente degradados, pero aún se recomienda realizar preprocesamiento en ellos antes de pasarlos por el buscador de códigos de barras.

Tabla Resumen

Modo Códigos de barras encontrados Tiempo medio Tiempo por archivo Presión de GC Ganancia de precisión
Faster 147/430 (33,95%) 25 segundos 0,058 s Alto (Gen2: 177K) Base
Balanced 237/430 (55,11%) 43 segundos 0,1 segundos Alto (Gen2: 151K) +62,32% frente a Faster
Detailed 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

Elegir la Velocidad Correcta

Después de la breve comparación anterior y los diferentes escenarios mencionados anteriormente, los desarrolladores, en general, deberían intentar desde la configuración más baja Faster y progresar lentamente a través de Balanced, Detailed, ExtremeDetail para ver si hay discrepancias significativas entre la salida. Con respecto a la escalabilidad al usar IronBarCode, en la mayoría de los escenarios, Balanced sería más que suficiente para recorrer todo, y los desarrolladores solo deberían usar Detailed, ExtremeDetail, dependiendo de cuán distorsionadas estén las imágenes. Además, aunque ambas opciones aplican procesamiento medio y pesado a las imágenes al usar Detailed y ExtremeDetail, hay escenarios donde vale más la pena dividir el proceso en dos y aplicar filtros de imagen manualmente antes de colocarlo en el lector de códigos de barras en lugar de usar un proceso único. Para obtener más información sobre el procesamiento de imágenes para el lector de códigos de barras, consulte aquí. Como resumen general, aquí hay una tabla breve y resumen de las situaciones donde cada velocidad variable es apropiada.

Gráfico de Decisión

Salida

Preguntas Frecuentes

¿Cuáles son las opciones de velocidad de lectura en IronBarcode?

IronBarcode te permite ajustar la velocidad de lectura para adecuarse a las necesidades de tu aplicación, optimizando para un procesamiento más rápido o una mayor precisión en la lectura de códigos de barras.

¿Cómo puedo configurar la velocidad de lectura de códigos de barras en IronBarcode?

Puedes configurar la velocidad de lectura en IronBarcode ajustando parámetros específicos en la configuración del lector de códigos de barras, permitiéndote priorizar la velocidad o la precisión.

¿Por qué necesitaría ajustar la velocidad de lectura en IronBarcode?

Ajustar la velocidad de lectura puede ayudar a equilibrar el rendimiento y la precisión, lo cual es crucial en aplicaciones donde se requiere ya sea un procesamiento a alta velocidad o una detección precisa de códigos de barras.

¿Es posible lograr alta precisión y velocidad de lectura rápida simultáneamente en IronBarcode?

Aunque IronBarcode permite un equilibrio personalizable entre velocidad y precisión, lograr la combinación perfecta puede depender del caso de uso específico y la complejidad del código de barras.

¿Qué factores influyen en la elección de las configuraciones de velocidad de lectura en IronBarcode?

Factores como el tipo de códigos de barras que se están escaneando, la calidad de las imágenes y el entorno operativo pueden influir en la elección de las configuraciones de velocidad de lectura en IronBarcode.

¿Puedo cambiar dinámicamente las configuraciones de velocidad de lectura en IronBarcode?

Sí, puedes ajustar dinámicamente las configuraciones de velocidad de lectura en IronBarcode para adaptarse a diferentes condiciones y requisitos de escaneo.

¿Cómo afecta la velocidad de lectura al rendimiento del escaneo de códigos de barras en IronBarcode?

Las configuraciones de velocidad de lectura en IronBarcode afectan la rapidez con la que se procesan los códigos de barras, con velocidades más altas reduciendo potencialmente la precisión y velocidades más bajas mejorando la precisión.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más
¿Listo para empezar?
Nuget Descargas 1,979,979 | Version: 2025.11 recién lanzado