Passer au contenu du pied de page
COMPARER à D'AUTRES COMPOSANTS

Scandit SDK vs IronBarcode : Comparaison de la bibliothèque BarCode C#

Pour commencer à lire des codes-barres avec Scandit, vous configurez un DataCaptureContext, créez un BarcodeCaptureSettings, activez explicitement les symbologies, obtenez une caméra, définissez-la comme source d'images, faites passer la caméra à l'état activé et activez la capture. Le prix n'est toujours pas indiqué sur le site web.

Cette combinaison — un pipeline de caméra obligatoire et une tarification Enterprise opaque — définit précisément quand Scandit n'est pas l'outil approprié pour un projet .NET . Si vous développez un flux de traitement de documents côté serveur, une API ASP.NET Corequi lit les codes-barres des fichiers téléchargés ou une fonction Azure qui traite les PDF d'expédition, l'architecture de Scandit vous pénalise à chaque étape. Cette comparaison examine l'origine de cette architecture, la place qu'offre Code-barres IronBarcode et le coût de chaque choix.

Comprendre le SDK Scandit

Scandit SDK est une plateforme Enterprise de lecture de codes-barres conçue pour les environnements informatiques mobiles et de périphérie. La bibliothèque a été conçue pour prendre en charge la numérisation par caméra en temps réel sur les appareils iOS, Android et MAUI, avec des gammes de produits spécialisées couvrant les superpositions de réalité augmentée, la détection simultanée de plusieurs codes-barres et la numérisation de documents d'identité. Le principal contexte de déploiement de Scandit concerne les travailleurs mobiles sur le terrain, les opérations d'entrepôt et les scénarios de points de vente où une caméra physique, un utilisateur en direct et un temps de réponse inférieur à 100 ms sont tous présents simultanément.

L'architecture de la bibliothèque est organisée autour du pipeline DataCaptureContext, qui coordonne une session de caméra, des paramètres d'analyse d'images et une configuration de capture de codes-barres en tant que système unifié avec état. Étant donné que chaque gamme de produits de la plateforme Scandit (SparkScan, MatrixScan, numérisation d'identité, superpositions AR et analyseur syntaxique) fait l'objet d'une licence et d'une tarification distinctes selon un modèle de vente sur contact, le coût total de toute intégration Scandit ne peut être déterminé qu'après une discussion commerciale.

Les principales caractéristiques architecturales du SDK Scandit sont les suivantes :

  • Conception axée sur la caméra : le SDK suppose une caméra physique et une source d'images en cours d'exécution. La lecture des codes-barres s'effectue sur des images vidéo en direct, et non sur des fichiers ou des flux statiques.
  • Initialisation obligatoire de DataCaptureContext: Chaque intégration commence par la construction d'un DataCaptureContext et son câblage à une instance de caméra avant que tout travail sur les codes-barres puisse avoir lieu.
  • Déclaration explicite de la symbologie: Les formats de BarCode doivent être activés individuellement à l'aide de EnableSymbologies avant le début de la session de capture. La détection automatique n'est pas disponible.
  • Event-Driven Result Delivery: Les résultats des BarCodes sont livrés de manière asynchrone par le biais de rappels d'événements (BarcodeScanned) plutôt que renvoyés de manière synchrone à partir d'un appel de méthode.
  • Architecture modulaire du produit : SparkScan, MatrixScan, la numérisation d'identité, les superpositions AR et l'analyseur syntaxique sont des fonctionnalités facturées séparément qui nécessitent des lignes de contrat individuelles.
  • Tarification (Contactez-nous pour les ventes) : Aucun prix n'est publié. Chaque intégration nécessite une demande de renseignements commerciaux avant que le coût de la licence ne soit connu.
  • Ciblage prioritaire des plateformes mobiles : le support principal concerne iOS et Android. Les déploiements côté serveur, Docker et sans serveur ne font pas partie du périmètre de conception du SDK.

Le pipeline DataCaptureContext

Chaque intégration Scandit commence par cette séquence d'initialisation de la caméra avant même qu'un seul code-barres puisse être lu :

// Scandit SDK: full camera pipeline setup
// NuGet: Scandit.BarcodePicker

var dataCaptureContext = DataCaptureContext.ForLicenseKey("YOUR-SCANDIT-LICENSE");

var settings = BarcodeCaptureSettings.Create();
settings.EnableSymbologies(new HashSet<Symbology>
{
    Symbology.Ean13Upca,
    Symbology.Ean8,
    Symbology.Code128,
    Symbology.QrCode
});

var barcodeCapture = BarcodeCapture.Create(dataCaptureContext, settings);
var camera = Camera.GetDefaultCamera();
await dataCaptureContext.SetFrameSourceAsync(camera);
await camera.SwitchToDesiredStateAsync(FrameSourceState.On);
barcodeCapture.IsEnabled = true;
// Scandit SDK: full camera pipeline setup
// NuGet: Scandit.BarcodePicker

var dataCaptureContext = DataCaptureContext.ForLicenseKey("YOUR-SCANDIT-LICENSE");

var settings = BarcodeCaptureSettings.Create();
settings.EnableSymbologies(new HashSet<Symbology>
{
    Symbology.Ean13Upca,
    Symbology.Ean8,
    Symbology.Code128,
    Symbology.QrCode
});

