Cómo leer códigos de barras de imágenes en C#

Cómo leer códigos de barras a partir de imágenes usando C

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

Una de las características clave de IronBarcode es su capacidad para leer códigos de barras directamente en múltiples formatos de imagen. Los siguientes formatos de imagen son actualmente soportados por IronBarcode:

  • Gráficos Vectoriales Escalables (SVG)
  • Grupo de Expertos en Fotografía (JPEG)
  • Gráficos de Red Portátiles (PNG)
  • Formato de Intercambio de Gráficos (GIF)
  • Formato de Archivo de Imagen Etiquetada (TIFF)
  • Archivo de Imagen BMP

This is made possible with the help of our open source library, IronDrawing.

como-título:2(Inicio Rápido: Leer Códigos de Barras de una Imagen en Segundos)

Con solo una llamada simple a IronBarCode.BarcodeReader.Read(), puedes extraer datos de códigos de barras directamente de formatos de archivos de imagen como PNG, JPEG, GIF, BMP, y TIFF. Comienza al instante—sin configuración compleja, solo resultados inmediatos.

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");
  3. Despliegue para probar en su entorno real

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

Leer códigos de barras directamente desde las imágenes

Ahora, veamos cómo podemos utilizar realmente IronBarcode para la lectura de códigos de barras:

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-images-1.cs
using IronBarCode;
using System;

var myBarcode = BarcodeReader.Read(@"image_file_path.jpg"); //image file path

foreach (var item in myBarcode)
{
    Console.WriteLine(item.ToString());
}
Imports IronBarCode
Imports System

Private myBarcode = BarcodeReader.Read("image_file_path.jpg") 'image file path

For Each item In myBarcode
	Console.WriteLine(item.ToString())
Next item
$vbLabelText   $csharpLabel
QRcodeintro related to Leer códigos de barras directamente desde las imágenes
Código QR de prueba de muestra
Code128intro related to Leer códigos de barras directamente desde las imágenes
Código de barras de prueba de muestra

¿Quieres saber cuáles son los valores del código de barras en las muestras? ¡Pruébalo con el fragmento de código!

Para usar IronBarcode, lo primero que tienes que hacer es instalar la biblioteca IronBarcode a través del administrador de paquetes NuGet de Microsoft Visual Studio en tu proyecto, como se muestra en la imagen a continuación. Esto te permitirá acceder al método BarcodeReader.Read() de IronBarcode para leer directamente imágenes de códigos de barras.

IronBarcode ofrece simplicidad al permitir a los usuarios utilizar únicamente BarcodeReader.Read() para leer un archivo de imagen que ya ha sido incluido dentro del proyecto especificando la cadena nombre de archivo, O la cadena ruta de archivo como parámetro para el método. La mejor práctica es usar el literal de cadena textual, "@" al especificar una ruta de archivo en el método para evitar agregar múltiples caracteres de escape "" en la cadena de ruta del archivo.

Adjunta el método Values() al final de la llamada al método BarcodeReader.Read() para obtener el valor del código de barras como un objeto System.String[].

Para mostrar el resultado en la consola, puedes usar un bucle foreach para iterar sobre los valores almacenados en el array string[] y dentro del bloque del bucle, llamar al método Console.WriteLine() con la variable iteradora como parámetro.

IronBarcode es capaz de leer formatos de código de barras unidimensionales (Codabar, Code128, Code39, Code93, EAN13, EAN18, ITF, MSI, UPCA, UPCE) así como formatos de código de barras bidimensionales (Aztec, DataMatrix, QRCode) en varios formatos de imagen.

Configuración de las opciones del lector de código de barras

¿La lectura de códigos de barras es demasiado lenta? ¿Es el código de barras demasiado pequeño en la imagen, lo que hace que IronBarcode no pueda leerlo? ¿Quieres leer solo ciertas áreas de una imagen? ¿Quieres leer solo ciertos tipos de códigos de barras en una imagen con una mezcla de códigos de barras? ¿Quieres mejorar el rendimiento general de la lectura? ¡No te preocupes más!

