Zum Fußzeileninhalt springen
MIT ANDEREN KOMPONENTEN VERGLEICHEN

NetBarcode gegen IronBarcode: C# Barcode Bibliothek Vergleich

Scandit SDKvs IronBarcode: Kamera-Pipeline-Scanning vs. Dateibasierte Dokumentenverarbeitung

Um mit dem Lesen von Barcodes mit Scandit zu beginnen, konfigurieren Sie ein DataCaptureContext, erstellen BarcodeCaptureSettings, aktivieren explizit Symbologien, erhalten eine Kamera, setzen sie als Frame-Quelle, schalten die Kamera in den Ein-Zustand und aktivieren die Erfassung. Die Preisgestaltung erfolgt nur über den Kontaktverkauf, ohne veröffentlichte Listenpreise.

Diese Kombination — eine kamerazentrierte Pipeline und ein Kontaktverkaufspreismodell — prägt, welche .NET-Szenarien Scandit passt und welche nicht. Für serverseitige Dokumentenverarbeitung, eine ASP.NET Core-API, die Barcodes aus hochgeladenen Dateien liest, oder eine Azure-Funktion, die Versand-PDFs verarbeitet, werden die Annahmen der Kamerapipeline eher zu einer Reibung als zu einer Fähigkeit. Dieser Vergleich untersucht, woher Scandits Architektur stammt, wo IronBarcode stattdessen passt und wie sich die beiden Bibliotheken in der Praxis unterscheiden.

Scandit SDKverstehen

Scandit SDK ist eine kommerzielle Barcode-Scanning-Plattform für Enterprise , die für mobile und Edge-Computing-Umgebungen entwickelt wurde. Die Bibliothek ist darauf ausgelegt, Echtzeit-Kamerascan auf iOS-, Android- und MAUI-Geräten zu unterstützen, mit speziellen Produktlinien, die erweiterte Realität Overlays, gleichzeitige Multi-Barcode-Erkennung und Identitätsdokumenten-Scans abdecken. Scandits primärer Bereitstellungskontext ist im mobilen Feldeinsatz, in Lagerbetrieben und im Einzelhandelspunkt-Interaktionsszenarien, wo physische Kamera und Live-Benutzer beide vorhanden sind.

Die Architektur der Bibliothek ist um die DataCaptureContext-Pipeline organisiert, die eine Kamerasitzung, Frame-Analyse-Einstellungen und Barcode-Erfassungskonfiguration als einheitliches zustandsbehaftetes System koordiniert. Da jede Produktlinie der Scandit-Plattform – SparkScan, MatrixScan, ID Scanning, AR Overlays und Parser – separat lizenziert und über ein Kontakt-Vertriebsmodell bepreist wird, lassen sich die Gesamtkosten einer Scandit-Integration erst nach einem Verkaufsgespräch ermitteln.

Zu den wichtigsten architektonischen Merkmalen des Scandit SDKgehören:

  • Camera-First Design: Das SDK setzt eine physische Kamera und eine laufende Bildquelle voraus. Das Auslesen der Barcodes erfolgt in Live-Videobildern, nicht in statischen Dateien oder Streams.
  • Verpflichtende DataCaptureContext-Initialisierung: Jede Integration beginnt mit der Konstruktion eines DataCaptureContext und der Verbindung mit einer Kamera-Instanz, bevor mit der Barcode-Arbeit begonnen werden kann.
  • Explizite Symbologie-Erklärung: Barcode-Formate müssen individuell mit EnableSymbologies aktiviert werden, bevor die Erfassungssitzung beginnt. Eine automatische Erkennung ist nicht verfügbar.
  • Ereignisgesteuerte Ergebnisübermittlung: Barcode-Ergebnisse werden asynchron durch Ereignis-Callbacks (BarcodeScanned) geliefert, anstatt synchron von einem Methodenaufruf zurückgegeben zu werden.
  • Modulare Produktarchitektur: SparkScan, MatrixScan, ID-Scanning, AR-Overlays und Parser sind separat bepreiste Funktionen, die individuelle Vertragspositionen erfordern.
  • Angebotspreise: Laut Scandits Preisseite werden bezahlte Editionen basierend auf Edition, Geräten, Scanvolumen und Vertragsdauer zitiert; eine kostenlose Testversion und Community Edition sind verfügbar.
  • Mobile-First-Plattformausrichtung: Primäre Unterstützung gilt iOS und Android. Serverseitige, Docker- und serverlose Bereitstellungen fallen nicht in den Designumfang des SDK.

Die DataCaptureContext-Pipeline

Jede Scandit-Integration beginnt mit dieser Kamerainitialisierungssequenz, bevor ein einziger Barcode gelesen werden kann:

// Scandit SDK: full camera pipeline setup
// NuGet: Scandit.DataCapture.Core.Maui, Scandit.DataCapture.Barcode.Maui

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.DataCapture.Core.Maui, Scandit.DataCapture.Barcode.Maui

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.Maui
Imports Scandit.DataCapture.Barcode.Maui