var barcodeCapture = BarcodeCapture.Create(dataCaptureContext, settings);
var camera = Camera.GetDefaultCamera();
await dataCaptureContext.SetFrameSourceAsync(camera);
await camera.SwitchToDesiredStateAsync(FrameSourceState.On);
barcodeCapture.IsEnabled = true;
Imports Scandit.DataCapture.Core
Imports Scandit.DataCapture.Barcode
Imports Scandit.DataCapture.Barcode.Capture
Imports Scandit.DataCapture.Core.Source
Imports System.Collections.Generic

' Scandit SDK: full camera pipeline setup
' NuGet: Scandit.BarcodePicker

Dim dataCaptureContext = DataCaptureContext.ForLicenseKey("YOUR-SCANDIT-LICENSE")

Dim settings = BarcodeCaptureSettings.Create()
settings.EnableSymbologies(New HashSet(Of Symbology) From {
    Symbology.Ean13Upca,
    Symbology.Ean8,
    Symbology.Code128,
    Symbology.QrCode
})

Dim barcodeCapture = BarcodeCapture.Create(dataCaptureContext, settings)
Dim camera = Camera.GetDefaultCamera()
Await dataCaptureContext.SetFrameSourceAsync(camera)
Await camera.SwitchToDesiredStateAsync(FrameSourceState.On)
barcodeCapture.IsEnabled = True
$vbLabelText   $csharpLabel

Chaque ligne de ce bloc représente une infrastructure de caméras. Il n'y a pas d'argument de chemin de fichier. Il n'y a pas de PDF. Il n'y a pas de flux. La bibliothèque suppose qu'une caméra est en marche avant de pouvoir commencer tout traitement des codes-barres.

Comprendre IronBarcode

IronBarcode est une bibliothèque .NET commerciale pour la lecture et la génération de codes-barres. Cette bibliothèque est conçue pour les environnements serveur, de bureau et cloud où les données de codes-barres arrivent sous forme de fichiers, de flux, de tableaux d'octets ou de contenu intégré dans des documents PDF. Son API est sans état — il n'y a pas d'objet session, pas de pipeline caméra à initialiser et pas de contexte persistant à gérer entre les lectures. Un seul appel statique à BarcodeReader.Read accepte un chemin de fichier, un flux, un tableau d'octets ou un PDF et renvoie une collection de résultats.

IronBarcode est distribué sous la forme d'un seul package NuGet contenant toutes les fonctionnalités de lecture et de génération pour plus de 30 formats de codes-barres 1D et 2D. La bibliothèque prend en charge la détection automatique du format, ce qui signifie que l'appelant n'est pas tenu de spécifier les symbologies à rechercher. Le prix est affiché sur la page du produit, sans qu'il soit nécessaire de discuter avec un vendeur.

Les principales caractéristiques d' Code-barres IronBarcode sont les suivantes :

  • API sans état basée sur les fichiers : la lecture commence par un simple appel de méthode acceptant un chemin de fichier, un flux, un tableau d'octets ou un document PDF.
  • Détection automatique du format : tous les formats de codes-barres pris en charge sont détectés automatiquement. La configuration explicite de la symbologie est une optimisation optionnelle des performances, et non une condition préalable.
  • Prise en charge native des fichiers PDF : les documents PDF multipages sont lus directement, les résultats étant indexés par numéro de page. Aucune bibliothèque de rendu PDF externe n'est requise.
  • Compatible serveur et cloud : prend en charge ASP.NET Core, Azure Functions, Docker sur Linux et les déploiements conteneurisés sans solutions de contournement architecturales.
  • Traitement simultané: L'API sans état est intrinsèquement à l'abri des threads, ce qui permet d'utiliser des modèles Parallel.ForEach et asynchrones pour les scénarios de traitement par lots à haut débit.
  • Génération de codes-barres : produit des codes-barres aux formats image et PDF pour toutes les symbologies prises en charge. La génération et la lecture sont incluses dans le même package.
  • Licence perpétuelle publiée : les prix sont affichés publiquement sous forme d'achats perpétuels uniques, sans frais par numérisation ni par appareil.

Comparaison des fonctionnalités

Le tableau suivant met en évidence les différences fondamentales entre Kit de développement logiciel Scandit et IronBarcode:

Fonction Kit de développement logiciel Scandit Code-barres IronBarcode
Cas d'utilisation principal Numérisation par caméra en temps réel sur mobile Lecture de fichiers, de flux et de codes-barres PDF sur serveur
Caméra requise Oui Non
Extraction de codes-barres PDF Non pris en charge Support natif
Modèle de tarification Contactez le service des ventes, par produit Niveaux perpétuels publiés
Traitement côté serveur Non conçu pour Cible de déploiement principale
Configuration de la symbologie Obligatoire avant la numérisation Facultatif; l'autodétection est une option par défaut
Génération de codes-barres Non pris en charge Inclus dans un seul emballage

Comparaison détaillée des fonctionnalités

