Lire les codes-barres en C

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

par Frank Walker

IronBarcode est une bibliothèque polyvalente, avancée et efficace pour la lecture des codes-barres dans .NET.

Installation

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

Première étape :
green arrow pointer

IronBarcode est une bibliothèque polyvalente, avancée et efficace pour la lecture des codes-barres dans .NET.

La première étape sera d'installer Iron Barcode, et ceci est plus facilement réalisable en utilisant notre paquetage NuGet, bien que vous puissiez aussi choisir d'installer manuellement le paquetage DLL à votre projet ou à votre cache d'assemblage global. IronBarcode fonctionne bien pour produire une application de lecteur de codes-barres C#.

Install-Package BarCode

Lisez votre premier code-barres

Lire un code-barres ou un code QR dans .NET est extrêmement facile en utilisant la bibliothèque de classes IronBarcode avec .NET Barcode Reader. Dans notre premier exemple, nous pouvons voir comment lire ce code-barres en une seule ligne de code.

Image de code-barres Code128 à scanner avec C#

Nous pouvons extraire sa valeur, son image, son type d'encodage, ses données binaires..(le cas échéant)et nous pouvons l'afficher dans la console.

:path=/static-assets/barcode/content-code-examples/tutorials/reading-barcodes-1.cs
using IronBarCode;
using System;

// Read barcode
BarcodeResults results = BarcodeReader.Read("GetStarted.png");

// Log the result to Console Window
foreach (BarcodeResult result in results)
{
    if (result != null)
    {
        Console.WriteLine("GetStarted was a success. Read Value: " + result.Text);
    }
}
Imports IronBarCode
Imports System

' Read barcode
Private results As BarcodeResults = BarcodeReader.Read("GetStarted.png")

' Log the result to Console Window
For Each result As BarcodeResult In results
	If result IsNot Nothing Then
		Console.WriteLine("GetStarted was a success. Read Value: " & result.Text)
	End If
Next result
VB   C#

Faites plus d'efforts et soyez précis

Dans cet exemple suivant, nous allons ajouter une option de lecture de code-barres pour lire une image difficile. La valeur ExtremeDetail de l'enum Speed permet un balayage plus approfondi pour un code-barres qui pourrait être obscurci, corrompu ou à un angle incliné.

:path=/static-assets/barcode/content-code-examples/tutorials/reading-barcodes-2.cs
using IronBarCode;

BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    // Choose a speed from: Faster, Balanced, Detailed, ExtremeDetail
    // There is a tradeoff in performance as more Detail is set
    Speed = ReadingSpeed.ExtremeDetail,

    // By default, all barcode formats are scanned for.
    // Specifying one or more, performance will increase.
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
};

// Read barcode
BarcodeResults results = BarcodeReader.Read("TryHarderQR.png", options);
Imports IronBarCode

Private options As New BarcodeReaderOptions() With {
	.Speed = ReadingSpeed.ExtremeDetail,
	.ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128
}

' Read barcode
Private results As BarcodeResults = BarcodeReader.Read("TryHarderQR.png", options)
VB   C#

Qui lira ce code QR faussé :

Scanner un code QR tourné à 45 degrés avec C#

Dans notre exemple, vous pouvez voir que nous pouvons spécifier l'encodage du code-barres(s)nous recherchons un ou même plusieurs formats. Cela permet d'améliorer considérablement les performances et la précision de la lecture des codes-barres. Les pipe character, or 'Bitwise OR,' is used to specify multiple formats simultaneously.

Le même résultat peut être atteint, mais avec un degré de spécificité plus élevé, si nous avançons et utilisons les propriétés ImageFilters et AutoRotate.

:path=/static-assets/barcode/content-code-examples/tutorials/reading-barcodes-3.cs
using IronBarCode;

BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    // Choose which filters are to be applied (in order)
    ImageFilters = new ImageFilterCollection() {
        new AdaptiveThresholdFilter(),
    },

    // Uses machine learning to auto rotate the barcode
    AutoRotate = true,
};

// Read barcode
BarcodeResults results = BarcodeReader.Read("TryHarderQR.png", options);
Imports IronBarCode

Private options As New BarcodeReaderOptions() With {
	.ImageFilters = New ImageFilterCollection() From {New AdaptiveThresholdFilter()},
	.AutoRotate = True
}

' Read barcode
Private results As BarcodeResults = BarcodeReader.Read("TryHarderQR.png", options)
VB   C#

Lecture de plusieurs codes-barres

Documents PDF

Dans notre prochain exemple, nous allons nous intéresser à la lecture d'un fichierdocument PDF scanné et trouver tous les codes-barres de format unidimensionnel en très peu de lignes de code.

Comme vous pouvez le voir, c'est très similaire à la lecture d'un seul code-barres à partir d'un seul document, sauf que nous disposons maintenant d'une nouvelle information concernant le numéro de page sur lequel le code-barres a été trouvé.

:path=/static-assets/barcode/content-code-examples/tutorials/reading-barcodes-4.cs
using IronBarCode;
using System;

// Multiple barcodes may be scanned up from a single document or image. A PDF document may also used as the input image
BarcodeResults results = BarcodeReader.ReadPdf("MultipleBarcodes.pdf");

