Comment lire des codes-barres à partir d'images en C#

Comment lire des BarCodes à partir d'images en utilisant C

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

IronBarcode lit les codes-barres à partir d'images en C# avec une seule ligne de code en utilisant BarcodeReader.Read(), prenant en charge plusieurs formats d'image, y compris PNG, JPEG, GIF, BMP, TIFF, et SVG, avec des options personnalisables pour améliorer la performance et l'exactitude.

L'une des principales fonctionnalités d'IronBarcode est sa capacité à lire des codes-barres directement dans plusieurs formats d'image. Les formats d'image suivants sont actuellement pris en charge par IronBarcode :

  • Graphiques vectoriels scalables (SVG)
  • Groupe d'experts en photographie (JPEG)
  • Graphiques réseau portables (PNG)
  • Format d'échange de graphiques (GIF)
  • Format de fichier d'image étiquetée (TIFF)
  • Fichier d'image bitmap (BMP)

Cela est rendu possible avec l'aide de notre bibliothèque open source, IronDrawing. Pour obtenir une liste complète des formats de codes-barres pris en charge, y compris les types 1D et 2D, consultez notre documentation complète.

Guide de démarrage rapide : Lire des BarCodes à partir d'une image en quelques secondes

Avec un simple appel à IronBarCode.BarcodeReader.Read(), vous pouvez extraire des données de code-barres directement à partir de formats de fichiers image comme PNG, JPEG, GIF, BMP, et TIFF. Commencez instantanément—aucune configuration complexe, juste des résultats instantanés.

  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("path/to/image.png");
  3. Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronBarcode dans votre projet dès aujourd'hui avec un essai gratuit

    arrow pointer

Comment lire des BarCodes directement à partir d'images?

Voici comment utiliser IronBarcode pour la lecture de codes-barres. Pour un tutoriel complet sur la lecture de codes-barres en C# / .NET, y compris des techniques avancées pour le traitement des PDF et les opérations par lots, consultez notre guide détaillé :

: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
Exemple de QR code avec des motifs de repérage pour tester la lecture de codes-barres à partir d'images
Exemple de code QR de test
Exemple de code-barres avec des lignes verticales noires sur fond blanc pour tester la lecture de codes-barres à partir d'images
Exemple de code-barres de test

Vous voulez connaître les valeurs des codes-barres dans les échantillons ? Essayez avec cet extrait de code !

Pour utiliser IronBarcode, la première chose à faire est d'installer la bibliothèque IronBarcode via le gestionnaire de packages NuGet de Microsoft Visual Studio dans votre projet, comme indiqué sur l'image ci-dessous. Cela vous permettra d'accéder à la méthode BarcodeReader.Read() d'IronBarcode pour lire directement les images de code-barres.

IronBarcode offre de la simplicité en permettant aux utilisateurs d'utiliser uniquement BarcodeReader.Read() pour lire un fichier image déjà inclus dans le projet en spécifiant la chaîne de caractères nom de fichier, OU la chaîne de caractères chemin de fichier comme paramètre de la méthode. Il est recommandé d'utiliser le littéral de chaîne verbatim, "@" lors de la spécification d'un chemin de fichier dans la méthode pour éviter d'ajouter plusieurs caractères d'échappement "" dans la chaîne de chemin de fichier.

Attachez la méthode Values() à la fin de l'appel de la méthode BarcodeReader.Read() pour obtenir la valeur du code-barres en tant qu'objet System.String[].

Pour afficher le résultat dans la console, vous pouvez utiliser une boucle foreach pour itérer sur les valeurs stockées dans le tableau string[] et à l'intérieur du bloc de boucle, appelez la méthode Console.WriteLine() avec la variable d'itération comme paramètre.

IronBarcode est capable de lire les formats de code-barres 1-dimensionnels (Codabar, Code128, Code39, Code93, EAN13, EAN18, ITF, MSI, UPCA, UPCE) ainsi que les formats de codes-barres 2-dimensionnels (Aztec, DataMatrix, QRCode) dans divers formats d'image.

Comment puis-je configurer les options du lecteur de BarCode pour de meilleures performances?

Trouvez-vous la lecture de codes-barres trop lente ? Le code-barres est-il trop petit dans l'image, rendant IronBarcode incapable de le lire ? Voulez-vous lire uniquement certaines zones d'une image ? Voulez-vous lire uniquement certains types de codes-barres dans une image avec un mélange de codes-barres ? Voulez-vous améliorer les performances globales de lecture ?