Fonction Kit de développement logiciel Scandit Code-barres IronBarcode
En lisant
Lecture de fichiers image Non conçu pour Objectif principal
extraction de codes-barres PDF Non pris en charge Page native multipage
Entrée de flux / tableau d'octets Non pris en charge Oui
Détection automatique du format Non (à préciser) Oui
Formats 1D (Code 128, EAN, UPC, etc.) 30+ 30+
Formats 2D (QR, DataMatrix, Aztec, PDF417) Oui Oui
Détection de plusieurs codes-barres par document MatrixScan (produit séparé) Oui (forfait individuel)
Récupération de codes-barres endommagés Limité Oui (basé sur l'apprentissage automatique)
Génération
génération de codes-barres Non pris en charge Oui
Sortie vers un fichier image Non pris en charge Oui
Exporter au format PDF Non pris en charge Oui
Architecture
Modèle d'initialisation pipeline de caméra avec état appel de méthode sans état
Résultats obtenus Rappel d'événement (asynchrone) valeur de retour synchrone
Dépendance à la caméra Les exigences sont les suivantes Sans objet
Symbolique avant la déclaration Les exigences sont les suivantes En option
Plateforme
iOS / Android (MAUI) Cible principale Utilisation programmatique
ASP.NET Core Non conçu pour Prise en charge complète
Fonctions Azure/ sans serveur Pas pratique Prise en charge complète
Serveur Docker/Linux Non pris en charge Prise en charge complète
service console/arrière-plan Non conçu pour Prise en charge complète
Licence
transparence des prix Contacter les ventes Publié sur le site web
Type de licence Annuel (par produit) perpétuel à usage unique
Frais par analyse ou par appareil Oui Non
Accès à toutes les fonctionnalités avec un seul forfait Non (produits modulaires) Oui

Architecture de lecture des codes-barres

La différence structurelle la plus significative entre ces deux bibliothèques réside dans la manière dont elles modélisent la relation entre les entrées et les sorties.

Approche du SDK Scandit

Scandit traite les images des caméras en temps réel. Le DataCaptureContext maintient une session de caméra active, et le BarcodeCapture écoute les codes-barres dans chaque image entrante. Les résultats des BarCodes sont livrés de manière asynchrone par le biais de l'événement BarcodeScanned. La lecture d'un fichier image statique avec Scandit nécessite d'adapter le pipeline de la caméra pour traiter un fichier comme une source d'images — un flux de travail qui n'est pas pris en charge nativement et qui nécessite un effort d'ingénierie pour être approximé.

// Scandit SDK: event-callback result delivery
barcodeCapture.BarcodeScanned += (sender, args) =>
{
    foreach (var barcode in args.Session.NewlyRecognizedBarcodes)
    {
        string value = barcode.Data;
        string symbology = barcode.Symbology.ToString();
        ProcessBarcode(value, symbology);
    }
};
// Scandit SDK: event-callback result delivery
barcodeCapture.BarcodeScanned += (sender, args) =>
{
    foreach (var barcode in args.Session.NewlyRecognizedBarcodes)
    {
        string value = barcode.Data;
        string symbology = barcode.Symbology.ToString();
        ProcessBarcode(value, symbology);
    }
};
Imports System

' Scandit SDK: event-callback result delivery
AddHandler barcodeCapture.BarcodeScanned, Sub(sender, args)
    For Each barcode In args.Session.NewlyRecognizedBarcodes
        Dim value As String = barcode.Data
        Dim symbology As String = barcode.Symbology.ToString()
        ProcessBarcode(value, symbology)
    Next
End Sub
$vbLabelText   $csharpLabel

Le modèle événementiel est adapté à la numérisation en direct continue, où les codes-barres arrivent de manière imprévisible dans un flux vidéo. Pour le traitement basé sur les fichiers, le modèle introduit une complexité inutile : l'entrée a une limite d'achèvement connue, la session caméra ne se termine jamais naturellement et le modèle de rappel asynchrone ne s'intègre pas bien aux architectures de serveur requête-réponse.

Approche IronBarcode

IronBarcode traite chaque entrée comme un document distinct avec un résultat déterministe. La méthode BarcodeReader.Read accepte un chemin de fichier, un flux ou un tableau d'octets, effectue toutes les détections de manière synchrone et renvoie une collection de résultats. Il n'y a aucune session à ouvrir, aucune source de trame à configurer et aucun événement auquel s'abonner.

// IronBarcode: direct file reading
// NuGet: dotnet add package IronBarcode

IronBarCode.License.LicenseKey = "YOUR-KEY";
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
    Console.WriteLine($"{result.Value} ({result.Format})");
// IronBarcode: direct file reading
// NuGet: dotnet add package IronBarcode

IronBarCode.License.LicenseKey = "YOUR-KEY";
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
    Console.WriteLine($"{result.Value} ({result.Format})");
' IronBarcode: direct file reading
' NuGet: dotnet add package IronBarcode

IronBarCode.License.LicenseKey = "YOUR-KEY"
Dim results = BarcodeReader.Read("barcode.png")
For Each result In results
    Console.WriteLine($"{result.Value} ({result.Format})")
Next
$vbLabelText   $csharpLabel

Pour la lecture des codes-barres à partir d'images , l'API sans état ne nécessite aucune initialisation au-delà de la clé de licence. La détection du format est automatique. Le programme complet ci-dessus lit n'importe quel format de code-barres pris en charge à partir d'un fichier image en trois lignes de code opérationnel.

Assistance à la plateforme et au déploiement

Le contexte de déploiement d'une bibliothèque de codes-barres détermine si elle peut s'exécuter dans l'environnement cible, indépendamment de ses fonctionnalités.

Approche du SDK Scandit

L'architecture de Scandit nécessite un matériel caméra et une plateforme mobile capable de l'exposer via une API caméra native. iOS et Android sont les principales plateformes prises en charge. Le poste de travail Windows est une cible secondaire. ASP.NET Core, Azure Functions, les conteneurs Docker et les serveurs Linux ne font pas partie du périmètre de conception de la bibliothèque. Le DataCaptureContext suppose une session de caméra en cours d'exécution, qui n'a pas d'équivalent dans les environnements de calcul sans serveur, les déploiements conteneurisés ou les services de traitement en arrière-plan.

Plateforme Kit de développement logiciel Scandit
iOS / Android (MAUI) Cible principale
Bureau Windows Soutien secondaire
ASP.NET Core Non conçu pour
Fonctions Azure Pas pratique
Serveur Docker/Linux Non pris en charge
service console/arrière-plan Non conçu pour

Approche IronBarcode

IronBarcode a été conçu pour les environnements serveur, cloud et conteneurisés. L'API sans état ne dépend d'aucun matériel et ne requiert aucune initialisation spécifique à la plateforme. Le déploiement sur Azure Functions pour le traitement des codes-barres est une méthode prise en charge et documentée. Docker sur Linux est une cible de déploiement standard. Les points de terminaison ASP.NET Corelisant les codes-barres des fichiers téléchargés représentent un scénario pris en charge de base ne nécessitant aucune solution de contournement architecturale.

Plateforme Code-barres IronBarcode
iOS / Android (MAUI) Traitement de fichiers par programme
ASP.NET Core Prise en charge complète
Fonctions Azure/ Lambda Prise en charge complète
Serveur Docker/Linux Prise en charge complète
service console/arrière-plan Prise en charge complète
Serveur Blazor Prise en charge complète

Traitement par lots simultané

Le traitement de grands volumes de documents comportant des codes-barres est une exigence courante côté serveur que les deux bibliothèques abordent selon des positions fondamentalement différentes.

Approche du SDK Scandit

Le pipeline de caméras de Scandit a été conçu pour une seule session de caméras au service d'un seul utilisateur ou d'un seul appareil. Le modèle FrameSourceState suppose une session de caméra persistante et continue - et non une file d'attente de documents traités à un débit élevé. Adapter la bibliothèque pour traiter des lots de fichiers nécessite de simuler une session caméra par document ou de sérialiser le traitement des documents via un pipeline partagé, deux solutions qui ne constituent ni un modèle pris en charge ni un modèle efficace.

Approche IronBarcode

La méthode BarcodeReader.Read d'IronBarcode étant sans état, il est intrinsèquement sûr de l'appeler à partir de plusieurs threads simultanément. Le traitement simultané par lots ne nécessite aucune configuration particulière autre que la définition du BarcodeReaderOptions :

// IronBarcode: concurrent batch processing
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
    MaxParallelThreads = 4
};