// Work with the results
foreach (var pageResult in results)
{
    string Value = pageResult.Value;
    int PageNum = pageResult.PageNumber;
    System.Drawing.Bitmap Img = pageResult.BarcodeImage;
    BarcodeEncoding BarcodeType = pageResult.BarcodeType;
    byte[] Binary = pageResult.BinaryValue;
    Console.WriteLine(pageResult.Value + " on page " + PageNum);
}
Imports IronBarCode
Imports System

' Multiple barcodes may be scanned up from a single document or image. A PDF document may also used as the input image
Private results As BarcodeResults = BarcodeReader.ReadPdf("MultipleBarcodes.pdf")

' Work with the results
For Each pageResult In results
	Dim Value As String = pageResult.Value
	Dim PageNum As Integer = pageResult.PageNumber
	Dim Img As System.Drawing.Bitmap = pageResult.BarcodeImage
	Dim BarcodeType As BarcodeEncoding = pageResult.BarcodeType
	Dim Binary() As Byte = pageResult.BinaryValue
	Console.WriteLine(pageResult.Value & " on page " & PageNum)
Next pageResult
VB   C#

Nous trouvons les codes-barres suivants sur différentes pages.

C# - Lecture de codes-barres à partir d'un résultat PDF

Scanne des TIFFs

Dans notre prochain exemple, nous pouvons voir que le même résultat peut être obtenu à partir d'un TIFF multi-images, qui sera traité de manière similaire à un PDF dans ce contexte.

C# - Lecture de codes-barres à partir d'une image TIFF multi-images
:path=/static-assets/barcode/content-code-examples/tutorials/reading-barcodes-5.cs
using IronBarCode;

// Multi frame TIFF and GIF images can also be scanned
BarcodeResults multiFrameResults = BarcodeReader.Read("Multiframe.tiff");

foreach (var pageResult in multiFrameResults)
{
    //...
}
Imports IronBarCode

' Multi frame TIFF and GIF images can also be scanned
Private multiFrameResults As BarcodeResults = BarcodeReader.Read("Multiframe.tiff")

For Each pageResult In multiFrameResults
	'...
Next pageResult
VB   C#

Multithreading

Pour lire plusieurs documents, nous pouvons obtenir de meilleurs résultats avec IronBarcode en créant une liste des documents et en utilisant le BarcodeReader.Read méthode. Cette méthode utilise plusieurs threads et potentiellement tous les cœurs de votre CPU pour le processus de lecture des codes-barres et peut être exponentiellement plus rapide que la lecture des codes-barres un par un.

:path=/static-assets/barcode/content-code-examples/tutorials/reading-barcodes-6.cs
using IronBarCode;

// The Multithreaded property allows for faster barcode scanning across multiple images or PDFs. All threads are automatically managed by IronBarCode.
var ListOfDocuments = new[] { "image1.png", "image2.JPG", "image3.pdf" };

BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    // Enable multithreading
    Multithreaded = true,
};

BarcodeResults batchResults = BarcodeReader.Read(ListOfDocuments, options);
Imports IronBarCode

' The Multithreaded property allows for faster barcode scanning across multiple images or PDFs. All threads are automatically managed by IronBarCode.
Private ListOfDocuments = { "image1.png", "image2.JPG", "image3.pdf" }

Private options As New BarcodeReaderOptions() With {.Multithreaded = True}

Private batchResults As BarcodeResults = BarcodeReader.Read(ListOfDocuments, options)
VB   C#

Résumé

En résumé, IronBarcode est une bibliothèque logicielle .NET polyvalente et un générateur de code QR en C# capable de lire une large gamme de formats de code-barres. Il peut le faire indépendamment du fait que les codes-barres soient des captures d'écran parfaites ou des images réelles imparfaites, telles que des photographies ou des scans.

Pour en savoir plus

Pour en savoir plus sur l'utilisation d'IronBarcode, vous pouvez explorer les autres tutoriels de cette section, ainsi que les exemples sur notre page d'accueil, que la plupart des développeurs trouveront suffisants pour débuter.

NotreRéférence API, en particulier la classe BarcodeReader et l'énumération BarcodeEncoding, fourniront des informations détaillées sur ce que vous pouvez réaliser avec cette bibliothèque de codes-barres C#.

Téléchargement du code source

Nous vous encourageons également fortement à télécharger ce tutoriel et à l'exécuter vous-même. Vous pouvez le faire en téléchargeant le code source ou en nous forkant sur GitHub. La source de ce tutoriel de lecteur de code-barres .NET est disponible en tant que projet d'application console Visual Studio 2017 écrit en C#.

ingénieur logiciel .NET Pour beaucoup, il s'agit de la manière la plus efficace de générer des fichiers PDF à partir de .NET, car il n'y a pas d'API supplémentaire à apprendre, ni de système de conception complexe à naviguer

Frank Walker

développeur de produits .NET

Frank a été l'un des fondateurs du développement d'IronBarcode. Travaillant avec IronOCR depuis un an, Frank a joué un rôle déterminant dans l'élaboration de cas d'utilisation au sein de l'OCR pour qu'IronBarcode devienne l'outil qu'il est aujourd'hui.