' Scandit SDK: full camera pipeline setup
' NuGet: Scandit.DataCapture.Core.Maui, Scandit.DataCapture.Barcode.Maui

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

Jede Zeile in diesem Block konfiguriert Kamerainfrastruktur. Die API zeigt diesen Einstiegspunkt keinen Dateipfad, kein PDF oder kein Stream-Argument — sie geht von einer laufenden Kamera aus, bevor Barcode-Arbeit beginnt.

IronBarcode verstehen

IronBarcode ist eine kommerzielle .NET Bibliothek zum Lesen und Generieren von Barcodes. Die Bibliothek ist für Server-, Desktop- und Cloud-Umgebungen konzipiert, in denen Barcode-Daten als Dateien, Datenströme, Byte-Arrays oder eingebettete Inhalte in PDF-Dokumenten ankommen. Die API ist zustandslos – es gibt kein Session-Objekt, keine Kamera-Pipeline, die initialisiert werden muss, und keinen persistenten Kontext, der zwischen den Lesevorgängen verwaltet werden muss. Ein einzelner statischer Aufruf von BarcodeReader.Read akzeptiert einen Dateipfad, Stream, Byte-Array oder PDF und gibt eine Sammlung von Ergebnissen zurück.

IronBarcode wird als einzelnes NuGet-Paket bereitgestellt, das alle Lese- und Generierungsfähigkeiten über 50+1D- und 2D-Barcode-Formate enthält. Die Bibliothek unterstützt die automatische Formaterkennung, sodass der Aufrufer nicht angeben muss, nach welchen Symbologien gesucht werden soll. Die Preise werden auf der Produktseite veröffentlicht, ein Verkaufsgespräch ist nicht erforderlich.

Zu den wichtigsten Merkmalen von IronBarcode gehören:

  • Zustandslose dateibasierte API: Der Lesevorgang beginnt mit einem einzigen Methodenaufruf, der einen Dateipfad, einen Datenstrom, ein Byte-Array oder ein PDF-Dokument akzeptiert.
  • Automatische Formaterkennung: Alle unterstützten Barcode-Formate werden automatisch erkannt. Die explizite Symbolisierungskonfiguration ist eine optionale Leistungsoptimierung, keine Voraussetzung.
  • Native PDF-Unterstützung: Mehrseitige PDF-Dokumente werden direkt gelesen, die Ergebnisse werden nach Seitenzahl indiziert. Es wird keine externe PDF-Rendering-Bibliothek benötigt.
  • Server- und Cloud-fähig: Unterstützt ASP.NET Core, Azure Functions, Docker unter Linux und containerisierte Bereitstellungen ohne architektonische Umwege.
  • Gleichzeitige Verarbeitung: Die zustandslose API ist von Natur aus Thread-sicher und ermöglicht Parallel.ForEach und asynchrone Muster für hochdurchsatzfähige Batch-Szenarien.
  • Barcode-Generierung: Erzeugt Barcodes im Bild- und PDF-Format für alle unterstützten Symbologien. Erzeugung und Auslesen sind im selben Paket enthalten.
  • Veröffentlichte unbefristete Lizenz: Die Preise werden öffentlich als einmalige, unbefristete Käufe ohne Gebühren pro Scan oder pro Gerät angegeben.

Funktionsvergleich

Die folgende Tabelle verdeutlicht die grundlegenden Unterschiede zwischen Scandit SDKund IronBarcode:

Feature Scandit SDK IronBarcode
Primärer Anwendungsfall Echtzeit-Kamerascan auf dem Handy Lesen von Datei-, Stream- und PDF-Barcodes auf dem Server
Kamera erforderlich Ja Nein
PDF-Barcode-Extraktion Nicht unterstützt Native Unterstützung
Preismodell Kontaktieren Sie den Vertrieb, pro Produkt. Veröffentlichte unbefristete Stufen
Serverseitige Verarbeitung Kein dokumentiertes Ziel Primäres Bereitstellungsziel
Symbolisierungskonfiguration Vor dem Scannen zwingend erforderlich Optional; auto-detection is default
Barcode-Generierung Nicht unterstützt Im Einzelpaket enthalten

Detaillierter Funktionsvergleich

