Comment lire plusieurs codes-barres à la fois en C#

Comment lire plusieurs BarCodes en même temps en C#;

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

IronBarcode permet la lecture simultanée de plusieurs codes-barres à partir d'images et de PDF en définissant ExpectMultipleBarcodes = true, rationalisant ainsi le traitement des données pour les applications de logistique, de vente au détail et de gestion des stocks. Qu'il s'agisse de construire des systèmes d'entrepôt, des applications de point de vente au détail ou des solutions de traitement de documents, les capacités de lecture avancées d'IronBarcode vous offrent la fiabilité et les performances dont vous avez besoin.

Démarrage rapide : lire tous les codes-barres d'une image facilement

Cet exemple montre la rapidité avec laquelle vous pouvez utiliser IronBarcode pour scanner une image pour chaque code-barres qu'elle contient. Il suffit de définir ExpectMultipleBarcodes = true à côté des types de codes-barres que vous souhaitez - pas de feuille de calcul, pas de tracas.

Nuget IconCommencez dès maintenant à créer des PDF avec NuGet :

  1. Installez IronBarcode avec le gestionnaire de packages NuGet

    PM > Install-Package BarCode

  2. Copiez et exécutez cet extrait de code.

    var results = IronBarCode.BarcodeReader.Read("image.png", new IronBarCode.BarcodeReaderOptions { ExpectMultipleBarcodes = true, ExpectBarcodeTypes = IronBarCode.BarcodeEncoding.AllOneDimensional });
  3. Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronBarcode dans votre projet dès aujourd'hui grâce à un essai gratuit.
    arrow pointer


Comment lire plusieurs BarCodes à partir d'une image?

Par défaut, IronBarcode scanne continuellement un document pour lire plusieurs codes-barres. Cependant, il est arrivé qu'une seule valeur de code-barres soit renvoyée, même lorsque plusieurs codes-barres sont présents. Pour y remédier, personnalisez les paramètres pour permettre la lecture de plusieurs BarCodes, comme indiqué ci-dessous. La propriété ExpectMultipleBarcodes existe à la fois dans les classes BarcodeReaderOptions et PdfBarcodeReaderOptions, ce qui vous permet de l'utiliser pour lire des codes-barres à la fois dans des images et des documents PDF.

Trois échantillons de codes-barres étiquetés A, B et C montrant différents modèles de barres pour la démonstration de la lecture de codes-barres multiples
:path=/static-assets/barcode/content-code-examples/how-to/read-multiple-barcodes-read-multiple-barcodes.cs
using 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());
}
$vbLabelText   $csharpLabel

Le fait de définir ExpectMultipleBarcodes sur true permet à IronBarcode de scanner l'intégralité du document à la recherche de plusieurs codes-barres et de les stocker dans la variable BarcodeResults. À l'aide d'une boucle foreach, vous pouvez facilement accéder à toutes les valeurs des codes-barres et les imprimer sur la console.

Scénarios avancés de lecture de codes-barres multiples

Lorsque vous travaillez avec plusieurs BarCode, vous pouvez rencontrer des scénarios qui nécessitent une configuration supplémentaire. Voici un exemple complet démontrant comment lire plusieurs BarCode de formats différents à partir d'un document complexe :

using IronBarCode;
using System;
using System.Linq;

// Configure advanced options for mixed barcode types
BarcodeReaderOptions advancedOptions = new BarcodeReaderOptions()
{
    ExpectMultipleBarcodes = true,
    // 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 = true,
    // 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("---");
}
$vbLabelText   $csharpLabel

Cet exemple avancé présente plusieurs fonctionnalités importantes :

Comment lire un seul BarCode pour de meilleures performances?

IronBarcode lit les codes-barres simples et multiples dans les images ou les PDF. Par défaut, le moteur scanne l'intégralité du document, même s'il n'existe qu'un seul code-barres. Pour des performances accrues lors de la lecture d'un seul code-barres, définissez ExpectMultipleBarcodes sur false. Cela empêche le moteur de scanner l'ensemble du document après avoir détecté le premier code-barres, ce qui permet une récupération plus rapide des codes-barres. Le code ci-dessous illustre cette approche.

