IRONSOFTWAREHOME
COMPARER À D'AUTRES COMPOSANTS

Code-barres Google ML Kit Scanning vs IronBarcode: Ce que les développeurs de .NET doivent savoir

Curtis Chau
Curtis Chau
Updated: 26 avril 2026

La fonction de lecture de codes-barres de Google ML Kit est vraiment impressionnante sur Android. Il alimente Google Lens, gère les codes endommagés et partiellement masqués, fonctionne sur l'appareil sans appel réseau et prend en charge un large éventail de formats 1D et 2D. Lorsque les développeurs .NET découvrent cela dans une comparaison de bibliothèques de codes-barres, ces faits sont exacts. Ce que les articles comparatifs omettent souvent, c'est que ML Kit ne possède ni SDK .NET , ni package NuGet , ni API C#. Cet article s'adresse aux développeurs qui ont trouvé ML Kit dans une liste et qui ont besoin de comprendre ce que signifie concrètement " utiliser ML Kit dans un projet .NET " — et à quoi ressemble l'équivalent en code managé.

Qu'est-ce que la lecture de codes-barres avec Google ML Kit ?

Google ML Kit Barcode Scanning est une bibliothèque mobile native. Il n'est pas possible de contourner cette limitation ; Il s'agit de la conception du produit. Le kit ML est disponible en deux versions :

  • Android: Distributed via Google Maven as com.google.mlkit:barcode-scanning (Kotlin/Java). Nécessite Google Play Services sur l'appareil cible. Traite les objets InputImage construits à partir de trames de caméra, d'URIs de fichiers ou de bitmaps.
  • iOS: Distributed via CocoaPods as GoogleMLKit/BarcodeScanning. Utilise Swift ou Objective-C.

Il n'y a pas de dotnet add package google-mlkit-barcode. Il n'y a pas de using Google.MLKit.BarcodeScanning;. Google ne publie pas de liaison .NET pour ML Kit.

Des liaisons Xamarin et MAUI maintenues par la communauté (telles que BarcodeScanning.Native.Maui ou Xamarin.GooglePlayServices.MLKit.BarcodeScanning) ont existé à divers moments, mais elles partagent un défi commun : ML Kit met à jour fréquemment ses SDK Android et iOS, et les projets de liaison maintenus par des individus ou de petites équipes peuvent prendre du retard ou cesser de fonctionner lorsque l'API sous-jacente change. Il n'existe pas de package NuGet .NET de première partie pour le scanner de code-barres ML Kit.

Ce que ML Kit fait bien

Comprendre pourquoi ML Kit apparaît dans les comparaisons de codes-barres est un contexte utile. Sur Android natif :

  • Inférence sur l'appareil : aucun aller-retour avec le serveur. Le modèle ML Kit s'exécute localement à l'aide des services Google Play, ce qui garantit une faible latence et aucune dépendance au réseau lors de l'analyse.
  • Tolérance aux dommages : Le modèle ML gère mieux les codes-barres endommagés, partiellement masqués ou à faible résolution que de nombreux décodeurs basés sur un seuil. Il s'agit là d'un véritable atout pour les applications grand public qui scannent des codes-barres réels.
  • Intégration de Google Lens : le scanner de ML Kit utilise la même architecture que celle qui alimente la détection des codes-barres de Google Lens. Il s'agit d'un signal de haute qualité.
  • Formats compatibles sur mobile : les codes QR, EAN-13, EAN-8, Code 128, Code 39, Code 93, Codabar, ITF, PDF417, Data Matrix, Aztèque et UPC-A/UPC-E sont tous pris en charge nativement.
  • Configuration nulle : un extrait de code Kotlin de trois lignes peut produire un scanner fonctionnel sans réglage des seuils ni choix de stratégie de décodage.

Ce sont des atouts légitimes. Le problème pour les développeurs .NET n'est pas que ML Kit soit mauvais, mais qu'il ne leur soit pas accessible sans un travail considérable.

La réalité du développement .NET

Lorsqu'un développeur .NET a besoin de scanner des codes-barres, le chemin d'accès au ML Kit ressemble concrètement à ceci :

Aucune API C# async/await. ML Kit utilise l'API Task d'Android avec des callbacks addOnSuccessListener et addOnFailureListener. Ces éléments ne correspondent pas à .NET's Task<t> et await. Toute couche de liaison doit s'adapter entre l'asynchrone Android basé sur les rappels et la bibliothèque TPL de .NET — une traduction non triviale que les liaisons communautaires gèrent de manière incohérente.

Aucune intégration d'injection de dépendance .NET. BarcodeScanning.getClient(options) est un appel de fabrique statique qui renvoie un objet Android BarcodeScanner. Il n'y a pas d'interface .NET à enregistrer, pas de IServiceCollection.AddBarcodeScanner(), aucun moyen de l'injecter dans ASP.NET Core middleware ou Azure Functions.