BarcodeReaderOptions permite a los usuarios ajustar o modificar el comportamiento del lector de códigos de barras para que pueda abordar todos los problemas mencionados anteriormente. Veamos y discutamos en detalle todas las propiedades ajustables disponibles en BarcodeReaderOptions una por una.

Área de cultivo

CropArea es una propiedad del tipo Iron Software.Drawing.CropRectangle disponible en BarcodeReaderOptions que permite a los usuarios especificar el área en la imagen que IronBarcode debería leer. Esto ayuda a mejorar el rendimiento de la lectura, ya que el lector de códigos de barras no escanea toda la imagen en busca de códigos de barras, además de mejorar la precisión de la lectura, ya que se ha especificado el área de lectura.

Para establecer la propiedad CropArea, simplemente instancia un nuevo objeto del tipo Rectangle y especifica las coordenadas del rectángulo, ancho y longitud del rectángulo como argumentos. La unidad de medida aceptada son los píxeles (px).

// Example of setting CropArea
var cropArea = new IronSoftware.Drawing.Rectangle(x, y, width, height);
// Example of setting CropArea
var cropArea = new IronSoftware.Drawing.Rectangle(x, y, width, height);
' Example of setting CropArea
Dim cropArea = New IronSoftware.Drawing.Rectangle(x, y, width, height)
$vbLabelText   $csharpLabel

ExpectBarcodeTypes

Por defecto, todos los códigos de barras soportados en IronBarcode serán escaneados en una imagen. Sin embargo, si el usuario sabe qué tipos de códigos de barras están disponibles o quieren ser leídos en una imagen, establecer esta propiedad para leer solo ciertos tipos de códigos de barras mejorará enormemente el rendimiento y la precisión de la lectura, ya que el lector de códigos de barras no necesita iterar a través de colecciones de códigos de barras para interpretar y leer un código de barras.

Para utilizar esta propiedad, simplemente establece el ExpectBarcodeTypes en uno de los campos del enum BarcodeEncoding. A continuación, presentamos ejemplos de cada tipo de código de barras soportado por IronBarcode.

Aquí hay una lista de los tipos de códigos de barras con ejemplos y explicaciones proporcionados anteriormente.

Esperar múltiples códigos de barras

IronBarcode escaneará todos los códigos de barras disponibles en una imagen por defecto, lo que incluye escanear todo el archivo de imagen y agregar los valores de los códigos de barras leídos en la matriz de cadenas. Sin embargo, si los usuarios no desean leer múltiples códigos de barras en un archivo de imagen, los usuarios pueden establecer esta propiedad en false, lo que hará que el lector de códigos de barras deje de escanear una vez que se haya encontrado un valor de código de barras. Esto nuevamente, mejorará el rendimiento y la velocidad de lectura de IronBarcode.

Filtros de imagen

Una de las propiedades que se pueden agregar en BarcodeReaderOptions es una colección de filtros de imagen. Los filtros de imagen son importantes para el pre-procesamiento de la imagen en bruto alimentada a IronBarcode. Para aplicar filtros de imagen dentro de BarcodeReaderOptions, los usuarios deben iniciar y especificar la colección ImageFilter a usar.

Máximo de subprocesos paralelos

IronBarcode permite a los usuarios habilitar y ajustar la cantidad de ejecución de hilos paralelos, lo que a su vez mejorará la velocidad y eficiencia del proceso. Los hilos paralelos significan la ejecución de múltiples hilos simultáneamente en diferentes núcleos del procesador. La cantidad predeterminada para la propiedad MaxParallelThread en IronBarcode es 4. Los usuarios pueden ajustarlos en función de las capacidades y recursos que tenga su máquina.

Multiproceso

Esta propiedad permite a IronBarcode leer múltiples imágenes en paralelo. El valor predeterminado para Multithreaded es true, por lo tanto, los múltiples hilos se administrarán automáticamente para mejorar el rendimiento en tareas de lectura de códigos de barras por lotes.

Eliminar falso positivo

