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

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

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(), en prenant en charge plusieurs formats d'image, notamment PNG, JPEG, GIF, BMP, TIFF et SVG, avec des options personnalisables pour améliorer les performances et la précision.

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)

This is made possible with the help of our open source library, 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.

Démarrage rapide : Lire les codes-barres d'une image en quelques secondes

Avec un simple appel à IronBarcode.BarcodeReader.Read(), vous pouvez extraire des données de codes-barres directement à partir de formats de fichiers d'images tels que PNG, JPEG, GIF, BMP et TIFF. Commencez instantanément—aucune configuration complexe, juste des résultats instantanés.

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("path/to/image.png");
  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 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
Sample QR code with finder patterns for testing barcode reading from images
Exemple de code QR de test
Sample barcode with black vertical lines on white background for testing image-based barcode reading
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 codes-barres.

IronBarcode offre une 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 du nom du fichier ou la chaîne du chemin du fichier comme paramètre pour 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 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 parcourir 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 itérative comme paramètre.

IronBarcode est capable de lire les formats de codes-barres unidimensionnels (Codabar, Code128, Code39, Code93, EAN13, EAN18, ITF, MSI, UPCA, UPCE) ainsi que les formats de codes-barres bidimensionnels (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 de peaufiner ou d'ajuster le comportement du lecteur de codes-barres pour répondre à tous ces problèmes. Pour des exemples détaillés sur le réglage des options du lecteur de codes-barres, consultez notre guide complet. Les sections suivantes examinent une à une toutes les propriétés réglables disponibles dans BarcodeReaderOptions.

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

CropArea est une propriété de type Iron Software.Drawing.CropRectangle disponible dans BarcodeReaderOptions qui permet aux utilisateurs de spécifier la zone dans une image qu'IronBarcode doit lire. 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 sous forme d'arguments. L'unité de mesure acceptée est le pixel (px).

// Example of setting CropArea
var cropArea = new IronSoftware.Drawing.Rectangle(x: 100, y: 100, width: 300, height: 300);
var options = new BarcodeReaderOptions()
{
    CropArea = cropArea
};
// Example of setting CropArea
var cropArea = new IronSoftware.Drawing.Rectangle(x: 100, y: 100, width: 300, height: 300);
var options = new BarcodeReaderOptions()
{
    CropArea = cropArea
};
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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 l'un des champs de l'énumération BarcodeEncoding. Voici des exemples de chaque type de code-barres pris en charge par IronBarcode.

// Example: Expect only QR codes and Code128
var options = new BarcodeReaderOptions()
{
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128
};
// Example: Expect only QR codes and Code128
var options = new BarcodeReaderOptions()
{
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128
};
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Voici une liste des types de codes-barres avec des exemples et des explications fournis précédemment.

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?

L'une des propriétés pouvant être ajoutées dans BarcodeReaderOptions est une collection de filtres d'image. Les filtres d'image sont importants pour le prétraitement de l'image brute alimentée à IronBarcode. Pour appliquer des 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. Le nombre par défaut pour la propriété MaxParallelThread dans IronBarcode est 4. Les utilisateurs peuvent les ajuster en fonction des capacités et du nombre de ressources dont leurs machines disposent.

Dois-je activer le traitement multithread ? Cette propriété permet à IronBarcode de lire plusieurs images en parallèle. Par défaut, `Multithreaded` est **true**, donc les multiples threads seront gérés automatiquement pour améliorer les performances pour les tâches de lecture de code-barres par lots. ### 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 supprimera 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**.

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 automatique de l'image et les options les plus optimales du lecteur configurées. Recommandé pour de meilleurs résultats et performances. - **OnlyDetectionModel** : Scanne l'image pour les codes-barres et renvoie leurs positions sous forme de tableau de **Iron Software.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 automatique de l'image ou configuration des options du lecteur. This option can be used with IronBarCode.Slim alone.

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 la précision. Pour un examen approfondi des [options de vitesse de lecture](https://ironsoftware.com/csharp/barcode/how-to/reading-speed-options/), y compris des repères de performance, consultez notre guide détaillé. Il accepte l'enum **ReadingSpeed**, qui comporte 4 niveaux, comme indiqué ci-dessous : - **Faster** : Active la lecture de code-barres la plus rapide mais réduit la précision. 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 réglage 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 réglage `ReadingSpeed.Balanced` n'aboutit pas à produire des valeurs de code-barres à partir de la lecture, les utilisateurs peuvent opter pour `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 réglage est le **moins** recommandé en raison de son processus gourmand en 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. L'extrait de code ci-dessous démontre l'utilisation complète de `BarcodeReaderOptions` : ```csharp 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, // Enable Code39 extended mode if needed UseCode39ExtendedMode = true, // Set scan mode ScanMode = BarcodeReaderScanMode.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($"Confidence: {barcode.Confidence}%"); Console.WriteLine($"Position: X={barcode.X}, Y={barcode.Y}"); Console.WriteLine("---"); } } else { Console.WriteLine("No barcodes found in the image."); } ``` D'après l'extrait 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. Les `BarcodeReaderOptions` initialisés peuvent ensuite être utilisés comme argument dans la méthode `BarcodeReader.Read()` avec le fichier image. Cela appliquera tous les réglages dans `BarcodeReaderOptions` lors de la lecture d'un code-barres dans l'image. Si vous rencontrez des problèmes pour lesquels votre [code-barres n'est pas reconnu](https://ironsoftware.com/csharp/barcode/troubleshooting/barcode-not-recognized/), 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#.

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,002,059 | Version : 2025.12 vient de sortir