Aucune prise en charge ASP.NET Core ni d'Azure Functions. ML Kit nécessite un environnement d'exécution Android ou iOS. Il ne peut pas s'exécuter dans un processus d'API Web sous Linux, dans une fonction Azure, sur un serveur Windows ou dans un conteneur Docker. Si votre cas d'utilisation concerne le traitement des codes-barres côté serveur (un point de terminaison REST qui accepte une image et renvoie des données de code-barres, un pipeline de traitement de documents, un traitement par lots), ML Kit est architecturalement incompatible, quelle que soit la disponibilité des liaisons.

Entrée par caméra ou trame uniquement — pas de fichier, pas de PDF. Les InputImage de ML Kit peuvent être construits à partir d'un Bitmap, d'un ByteBuffer ou d'une URI de fichier sur le système de fichiers Android. Il n'existe aucun concept permettant de traiter un document PDF, d'itérer sur les pages ou de gérer un fichier TIFF multipage. Le traitement des documents côté serveur est totalement extérieur au périmètre du produit.

Dépendance de Google Play Services (modèle non intégré). La variante du modèle non intégré (com.google.android.gms:play-services-mlkit-barcode-scanning) fonctionne via Google Play Services. Les appareils sans Play Services — compilations Android personnalisées, certains appareils d'entreprise, tablettes Amazon Fire — ne peuvent pas utiliser cette variante. L'option de modèle intégré (com.google.mlkit:barcode-scanning) fonctionne sans Play Services mais ajoute environ 2,4 Mo à la taille de l'APK.

Portage du code Android ML Kit vers .NET

Si vous disposez d'une application Android existante avec la lecture de codes-barres ML Kit et que vous la portez vers .NET MAUI ou .NET 9, voici la traduction. Le code Kotlin utilise le modèle de rappel de ML Kit ; Le code C# utilise l'API synchrone d'IronBarcode.

// Android Kotlin: ML Kit
val options = BarcodeScannerOptions.Builder()
    .setBarcodeFormats(Barcode.FORMAT_QR_CODE, Barcode.FORMAT_CODE_128)
    .build()
val scanner = BarcodeScanning.getClient(options)
val inputImage = InputImage.fromFilePath(context, uri)
scanner.process(inputImage)
    .addOnSuccessListener { barcodes ->
        for (barcode in barcodes) {
            val rawValue = barcode.rawValue
            val format = barcode.format
        }
    }
    .addOnFailureListener { e -> Log.e("MLKit", e.message ?: "") }
Text
// .NET C#: IronBarcode
// NuGet: dotnet add package BarCode
using IronBarCode;

var results = BarcodeReader.Read("captured-image.jpg");
foreach (var barcode in results)
{
    Console.WriteLine($"{barcode.Format}: {barcode.Value}");
}

La différence structurelle dépasse la simple syntaxe. La version de ML Kit configure un objet scanner, construit un InputImage, appelle scanner.process(), et enregistre les callbacks de succès et d'échec. Si vous avez besoin du résultat avant de continuer, vous devez coordonner l'exécution du callback avec le reste de votre logique — généralement via un CountDownLatch en Java ou des coroutines en Kotlin.

Le BarcodeReader.Read() d'IronBarcode renvoie une collection de résultats de manière synchrone. Vous l'itérez immédiatement. Il n'y a pas d'enregistrement de rappel, pas de synchronisation de threads, pas d'objet scanner séparé à gérer.

Pour les équipes qui portent du code Android, la traduction des modèles pour les scénarios à plusieurs codes-barres ressemble à ceci :

// .NET C#: Code-barres IronBarcode — reading multiple barcodes with options
using IronBarCode;

var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128
};

var results = BarcodeReader.Read("image.jpg", options);
foreach (var barcode in results)
{
    Console.WriteLine($"Format: {barcode.Format}, Value: {barcode.Value}");
}
C#

Le drapeau ExpectBarcodeTypes est l'équivalent de setBarcodeFormats() de ML Kit. Le paramétrer restreint la recherche et améliore les performances, mais contrairement à ML Kit, le fait de ne pas le paramétrer n'interrompt pas la lecture : Code-barres IronBarcode tentera tous les formats pris en charge.

Comparaison de la couverture des formats

Ces deux outils couvrent les formats 2D et 1D les plus courants. Le chevauchement est important.