Esta propiedad elimina cualquier lectura de código de barras incorrecta positiva. Lecturas falsas son solo lecturas erróneas marcadas como válidas. Esto puede suceder debido a errores en el proceso de secuenciación o errores en el etiquetado o preparación del código de barras. Por lo tanto, establecer RemoveFalsePositive como verdadero eliminará las lecturas de códigos de barras incorrectas positivas, mejorando así la precisión de la lectura de códigos de barras. Sin embargo, si los usuarios optan por rendimiento a costa de la precisión, establecer esta propiedad en false ayudaría. El valor por defecto para esta propiedad es true.

Modo de escaneo

Define cómo IronBarcode escanea y detecta códigos de barras en una imagen.

  • Auto: Lee códigos de barras con pre-procesamiento automático de imagen y las opciones de lector más óptimas configuradas. Recomendado para mejores resultados y rendimiento.
  • SoloModeloDeDetección: Escanea la imagen en busca de códigos de barras y devuelve sus posiciones como una matriz de Iron Software.Drawing.PointF. Este modo no lee los códigos de barras detectados; solo devuelve las posiciones de cada código de barras.
  • EscaneoConAprendizajeAutomático: Escanea la imagen en busca de códigos de barras con detección de aprendizaje automático y los lee.
  • SoloEscaneoBásico: Lee códigos de barras sin detección de aprendizaje automático, pre-procesamiento automático de imagen, o configuración de opciones de lector. Esta opción se puede usar solo con IronBarCode.Slim.

Velocidad de lectura

Como su nombre lo indica, la propiedad Speed permite a los usuarios optimizar aún más el rendimiento del lector IronBarcode. Similar a la propiedad RemoveFalsePositive, ajustar esta propiedad mejora el rendimiento a costa de la precisión. Acepta el enum ReadingSpeed, que tiene 4 niveles como se muestra a continuación:

  • Más Rápido: Permite la lectura de códigos de barras más rápida, pero reduce la precisión. El proceso omite el pre-procesamiento de la imagen, a menudo resultando en resultados de códigos de barras vacíos. Usa esta configuración solo si la imagen de entrada es nítida y clara.
  • Equilibrado: Esta configuración es recomendada para la propiedad Speed. Establece un equilibrio entre precisión y rendimiento de lectura al intentar aplicar un procesamiento ligero a la imagen para esclarecer el área del código de barras y hacerlo más destacado para que el lector de códigos de barras lo detecte. La mayoría de las veces, esta configuración es suficiente para que IronBarcode lea una imagen de código de barras y produzca una salida precisa.
  • Detallado: Para casos donde usar la configuración ReadingSpeed.Balanced no es exitoso en producir valores de códigos de barras de la lectura, los usuarios pueden optar por usar ReadingSpeed.Detailed. IronBarcode realizará un procesamiento medio en la imagen para esclarecer el área del código de barras aún más y garantizar que el lector de código de barras detecte el código de barras. Esta configuración es muy útil para detectar una imagen de código de barras pequeña o menos nítida.
  • Detalle Extremo: Esta configuración es la menos recomendada debido a su proceso intensivo en el CPU. Se realizará un procesamiento intensivo en la imagen del código de barras para que el lector pueda leer los códigos de barras. Esto reducirá en gran medida el rendimiento de lectura de IronBarcode. Se aconseja a los usuarios que realicen pre-procesamiento de imagen/aplicación de filtros en la imagen antes de optar por esta configuración.

UseCode39ModoExtendido

Esta configuración permite que los códigos de barras de tipo Code39 sean leídos e interpretados con el modo extendido, aplicando el conjunto completo de caracteres ASCII. Establecer UseCode39ExtendedMode en true permitirá una lectura más precisa de los códigos de barras Code39.

Lectura avanzada de códigos de barras a partir de imágenes

Ahora que hemos aprendido todas las opciones que pueden ajustar los usuarios, ya sea para aumentar el rendimiento o la precisión, veamos cómo podemos aplicarlo en nuestro código. El fragmento de código a continuación lo demuestra.