Feature Scandit SDK IronBarcode
Lektüre
Bilddatei lesen Kein dokumentiertes Ziel Hauptfokus
PDF-Barcode-Extraktion Nicht unterstützt Native mehrseitige
Eingabestrom / Byte-Array Nicht unterstützt Ja
Automatische Formaterkennung Nein (muss angegeben werden) Ja
1D-Formate (Code 128, EAN, UPC usw.) Umfassend (laut Scandit-Symbologie-Dokumentation) 50+
2D-Formate (QR, DataMatrix, Aztec, PDF417) Ja Ja
Mehrfach-Barcode-Erkennung pro Dokument MatrixScan (separates Produkt) Ja (Einzelverpackung)
Wiederherstellung beschädigter Barcodes Keine dokumentierte Dateiverarbeitungsfunktion Ja (ML-gestützt)
Generation
Barcode-Generierung Nicht unterstützt Ja
Ausgabe in Bilddatei Nicht unterstützt Ja
Ausgabe als PDF Nicht unterstützt Ja
Architektur
Initialisierungsmodell Stateful-Kamera-Pipeline Aufruf einer zustandslosen Methode
Ergebnislieferung Ereignis-Callback (asynchron) Synchroner Rückgabewert
Kameraabhängigkeit Erforderlich Nicht zutreffend
Symbolik vor der Deklaration Erforderlich Optional
Plattform
iOS / Android (MAUI) Primäres Ziel Programmatische Nutzung
ASP.NET Core Kein dokumentiertes Ziel Volle Unterstützung
Azure Functions/serverlos Nicht praktikabel Volle Unterstützung
Docker / Linux-Server Nicht unterstützt Volle Unterstützung
Konsolen-/Hintergrunddienst Kein dokumentiertes Ziel Volle Unterstützung
Lizenzierung
Preistransparenz Kontakt zum Vertrieb erforderlich Auf der Website veröffentlicht
Lizenztyp Jährlich (pro Produkt) Ewige einmalige
Gebühren pro Scan oder pro Gerät Möglich (aufgeführt als Preisvariablen) Nein
Zugriff auf alle Funktionen mit einem einzigen Paket Nein (modulare Produkte) Ja

Architektur zum Lesen von Barcodes

Der bedeutendste strukturelle Unterschied zwischen diesen beiden Bibliotheken besteht darin, wie sie die Beziehung zwischen Input und Output modellieren.

Scandit SDK-Ansatz

Scandit verarbeitet Kameraframes in Echtzeit. Der DataCaptureContext hält eine aktive Kamerasitzung, und BarcodeCapture überwacht Barcodes in jedem eingehenden Frame. Barcode-Ergebnisse werden asynchron durch das BarcodeScanned-Ereignis geliefert. Das Einlesen einer statischen Bilddatei mit Scandit erfordert die Anpassung der Kamerapipeline, um eine Datei als Framequelle zu behandeln – ein Workflow, der nicht nativ unterstützt wird und dessen Annäherung einen erheblichen Entwicklungsaufwand erfordert.

// 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

Das ereignisgesteuerte Modell eignet sich für kontinuierliches Live-Scannen, bei dem Barcodes unvorhersehbar in einem Videostream eintreffen. Bei der dateibasierten Verarbeitung führt das Modell zu unnötiger Komplexität: Die Eingabe hat eine bekannte Abschlussgrenze, die Kamerasitzung wird nie auf natürliche Weise beendet, und das asynchrone Callback-Muster lässt sich nicht gut mit Anfrage-Antwort-Serverarchitekturen kombinieren.

IronBarcode Ansatz

IronBarcode behandelt jede Eingabe als ein einzelnes Dokument mit einem deterministischen Ergebnis. Die BarcodeReader.Read-Methode akzeptiert einen Dateipfad, Stream oder Byte-Array, führt alle Erkennungen synchron durch und gibt eine Sammlung von Ergebnissen zurück. Es gibt keine Sitzung zu öffnen, keine Framequelle zu konfigurieren und kein Ereignis zu abonnieren.

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

IronBarCode.License.LicenseKey = "YOUR-LICENSE-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-LICENSE-KEY";
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
    Console.WriteLine($"{result.Value} ({result.Format})");
Imports IronBarCode

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

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

Zum Auslesen von Barcodes aus Bildern benötigt die zustandslose API außer dem Lizenzschlüssel keine Initialisierung. Die Formaterkennung erfolgt automatisch. Das vollständige Programm oben liest jedes unterstützte Barcode-Format aus einer Bilddatei in drei Zeilen Arbeitscode.

Plattform- und Bereitstellungsunterstützung

Der Bereitstellungskontext einer Barcode-Bibliothek bestimmt unabhängig von ihren Funktionsumfängen, ob sie in der Zielumgebung überhaupt ausgeführt werden kann.

Scandit SDK-Ansatz

Die Architektur von Scandit erfordert Kamerahardware und eine mobile Plattform, die diese über eine native Kamera-API bereitstellen kann. iOS und Android sind die primär unterstützten Zielplattformen. Windows-Desktop ist ein sekundäres Ziel. ASP.NET Core, Azure Functions, Docker-Container und Linux-Server fallen nicht in den Designumfang der Bibliothek. Die DataCaptureContext setzt eine laufende Kamerasitzung voraus, die in serverlosen Bereitstellungsumgebungen, containerisierten Bereitstellungen oder Hintergrundverarbeitungsdiensten kein Äquivalent hat.