var files = Directory.GetFiles("./incoming/", "*.pdf");
var allResults = new ConcurrentBag<BarcodeResult>();

Parallel.ForEach(files, file =>
{
    var results = BarcodeReader.Read(file, options);
    foreach (var r in results)
        allResults.Add(r);
});
// IronBarcode: concurrent batch processing
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
    MaxParallelThreads = 4
};

var files = Directory.GetFiles("./incoming/", "*.pdf");
var allResults = new ConcurrentBag<BarcodeResult>();

Parallel.ForEach(files, file =>
{
    var results = BarcodeReader.Read(file, options);
    foreach (var r in results)
        allResults.Add(r);
});
Imports System.IO
Imports System.Collections.Concurrent
Imports System.Threading.Tasks

' IronBarcode: concurrent batch processing
Dim options As New BarcodeReaderOptions With {
    .Speed = ReadingSpeed.Balanced,
    .ExpectMultipleBarcodes = True,
    .MaxParallelThreads = 4
}

Dim files = Directory.GetFiles("./incoming/", "*.pdf")
Dim allResults As New ConcurrentBag(Of BarcodeResult)()

Parallel.ForEach(files, Sub(file)
    Dim results = BarcodeReader.Read(file, options)
    For Each r In results
        allResults.Add(r)
    Next
End Sub)
$vbLabelText   $csharpLabel

Pour des exemples détaillés de lecture de codes-barres asynchrone et multithread , la documentation Code-barres IronBarcode couvre les modèles thread-safe et les options d'optimisation du débit.

Traitement des documents PDF

L'extraction de codes-barres PDF est une capacité distincte de la lecture d'images et représente une divergence significative entre les deux bibliothèques.

Approche du SDK Scandit

Scandit n'a pas de support PDF natif. L'extraction de codes-barres à partir d'un PDF avec Scandit nécessite le rendu de chaque page PDF en image raster à l'aide d'une bibliothèque de rendu PDF distincte, puis le traitement de ces images par le système de simulation de caméra. Cette approche engendre une dépendance supplémentaire, des coûts de licence additionnels et un effort d'ingénierie considérable pour une tâche courante dans les flux de travail de traitement de documents. Les documents multipages nécessitent l'itération sur les pages, la gestion de la mémoire pour les images rendues et la coordination manuelle des résultats entre les pages.

