Lire les codes-barres en C&#x23 ;

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

par Frank Walker

Installer la bibliothèque de codes-barres dans votre projet Visual Studio

Bibliothèque NuGet C# pour

Installer avec NuGet

Install-Package BarCode
ou
Java PDF JAR

Télécharger DLL

Télécharger la DLL

Installation manuelle dans votre projet

Bibliothèque NuGet C# pour

Installer avec NuGet

Install-Package BarCode
ou
Java PDF JAR

Télécharger DLL

Télécharger la DLL

Installation manuelle dans votre projet

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

Première étape :
green arrow pointer

Découvrez IronBarcode sur NuGet pour une installation rapide et un déploiement facile. Avec plus de 8 millions de téléchargements, il transforme avec C#.

Bibliothèque NuGet C# pour nuget.org/packages/BarCode/
Install-Package BarCode

Envisagez d'installer le IronBarcode DLL directement. Téléchargez et installez-le manuellement pour votre projet ou sous forme de GAC : {{lienDllAfficher}}

Installation manuelle dans votre projet

Télécharger la DLL

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

La lecture d'un code-barres ou d'un code QR dans .NET est incroyablement facile en utilisant la bibliothèque de classe Iron Barcode 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.

using IronBarCode;
using System;

BarcodeResult Result = BarcodeReader.QuicklyReadOneBarcode("GetStarted.png");

if (Result !=null && Result.Text == "https://ironsoftware.com/csharp/barcode/")
{
  Console.WriteLine("GetStarted was a success.  Read Value: " + Result.Text);
}
using IronBarCode;
using System;

BarcodeResult Result = BarcodeReader.QuicklyReadOneBarcode("GetStarted.png");

if (Result !=null && Result.Text == "https://ironsoftware.com/csharp/barcode/")
{
  Console.WriteLine("GetStarted was a success.  Read Value: " + Result.Text);
}
Imports IronBarCode
Imports System

Private Result As BarcodeResult = BarcodeReader.QuicklyReadOneBarcode("GetStarted.png")

If Result IsNot Nothing AndAlso Result.Text = "https://ironsoftware.com/csharp/barcode/" Then
  Console.WriteLine("GetStarted was a success.  Read Value: " & Result.Text)
End If
VB   C#

Faites plus d'efforts et soyez précis

Dans l'exemple suivant, nous allons ajouter notre variable TryHarder à la méthode QuicklyReadOneBarcode. Cela lui permet de faire plus d'efforts, en prenant littéralement plus de temps, mais en scannant plus profondément pour trouver un code QR qui pourrait être obscurci, corrompu, ou à un angle biaisé.

BarcodeResult Result = BarcodeReader.QuicklyReadOneBarcode("TryHarderQR.png", BarcodeEncoding.QRCode 
 BarcodeEncoding.Code128 , true);
BarcodeResult Result = BarcodeReader.QuicklyReadOneBarcode("TryHarderQR.png", BarcodeEncoding.QRCode 
 BarcodeEncoding.Code128 , true);
Dim Result As BarcodeResult = BarcodeReader.QuicklyReadOneBarcode("TryHarderQR.png", BarcodeEncoding.QRCode BarcodeEncoding.Code128, True)
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) que nous recherchons ou spécifier 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 'Bitwize OR' is used to specify multiple formats simultaneously.

La même chose peut être obtenue, mais avec un degré de spécificité plus élevé, si nous allons de l'avant et utilisons la méthode de la BarcodeReader.ReadASingleBarcode Méthode.

BarcodeResult Result = IronBarCode.BarcodeReader.ReadASingleBarcode("TryHarderQR.png", BarcodeEncoding.QRCode 
 BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.High, BarcodeReader.BarcodeImageCorrection.MediumCleanPixels);
BarcodeResult Result = IronBarCode.BarcodeReader.ReadASingleBarcode("TryHarderQR.png", BarcodeEncoding.QRCode 
 BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.High, BarcodeReader.BarcodeImageCorrection.MediumCleanPixels);
Dim Result As BarcodeResult = IronBarCode.BarcodeReader.ReadASingleBarcode("TryHarderQR.png", BarcodeEncoding.QRCode BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.High, BarcodeReader.BarcodeImageCorrection.MediumCleanPixels)
VB   C#

Lecture de plusieurs codes-barres

Documents PDF

Dans notre prochain exemple, nous allons nous intéresser à la lecture d'un fichier document 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é.