Plattform Scandit SDK
iOS / Android (MAUI) Primäres Ziel
Windows-Desktop Sekundäre Unterstützung
ASP.NET Core Kein dokumentiertes Ziel
Azure Functions Nicht praktikabel
Docker / Linux-Server Nicht unterstützt
Konsolen-/Hintergrunddienst Kein dokumentiertes Ziel

IronBarcode Ansatz

IronBarcode wurde für Server-, Cloud- und Containerumgebungen entwickelt. Die zustandslose API hat keine Hardwareabhängigkeiten und keine plattformspezifischen Initialisierungsanforderungen. Die Bereitstellung in Azure Functions für die Barcode-Verarbeitung ist ein unterstützter, dokumentierter Weg. Docker unter Linux ist ein Standard-Bereitstellungsziel. ASP.NET Core-Endpunkte, die Barcodes aus hochgeladenen Dateien lesen, stellen ein vom Kern unterstütztes Szenario dar, für das keine architektonischen Umgehungslösungen erforderlich sind.

Plattform IronBarcode
iOS / Android (MAUI) Programmatische Dateiverarbeitung
ASP.NET Core Volle Unterstützung
Azure Functions/Lambda Volle Unterstützung
Docker / Linux-Server Volle Unterstützung
Konsolen-/Hintergrunddienst Volle Unterstützung
Blazor -Server Volle Unterstützung

Gleichzeitige Stapelverarbeitung

Die Verarbeitung großer Mengen von Dokumenten mit Barcodes ist eine häufige serverseitige Anforderung, die die beiden Bibliotheken aus grundlegend unterschiedlichen Perspektiven angehen.

Scandit SDK-Ansatz

Scandits Kamerapipeline wurde für eine einzelne Kamerasitzung entwickelt, die einem einzelnen Benutzer oder Gerät dient. Das FrameSourceState-Modell geht von einer persistente, kontinuierliche Kamerasitzung aus – nicht von einer Reihe von verarbeiteten Dokumenten bei Durchsatz. Die Anpassung der Bibliothek zur Verarbeitung von Dateistapeln erfordert die Simulation einer Kamerasitzung pro Dokument oder die Serialisierung der Dokumentenverarbeitung über eine gemeinsame Pipeline, was beides kein unterstütztes oder effizientes Vorgehen darstellt.

IronBarcode Ansatz

Da die BarcodeReader.Read-Methode von IronBarcode zustandslos ist, ist es von Natur aus sicher, sie gleichzeitig von mehreren Threads aufzurufen. Die gleichzeitige Batch-Verarbeitung erfordert keine spezielle Konfiguration über die Definition von BarcodeReaderOptions hinaus:

// 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

Detaillierte Muster für das asynchrone und multithreadfähige Lesen von Barcodes finden Sie in der IronBarcode Dokumentation, die threadsichere Muster und Optionen zur Durchsatzoptimierung enthält.

PDF-Dokumentverarbeitung

Die Extraktion von PDF-Barcodes ist eine eigenständige Fähigkeit im Vergleich zum bildbasierten Lesen und stellt eine signifikante Divergenz zwischen den beiden Bibliotheken dar.

Scandit SDK-Ansatz

Scandit bietet keine native PDF-Unterstützung. Das Extrahieren von Barcodes aus einer PDF-Datei mit Scandit erfordert das Rendern jeder PDF-Seite in ein Rasterbild mithilfe einer separaten PDF-Rendering-Bibliothek und die anschließende Verarbeitung dieser Bilder durch die Kamerasimulationspipeline. Dieser Ansatz führt zu einer zusätzlichen Abhängigkeit, zusätzlichen Lizenzkosten und einem erheblichen Entwicklungsaufwand für eine Aufgabe, die in Dokumentenverarbeitungs-Workflows routinemäßig anfällt. Mehrseitige Dokumente erfordern das manuelle Durchlaufen der Seiten, die Verwaltung des Speichers für gerenderte Bilder und die manuelle Koordinierung der Ergebnisse über die Seiten hinweg.

IronBarcode Ansatz

IronBarcode liest Barcodes nativ aus PDF-Dokumenten. Ein Dateipfad zu einem PDF ist ein gültiges Argument für BarcodeReader.Read, und die Ergebnisse enthalten eine PageNumber-Eigenschaft, die anzeigt, auf welcher Seite des Dokuments sich jeder Barcode befindet:

// 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

Eine vollständige Anleitung zum Lesen von Barcodes aus PDFs , einschließlich Optionen zur Seitenbereichsauswahl und zur Extraktion mehrerer Barcodes, finden Sie in der IronBarcode Dokumentation, die das gesamte Spektrum der PDF-Verarbeitungsszenarien abdeckt.

Preis- und Lizenzierungsbedingungen

Die Lizenzstruktur beeinflusst nicht nur die Kosten einer Bibliothek, sondern auch den Zeitrahmen, der für deren Evaluierung und Einführung erforderlich ist.