<TODO : Ajouter une image ici -->

Trois exemples identiques de codes-barres étiquetés A, B et C pour la démonstration de la lecture de codes-barres
:path=/static-assets/barcode/content-code-examples/how-to/read-multiple-barcodes-read-single-barcode.cs
using 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());
}
$vbLabelText   $csharpLabel

Dans cet exemple, nous avons utilisé la même image avec plusieurs BarCodes que précédemment, mais nous avons défini ExpectMultipleBarcodes sur false. En conséquence, seule la première valeur de code-barres est renvoyée et le processus de scan s'arrête une fois le premier code-barres récupéré.

Optimisation de la lecture d'un seul BarCode avec les Crop Regions

Pour des performances encore meilleures lors de la lecture de codes-barres uniques, combinez le paramètre ExpectMultipleBarcodes = false avec les spécifications de la région de culture. Cette technique est particulièrement utile lorsque vous connaissez l'emplacement approximatif de votre code-barres :

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 = false,
    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 = false,
    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");
}
$vbLabelText   $csharpLabel

Combien plus rapide est la lecture d'un seul BarCode?

Le fait de définir ExpectMultipleBarcodes sur false améliore considérablement l'efficacité de la lecture des codes-barres uniques. Le gain de performance est particulièrement notable lorsqu'on travaille avec des images haute résolution ou lorsqu'on met en œuvre la lecture asynchrone de codes-barres dans des applications à haut débit.

Avec l'extrait de code fourni, voici une estimation approximative de la différence de performances entre la définition de ExpectMultipleBarcodes à true et false sur la même machine :

ExpectMultipleBarcodes = true ExpectMultipleBarcodes = false
0,91 seconde 0,10 seconde

Cela représente environ une amélioration des performances par 9 lors de la lecture de codes-barres simples. Le gain de performance réel varie en fonction de :

  • Résolution et complexité de l'image
  • Nombre de BarCodes présents dans l'image
  • Formats de codes-barres sélectionnés
  • Filtres d'image appliqués
  • Spécifications matérielles

Bonnes pratiques pour la lecture de codes-barres multiples

Lorsque vous mettez en œuvre la lecture de plusieurs BarCodes dans des applications de production, tenez compte de ces bonnes pratiques :

  1. Specify Expected Barcode Types : Au lieu d'utiliser BarcodeEncoding.All, spécifiez uniquement les formats que vous attendez. Les performances s'en trouvent considérablement améliorées.

  2. Utiliser des formats d'image appropriés : Pour de meilleurs résultats, utilisez des images à fort contraste. En savoir plus sur la création d'images de codes-barres optimales.

  3. Gérer les BarCodes imparfaits : Les BarCodes du monde réel peuvent être endommagés ou mal imprimés. Utilisez des techniques de correction d'image pour améliorer les taux de réussite de la lecture.

  4. Traitement en flux : Pour les lots importants, pensez à lire à partir de flux pour optimiser l'utilisation de la mémoire.

  5. Gestion des erreurs : Mettez toujours en œuvre une gestion des erreurs appropriée pour les scénarios dans lesquels les codes-barres ne peuvent pas être lus :
try
{
    var results = BarcodeReader.Read("barcodes.png", new BarcodeReaderOptions 
    { 
        ExpectMultipleBarcodes = true 
    });

    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 = true 
    });

    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
}
$vbLabelText   $csharpLabel

En suivant ces pratiques et en utilisant les fonctionnalités complètes d'IronBarcode, vous pouvez créer des applications robustes qui gèrent efficacement plusieurs scénarios de lecture de codes-barres dans divers secteurs et cas d'utilisation.

Questions Fréquemment Posées

Comment lire plusieurs BarCodes à partir d'une seule image en C# ?