Approche IronBarcode

IronBarcode lit nativement les codes-barres des documents PDF. Un chemin de fichier vers un PDF est un argument valide pour BarcodeReader.Read, et les résultats incluent une propriété PageNumber indiquant sur quelle page du document chaque code-barres a été trouvé :

// IronBarcode: extract barcodes from every page of a PDF
var results = BarcodeReader.Read("shipping-manifest.pdf");

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

foreach (var barcode in results)
{
    Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Value} ({barcode.Format})");
}
Imports IronBarcode

' IronBarcode: extract barcodes from every page of a PDF
Dim results = BarcodeReader.Read("shipping-manifest.pdf")

For Each barcode In results
    Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Value} ({barcode.Format})")
Next
$vbLabelText   $csharpLabel

Pour des instructions complètes sur la lecture des codes-barres dans les fichiers PDF , y compris les options de sélection de plage de pages et d'extraction de plusieurs codes-barres, la documentation Code-barres IronBarcode couvre l'ensemble des scénarios de traitement des PDF.

Tarification et licences

La structure des licences influe non seulement sur le coût d'une bibliothèque, mais aussi sur le délai nécessaire à son évaluation et à son adoption.

Approche scandinave

Scandit ne publie pas ses tarifs. La page produit répertorie les fonctionnalités et les noms des produits — SparkScan, MatrixScan, numérisation d'identité, superpositions AR, analyseur syntaxique — et redirige toutes les demandes vers une conversation commerciale. Le processus de devis comprend l'explication du cas d'utilisation, l'estimation du volume de numérisation, la spécification des appareils, la discussion des niveaux de support et la négociation de la durée du contrat avant qu'un chiffre ne soit fourni. Les avis publiés sur des plateformes telles que G2 et DiscoverSDK font régulièrement état de coûts imprévisibles pour les petites et moyennes entreprises et de difficultés à établir des prévisions budgétaires. Chaque gamme de produits Scandit est tarifée et contractuellement séparée, ce qui signifie que l'accès à des fonctionnalités étendues nécessite des cycles de vente supplémentaires.

Approche IronBarcode

IronBarcode publie ses niveaux de licence sur la page produit sans exiger de formulaire ni de demande commerciale :

Licence Prix Développeurs Projets
Lite 749 $ (une seule fois) 1 1
Professional 1 499 $ une seule fois 10 10
Nombre illimité 2 999 $ en une seule fois Nombre illimité Nombre illimité

Les licences sont perpétuelles. Il n'y a pas de frais par analyse, pas de frais par appareil et aucun seuil de volume ne déclenche de changement de niveau. Le renouvellement annuel est optionnel et coûte la moitié du prix initial, mais la licence achetée reste valable sans renouvellement. Toutes les fonctionnalités du package Code-barres IronBarcode unique — lecture, génération, prise en charge des PDF, détection multi-codes-barres — sont incluses à tous les niveaux.

Référence de mappage d'API

Le tableau suivant établit une correspondance entre les concepts du SDK Scandit et leurs équivalents Code-barres IronBarcode pour les équipes évaluant le coût de traduction d'une migration :

Kit de développement logiciel Scandit Code-barres IronBarcode Notes
DataCaptureContext.ForLicenseKey("key") IronBarCode.License.LicenseKey = "key" Une mission ; aucun objet contextuel n'est requis
BarcodeCaptureSettings.Create() new BarcodeReaderOptions() Optionnel dans Code-barres IronBarcode
settings.EnableSymbologies(Symbology.Code128, ...) (not needed) La détection automatique est le mode par défaut.
Camera.GetDefaultCamera() (not applicable) Aucun concept de caméra dans le traitement des fichiers
dataCaptureContext.SetFrameSourceAsync(camera) (not applicable) Aucune source de cadre dans Code-barres IronBarcode
camera.SwitchToDesiredStateAsync(FrameSourceState.On) (not applicable) Machine à états sans caméra
barcodeCapture.IsEnabled = true BarcodeReader.Read(path) Un seul appel déclenche la lecture
BarcodeScanned += gestionnaire d'événements Itération sur BarcodeReader.Read() valeur de retour Collecte synchrone ; système sans événement
args.Session.NewlyRecognizedBarcodes Valeur de retour de BarcodeReader.Read() Accès direct à la collection
barcode.Data result.Value Même contenu sémantique
barcode.Symbology result.Format Énumération au format équivalent
SparkScan, MatrixScan, numérisation de cartes d'identité (produits distincts) Paquet unique IronBarcode@ Aucun module complémentaire séparé

Quand les équipes envisagent de passer du SDK Scandit à IronBarcode

Exigences de traitement côté serveur

