Cómo leer códigos de barras de archivos de imagen (jpg, png, gif, tiff, svg, bmp)
Cómo leer códigos de barras desde una imagen en C#
![Cómo leer códigos de barras desde una imagen en C#](/static-assets/barcode/images/How-to-read-Barcodes-from-Image-Files.webp)
- Descargar biblioteca C# para leer códigos de barras a partir de imágenes
- Utilice
Leer
método para leer el valor del código de barras a partir de varios formatos de imagen - Utilice BarcodeLeererOptions para configurar los parámetros de lectura
- Especifique la región del código de barras en la imagen con Área de cultivo propiedad
- Especifique el tipo de código de barras configurando EsperarTiposDeCódigo propiedad
* * ** * *
Instalar con NuGet
Install-Package BarCode
![](/static-assets/barcode/how-to/read-barcodes-from-images/QRcodeintro.jpeg)
![](/static-assets/barcode/how-to/read-barcodes-from-images/Code128intro.jpeg)
BarcodeReader.Read()
method to directly read barcode image. A partir del fragmento de código anterior, podemos ver que IronBarcode ofrece simplicidad al permitir a los usuarios utilizar únicamente BarcodeReader.Read()
para leer un archivo de imagen que ya se ha incluido en el proyecto especificando el parámetro nombre del archivo cadena, O ruta del archivo como parámetro del método. La mejor práctica es utilizar la cadena literal "@" al especificar una ruta de archivo en el método, ya que si no se incluye, los usuarios tendrían que añadir varios caracteres de escape "\" en la cadena de ruta del archivo. Adjuntar Valores()
al final de BarcodeReader.Read()
para obtener el valor del código de barras en forma de System.String []
object. Para ver el resultado en la consola, puede utilizar foreach
para iterar sobre los valores almacenados en el campo cadena []
y, dentro del bloque de bucle, llame a Consola.WriteLine()
method with the iterator variable as the parameter. Este método no sólo es capaz de leer formatos de códigos de barras unidimensionales(Codabar, Code128, Code39, Code93, EAN13, EAN18, ITF, MSI, UPCA, UPCE)También puede leer formatos de códigos de barras bidimensionales.(Azteca, DataMatrix, QRCode) en varios formatos de imagen. ## Configuración de las opciones del lector de códigos de barras ¿Siente que la lectura de códigos de barras es demasiado lenta? ¿Código de barras demasiado pequeño en la imagen y IronBarcode no puede leerlo? ¿Quieres leer sólo determinadas zonas de una imagen? ¿Desea leer sólo determinados tipos de códigos de barras en una imagen con mezclas de códigos de barras? ¿Quiere mejorar su rendimiento general en lectura? No te preocupes más! BarcodeReaderOptions
permite a los usuarios modificar o ajustar el comportamiento del lector de códigos de barras para que pueda resolver todos los problemas mencionados anteriormente. Veamos y analicemos en detalle todas las propiedades ajustables disponibles en BarcodeReaderOptions
uno a uno: ### Área de cultivo Área de cultivo
es una propiedad de tipo IronSoftware.Drawing.CropRectangle
disponible en BarcodeReaderOptions
que permite a los usuarios especificar el área de una imagen que el usuario desea que IronBarcode lea. Esto ayudará a mejorar el rendimiento de la lectura, ya que el lector de códigos de barras no necesita escanear toda la imagen en busca de códigos de barras, así como a mejorar la precisión de la lectura, ya que se ha especificado el área de lectura. Para ajustar el Área de cultivo
basta con instanciar un nuevo objeto de tipo Rectángulo y especificar como argumentos las coordenadas del rectángulo, su anchura y su longitud. La unidad de medida aceptada es el píxel(px). CropArea = new System.Drawing.Rectangle(x, y, width, height)
### EsperarTiposDeCódigo Por defecto, todos los códigos de barras soportados en IronBarcode serán escaneados en una imagen. Sin embargo, si el usuario sabe qué tipo de códigos de barras están disponibles o desea leer en una imagen, configurar esta propiedad para leer sólo un determinado tipo de código de barras aumentará 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, basta con definir la propiedad EsperarTiposDeCódigo
a uno de los campos de Código de barras
enum. Conozcamos todos los tipos de códigos de barras soportados por IronBarcode y veamos un ejemplo de código de barras de cada tipo.- TodoUnaDimensión : Tipos lineales de código de barras. This includes Codabar, Code128, Code39, Code93, EAN13, EAN18, ITF, MSI, UPCA, UPCE barcodes.
- TodoBidimensional : Incluye códigos de barras de cuadrícula, matriciales y apilados. The barcode type that falls under 2 Dimensional barcodes are Aztec, DataMatrix, QRCode barcodes.
- Azteca : Azteca 2D barcode format. Azteca Code is a type of 2D barcode invented by Andrew Longacre, Jr. and Robert Hussey in 1995. Named after the resemblance of the central finder pattern to an Azteca pyramid, Azteca code has the potential to use less space than other matrix barcodes because it does not require a surrounding blank "quiet zone". Below is an example of an Azteca Barcode
- Codabar : Codabar es una simbología de código de barras lineal desarrollada en 1972 por Pitney Bowes Corp. Codabar codifica sólo datos numéricos (dígitos). A continuación se muestra un ejemplo de código de barras Codabar
- Código 128 : El Código 128 es una simbología de código de barras lineal de alta densidad definida en la norma ISO/IEC 15417:2007. Se utiliza para alfanumérico o sólo numérico barcodes. Below is an example of Código 128 barcode
- Código 39 : El Código 39 es una simbología de código de barras discreto de longitud variable. La especificación del Código 39 define 43 caracteres, formados por letras mayúsculas (A through Z). Below is an example of a Código 39 barcode
- Código93 : Formato de código de barras Code 93 1D. El Código 93 es una simbología de código de barras diseñada en 1982 por Intermec para proporcionar una mayor densidad y seguridad de datos al Código 39. El Código 93 admite la codificación de sólo los siguientes caracteres ASCII: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 - . $ / + % SPACE. Below is an example of a Código93 barcode
- Matriz de datos : Un Data Matrix es un código de barras bidimensional formado por "celdas" o módulos blancos y negros dispuestos en un patrón cuadrado o rectangular, también conocido como matriz. La información a codificar puede ser datos textuales o numéricos. Usual data size is from a few bytes up to 1556 bytes. Below is an example of a Matriz de datos barcode
- EAN13 : El Número Internacional de Artículo (también conocido como Número Europeo de Artículo o EAN) es un estándar que describe una simbología de código de barras y un sistema de numeración utilizado en el comercio mundial para identificar un tipo específico de producto al por menor, en una configuración de embalaje específica, de un fabricante específico. EAN-13 puede codificar únicamente contenidos numéricos (dígitos) de longitud 12 o 13 dígitos. A los códigos de barras más cortos se les añadirán automáticamente ceros (000) al principio del número. A continuación se muestra un ejemplo de código de barras EAN13
- EAN8 : Un EAN-8 es un código de barras de simbología EAN/UPC y deriva del código más largo International Article Number (EAN-13). EAN-8 puede codificar únicamente contenidos numéricos (dígitos) de 7 u 8 dígitos de longitud. A los códigos de barras más cortos se les añadirán automáticamente ceros (000) al principio del número. A continuación se muestra un ejemplo de código de barras EAN8
- Correo inteligente : Formato de código de barras Intelligent Mail 2D. El código de barras Intelligent Mail (también conocido como "IM Barcode" o "USPS OneCode Barcodes" o "IMB") es un código de barras de 65 barras que se utiliza en el correo en Estados Unidos. El término "Intelligent Mail" se refiere a los servicios ofrecidos por el Servicio Postal de Estados Unidos para la entrega de correo nacional. El código de barras IM pretende proporcionar mayor información y funcionalidad que sus predecesores POSTNET y PLANET. Tenga en cuenta que IronBarcode puede sólo LEER este tipo de código de barras. A continuación se muestra un ejemplo de código de barras de este tipo
- ITF : ITF-14 es la implementación GS1 de un código de barras intercalado 2 de 5 (ITF) para codificar un número de artículo de comercio mundial. Los símbolos ITF-14 se utilizan generalmente en los niveles de embalaje de un producto, como una caja de 24 latas de sopa. El ITF-14 siempre codifica 14 dígitos. ITF codifica sólo datos numéricos. Si el número de dígitos no es par, se añadirá automáticamente un "0". A continuación se muestra un ejemplo de código de barras ITF
- MaxiCode : Formato de código de barras MaxiCode 2D. MaxiCode es un sistema de símbolos legibles por máquina, de dominio público, creado y utilizado originalmente por United Parcel Service. Adecuado para el seguimiento y la gestión del envío de paquetes, se asemeja a un código de barras, pero en su lugar utiliza puntos dispuestos en una cuadrícula hexagonal. Tenga en cuenta que IronBarcode puede sólo LEER este tipo de código de barras. A continuación se muestra un ejemplo de código de barras de este tipo
- MSI : MSI es una simbología de código de barras desarrollada por MSI Data Corporation, basada en la simbología original Plessey Code. Este tipo de código de barras sólo acepta valores numéricos. A continuación se muestra un ejemplo de código de barras de tipo MSI
- PDF417 : PDF417 es un formato de símbolo de código de barras lineal apilado que se utiliza en diversas aplicaciones, principalmente transporte, tarjetas de identificación y gestión de inventarios. PDF son las siglas de Portable Data File (archivo de datos portátil). El 417 significa que cada patrón del código consta de 4 barras y espacios, y que cada patrón tiene 17 unidades de longitud. La simbología PDF417 fue inventada por el Dr. Ynjiun P. Wang en Symbol Technologies en 1991. (Wang 1993) Es la norma ISO 15438. A continuación se muestra un ejemplo de código de barras PDF417
- PharmaCode : Código binario farmacéutico. Un estándar de código de barras binario tolerante a fallos de lectura utilizado en la industria médica. Tenga en cuenta que IronBarcode puede sólo LEER este tipo de código de barras. A continuación se muestra un ejemplo de código de barras PharmaCode
- Plessey : El código Plessey es una simbología de código de barras lineal 1D basada en la modulación por anchura de impulsos, desarrollada en 1971 por The Plessey Company PLC, una empresa con sede en Gran Bretaña. Este tipo de código de barras sólo acepta valores numéricos. A continuación se muestra un ejemplo de código de barras Plessey
- Código QRCode : Código QR (abreviatura de Quick Response Code) es la marca comercial de un tipo de código de barras matricial (o código de barras bidimensional) diseñado por primera vez en 1994 para la industria del automóvil en Japón. Un código de barras es una etiqueta óptica legible por máquina que contiene información sobre el artículo al que se adhiere. Un código QR utiliza cuatro modos de codificación normalizados (numérico, alfanumérico, byte/binario y kanji) para almacenar datos de forma eficiente; también se pueden utilizar extensiones. A continuación se muestra un ejemplo de código de barras QR
- Rss14 : Reduce Space Symbology 14 formato de código de barras. Puede representar un código de barras 1D o un código de barras 2D apilado. El código de barras RSS 14 (Simbología de Espacio Reducido) codifica la identificación completa del artículo EAN.UCC de 14 dígitos en un símbolo que puede ser escaneado omnidireccionalmente por escáneres láser de punto de venta convenientemente configurados. Se trata de los últimos tipos de códigos de barras para la identificación con restricciones de espacio de EAN International y Uniform Code Council, Inc. Los códigos de barras RSS se han identificado para el sector de la alimentación y la atención sanitaria, donde los artículos son demasiado pequeños para permitir otras simbologías de códigos de barras. Tenga en cuenta que IronBarcode puede sólo LEER este tipo de código de barras. A continuación se muestra un ejemplo de código de barras Rss14
- UPCA : El Código Universal de Producto (UPC) es una simbología de código de barras ampliamente utilizada en Estados Unidos, Canadá, Reino Unido, Australia, Nueva Zelanda, Europa y otros países para el seguimiento de artículos comerciales en las tiendas. UPC (técnicamente se refiere a UPC-A) consta de 12 dígitos numéricos, que se asignan de forma exclusiva a cada artículo comercial. Junto con el código de barras EAN, el UPC es el código de barras utilizado principalmente para escanear artículos comerciales en el punto de venta, según las especificaciones GS1. El UPCA puede codificar únicamente contenidos numéricos (dígitos) de longitud 12 o 13 dígitos. A los códigos de barras más cortos se les añadirán automáticamente ceros (000) al principio del número. A continuación se muestra un ejemplo de código de barras UPCA
- UPCE : Para permitir el uso de códigos de barras UPC en envases más pequeños, en los que no cabe un código de barras completo de 12 dígitos, se desarrolló una versión de UPC con "supresión de ceros", denominada UPC-E, en la que se suprimen el dígito del sistema numérico, todos los ceros finales del código del fabricante y todos los ceros iniciales del código del producto. UPCE puede codificar únicamente contenidos numéricos (dígitos) de 7 u 8 dígitos de longitud. A continuación se muestra un ejemplo de código de barras UPCE
![Muestra de código de barras Azteca](/static-assets/barcode/how-to/read-barcodes-from-images/Azteca.jpeg)
![Ejemplo de código de barras Codabar](/static-assets/barcode/how-to/read-barcodes-from-images/Codabar.jpeg)
![Código 128 barcode sample](/static-assets/barcode/how-to/read-barcodes-from-images/Código 128.jpeg)
![Código 39 barcode sample](/static-assets/barcode/how-to/read-barcodes-from-images/Código 39.jpeg)
![Código93 barcode sample](/static-assets/barcode/how-to/read-barcodes-from-images/Código93.jpeg)
![Matriz de datos código de barras ejemplo](/static-assets/barcode/how-to/read-barcodes-from-images/DM.jpeg)
![Ejemplo de código de barras EAN13](/static-assets/barcode/how-to/read-barcodes-from-images/EAN13.jpeg)
![Ejemplo de código de barras EAN8](/static-assets/barcode/how-to/read-barcodes-from-images/EAN8.jpeg)
![Correo inteligente código de barras ejemplo](/static-assets/barcode/how-to/read-barcodes-from-images/IM.png)
![Muestra de código de barras ITF](/static-assets/barcode/how-to/read-barcodes-from-images/ITF.jpeg)
![Ejemplo de código de barras MaxiCode](/static-assets/barcode/how-to/read-barcodes-from-images/Maxicode.png)
![Ejemplo de código de barras MSI](/static-assets/barcode/how-to/read-barcodes-from-images/MSI.jpeg)
![Ejemplo de código de barras PDF417](/static-assets/barcode/how-to/read-barcodes-from-images/pdf417.jpeg)
![Ejemplo de código de barras PharmaCode](/static-assets/barcode/how-to/read-barcodes-from-images/pharmacode.png)
![Muestra de código de barras Plessey](/static-assets/barcode/how-to/read-barcodes-from-images/plessey.jpeg)
![Código QRCode barcode sample](/static-assets/barcode/how-to/read-barcodes-from-images/QRcodeintro.jpeg)
![Muestra de código de barras 1D Rss14](/static-assets/barcode/how-to/read-barcodes-from-images/1drss14.png)
![Ejemplo de código de barras 2D Rss14](/static-assets/barcode/how-to/read-barcodes-from-images/2Drss14.png)
![Muestra de código de barras UPCA](/static-assets/barcode/how-to/read-barcodes-from-images/UPCAbarcode.png)
![Ejemplo de código de barras UPCE](/static-assets/barcode/how-to/read-barcodes-from-images/UPCEbarcode.jpg)
falso
que hará que el lector de códigos de barras deje de escanear una vez encontrado un valor de código de barras. Esto mejorará de nuevo el rendimiento y la velocidad de lectura de IronBarcode. ### Filtros de imagen Una de las propiedades que se pueden añadir en BarcodeReaderOptions
es una colección de filtros de imagen. Los filtros de imagen son importantes para preprocesar la imagen en bruto introducida en Iron Barcode. Para aplicar filtros de imagen dentro del BarcodeReaderOptions
, los usuarios deben primero iniciar y especificar el Filtro de imágenes
colección a utilizar. ### MaxParallelThreads IronBarcode también permite a los usuarios habilitar y ajustar la cantidad de hilos paralelos de ejecución, lo que a su vez mejorará la velocidad y la eficiencia del proceso. Hilos paralelos significa la ejecución de múltiples hilos simultáneamente en diferentes núcleos de procesadores. Importe por defecto para MaxParallelThread
en IronBarcode es 4. Los usuarios pueden ajustarlos en función de las capacidades y la cantidad de recursos de que dispongan sus máquinas. ### Multihilo Esta propiedad permite a IronBarcode leer varias imágenes en paralelo. El valor predeterminado para Multihilo
es VerdaderoPor lo tanto, los subprocesos múltiples se gestionarán automáticamente para mejorar el rendimiento de las tareas de lectura de códigos de barras por lotes. ### EliminarFalsoPositivo Esta propiedad elimina las lecturas de códigos de barras falsos positivos. Las lecturas falsas positivas de códigos de barras significan simplemente una lectura falsa de los valores del código de barras, pero identificada como válida. Esto puede ocurrir debido a errores en el proceso de secuenciación, como errores de secuenciación, o errores en el etiquetado del código de barras o en el proceso de preparación. Por lo tanto, fijar EliminarFalsoPositivo
como verdadero eliminará las lecturas de códigos de barras falsos positivos, mejorando así la precisión de la lectura de códigos de barras. Sin embargo, si los usuarios buscan rendimiento a costa de precisión, establecer esta propiedad en Falso ayudaría. El valor por defecto de esta propiedad es Verdadero. ### Velocidad Como su nombre indica, Velocidad
permiten a los usuarios optimizar aún más el rendimiento del lector de códigos de barras IronBarcode. Igual que EliminarFalsoPositivo
ajustar esta propiedad mejorará el rendimiento a costa de la precisión, pero en 4 niveles como se muestra a continuación: * VelocidadLectura.másrápida Ajuste del Velocidad
a este valor hará que la lectura de códigos de barras sea más rápida, sin embargo, a expensas de la precisión. El programa terminará de ejecutarse rápidamente, pero la mayoría de las veces dará como resultado un código de barras vacío. Esto se debe a que la imagen de entrada no son preprocesados en absoluto y IronBarcode lee la imagen del código de barras tal cual. Se aconseja a los usuarios que utilicen este valor sólo si están seguros de que la imagen de entrada es nítida y clara. * VelocidadLectura.Equilibrada Este ajuste es recomendado para la Velocidad
propiedad. Establece un equilibrio entre la precisión y el rendimiento de lectura intentando aplicar el Procesado de luz a la imagen para aclarar el área del código de barras y hacer que destaque 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. * Velocidad de lectura.detallada En caso de utilizar el ajuste VelocidadLectura.Equilibrada
no consigue producir un valor de código de barras a partir de la lectura, los usuarios pueden optar por utilizar Velocidad de lectura.detallada
. IronBarcode realizará un Procesamiento Medio en la imagen para aclarar más el área del código de barras y que el lector de códigos de barras pueda detectarlo. Este ajuste es muy útil para detectar una imagen de código de barras pequeña o poco nítida. Tenga en cuenta, sin embargo, que esta configuración consume mucha CPU y puede afectar al rendimiento de lectura. Se recomienda a los usuarios experimentar con otros ajustes antes de utilizar esta configuración. Combinación de Velocidad de lectura.detallada
con EliminarFalsoPositivo
a "True" imprimirá una advertencia en la consola. Sin embargo, no afectará a la lectura y puede ignorarse. * Velocidad de lectura.Detalleextremo Este ajuste es el menos debido a que se trata de un proceso intensivo para la CPU, por lo que se realizará un Procesamiento Pesado de 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 el preprocesamiento de la imagen/apliquen filtros a la imagen antes de optar por esta configuración. Tenga en cuenta, sin embargo, que esta configuración consume mucha CPU y puede afectar al rendimiento de lectura. Se recomienda a los usuarios experimentar con otros ajustes antes de utilizar esta configuración. Combinación de Velocidad de lectura.Detalleextremo
con EliminarFalsoPositivo
a "True" imprimirá una advertencia en la consola. Sin embargo, no afectará a la lectura y puede ignorarse. ### UseCode39ExtendedMode Este ajuste permite leer e interpretar códigos de barras de tipo Code39 con el modo ampliado, por lo que se aplicará el juego de caracteres ASCII completo. Configuración UseCode39ExtendedMode
a Verdadero 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 ser ajustadas por los usuarios, ya sea para aumentar el rendimiento o la precisión, veamos cómo podemos aplicarlo en nuestro código. El siguiente fragmento de código lo demuestra. ```cs :path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-images-2.cs ``` A partir del fragmento de código, podemos ver que para utilizar BarcodeReaderOptions
primero tenemos que inicializarlo, luego podemos determinar y ajustar las propiedades del BarcodeReaderOptions
según las propiedades indicadas anteriormente. La inicialización BarcodeReaderOptions
puede utilizarse posteriormente como argumento en BarcodeReader.Read()
junto con el archivo de imagen. Esto aplicará todos los ajustes en BarcodeReaderOptions
al leer el código de barras de la imagen.