Skandinavischer Ansatz

Scandit veröffentlicht keine Listenpreise. Die Produktseite listet Funktionen und Produktnamen — SparkScan, MatrixScan, ID Scanning, AR Overlays, Parser — und leitet Preisanfragen über ein Verkaufsgespräch. Der Angebotsprozess umfasst typischerweise die Beschreibung des Anwendungsfalls, die Schätzung des Scanvolumens, die Spezifizierung der Geräte, die Besprechung der Unterstützungsebenen und die Auswahl einer Vertragsdauer, bevor eine Kostenzahl angegeben wird. Jede Scandit-Produktlinie ist separat bepreist und separat vertraglich geregelt, sodass die Erweiterung des Funktionszugriffs einen zusätzlichen Verkaufszyklus erfordern kann.

IronBarcode Ansatz

IronBarcode veröffentlicht seine Lizenzstufen auf der Produktseite, ohne dass ein Formular ausgefüllt oder eine Verkaufsanfrage gestellt werden muss:

Lizenz Preis Entwickler Projekte
Lite 749 $ einmalig 1 1
Plus 1.499 $ einmalig 3 3
Professionell 2.999 $ einmalig 10 10
Unbegrenzt $5,999 einmalig Unbegrenzt Unbegrenzt

Die Lizenzen gelten unbefristet. Es fallen keine Gebühren pro Scan, keine Gebühren pro Gerät und keine Volumenschwellenwerte an, die zu Tarifänderungen führen. Eine jährliche Verlängerung ist optional und kostet die Hälfte des ursprünglichen Preises. Die erworbene Lizenz bleibt aber auch ohne Verlängerung gültig. Alle Funktionen des IronBarcode Komplettpakets – Lesen, Generieren, PDF-Unterstützung, Erkennung mehrerer Barcodes – sind in jeder Stufe enthalten.

API-Mapping-Referenz

Die folgende Tabelle ordnet die Konzepte des Scandit SDKihren IronBarcode Äquivalenten zu, um Teams bei der Abschätzung der Übersetzungskosten einer Migration zu unterstützen:

Scandit SDK IronBarcode Notizen
DataCaptureContext.ForLicenseKey("key") IronBarCode.License.LicenseKey = "key" Eine Aufgabe; kein Kontextobjekt erforderlich
BarcodeCaptureSettings.Create() new BarcodeReaderOptions() Wahlweise in IronBarcode
settings.EnableSymbologies(Symbology.Code128, ...) (not needed) Automatische Erkennung ist die Standardeinstellung.
Camera.GetDefaultCamera() (not applicable) Kein Kamerakonzept bei der Dateiverarbeitung
dataCaptureContext.SetFrameSourceAsync(camera) (not applicable) Keine Frame-Quelle in IronBarcode
camera.SwitchToDesiredStateAsync(FrameSourceState.On) (not applicable) Keine Kamera-Zustandsmaschine
barcodeCapture.IsEnabled = true BarcodeReader.Read(path) Ein einzelner Anruf initiiert das Lesen
BarcodeScanned +=-Ereignishandler Iteration über den Rückgabewert von BarcodeReader.Read() Synchrone Datenerfassung; kein Ereignissystem
args.Session.NewlyRecognizedBarcodes Rückgabewert von BarcodeReader.Read() Direkter Zugriff auf die Sammlung
barcode.Data result.Value Gleicher semantischer Inhalt
barcode.Symbology result.Format Aufzählung äquivalenter Formate
SparkScan, MatrixScan, Ausweis-Scanning (separate Produkte) Einzelnes IronBarcode-Paket Keine separaten Add-ons

Wenn Teams einen Wechsel vom Scandit SDKzu IronBarcode erwägen

Anforderungen an die serverseitige Verarbeitung

Teams, die ASP.NET CoreAPIs, Hintergrundverarbeitungsdienste oder Azure Functionsentwickeln, finden, dass Scandits Architektur auf Annahmen basiert, die in einer Serverumgebung nicht zutreffen. Die DataCaptureContext- und Kamera-Pipeline erwarten Kamera-Hardware und eine Live-Frame-Quelle. Wenn die Barcode-Anforderungen eines Projekts vollständig serverseitig sind — Lesen aus hochgeladenen Dateien, Verarbeitung von Dokumenten-Warteschlangen, Extraktion von Barcodedaten aus eingehenden PDFs — fügt die Kamerapipeline Initialisierungsschritte und Plattformbeschränkungen hinzu, die für die Arbeitslast nicht relevant sind.

Stapelverarbeitung von Dokumenten

Organisationen, die große Mengen von barcodehaltigen Dokumenten verarbeiten — Versanddokumente, Rechnungen, Bestandsnachweise, medizinische Formulare — finden, dass Scandits Rahmenquellenmodell auf kontinuierliche Kamerasitzungen ausgerichtet ist, anstatt auf diskrete Dokumente mit deterministischen Start- und Endpunkten. Wenn das Dokumentenvolumen wächst und parallele Verarbeitung notwendig wird, erfordert das zustandsbehaftete Design der Kamerapipeline zusätzliche technische Anpassungen.