// Insert actual C# code for advanced barcode reading from images here
// Ensure the necessary options and settings are demonstrated in the example
// Insert actual C# code for advanced barcode reading from images here
// Ensure the necessary options and settings are demonstrated in the example
' Insert actual C# code for advanced barcode reading from images here
' Ensure the necessary options and settings are demonstrated in the example
$vbLabelText   $csharpLabel

Del fragmento de código, vemos que para usar BarcodeReaderOptions, primero debemos inicializarlo, luego determinar y ajustar las propiedades de BarcodeReaderOptions de acuerdo a las propiedades mencionadas anteriormente. El BarcodeReaderOptions inicializado puede luego usarse como un argumento en el método BarcodeReader.Read() junto con el archivo de imagen. Esto aplicará todas las configuraciones en BarcodeReaderOptions al leer un código de barras desde la imagen.

Preguntas Frecuentes

¿Cómo puedo leer códigos de barras de imágenes en una aplicación .NET?

Puedes usar el método BarcodeReader.Read() de IronBarcode para leer códigos de barras de archivos de imagen como JPEG, PNG, GIF, TIFF, SVG y BMP.

¿Qué opciones están disponibles para personalizar la lectura de códigos de barras en IronBarcode?

La clase BarcodeReaderOptions permite la personalización de la lectura de códigos de barras configurando propiedades como CropArea, ExpectBarcodeTypes, ImageFilters, MaxParallelThreads y RemoveFalsePositive.

¿Cómo puedo mejorar la precisión de lectura de códigos de barras en mi aplicación?

Mejorar la precisión de lectura de códigos de barras se puede lograr utilizando la propiedad RemoveFalsePositive para eliminar falsos positivos y ajustando la velocidad de lectura con opciones como Detailed o ExtremeDetail.

¿Es posible realizar la lectura de códigos de barras en múltiples hilos en .NET?

Sí, IronBarcode soporta la lectura de códigos de barras en múltiples hilos. Puedes habilitar esto configurando la propiedad Multithreaded a true, lo que permite la gestión automática de hilos.

¿Cómo especifico una región de una imagen para escanear códigos de barras?

Puedes especificar una región dentro de una imagen para escanear configurando la propiedad CropArea en la clase BarcodeReaderOptions en IronBarcode.

¿Cuáles son los beneficios de usar el aprendizaje automático en la lectura de códigos de barras?

Usar aprendizaje automático para la detección de códigos de barras puede mejorar la precisión y eficiencia de la lectura al adaptarse a varias condiciones de imagen y mejorar las capacidades de reconocimiento en IronBarcode.

¿Cómo puedo manejar diferentes formatos de código de barras en IronBarcode?

IronBarcode es capaz de leer formatos de código de barras 1D y 2D. Puedes especificar los tipos de códigos de barras a esperar utilizando la propiedad ExpectBarcodeTypes.

¿Cuál es el proceso para instalar una biblioteca de lectura de códigos de barras en un proyecto .NET?

Para instalar la biblioteca IronBarcode en un proyecto .NET, usa el gestor de paquetes NuGet en Microsoft Visual Studio para descargar e integrar la biblioteca.

¿Qué opciones de preprocesamiento de imágenes están disponibles en IronBarcode?

IronBarcode proporciona opciones de preprocesamiento de imágenes a través de la propiedad ImageFilters, permitiendo a los usuarios mejorar las imágenes antes de leer los códigos de barras.

¿Cómo optimizo el rendimiento de lectura de códigos de barras para archivos de imagen grandes?

Optimiza el rendimiento configurando el MaxParallelThreads para utilizar múltiples hilos y ajustando la velocidad de lectura según tus necesidades.

Hairil Hasyimi Bin Omar
Ingeniero de Software
Como todos los grandes ingenieros, Hairil es un ávido aprendiz. Está refinando su conocimiento de C#, Python y Java, usando ese conocimiento para agregar valor a los miembros del equipo en Iron Software. Hairil se unió al equipo de Iron Software desde la Universiti Teknologi MARA en Malasia, donde se ...
Leer más
¿Listo para empezar?
Nuget Descargas 1,979,979 | Version: 2025.11 recién lanzado