BarcodeReaderOptions permet aux utilisateurs d'ajuster ou de moduler le comportement du lecteur de codes-barres pour résoudre tous ces problèmes. Pour des exemples détaillés sur la configuration des options du lecteur de codes-barres, consultez notre guide complet. Les sections suivantes discutent une par une de toutes les propriétés ajustables disponibles dans BarcodeReaderOptions.

Comment spécifier la zone de l'image à lire?

CropArea est une propriété de type IronSoftware.Drawing.CropRectangle disponible dans BarcodeReaderOptions qui permet aux utilisateurs de spécifier la zone dans une image que doit lire IronBarcode. Cela aide à améliorer les performances de lecture, car le lecteur de codes-barres ne scanne pas toute l'image pour les codes-barres, et améliore également la précision de lecture car la zone de lecture a été spécifiée. Découvrez comment spécifier les régions de culture pour des performances optimales.

Pour définir la propriété CropArea, il suffit d'instancier un nouvel objet de type Rectangle et de spécifier les coordonnées du rectangle, la largeur, et la longueur du rectangle comme arguments. L'unité de mesure acceptée est le pixel (px).

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-images-3.cs
// Example of setting CropArea
var cropArea = new IronSoftware.Drawing.Rectangle(x: 100, y: 100, width: 300, height: 300);
var options = new BarcodeReaderOptions()
{
    CropArea = cropArea
};
Imports IronSoftware.Drawing

' Example of setting CropArea
Dim cropArea As New Rectangle(x:=100, y:=100, width:=300, height:=300)
Dim options As New BarcodeReaderOptions() With {
    .CropArea = cropArea
}
$vbLabelText   $csharpLabel

Quels types de BarCodes dois-je spécifier pour une lecture plus rapide?

Par défaut, tous les codes-barres pris en charge dans IronBarcode seront scannés dans une image. Toutefois, si l'utilisateur sait quels types de codes-barres sont disponibles ou souhaite être lus dans une image, le fait de définir cette propriété pour ne lire que certains types de codes-barres augmentera considérablement les performances et la précision de la lecture, car le lecteur de codes-barres n'a pas besoin d'itérer à travers des collections de codes-barres pour interpréter et lire un code-barres.

Pour utiliser cette propriété, il suffit de définir ExpectBarcodeTypes sur un des champs de l'énumération BarcodeEncoding. Voici des exemples de chaque type de code-barres pris en charge par IronBarcode.

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-images-4.cs
// Example: Expect only QR codes and Code128
var options = new BarcodeReaderOptions()
{
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128
};
' Example: Expect only QR codes and Code128
Dim options As New BarcodeReaderOptions() With {
    .ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128
}
$vbLabelText   $csharpLabel

Quand dois-je désactiver la lecture multiple des BarCodes?

IronBarcode scannera tous les codes-barres disponibles dans une image par défaut, ce qui inclut le scan de l'ensemble du fichier image et l'ajout des valeurs des codes-barres lues dans le tableau de chaînes. Cependant, si les utilisateurs ne souhaitent pas lire plusieurs codes-barres dans un fichier image, ils peuvent définir cette propriété sur false, ce qui fera que le lecteur de codes-barres arrête le scan dès qu'une valeur de code-barres a été trouvée. Cela améliorera de nouveau la performance et la vitesse de lecture d'IronBarcode. Pour plus d'informations sur la lecture de plusieurs BarCodes, consultez notre guide dédié.

Comment les filtres d'image améliorent-ils la reconnaissance des BarCodes?

Une des propriétés qui peut être ajoutée dans BarcodeReaderOptions est une collection de filtres d'images. Les filtres d'image sont importants pour le prétraitement de l'image brute alimentée à IronBarcode. Pour appliquer les filtres d'image dans BarcodeReaderOptions, les utilisateurs doivent d'abord initier et spécifier la collection ImageFilter à utiliser. Pour obtenir des conseils complets sur les techniques de correction d'image, y compris les applications de filtre, consultez notre didacticiel.

Comment optimiser le threading pour de meilleures performances?

IronBarcode permet aux utilisateurs d'activer et de régler la quantité d'exécutions de threads parallèles, ce qui améliorera à son tour la vitesse et l'efficacité du processus. Les threads parallèles signifient l'exécution de plusieurs threads simultanément sur différents cœurs de processeur. La quantité par défaut pour la propriété MaxParallelThread dans IronBarcode est de 4. Les utilisateurs peuvent les ajuster en fonction des capacités et des ressources disponibles sur leurs machines.