Les équipes qui développent des API ASP.NET Core, des services de traitement en arrière-plan ou des fonctions Azure constatent dès la première ligne d'intégration une inadéquation fondamentale avec l'architecture de Scandit. Le DataCaptureContext et le pipeline de caméras supposent un matériel qui n'existe pas dans un environnement serveur. Lorsque les exigences d'un projet en matière de codes-barres sont entièrement côté serveur (lecture des fichiers téléchargés, traitement des files d'attente de documents, extraction des données de codes-barres des PDF entrants), le pipeline de la caméra ajoute une complexité d'initialisation, une surcharge de machine à états asynchrone et des contraintes de plateforme qui ne contribuent en rien à l'exigence commerciale réelle.

Traitement par lots de documents

Les organisations qui traitent de gros volumes de documents comportant des codes-barres (manifestes d'expédition, factures, registres d'inventaire, formulaires médicaux) constatent que le modèle de source de trames de Scandit ne se combine pas avec les files d'attente de documents. La bibliothèque a été conçue pour des sessions photo continues, et non pour des documents discrets avec des points de départ et d'arrivée déterministes. Lorsque le volume de documents augmente et que le traitement parallèle devient nécessaire, la gestion des états du pipeline de la caméra devient un obstacle technique plutôt qu'un atout.

Transparence des prix

Les équipes de développement qui travaillent sur des propositions budgétaires, des comparaisons de fournisseurs ou des analyses coûts-avantages pour de nouveaux projets ne peuvent pas finaliser ce travail avec Scandit sans avoir préalablement entamé un cycle de vente. Lorsqu'un projet dispose d'un budget et d'un calendrier définis, l'impossibilité de déterminer le coût de la licence sans discussion commerciale engendre des retards et une incertitude qui ont des répercussions sur la planification du projet. Les équipes qui évaluent simultanément plusieurs options de bibliothèques constatent que l'absence de prix publiés rend difficile l'inclusion de Scandit dans une comparaison structurée.

Réduire la complexité des pipelines

Même lorsque Scandit est déjà déployé pour la numérisation par caméra mobile, certaines équipes constatent que les exigences en matière de codes-barres côté serveur dans la même application nécessitent un outil différent. Le pipeline de traitement de la caméra adapté à la numérisation mobile en temps réel introduit une complexité inutile lorsqu'il est appliqué au traitement de documents statiques. Les équipes qui atteignent ce stade adoptent souvent Code-barres IronBarcode pour le traitement côté serveur en parallèle d'un déploiement Scandit existant, plutôt que d'essayer d'étendre le pipeline de la caméra à des cas d'utilisation pour lesquels il n'a pas été conçu.

Considérations courantes en matière de migration

Le pipeline de la caméra n'a pas d'équivalent de fichier.

L'ensemble du bloc d'initialisation DataCaptureContext - création du contexte, configuration des paramètres, activation de la symbologie, acquisition de la caméra, affectation de la source d'image et transition d'état - n'a pas d'équivalent dans l'API basée sur les fichiers d'IronBarcode. Lors de la migration du code d'intégration côté serveur, ce bloc est supprimé dans son intégralité. Il n'est pas traduit ; Il est supprimé. Le remplacement de l'IronBarcode est une attribution de clé de licence suivie d'un appel BarcodeReader.Read.

Rappel d'événement pour un retour direct

Scandit fournit les résultats des codes-barres par le biais de l'événement BarcodeScanned car le balayage par caméra en direct est asynchrone par nature. Code-barres IronBarcode renvoie les résultats de manière synchrone sous forme de collection typée car la lecture basée sur les fichiers a une limite d'achèvement connue. La migration implique la conversion de la logique du gestionnaire d'événements en itération standard :

// Scandit callback pattern (removed during migration)
barcodeCapture.BarcodeScanned += (sender, args) =>
{
    foreach (var barcode in args.Session.NewlyRecognizedBarcodes)
        ProcessBarcode(barcode.Data, barcode.Symbology.ToString());
};

// Code-barres IronBarcode direct return (replacement)
foreach (var result in BarcodeReader.Read("document.png"))
    ProcessBarcode(result.Value, result.Format.ToString());
// Scandit callback pattern (removed during migration)
barcodeCapture.BarcodeScanned += (sender, args) =>
{
    foreach (var barcode in args.Session.NewlyRecognizedBarcodes)
        ProcessBarcode(barcode.Data, barcode.Symbology.ToString());
};

// Code-barres IronBarcode direct return (replacement)
foreach (var result in BarcodeReader.Read("document.png"))
    ProcessBarcode(result.Value, result.Format.ToString());
Imports System

' Scandit callback pattern (removed during migration)
AddHandler barcodeCapture.BarcodeScanned, Sub(sender, args)
    For Each barcode In args.Session.NewlyRecognizedBarcodes
        ProcessBarcode(barcode.Data, barcode.Symbology.ToString())
    Next
End Sub

' Code-barres IronBarcode direct return (replacement)
For Each result In BarcodeReader.Read("document.png")
    ProcessBarcode(result.Value, result.Format.ToString())
Next
$vbLabelText   $csharpLabel

Suppression de la déclaration de symbologie

Scandit exige des appels explicites EnableSymbologies avant le début de la numérisation. Code-barres IronBarcode ne nécessite aucune déclaration préalable de la symbologie — tous les formats sont détectés automatiquement. Lors de la migration, tous les appels settings.EnableSymbologies(...) sont supprimés. Si le code Scandit d'origine restreignait les symbologies pour des raisons de performance, une optimisation équivalente dans Code-barres IronBarcode est disponible via BarcodeReaderOptions.ExpectBarcodeTypes, mais elle n'est pas nécessaire pour commencer.

Fonctionnalités supplémentaires IronBarcode

Au-delà des domaines abordés dans la comparaison ci-dessus, Code-barres IronBarcode offre des fonctionnalités qui étendent son utilité dans les scénarios de traitement de documents et de données :

  • Génération de codes-barres : Générez des codes-barres sous forme de fichiers image ou intégrez-les dans des PDF pour toutes les symbologies prises en charge, y compris les codes QR, Code 128, Data Matrix et PDF417.
  • Analyse des données GS1 et structurées : Décodez les formats de données de codes-barres structurés, y compris les identifiants d'application GS1-128, directement à partir des résultats des codes-barres.
  • Correction et prétraitement d'images : La correction automatique des images de codes-barres déformés, à faible contraste ou endommagés améliore les taux de lecture sur les documents numérisés sans nécessiter de prétraitement manuel.
  • Détection multi-codes-barres: Un seul appel BarcodeReader.Read détecte tous les codes-barres présents dans un document, y compris les formats mixtes sur la même page, à l'aide de l'option ExpectMultipleBarcodes.
  • Lecture de codes-barres MAUI:Dans les applications MAUI utilisant un modèle de capture et de traitement, Code-barres IronBarcode prend en charge l'étape de traitement après la capture d'une photo à l'aide de MediaPicker.
  • Entrée de flux et de tableau d'octets: En plus des chemins d'accès aux fichiers, BarcodeReader.Read accepte les entrées Stream et byte[], ce qui permet l'intégration avec les gestionnaires de téléchargement, les tampons de mémoire et les flux réseau sans création de fichiers temporaires.

Compatibilité .NET et préparation à l'avenir

IronBarcode prend en charge .NET Framework 4.6.2 et versions ultérieures, .NET Standard 2.0, ainsi que toutes les versions modernes de .NET , notamment .NET 6, .NET 7, .NET 8 et .NET 9. La bibliothèque bénéficie de mises à jour régulières afin de garantir sa compatibilité avec les versions actuelles et futures de .NET , y compris .NET 10, attendu fin 2026. Son API sans état est compatible avec le modèle de programmation asynchrone introduit dans les versions modernes de .NET, et sa prise en charge de Linux et des déploiements conteneurisés la positionne avantageusement pour les charges de travail natives du cloud, où l'adoption de .NET est en constante progression. Étant donné que la bibliothèque est distribuée sous forme d'un seul package NuGet sans dépendances d'exécution spécifiques à la plateforme autres que l'environnement d'exécution .NET lui-même, la mise à niveau entre les versions .NET ne nécessite pas de mises à jour de bibliothèque distinctes ni de configuration supplémentaire.

Conclusion

Scandit SDK et Code-barres IronBarcode représentent des approches fondamentalement différentes du traitement des codes-barres, reflétant des contextes de déploiement différents. Scandit a été conçu pour la numérisation en temps réel par caméra sur du matériel mobile, avec une architecture qui coordonne une session de caméra en direct, des paramètres d'analyse par image et une livraison des résultats pilotée par les événements. Code-barres IronBarcode a été conçu pour le traitement de fichiers et de documents sur serveurs, ordinateurs de bureau et infrastructures cloud, avec une API sans état qui accepte les fichiers, les flux et les PDF et renvoie des résultats synchrones. Il ne s'agit pas de mises en œuvre concurrentes d'une même idée, mais d'idées différentes répondant à des cas d'utilisation différents.

Le kit de développement logiciel Scandit est le choix idéal pour les applications mobiles où l'utilisateur pointe l'appareil photo de son téléphone vers un code-barres physique et a besoin d'un retour visuel inférieur à 100 ms. Ses capacités de superposition AR, la détection simultanée de plusieurs codes-barres via MatrixScan et la numérisation de documents d'identité via ID Scanning sont des fonctionnalités conçues spécifiquement pour cet usage et qu'aucune bibliothèque de codes-barres basée sur des fichiers ne reproduit. Les organisations qui déploient à grande échelle des travailleurs mobiles sur le terrain, qui proposent des expériences de numérisation destinées aux consommateurs ou qui exigent des SLA pour la numérisation mobile Enterprise s'intéressent au public que Scandit a été conçu pour servir.

IronBarcode est le choix approprié lorsque les données de codes-barres arrivent sous forme de fichiers (images, PDF, tableaux d'octets ou flux de téléchargement) et que le traitement s'effectue sans caméra, sans utilisateur et sans interface utilisateur. Le traitement des documents côté serveur, les points de terminaison d'API ASP.NET Core, les fonctions Azure, les tâches par lots planifiées et les microservices conteneurisés représentent les environnements pour lesquels Code-barres IronBarcode a été conçu. Sa tarification publiée, son accès aux fonctionnalités via un seul package et son API de lecture directe de fichiers éliminent les frictions architecturales et l'incertitude budgétaire que le modèle de pipeline de caméra et le modèle de vente par contact de Scandit introduisent dans ces scénarios.

En toute honnêteté, le choix est largement déterminé par le contexte de déploiement plutôt que par les préférences personnelles. Un projet nécessitant une numérisation en direct par caméra mobile a une réponse claire. Un projet nécessitant l'extraction de codes-barres PDF côté serveur trouve une réponse tout aussi claire. La confusion entre les deux bibliothèques se situe parfois au niveau intermédiaire : applications MAUI, architectures hybrides et organisations ayant à la fois des besoins en matière de numérisation mobile et de traitement de documents. Dans ces cas-là, les deux bibliothèques peuvent coexister : Scandit gère le traitement des données face à la caméra, Code-barres IronBarcode gère le traitement des documents, et aucune des deux bibliothèques n'est forcée à un rôle pour lequel elle n'a pas été conçue.

Questions Fréquemment Posées

Qu'est-ce que Scandit SDK ?

Scandit SDK est une bibliothèque de codes-barres .NET permettant de générer et de lire des codes-barres dans des applications C#. C'est l'une des nombreuses alternatives que les développeurs évaluent lorsqu'ils choisissent une solution de codes-barres pour les projets .NET.

Quelles sont les principales différences entre Scandit SDK et IronBarcode ?

IronBarcode utilise une API statique, sans état, ne nécessitant aucune gestion d'instance, tandis que Scandit SDK nécessite généralement la création et la configuration d'une instance avant utilisation. IronBarcode offre également une prise en charge native du format PDF, une détection automatique du format et une licence à clé unique pour tous les environnements.

IronBarcode est-il plus facile à licencier que Scandit SDK ?

IronBarcode utilise une clé de licence unique couvrant à la fois les déploiements de développement et de production. Cela simplifie les pipelines CI/CD et les configurations Docker par rapport aux systèmes de licence qui séparent les clés SDK des clés d'exécution.

IronBarcode prend-il en charge tous les formats de codes-barres que Scandit SDK prend en charge ?

IronBarcode prend en charge plus de 30 symbologies de codes-barres, notamment QR Code, Code 128, Code 39, DataMatrix, PDF417, Aztec, EAN-13, UPC-A, GS1, et bien d'autres encore. L'auto-détection du format signifie qu'aucune énumération explicite du format n'est nécessaire.

IronBarcode prend-il en charge la lecture de codes-barres PDF en mode natif ?

Oui. IronBarcode lit les codes-barres directement à partir de fichiers PDF en utilisant BarcodeReader.Read("document.pdf") sans nécessiter de bibliothèque de rendu PDF séparée. Les résultats par page comprennent le numéro de page, le format du code-barres, la valeur et le score de confiance.

Comment IronBarcode gère-t-il le traitement par lots par rapport à Scandit SDK ?

Les méthodes statiques d'IronBarcode sont sans état et naturellement à l'abri des threads, ce qui permet d'utiliser directement Parallel.ForEach sans gestion d'instance par thread. Il n'y a pas de plafond de débit, quel que soit le niveau de prix.

Quelles versions de .NET sont prises en charge par IronBarcode ?

IronBarcode prend en charge .NET Framework 4.6.2+, .NET Core 3.1 et .NET 5, 6, 7, 8 et 9 dans un seul package NuGet. Les plates-formes visées sont Windows x64/x86, Linux x64 et macOS x64/ARM.

Comment installer IronBarcode for .NET dans un projet .NET ?

Installez IronBarcode via NuGet : exécutez "Install-Package IronBarCode" dans la console du gestionnaire de paquets, ou "dotnet add package IronBarCode" dans le CLI. Aucun installateur SDK ou fichier d'exécution supplémentaire n'est nécessaire.

Puis-je évaluer IronBarcode avant de l'acheter, contrairement à Scandit ?

Oui. Le mode d'essai d'IronBarcode renvoie des valeurs de code-barres décodées complètes - seules les images de sortie générées reçoivent un filigrane. Vous pouvez comparer la précision de lecture sur vos propres documents avant de vous engager dans un achat.

Quelle est la différence de prix entre Scandit SDK et IronBarcode ?

IronBarcode est proposé à partir de 749 dollars pour une licence perpétuelle pour un seul développeur couvrant le développement et la production. Les détails des prix et les options de volume sont disponibles sur la page de licence d'IronBarcode. Il n'est pas nécessaire de disposer d'une licence d'exécution distincte.

Est-il simple de migrer de Scandit SDK à IronBarcode ?

La migration de Scandit SDK vers IronBarcode implique principalement le remplacement des appels d'API basés sur des instances par les méthodes statiques d'IronBarcode, la suppression des modèles de licence et la mise à jour des noms des propriétés des résultats. La plupart des migrations impliquent une réduction du code plutôt qu'un ajout.

IronBarcode génère-t-il des codes QR avec des logos ?

Oui. QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png") incorpore une image de marque dans un code QR de manière native avec une correction d'erreur configurable. Les codes QR colorés sont également pris en charge via ChangeBarCodeColor().

Jordi Bardia
Ingénieur logiciel
Jordi est le plus compétent en Python, C# et C++, et lorsqu'il ne met pas à profit ses compétences chez Iron Software, il programme des jeux. Partageant les responsabilités des tests de produit, du développement de produit et de la recherche, Jordi apporte une immense valeur à l'amé...
Lire la suite

Équipe de soutien Iron

Nous sommes en ligne 24 heures sur 24, 5 jours sur 7.
Chat
Email
Appelez-moi