using IronBarCode;
using System;
using System.Drawing;

// Multiple barcodes may be scanned up from a single document or image.  A PDF document may also used as the input image
PagedBarcodeResult [] PDFResults = BarcodeReader.ReadBarcodesFromPdf("MultipleBarcodes.pdf");

// Work with the results
foreach (var PageResult in PDFResults)
{
    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);
}     

using IronBarCode;
using System;
using System.Drawing;

// Multiple barcodes may be scanned up from a single document or image.  A PDF document may also used as the input image
PagedBarcodeResult [] PDFResults = BarcodeReader.ReadBarcodesFromPdf("MultipleBarcodes.pdf");

// Work with the results
foreach (var PageResult in PDFResults)
{
    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
Imports System.Drawing

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

' Work with the results
For Each PageResult In PDFResults
	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

Scans et TIFF

Dans l'exemple suivant, nous pouvons voir que le même résultat peut être obtenu à partir d'un TIFF multi-images, qui sera traité de la même manière qu'un PDF à cet égard.

C# - Lecture de codes-barres à partir d'une image TIFF multi-images
// Multi frame TIFF and GIF images can also be scanned, and multiple threads will be used automatically in the background for improved performance
PagedBarcodeResult [] MultiFrameResults = BarcodeReader.ReadBarcodesFromMultiFrameTiff("Multiframe.tiff", BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.High, BarcodeReader.BarcodeImageCorrection.MediumCleanPixels);            

 foreach (var PageResult in MultiFrameResults)
  {
    //...
  }
// Multi frame TIFF and GIF images can also be scanned, and multiple threads will be used automatically in the background for improved performance
PagedBarcodeResult [] MultiFrameResults = BarcodeReader.ReadBarcodesFromMultiFrameTiff("Multiframe.tiff", BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.High, BarcodeReader.BarcodeImageCorrection.MediumCleanPixels);            

 foreach (var PageResult in MultiFrameResults)
  {
    //...
  }
' Multi frame TIFF and GIF images can also be scanned, and multiple threads will be used automatically in the background for improved performance
Dim MultiFrameResults() As PagedBarcodeResult = BarcodeReader.ReadBarcodesFromMultiFrameTiff("Multiframe.tiff", BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.High, BarcodeReader.BarcodeImageCorrection.MediumCleanPixels)

 For Each PageResult In MultiFrameResults
	'...
 Next PageResult
VB   C#

Multithreading

Pour lire plusieurs documents, nous obtenons de meilleurs résultats avec Iron Barcode en créant une liste de documents et en utilisant la fonction BarcodeReader.ReadBarcodesMultithreaded 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.

// The BarcodeResult.ReadBarcodesMultiThreaded method allows for faster barcode scanning of multiple images or PDFs.  All threads are automatically managed by IronBarCode.
var ListOfDocuments = new [] { "Image1.png", "image2.JPG", "image3.pdf" };
PagedBarcodeResult [] BatchResults = BarcodeReader.ReadBarcodesMultiThreaded(ListOfDocuments);

// Work with the results
foreach (var Result in BatchResults)
{
    string Value = Result.Value;
    //...
}
// The BarcodeResult.ReadBarcodesMultiThreaded method allows for faster barcode scanning of multiple images or PDFs.  All threads are automatically managed by IronBarCode.
var ListOfDocuments = new [] { "Image1.png", "image2.JPG", "image3.pdf" };
PagedBarcodeResult [] BatchResults = BarcodeReader.ReadBarcodesMultiThreaded(ListOfDocuments);

// Work with the results
foreach (var Result in BatchResults)
{
    string Value = Result.Value;
    //...
}
' The BarcodeResult.ReadBarcodesMultiThreaded method allows for faster barcode scanning of multiple images or PDFs.  All threads are automatically managed by IronBarCode.
Dim ListOfDocuments = { "Image1.png", "image2.JPG", "image3.pdf" }
Dim BatchResults() As PagedBarcodeResult = BarcodeReader.ReadBarcodesMultiThreaded(ListOfDocuments)

' Work with the results
For Each Result In BatchResults
	Dim Value As String = Result.Value
	'...
Next Result
VB   C#

Lecture de codes-barres à partir d'images imparfaites

Dans les cas d'utilisation réels, il se peut que nous souhaitions lire des codes-barres qui ne sont pas des captures d'écran parfaites. Il peut s'agir d'images imparfaites, de scans ou de photographies qui contiennent du bruit numérique ou qui sont faussées. Avec la plupart des bibliothèques open source conventionnelles de générateur et de lecteur de codes-barres .net, cela serait impossible. Toutefois, cette Lecteur de code-barres en C# rend les choses très simples.

Dans notre prochain exemple, nous examinerons la méthode TryHarder de QuicklyReadOneBarcode. Ce paramètre unique permet à Iron Barcode d'essayer de déformer et de lire les codes-barres à partir d'échantillons numériques imparfaits.

Photographies

Dans l'exemple des photographies, nous définirons une correction spécifique de la rotation du code-barres et une correction de l'image du code-barres afin de corriger le bruit numérique et l'inclinaison, la perspective et la rotation que l'on peut raisonnablement attendre de l'appareil photo d'un téléphone portable.

Lire un code-barres à partir de l'appareil photo d'un téléphone en C#
using IronBarCode;
using System;
using System.Drawing;

// All BarcodeResult.Read methods provide the developer with control to correct image and photograph correction and straightening rotation and perspective from skewed images
// * RotationCorrection   e.g BarcodeReader.BarcodeRotationCorrection.Extreme  un-rotates and removes perspective from barcode images.
// * ImageCorrection      e.g BarcodeReader.BarcodeImageCorrection.DeepCleanPixels  separates Barcodes from background imagery and digital noise.
// * BarcodeEncoding      e.g. BarcodeEncoding.Code128  Setting a specific Barcode format improves speed and reduces the risk of false positive results

// Example with a photo image
var PhotoResult = BarcodeReader.ReadASingleBarcode("Photo.png", BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.Medium, BarcodeReader.BarcodeImageCorrection.DeepCleanPixels);

string Value = PhotoResult.Value;
System.Drawing.Bitmap Img = PhotoResult.BarcodeImage;
BarcodeEncoding BarcodeType = PhotoResult.BarcodeType;
byte [] Binary = PhotoResult.BinaryValue;
Console.WriteLine(PhotoResult.Value);  
using IronBarCode;
using System;
using System.Drawing;

// All BarcodeResult.Read methods provide the developer with control to correct image and photograph correction and straightening rotation and perspective from skewed images
// * RotationCorrection   e.g BarcodeReader.BarcodeRotationCorrection.Extreme  un-rotates and removes perspective from barcode images.
// * ImageCorrection      e.g BarcodeReader.BarcodeImageCorrection.DeepCleanPixels  separates Barcodes from background imagery and digital noise.
// * BarcodeEncoding      e.g. BarcodeEncoding.Code128  Setting a specific Barcode format improves speed and reduces the risk of false positive results

// Example with a photo image
var PhotoResult = BarcodeReader.ReadASingleBarcode("Photo.png", BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.Medium, BarcodeReader.BarcodeImageCorrection.DeepCleanPixels);

string Value = PhotoResult.Value;
System.Drawing.Bitmap Img = PhotoResult.BarcodeImage;
BarcodeEncoding BarcodeType = PhotoResult.BarcodeType;
byte [] Binary = PhotoResult.BinaryValue;
Console.WriteLine(PhotoResult.Value);  
Imports IronBarCode
Imports System
Imports System.Drawing

' All BarcodeResult.Read methods provide the developer with control to correct image and photograph correction and straightening rotation and perspective from skewed images
' * RotationCorrection   e.g BarcodeReader.BarcodeRotationCorrection.Extreme  un-rotates and removes perspective from barcode images.
' * ImageCorrection      e.g BarcodeReader.BarcodeImageCorrection.DeepCleanPixels  separates Barcodes from background imagery and digital noise.
' * BarcodeEncoding      e.g. BarcodeEncoding.Code128  Setting a specific Barcode format improves speed and reduces the risk of false positive results

' Example with a photo image
Private PhotoResult = BarcodeReader.ReadASingleBarcode("Photo.png", BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.Medium, BarcodeReader.BarcodeImageCorrection.DeepCleanPixels)

Private Value As String = PhotoResult.Value
Private Img As System.Drawing.Bitmap = PhotoResult.BarcodeImage
Private BarcodeType As BarcodeEncoding = PhotoResult.BarcodeType
Private Binary() As Byte = PhotoResult.BinaryValue
Console.WriteLine(PhotoResult.Value)
VB   C#

Scans

L'exemple suivant montre comment nous pourrions aborder la lecture des codes QR et des codes-barres PDF-417 à partir d'un fichier pDF scanné. Notez que nous avons défini un niveau approprié de correction de la rotation du code-barres et de correction de l'image du code-barres pour nettoyer légèrement le document, mais sans encourir une énorme pénalité de performance en surestimant nos besoins.

Lecture de codes-barres à partir d'un document PDF scanné en C#
// Multi frame TIFF and GIF images can also be scanned, and multiple threads will be used automatically in the background for improved performance
var ScanResults = BarcodeReader.ReadBarcodesFromPdf("Scan.pdf", BarcodeEncoding.All, BarcodeReader.BarcodeRotationCorrection.Low, BarcodeReader.BarcodeImageCorrection.LightlyCleanPixels);

// Work with the results
foreach (var PageResult in ScanResults)
{
  string Value = PageResult.Value;
  ///...
} 
// Multi frame TIFF and GIF images can also be scanned, and multiple threads will be used automatically in the background for improved performance
var ScanResults = BarcodeReader.ReadBarcodesFromPdf("Scan.pdf", BarcodeEncoding.All, BarcodeReader.BarcodeRotationCorrection.Low, BarcodeReader.BarcodeImageCorrection.LightlyCleanPixels);

// Work with the results
foreach (var PageResult in ScanResults)
{
  string Value = PageResult.Value;
  ///...
} 
' Multi frame TIFF and GIF images can also be scanned, and multiple threads will be used automatically in the background for improved performance
Dim ScanResults = BarcodeReader.ReadBarcodesFromPdf("Scan.pdf", BarcodeEncoding.All, BarcodeReader.BarcodeRotationCorrection.Low, BarcodeReader.BarcodeImageCorrection.LightlyCleanPixels)

' Work with the results
For Each PageResult In ScanResults
  Dim Value As String = PageResult.Value
  '''...
Next PageResult
VB   C#

Vignettes

Dans le dernier exemple, nous verrons que cette Générateur de code-barres C# est même capable de lire une vignette corrompue d'un code-barres.

Correction automatique de la taille de la vignette du code-barres.  Lecture de fichiers à l'aide du code-barres Iron en C#

Nos méthodes de lecture de codes-barres détectent automatiquement les images de codes-barres qui sont trop petites pour être raisonnablement un code-barres réel, et elles augmentent l'échelle et nettoient tous les bruits numériques associés à la lecture de codes-barres ; ce qui leur permet d'être à nouveau lisibles.

// Small or 'Thumbnail' barcode images are automatically detected by IronBarCode and corrected for wherever possible even if they have much digital noise.
BarcodeResult SmallResult = BarcodeReader.QuicklyReadOneBarcode("ThumbnailOfBarcode.gif", BarcodeEncoding.Code128);
// Small or 'Thumbnail' barcode images are automatically detected by IronBarCode and corrected for wherever possible even if they have much digital noise.
BarcodeResult SmallResult = BarcodeReader.QuicklyReadOneBarcode("ThumbnailOfBarcode.gif", BarcodeEncoding.Code128);
' Small or 'Thumbnail' barcode images are automatically detected by IronBarCode and corrected for wherever possible even if they have much digital noise.
Dim SmallResult As BarcodeResult = BarcodeReader.QuicklyReadOneBarcode("ThumbnailOfBarcode.gif", BarcodeEncoding.Code128)
VB   C#

Résumé

En résumé, Iron Barcode est une bibliothèque logicielle .NET polyvalente et Générateur de code QR C# pour lire un large éventail de formats de codes-barres, et ce, que ces codes-barres soient ou non des captures d'écran parfaites, des photographies, des scans ou d'autres images imparfaites du monde réel.

Pour en savoir plus

Pour en savoir plus sur le travail avec Iron Barcode, vous pouvez consulter les autres tutoriels de cette section, ainsi que les exemples sur notre page d'accueil ; ce qui, pour la plupart des développeurs, est suffisant pour démarrer.

Notre Référence API avec une référence spécifique à la BarcodeReader et la classe BarcodeEncoding Enum vous montrera en détail ce qu'il est possible de faire en utilisant cette méthode Bibliothèque de codes-barres C#.

Téléchargement du code source

Nous vous encourageons vivement à télécharger ce tutoriel et à l'exécuter par vous-même. Vous pouvez le faire en téléchargeant le code source, ou en nous forkant sur GitHub. La source de cette .NET Barcode Reader tutoriel sont disponibles sous la forme d'un 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.