Preistransparenz

Entwicklungsteams, die an Budgetvorschlägen, Anbieterzulagen oder Kosten-Nutzen-Analysen für neue Projekte arbeiten, benötigen ein Verkaufsgespräch, um die Scandit-Lizenzkosten zu bestimmen. Wenn ein Projekt ein definiertes Budget und einen definierten Zeitplan hat, fügt das Erfordernis eines Verkaufsgesprächs, um ein Preisangebot zu erhalten, Schritte zur Bewertung und Planung hinzu. Teams, die gleichzeitig mehrere Bibliotheksoptionen auswerten, finden möglicherweise, dass das Fehlen veröffentlichter Preisangaben einen strukturierten Direktvergleich erschwert.

Reduzierung der Pipeline-Komplexität

Selbst wenn Scandit bereits für mobiles Kamerascanning eingesetzt wird, können serverseitige Barcode-Anforderungen in derselben Anwendung ein anderes Tool erfordern. Die Kamerapipeline, die für Echtzeitscan auf mobilen Geräten passt, fügt Komplexität hinzu, wenn sie auf statische Dokumentenverarbeitung angewendet wird. Teams, die diesen Punkt erreichen, adoptieren oft IronBarcode für die serverseitige Verarbeitung neben einer bestehenden Scandit-Bereitstellung, anstatt die Kamerapipeline zu erweitern, um Dokumenten-Workflows abzudecken.

Gemeinsame Überlegungen zur Migration

Die Kamerapipeline hat keine entsprechende Datei.

Der gesamte DataCaptureContext-Initialisierungsblock – Kontext-Erstellung, Einstellungen-Konfiguration, Symbologie-Aktivierung, Kamera-Erwerb, Frame-Quellen-Zuweisung und Zustandstransition – hat kein Äquivalent in der dateibasierten API von IronBarcode. Bei der Migration von serverseitigem Integrationscode wird dieser Block vollständig gelöscht. Es ist nicht übersetzt; Es wurde entfernt. Der Ersatz von IronBarcode ist die Zuordnung eines Lizenzschlüssels, gefolgt von einem BarcodeReader.Read-Aufruf.

Ereignis-Callback an Direktrückgabe

Scandit liefert Barcode-Ergebnisse durch das BarcodeScanned-Ereignis, da das Live-Kamera-Scanning von Natur aus asynchron ist. IronBarcode gibt Ergebnisse synchron als typisierte Sammlung zurück, da das dateibasierte Lesen eine bekannte Abschlussgrenze hat. Die Migration beinhaltet die Umwandlung der Ereignisbehandlungslogik in eine Standarditeration:

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

// 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());
};

// 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

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

Entfernung der Symbolerklärung

Scandit erfordert explizite EnableSymbologies-Aufrufe, bevor das Scannen beginnt. IronBarcode benötigt keine vorherige Deklaration der Symbolik – alle Formate werden automatisch erkannt. Während der Migration werden alle settings.EnableSymbologies(...)-Aufrufe entfernt. Wenn der ursprüngliche Scandit-Code Symbologien aus Leistungsgründen eingeschränkt hat, ist eine gleichwertige Optimierung in IronBarcode durch BarcodeReaderOptions.ExpectBarcodeTypes verfügbar, aber nicht erforderlich, um zu starten.

Zusätzliche IronBarcode Funktionen

Über die oben im Vergleich behandelten Bereiche hinaus bietet IronBarcode Funktionen, die seinen Nutzen in Dokumenten- und Datenverarbeitungsszenarien erweitern:

  • Barcode-Generierung : Generieren Sie Barcodes als Bilddateien oder betten Sie sie in PDFs ein – und zwar in allen unterstützten Symbologien, einschließlich QR-Codes, Code 128, Data Matrix und PDF417.
  • GS1 und strukturierte Datenanalyse : Dekodierung strukturierter Barcode-Datenformate einschließlich GS1-128-Anwendungskennungen direkt aus den Barcode-Ergebnissen.
  • Bildkorrektur und Vorverarbeitung : Die automatische Bildkorrektur für schiefe, kontrastarme oder beschädigte Barcodes verbessert die Lesbarkeit gescannter Dokumente, ohne dass eine manuelle Vorverarbeitung erforderlich ist.
  • Multi-Barcode-Erkennung: Ein einzelner BarcodeReader.Read-Aufruf erkennt alle im Dokument vorhandenen Barcodes, einschließlich gemischter Formate auf derselben Seite, unter Verwendung der ExpectMultipleBarcodes-Option.
  • MAUI Barcode-Lesung: In MAUI-Anwendungen mit einem Aufnahme- und Verarbeitungsmodell übernimmt IronBarcode den Verarbeitungsschritt, nachdem ein Foto mit MediaPicker aufgenommen wurde.
  • Stream- und Byte-Array-Eingabe: Neben Dateipfaden akzeptiert BarcodeReader.Read Stream- und byte[]-Eingaben, was die Integration mit Upload-Handlern, Speicherpuffern und Netzwerkstreams ohne temporäre Dateierstellung ermöglicht.