FormatKit ML (Android)Code-barres IronBarcode
Code QROuiOui
EAN-13OuiOui
EAN-8OuiOui
UPC-AOuiOui
UPC-EOuiOui
Code 128OuiOui
Code 39OuiOui
Code 93OuiOui
CodabarOuiOui
ITFOuiOui
PDF417OuiOui
Matrice de donnéesOuiOui
AztèqueOuiOui
Code 11NonOui
MSI PlesseyNonOui
PharmacodeNonOui
Intercalé 2 sur 5Via ITFOui
Barre de données RSS-14 / GS1NonOui
Micro QRNonOui
MaxiCodeNonOui

IronBarcode prend en charge plus de 50 symbologies pour la lecture et la génération. La liste des formats de ML Kit est fixe et correspond à celle fournie par Google avec le modèle ; vous ne pouvez pas ajouter de symbologies personnalisées.

Qu'apporte IronBarcode

Au-delà de la simple lecture, Code-barres IronBarcode couvre l'intégralité du flux de travail des codes-barres :

Génération. ML Kit ne possède aucune API de génération ; il lit les codes-barres, il ne les crée pas. Code-barres IronBarcode génère tous les formats pris en charge aux formats PNG, JPEG, SVG, HTML ou données binaires.

// Generate a Code 128barcode to file
BarcodeWriter.CreateBarcode("SHIP-7834", BarcodeEncoding.Code128)
    .SaveAsPng("shipping-label.png");
C#

Personnalisation des codes QR. QRCodeWriter prend en charge l'intégration de logos, les modifications de couleurs et les niveaux de correction d'erreurs — des fonctionnalités qui n'ont pas d'équivalent dans ML Kit, car ML Kit ne génère rien.

// QR code with embedded logo and custom color
QRCodeWriter.CreateQrCode("https://example.com/product/4821", 500)
    .AddBrandLogo("company-logo.png")
    .ChangeBarCodeColor(System.Drawing.Color.DarkBlue)
    .SaveAsPng("product-qr.png");

Traitement de PDF. BarcodeReader.Read("document.pdf") lit les codes-barres de chaque page d'un PDF nativement. Aucune étape d'extraction d'image, aucune boucle page par page avec une bibliothèque PDF séparée : il gère directement les PDF.

// Read all barcodes from every page of a PDF
var results = BarcodeReader.Read("invoice-batch.pdf");
foreach (var barcode in results)
{
    Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Value}");
}

Solution côté serveur et cloud. Code-barres IronBarcode fonctionne sous Windows, Linux, macOS, Docker, Azure Functionset AWS Lambda. Aucune exigence concernant les services Google Play, aucune caméra, aucun environnement d'exécution mobile.

Sortie binaire. .ToPngBinaryData() renvoie un byte[] directement — utile pour les API qui renvoient des images de code-barres comme réponses HTTP sans écrire sur le disque.

// Generate barcode and return as byte array (e.g., in a web API)
byte[] barcodeBytes = BarcodeWriter.CreateBarcode("ORDER-8821", BarcodeEncoding.QRCode)
    .ToPngBinaryData();

Comparaison des fonctionnalités