Dois-je activer le traitement multithread ?

Cette propriété permet à IronBarcode de lire plusieurs images en parallèle. La valeur par défaut pour #Multithreaded est true, donc les threads multiples seront gérés automatiquement pour améliorer les performances des tâches de lecture de codes-barres en lot.

Pourquoi supprimer les lectures faussement positives?

Cette propriété supprime toute lecture faussement positive de codes-barres. Les lectures de codes-barres faussement positives signifient simplement une lecture incorrecte des valeurs de code-barres, mais identifiées comme valides. Cela peut arriver en raison d'erreurs dans le processus de séquençage ou d'erreurs dans l'étiquetage ou la préparation du code-barres. Par conséquent, définir RemoveFalsePositive sur true éliminera les lectures de codes-barres faussement positives, améliorant ainsi la précision de la lecture des codes-barres. Cependant, si les utilisateurs optent pour la performance au détriment de la précision, définir cette propriété sur false pourrait aider. La valeur par défaut pour cette propriété est true.

Comment MinScanLines affecte-t-il la précision de la détection ?

MinScanLines définit le nombre minimum de lignes de balayage qui doivent s'accorder sur un résultat de code-barres pour qu'il soit considéré valide. La valeur par défaut est 2. Augmenter cette valeur réduit les faux positifs mais peut empêcher la détection de BarCodes fins ou de mauvaise qualité. La réduire à 1 augmente la sensibilité pour les Barcodes difficiles, au risque d'introduire du bruit.

Quels sont les modes d'analyse disponibles pour les différents cas d'utilisation ?

Définir comment IronBarcode scanne et détecte les codes-barres dans une image.

  • Auto : Lit les codes-barres avec un prétraitement d'image automatique et les options de lecteur les plus optimales configurées. Recommandé pour de meilleurs résultats et performances.
  • OnlyDetectionModel : Scanne l'image pour les codes-barres et renvoie leurs positions sous forme d'un tableau de IronSoftware.Drawing.PointF. Ce mode ne lit pas les codes-barres détectés ; il ne fait que renvoyer les positions de chaque code-barres.
  • MachineLearningScan : Scanne l'image pour les codes-barres avec détection par apprentissage automatique et les lit.
  • OnlyBasicScan : Lit les codes-barres sans détection par apprentissage automatique, prétraitement d'image automatique, ou configuration des options du lecteur. Cette option peut être utilisée uniquement avec IronBarCode.Slim.

Comment les paramètres de vitesse de lecture affectent-ils la précision ?

Comme son nom l'indique, la propriété Speed permet aux utilisateurs d'optimiser davantage les performances du lecteur IronBarcode. Similaire à la propriété RemoveFalsePositive, ajuster cette propriété améliore les performances au détriment de l'exactitude. Pour un examen approfondi des options de vitesse de lecture, y compris des benchmarks de performance, consultez notre guide détaillé. Il accepte l'énumération ReadingSpeed, qui a 4 niveaux comme indiqué ci-dessous :

  • Faster : Active la lecture des codes-barres la plus rapide, mais réduit l'exactitude. Le processus saute le prétraitement de l'image, entraînant souvent des résultats de codes-barres vides. Utilisez ce réglage uniquement si l'image d'entrée est nette et claire.
  • Balanced : Ce paramètre est recommandé pour la propriété Speed. Il établit un équilibre entre précision et performance de lecture en tentant d'appliquer un traitement léger à l'image pour clarifier la zone du code-barres et la faire ressortir pour que le lecteur de codes-barres puisse la détecter. La plupart du temps, ce réglage est suffisant pour qu'IronBarcode puisse lire une image de code-barres et produire un résultat précis.
  • Detailed : Pour les cas où l'utilisation du paramètre ReadingSpeed.Balanced ne réussit pas à produire des valeurs de code-barres à partir de la lecture, les utilisateurs peuvent choisir d'utiliser ReadingSpeed.Detailed. IronBarcode effectuera un traitement moyen sur l'image pour clarifier la zone du code-barres davantage et plus clairement pour que le lecteur de codes-barres puisse détecter le code-barres. Ce réglage est très utile pour détecter une image de code-barres petite ou moins nette.
  • ExtremeDetail : Ce paramètre est le moins recommandé en raison de son processus intensif pour le CPU. Un traitement lourd sera effectué sur l'image du code-barres pour que le lecteur puisse lire les codes-barres. Il est conseillé aux utilisateurs de faire un prétraitement de l'image / appliquer des filtres sur l'image avant d'opter pour ce réglage.