Avec IronBarcode, vous pouvez lire plusieurs codes-barres à partir d'une seule image en définissant ExpectMultipleBarcodes = true dans les BarcodeReaderOptions. Cela permet à IronBarcode de scanner l'ensemble du document et de renvoyer tous les codes-barres trouvés dans une collection BarcodeResults que vous pouvez parcourir.

Quel est le moyen le plus rapide de scanner tous les codes-barres d'une image ?

L'approche la plus rapide consiste à utiliser la méthode Read d'IronBarcode avec ExpectMultipleBarcodes = true : var results = IronBarCode.BarcodeReader.Read("image.png", new IronBarCode.BarcodeReaderOptions { ExpectMultipleBarcodes = true }). Ce code minimal extrait toutes les valeurs des codes-barres sans configuration complexe.

Puis-je lire plusieurs BarCodes à partir de documents PDF ainsi que des images ?

Oui, IronBarcode prend en charge la lecture de plusieurs codes-barres à partir d'images et de documents PDF. La propriété ExpectMultipleBarcodes est disponible dans les classes BarcodeReaderOptions et PdfBarcodeReaderOptions, ce qui vous permet de configurer la lecture de codes-barres multiples pour n'importe quel type de document.

Que se passe-t-il si je n'attribue pas la valeur true à ExpectMultipleBarcodes ?

Par défaut, IronBarcode scanne en continu les documents à la recherche de plusieurs codes-barres. Cependant, dans certains cas, une seule valeur de code-barres peut être renvoyée même lorsque plusieurs codes-barres existent. En définissant ExpectMultipleBarcodes = true, on s'assure explicitement qu'IronBarcode scanne et renvoie tous les codes-barres du document.

Comment accéder aux valeurs individuelles d'un code-barres après avoir lu plusieurs codes-barres ?

Après avoir lu plusieurs codes-barres avec IronBarcode, les résultats sont stockés dans une variable BarcodeResults. Vous pouvez facilement accéder aux valeurs individuelles des codes-barres à l'aide d'une boucle foreach pour itérer dans la collection et traiter les propriétés de valeur, de texte et de format de chaque code-barres.

La lecture de plusieurs BarCodes est-elle adaptée aux applications de commerce de détail et de logistique ?

Oui, la capacité de lecture de codes-barres multiples d'IronBarcode est idéale pour les systèmes de point de vente au détail, la gestion d'entrepôt, le suivi logistique et les applications de gestion des stocks. Il rationalise le traitement des données en scannant efficacement et simultanément tous les codes-barres des étiquettes d'expédition, des catalogues de produits ou des fiches d'inventaire.

Puis-je spécifier les types de codes-barres à rechercher lors de la lecture de plusieurs codes-barres ?

Oui, IronBarcode vous permet de spécifier les types de codes-barres attendus à l'aide de la propriété ExpectBarcodeTypes. Vous pouvez la configurer pour scanner des formats spécifiques comme AllOneDimensional, QRCode, ou toute combinaison de types de codes-barres pris en charge afin d'optimiser les performances de numérisation.

Le paramétrage de ExpectMultipleBarcodes affecte-t-il les performances de numérisation ?

Définir ExpectMultipleBarcodes = false peut augmenter les performances lorsque vous savez qu'un seul code-barres existe dans le document. IronBarcode arrêtera de scanner après avoir trouvé le premier code-barres, ce qui le rend plus rapide pour les scénarios à un seul code-barres tout en offrant la flexibilité nécessaire pour la lecture de plusieurs codes-barres lorsque cela est nécessaire.

Hairil Hasyimi Bin Omar
Ingénieur logiciel
Comme tous les grands ingénieurs, Hairil est un apprenant avide. Il affine ses connaissances en C#, Python et Java, utilisant ces connaissances pour apporter de la valeur aux membres de l'équipe dans toute Iron Software. Hairil a rejoint l'équipe d'Iron Software depuis l'Université Teknologi MARA en Malaisie, ...
Lire la suite
Prêt à commencer?
Nuget Téléchargements 2,035,202 | Version : 2025.12 vient de sortir