.NET-Kompatibilität und Zukunftsfähigkeit

IronBarcode unterstützt .NET Framework 4.6.2 und später, .NET Standard 2.0 und moderne .NET-Versionen einschließlich .NET 6, .NET 8, .NET 9 und .NET 10. Die Bibliothek erhält regelmäßige Updates, um die Kompatibilität mit aktuellen .NET-Releases aufrechtzuerhalten. Ihr zustandsloses API-Design passt zum asynchronen-Programmierungsmodell, das in modernen .NET verwendet wird, und ihre Unterstützung für Linux- und containerisierte Bereitstellungen passt zu Cloud-native Workloads. Da die Bibliothek als einzelnes NuGet Paket ohne plattformspezifische Laufzeitabhängigkeiten über die .NET Laufzeitumgebung hinaus ausgeliefert wird, sind für ein Upgrade zwischen .NET Versionen keine separaten Bibliotheksaktualisierungen oder zusätzliche Konfigurationen erforderlich.

Abschluss

Scandit SDK und IronBarcode stellen grundlegend unterschiedliche Ansätze zur Barcode-Verarbeitung dar, die verschiedene beabsichtigte Einsatzkontexte widerspiegeln. Scandit wurde für Echtzeit-Kamera-Scanning auf mobilen Geräten entwickelt und verfügt über eine Architektur, die eine Live-Kamerasitzung, Einzelbild-Analyseeinstellungen und ereignisgesteuerte Ergebnisbereitstellung koordiniert. IronBarcode wurde für die dateibasierte und dokumentenzentrierte Verarbeitung auf Servern, Desktops und Cloud-Infrastrukturen entwickelt und verfügt über eine zustandslose API, die Dateien, Datenströme und PDFs akzeptiert und synchrone Ergebnisse zurückgibt. Hierbei handelt es sich nicht um konkurrierende Umsetzungen derselben Idee – es sind unterschiedliche Ideen, die unterschiedlichen Anwendungsfällen dienen.

Das Scandit SDKist die richtige Wahl für mobile Anwendungen, bei denen ein Benutzer die Kamera seines Geräts auf einen physischen Barcode richtet und eine visuelle Rückmeldung von unter 100 ms benötigt. Die AR-Overlay-Funktionen, die gleichzeitige Erkennung mehrerer Barcodes über MatrixScan und das Scannen von Ausweisdokumenten über ID Scanning sind speziell entwickelte Funktionen, die keine dateibasierte Barcode-Bibliothek nachbildet. Organisationen, die mobile Außendienstmitarbeiter in großem Umfang einsetzen, kundenorientierte Scan-Erlebnisse bieten oder Enterprise SLAs für mobiles Scannen benötigen, haben die Zielgruppe im Blick, für die Scandit entwickelt wurde.

IronBarcode ist die richtige Wahl, wenn Barcode-Daten als Dateien – Bilder, PDFs, Byte-Arrays oder Upload-Streams – eintreffen und die Verarbeitung ohne Kamera, ohne Benutzer und ohne Benutzeroberfläche erfolgt. Serverseitige Dokumentenverarbeitung, ASP.NET CoreAPI-Endpunkte, Azure Functions, geplante Batch-Jobs und containerisierte Microservices stellen die Umgebungen dar, für die IronBarcode entwickelt wurde. Die veröffentlichte Preisgestaltung, der Einzelpaket-Funktionszugang und die direkte Dateilesen-API sind für diese Szenarien ausgelegt, während Scandits Kamerapipeline-Modell und Kontaktverkaufspreise auf eine andere Bereitstellungsform ausgerichtet sind.

Die ehrliche Einschätzung lautet, dass die Wahl weitgehend vom Einsatzkontext und weniger von den persönlichen Präferenzen abhängt. Ein Projekt, das Live-Scannen mit einer mobilen Kamera erfordert, hat eine klare Antwort. Ein Projekt, das die serverseitige Extraktion von PDF-Barcodes erfordert, hat eine ebenso klare Antwort. Die beiden Bibliotheken werden manchmal im mittleren Bereich verwechselt – bei MAUI-Anwendungen, hybriden Architekturen und Organisationen, die sowohl mobile Scan- als auch Dokumentenverarbeitungsanforderungen haben. In diesen Fällen können die beiden Bibliotheken nebeneinander existieren: Scandit übernimmt die Arbeit mit der Kamera, IronBarcode die Dokumentenverarbeitung, und keine der beiden Bibliotheken wird in eine Rolle gezwungen, für die sie nicht konzipiert wurde.

Häufig gestellte Fragen

Was ist Scandit SDK?

Scandit SDK ist eine .NET Barcode-Bibliothek zum Erzeugen und Lesen von Barcodes in C#-Anwendungen. Es ist eine von mehreren Alternativen, die Entwickler bei der Auswahl einer Barcode-Lösung for .NET-Projekte in Betracht ziehen.

Was sind die Hauptunterschiede zwischen Scandit SDK und IronBarcode?

IronBarcode verwendet eine statische, zustandslose API, die keine Instanzverwaltung erfordert, während das Scandit SDK in der Regel eine Instanzerstellung und -konfiguration vor der Verwendung erfordert. IronBarcode bietet außerdem native PDF-Unterstützung, automatische Formaterkennung und Single-Key-Lizenzierung in allen Umgebungen.

Ist IronBarcode einfacher zu lizenzieren als Scandit SDK?

IronBarcode verwendet einen einzigen Lizenzschlüssel, der sowohl die Entwicklungs- als auch die Produktionsbereitstellung abdeckt. Dies vereinfacht CI/CD-Pipelines und Docker-Konfigurationen im Vergleich zu Lizenzierungssystemen, die SDK-Schlüssel von Laufzeitschlüsseln trennen.

Unterstützt IronBarcode alle Barcode-Formate, die auch das Scandit SDK unterstützt?

IronBarcode unterstützt über 30 Barcode-Symbologien, darunter QR Code, Code 128, Code 39, DataMatrix, PDF417, Aztec, EAN-13, UPC-A, GS1 und viele mehr. Die automatische Formaterkennung bedeutet, dass keine explizite Formataufzählung erforderlich ist.

Unterstützt IronBarcode das native Lesen von PDF-Barcodes?

Ja, IronBarcode liest Barcodes direkt aus PDF-Dateien mit BarcodeReader.Read("document.pdf"), ohne dass eine separate PDF-Rendering-Bibliothek erforderlich ist. Die seitenweisen Ergebnisse umfassen Seitenzahl, Barcodeformat, Wert und Konfidenzwert.

Wie handhabt IronBarcode die Stapelverarbeitung im Vergleich zu Scandit SDK?

Die statischen Methoden von IronBarcode sind zustandslos und natürlich thread-sicher, was die direkte Verwendung von Parallel.ForEach ohne Instanzverwaltung pro Thread ermöglicht. Es gibt auf keiner Preisstufe eine Obergrenze für den Durchsatz.

Welche .NET Versionen werden von IronBarcode unterstützt?

IronBarcode unterstützt .NET Framework 4.6.2+, .NET Core 3.1 und .NET 5, 6, 7, 8 und 9 in einem einzigen NuGet-Paket. Zu den Zielplattformen gehören Windows x64/x86, Linux x64 und macOS x64/ARM.

Wie installiere ich IronBarcode in einem .NET-Projekt?

Installieren Sie IronBarcode über NuGet: Führen Sie "Install-Package IronBarCode" in der Paketmanager-Konsole oder "dotnet add package IronBarCode" in der CLI aus. Es sind keine zusätzlichen SDK-Installationsprogramme oder Laufzeitdateien erforderlich.

Kann ich IronBarcode im Gegensatz zu Scandit vor dem Kauf testen?

Ja, der Testmodus von IronBarcode liefert vollständige dekodierte Barcodewerte - nur die erzeugten Ausgabebilder erhalten ein Wasserzeichen. Sie können die Lesegenauigkeit an Ihren eigenen Dokumenten testen, bevor Sie sich zum Kauf verpflichten.

Was ist der Preisunterschied zwischen Scandit SDK und IronBarcode?

Die Preise für IronBarcode beginnen bei 749 US-Dollar für eine unbefristete Einzelentwicklerlizenz für Entwicklung und Produktion. Preisdetails und Volumenoptionen sind auf der IronBarcode-Lizenzierungsseite verfügbar. Es ist keine separate Runtime-Lizenz erforderlich.

Ist die Migration von Scandit SDK zu IronBarcode einfach?

Bei der Migration von Scandit SDK zu IronBarcode geht es in erster Linie darum, instanzbasierte API-Aufrufe durch statische Methoden von IronBarcode zu ersetzen, Lizenzierungsformulare zu entfernen und die Namen von Ergebniseigenschaften zu aktualisieren. Bei den meisten Migrationen wird eher Code reduziert als hinzugefügt.

Kann IronBarcode QR-Codes mit Logos generieren?

Ja. QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png") bettet ein Markenbild nativ in einen QR-Code mit konfigurierbarer Fehlerkorrektur ein. Farbige QR-Codes werden auch über ChangeBarCodeColor() unterstützt.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen

Iron-Support-Team

Wir sind 24 Stunden am Tag, 5 Tage die Woche online.
Chat
E-Mail
Rufen Sie mich an