Quand dois-je utiliser le mode étendu du Code39?

Ce réglage permet aux codes-barres de type Code39 d'être lus et interprétés avec le mode étendu dans lequel l'ensemble de caractères ASCII complet sera appliqué. Définir UseCode39ExtendedMode sur true permettra une lecture plus précise des codes-barres Code39.

Comment mettre en œuvre la lecture avancée des BarCodes avec des options personnalisées?

Maintenant que nous avons appris toutes les options qui peuvent être modifiées par les utilisateurs, que ce soit pour augmenter les performances ou la précision, voici comment les appliquer dans le code. Le fragment de code ci-dessous montre une utilisation complète de BarcodeReaderOptions:

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

// Create custom reader options
var options = new BarcodeReaderOptions()
{
    // Specify expected barcode types for better performance
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128 | BarcodeEncoding.Code39,
    
    // Define specific area to scan (x, y, width, height in pixels)
    CropArea = new Rectangle(100, 100, 500, 400),
    
    // Set reading speed to balance accuracy and performance
    Speed = ReadingSpeed.Balanced,
    
    // Enable multithreading for better performance
    Multithreaded = true,
    MaxParallelThreads = 4,
    
    // Remove false positives for accuracy
    RemoveFalsePositive = true,

    // Minimum scan lines that must agree for a valid result (default 2)
    MinScanLines = 1,

    // Enable Code39 extended mode if needed
    UseCode39ExtendedMode = true,
    
    // Set scan mode
    ScanMode = BarcodeScanMode.Auto,
    
    // Add image filters for better recognition
    ImageFilters = new ImageFilterCollection() { 
        new SharpenFilter(),
        new InvertFilter(),
        new ContrastFilter()
    }
};

// Read barcodes with custom options
var results = BarcodeReader.Read(@"C:\path\to\your\barcode-image.png", options);

// Process results
if (results.Any())
{
    foreach (var barcode in results)
    {
        Console.WriteLine($"Barcode Type: {barcode.BarcodeType}");
        Console.WriteLine($"Value: {barcode.Value}");
        Console.WriteLine($"Position: {string.Join(", ", barcode.Points.Select(p => $"({p.X}, {p.Y})"))}");
        Console.WriteLine("---");
    }
}
else
{
    Console.WriteLine("No barcodes found in the image.");
}
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System
Imports System.Linq

' Create custom reader options
Dim options As New BarcodeReaderOptions() With {
    ' Specify expected barcode types for better performance
    .ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128 Or BarcodeEncoding.Code39,
    
    ' Define specific area to scan (x, y, width, height in pixels)
    .CropArea = New Rectangle(100, 100, 500, 400),
    
    ' Set reading speed to balance accuracy and performance
    .Speed = ReadingSpeed.Balanced,
    
    ' Enable multithreading for better performance
    .Multithreaded = True,
    .MaxParallelThreads = 4,
    
    ' Remove false positives for accuracy
    .RemoveFalsePositive = True,

    ' Minimum scan lines that must agree for a valid result (default 2)
    .MinScanLines = 1,

    ' Enable Code39 extended mode if needed
    .UseCode39ExtendedMode = True,
    
    ' Set scan mode
    .ScanMode = BarcodeScanMode.Auto,
    
    ' Add image filters for better recognition
    .ImageFilters = New ImageFilterCollection() From {
        New SharpenFilter(),
        New InvertFilter(),
        New ContrastFilter()
    }
}

' Read barcodes with custom options
Dim results = BarcodeReader.Read("C:\path\to\your\barcode-image.png", options)

' Process results
If results.Any() Then
    For Each barcode In results
        Console.WriteLine($"Barcode Type: {barcode.BarcodeType}")
        Console.WriteLine($"Value: {barcode.Value}")
        Console.WriteLine($"Position: {String.Join(", ", barcode.Points.Select(Function(p) $"({p.X}, {p.Y})"))}")
        Console.WriteLine("---")
    Next
Else
    Console.WriteLine("No barcodes found in the image.")
End If
$vbLabelText   $csharpLabel

À partir du fragment de code, nous voyons que pour utiliser BarcodeReaderOptions, nous devons d'abord l'initialiser, puis déterminer et ajuster les propriétés de BarcodeReaderOptions selon les propriétés énoncées ci-dessus. Le BarcodeReaderOptions initialisé peut ensuite être utilisé comme argument dans la méthode BarcodeReader.Read() avec le fichier image. Cela appliquera tous les paramètres dans BarcodeReaderOptions lors de la lecture d'un code-barres à partir de l'image.