FonctionCode-barres Google ML KitCode-barres IronBarcode
API .NET / C#Aucun (aucun package NuGet )Oui — using IronBarCode;
Paquet NuGetNoneBarCode
Lecture de codes-barresOui (Android/iOS uniquement)Oui (toutes les plateformes)
génération de codes-barresNonOui (plus de 50 formats)
génération de code QRNonOui
Intégration de logo QRNonOui
Prise en charge de la saisie PDFNonOui (natif)
Fichier d'entrée (PNG/JPEG)Oui (via l'URI InputImage)Oui
Entrée caméra/imageOui (cas d'utilisation principal)Via fichier image
Traitement côté serveurNonOui
Prise en charge ASP.NET CoreNonOui
Azure FunctionsNonOui
Docker / LinuxNonOui
Prise en charge des applications WindowsNon (Android/iOS uniquement)Oui
Département des services Google PlayOui (modèle non groupé)Non
Dépendance FirebaseNon (indépendant depuis 2020)Non
API C# asynchrone/attenteNonSynchrone
Plusieurs codes-barres dans une seule imageOuiOui
Liaison .NET communautaireMaintenu par la communauté, pas de première partieN/A (natif .NET)
TarifsGratuit (API sur appareil)À partir de 749 $ perpétuel

Cartographie conceptuelle des API

Comme il n'existe pas d'API officielle .NET ML Kit, ce mappage est conceptuel : il illustre l'intention de chaque opération ML Kit et son équivalent Code-barres IronBarcode .

Kit de ML (concept Kotlin/Java)Code-barres IronBarcode for .NET C#
BarcodeScannerOptions.Builder()new BarcodeReaderOptions { }
.setBarcodeFormats(FORMAT_QR_CODE)ExpectBarcodeTypes = BarcodeEncoding.QRCode
BarcodeScanning.getClient(options)Statique — aucun objet scanner nécessaire
InputImage.fromFilePath(context, uri)Chaîne de chemin de fichier passée à BarcodeReader.Read()
InputImage.fromBitmap(bitmap, rotation)BarcodeReader.Read(stream) ou surcharge de tableau d'octets
scanner.process(inputImage)BarcodeReader.Read(path, options)
.addOnSuccessListener { barcodes -> }Valeur de retour de Read() — itérer directement
.addOnFailureListener { e -> }try/catch standard
barcode.rawValuebarcode.Value
barcode.formatbarcode.Format
barcode.boundingBoxDonnées de région sur l'objet résultat
Barcode.FORMAT_QR_CODEBarcodeEncoding.QRCode
Barcode.FORMAT_CODE_128BarcodeEncoding.Code128
API sans générationBarcodeWriter.CreateBarcode()
API sans générationQRCodeWriter.CreateQrCode()
Speed / sélection de modèleReadingSpeed.Balanced / .Faster / .Detailed

Quand envisager IronBarcode

Portage d'une application Android vers .NET MAUI ou .NET 9. Si votre application Android utilise ML Kit pour la lecture de codes-barres et que vous développez un équivalent .NET , Code-barres IronBarcode est la cible naturelle. La traduction du concept est simple : lire un fichier, obtenir un résultat, parcourir les valeurs.

Traitement des codes-barres côté serveur. Tout scénario impliquant un point de terminaison HTTP qui scanne des codes-barres, une tâche en arrière-plan traitant des images téléchargées ou un flux de travail documentaire qui extrait des codes à partir de PDF. ML Kit ne peut participer à aucune de ces activités.

Applications de bureau Windows. WinForms, WPF ou .NET MAUI sous Windows. ML Kit ne fonctionne pas du tout sous Windows.

Environnements sans Google Play Services. Si votre déploiement Android inclut des appareils sans Google Play Services — matériel d'entreprise, compilations AOSP personnalisées, appareils Amazon Fire — le modèle ML Kit non groupé n'est pas disponible, et seule la variante groupée reste. Code-barres IronBarcode ne présente pas une telle dépendance.

Génération et lecture simultanées. Si vous devez à la fois générer et lire des codes-barres (par exemple, pour imprimer des étiquettes d'expédition et vérifier les scans), Code-barres IronBarcode gère les deux dans une seule et même bibliothèque. ML Kit ne gère ni la génération ni la lecture côté serveur.

Déploiement sur Azure ou AWS. Azure Functions, Azure App Service sur Linux, AWS Lambda : aucun de ces services ne peut héberger ML Kit. Code-barres IronBarcode les cible tous.

Licences et Tarification

L'API sur appareil de Code-barres Google ML Kit Scanning est gratuite pour les applications Android et iOS. Il n'y a pas de frais par scan ni de licence commerciale requise. Ce modèle de tarification s'adapte à son contexte prévu — une bibliothèque mobile native distribuée via Maven et CocoaPods.

IronBarcode est une bibliothèque .NET commerciale avec des licences perpétuelles :

  • Lite: 749 $ — 1 développeur, 1 emplacement de projet
  • En Plus: 1 499 $ — jusqu'à 3 développeurs
  • Professional: 2 999 $ — jusqu'à 10 développeurs
  • Illimité : 5 999 $ — développeurs illimités

Un essai gratuit est disponible ; Les filigranes d'essai ont généré des codes-barres. Pour les équipes déjà exploitant une infrastructure serveur pour traiter des documents, le coût de la licence est généralement une petite fraction de l'effort d'ingénierie requis pour maintenir une liaison ML Kit non officielle.

Conclusion

Google ML Kit Barcode Scanning est une bibliothèque bien conçue qui fait exactement ce pour quoi elle a été conçue : scanner les codes-barres rapidement et avec précision sur les appareils Android et iOS. La comparaison avec Code-barres IronBarcode porte moins sur la qualité intrinsèque d'une bibliothèque que sur sa disponibilité dans le contexte où vous en avez besoin.

Si vous développez en Kotlin pour Android et utilisez la numérisation depuis un appareil photo, ML Kit est un excellent choix. En revanche, si vous développez en C# for .NET (que ce soit pour une API web, un service de traitement de documents, une application Windows, une fonction cloud ou une application MAUI multiplateforme), Google ML Kit ne vous propose aucune solution. Il n'existe ni package NuGet , ni API C#, ni méthode prise en charge par Google pour l'utiliser dans du code managé. Code-barres IronBarcode est une bibliothèque .NET native qui couvre à la fois la lecture et la génération sur toutes les plateformes prises en charge par .NET .

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes et créer des manuels bien structurés et visuellement attrayants.

...
Lire la suite

Articles connexes

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise