Lire les codes-barres 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
novembre 4, 2018
Mise à jour décembre 10, 2024
Partager:
This article was translated from English: Does it need improvement?
Translated
View the article in English

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 consiste à installer Iron Barcode, et cela est plus facilement réalisé en utilisant notre package NuGet, bien que vous puissiez également choisir d'installer manuellement le DLL dans votre projet ou dans 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 de codage, ses données binaires (le cas échéant), puis les 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
$vbLabelText   $csharpLabel

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

Qui lira ce code QR faussé :

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

Dans notre exemple, vous pouvez voir que nous pouvons spécifier le(s) encodage(s) de code à barres que nous recherchons ou même plusieurs formats. Cela permet d'améliorer considérablement les performances et la précision de la lecture des codes-barres. Le Le caractère de pipe, ou 'OU bit à bit', est utilisé pour spécifier plusieurs formats simultanément.

Le même résultat peut être obtenu, mais avec un degré de spécificité plus élevé, si nous continuons 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)
$vbLabelText   $csharpLabel

Lecture de plusieurs codes-barres

Documents PDF

Dans notre prochain exemple, nous allons examiner la lecture d'un document PDF numérisé 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
$vbLabelText   $csharpLabel

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

C# - Lecture des codes-barres à partir d'un 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
$vbLabelText   $csharpLabel

Multithreading

Pour lire plusieurs documents, nous pouvons obtenir de meilleurs résultats avec IronBarcode en créant une liste des documents et en utilisant la méthode BarcodeReader.Read. 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)
$vbLabelText   $csharpLabel

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.

Notre référence API, notamment la classe BarcodeReader et l'énumération BarcodeEncoding, fournira 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
développeur de produits .NET

Frank a été une force fondatrice dans le développement de IronBarcode. Travaillant avec IronOCR depuis l'année dernière, Frank a eu une influence déterminante pour construire des cas d'utilisation au sein d'OCR pour IronBarcode afin de le développer en l'outil qu'il est maintenant.