Si vous rencontrez des problèmes pour lesquels votre code-barres n'est pas reconnu, notre guide de dépannage fournit des solutions aux problèmes courants et des conseils pour améliorer la précision de la lecture des codes-barres.

Questions Fréquemment Posées

Quels sont les formats d'image pris en charge pour la lecture de codes-barres dans C# ?

IronBarcode prend en charge la lecture de codes-barres à partir de plusieurs formats d'image, notamment SVG (Scalable Vector Graphics), JPEG, PNG, GIF, TIFF (Tagged Image File Format) et BMP (Bitmap Image File). Cette prise en charge complète des formats est assurée par IronDrawing, ce qui permet une extraction transparente des codes-barres à partir de divers types d'images.

Comment lire un BarCode à partir d'un fichier image avec une seule ligne de code ?

Avec IronBarcode, vous pouvez lire des codes-barres à partir d'images en utilisant une seule ligne de code : `var results = IronBarCode.BarcodeReader.Read("path/to/image.png");`. Ce simple appel de méthode détecte et extrait automatiquement les données des codes-barres des fichiers PNG, JPEG, GIF, BMP et TIFF sans aucune configuration complexe.

Puis-je spécifier les types de BarCode à rechercher lors de la lecture d'images ?

Oui, IronBarcode vous permet de spécifier les types de codes-barres à l'aide de la propriété ExpectBarcodeTypes dans BarcodeReaderOptions. Cette approche ciblée améliore les performances de lecture en se concentrant uniquement sur les formats de codes-barres que vous vous attendez à trouver dans vos images.

Est-il possible de lire des BarCodes à partir d'une région spécifique au sein d'une image ?

Absolument ! IronBarcode fournit la propriété CropArea qui vous permet de spécifier des régions particulières au sein d'une image où se trouvent les codes-barres. Cette fonctionnalité est particulièrement utile pour les grandes images ou lorsque vous connaissez l'emplacement approximatif des codes-barres, ce qui améliore considérablement la vitesse de traitement.

Comment configurer les paramètres de lecture avancés pour une meilleure précision ?

IronBarcode propose la classe BarcodeReaderOptions pour configurer les paramètres de lecture avancés. Cela inclut des options pour personnaliser la sensibilité de détection des codes-barres, le prétraitement de l'image et d'autres paramètres qui peuvent améliorer la précision lorsqu'il s'agit d'images difficiles ou de types de codes-barres spécifiques.

Qu'est-ce qui rend la lecture de codes-barres à partir d'images simple pour les développeurs C# ?

IronBarcode simplifie la lecture des codes-barres en fournissant la méthode BarcodeReader.Read() qui fonctionne dès le départ avec plusieurs formats d'image. Les développeurs n'ont qu'à spécifier le nom du fichier ou le chemin d'accès au fichier en tant que paramètre, ce qui rend incroyablement simple l'intégration de la fonctionnalité de lecture de codes-barres dans n'importe quelle application C#.

IronBarcode offre-t-il des options de personnalisation pour l'apparence des codes-barres ?

Oui, IronBarcode offre des options de personnalisation étendues pour l'apparence des codes-barres, y compris des annotations de couleur, taille et texte, vous permettant d'adapter les codes-barres à vos exigences de conception spécifiques.

Comment IronBarcode peut-il aider à améliorer l'efficacité des processus d'affaires ?

IronBarcode améliore l'efficacité des processus d'affaires en permettant une génération et une lecture rapides et précises des codes-barres, réduisant les erreurs de saisie manuelle de données, et améliorant le suivi des stocks et des actifs.

Quelles compétences en programmation sont nécessaires pour implémenter IronBarcode dans un projet ?

Une connaissance de base de la programmation C# est suffisante pour implémenter IronBarcode dans un projet, car il fournit des méthodes simples et une documentation complète pour guider les développeurs.

IronBarcode convient-il aux petits projets ainsi qu'aux grandes applications d'entreprise ?

IronBarcode est conçu pour être évolutif et polyvalent, ce qui le rend approprié pour les petits projets ainsi que pour les grandes applications d'entreprise nécessitant des solutions de codes-barres robustes.

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,317,217 | Version : 2026.7 vient de sortir
Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ? PM > Install-Package BarCode
exécuter un échantillon regarder votre chaîne devenir un code-barres.