Neodynamic Barcode Professional vs IronBarcode: Comparación de bibliotecas de códigos de barras C#
SDK de Scanbot vs IronBarcode: Tubo de cámara vs Procesamiento de archivos
El SDK de Scanbot abre una vista de escaneo de códigos de barras a pantalla completa utilizando la cámara del dispositivo. No hay método BarcodeScanner.Read(imagePath). El escáner es la interfaz de usuario de la cámara. Si su código de barras se encuentra en una factura en formato PDF alojada en un servidor, Scanbot no podrá ayudarle. Esto no es una crítica, sino una descripción de la arquitectura del sistema. SDK de Scanbot es un control de cámara que envuelve las API de escaneo nativas de iOS, Android y UWP/WinUI 3 en un componente de visor. ScanbotSDKMain.Barcode.StartScannerAsync(configuration) transfiere el control a una experiencia de cámara en pantalla completa, el usuario apunta el dispositivo a un código de barras, el SDK lo detecta en la transmisión de video en vivo y el resultado regresa a tu aplicación. La comparación es importante porque el nombre del paquete de NuGet — ScanbotBarcodeSDK.MAUI — y la categoría del producto — "SDK de códigos de barras" — pueden llevar a los desarrolladores a evaluarlo para procesamiento de documentos en el lado del servidor, aplicaciones de escritorio WPF o API de ASP.NET Core. Este artículo explica la diferencia arquitectónica entre las dos herramientas y para qué está diseñada cada una.
Comprensión del SDK de Scanbot
Scanbot SDK es un SDK comercial de escaneo de códigos de barras desarrollado por doo GmbH. Su oferta principal para .NET es ScanbotBarcodeSDK.MAUI (v8.0.0), un paquete que tiene como objetivo net9.0-android y net9.0-ios. Un paquete separado, Scanbot.BarcodeSDK.Windows (v7.0.0), cubre aplicaciones de escritorio UWP y WinUI 3 en Windows 10 1809+ (x64) con una cámara autofoco. Todos los objetivos soportados están vinculados a la cámara: el SDK no se resolverá contra una aplicación de consola, una biblioteca de clases, un proyecto ASP.NET Coreo una aplicación MAUI dirigida a macOS.
Scanbot está diseñado como un producto que prioriza la cámara. Toda su interfaz de programación de aplicaciones (API) está orientada a la experiencia del visor en tiempo real: los objetos de configuración controlan el aspecto de la interfaz de usuario de la cámara, los formatos que monitoriza el sistema de vídeo en directo y cómo se proporciona información al usuario. La biblioteca proporciona un componente de escaneo para aplicaciones iOS, Android y Windows (UWP/WinUI 3) tanto para consumidores como para empresas.
- Plataforma principal destino: iOS y Android a través de .NET MAUI, además de UWP/WinUI 3 en Windows 10 1809+ a través del paquete separado
Scanbot.BarcodeSDK.Windows; Los objetivos MAUI para macOS no son compatibles - Modelo de entrada: Transmisión de video en vivo de la cámara del dispositivo exclusivamente; no existen sobrecargas de ruta de archivo, flujo o matriz de bytes.
- Diseño de API:
ScanbotSDKMain.Barcode.StartScannerAsync(configuration)transfiere el control a una experiencia de cámara en pantalla completa y devuelve un resultado conIsSuccessy una colección deValue.Items - Características de la interfaz de usuario de la cámara: Visor en tiempo real con superposición de la región de escaneo, control de la linterna, configuración de la relación de aspecto, retroalimentación háptica y de audio, y bloqueo de orientación.
- Formatos compatibles: Más de 20 formatos unidimensionales (Code 128, EAN-13, UPC y otros) y varios formatos bidimensionales (QR, DataMatrix, PDF417, Aztec).
- Sin procesamiento de archivos: No existe ningún mecanismo para leer un código de barras desde un archivo de imagen guardado, una secuencia de datos o un documento PDF.
- Sin generación de códigos de barras: El SDK lee códigos de barras; no las produce
- Modelo de licencia: Tarifa plana anual; el coste anual es fijo independientemente del volumen de escaneado
- Alcance del tipo de proyecto: Los paquetes NuGet compatibles tienen como objetivo tiempos de ejecución vinculados a la cámara (MAUI iOS/Android y UWP/WinUI 3); consola, biblioteca de clases, ASP.NET Core, WPF, WinForms, Funciones de Azure y hosts de servidor Docker están fuera de ese conjunto de objetivos
Arquitectura del flujo de trabajo de la cámara
La arquitectura de Scanbot requiere una inicialización al iniciar la aplicación, seguida de una llamada de escaneo controlada por la cámara. El método del escáner requiere un BarcodeScannerScreenConfiguration porque toda la operación depende de la cámara:
using ScanbotSDK.MAUI;
using ScanbotSDK.MAUI.Barcode;
// In MauiProgram.cs — initialization required before any scan
// ScanbotSDKMain.Initialize(new SdkConfiguration {
// LicenseKey = "YOUR-SCANBOT-LICENSE-KEY",
// LoggingEnabled = false
// }, builder);
// Configure scanner appearance and behavior
var configuration = new BarcodeScannerScreenConfiguration
{
UseCase = new SingleScanningMode()
};
// Open full-screen camera scanner — UI takes over the entire screen
var result = await ScanbotSDKMain.Barcode.StartScannerAsync(configuration);
if (result.IsSuccess)
{
foreach (var item in result.Value.Items)
Console.WriteLine($"{item.Barcode.Format}: {item.Barcode.Text}");
}
using ScanbotSDK.MAUI;
using ScanbotSDK.MAUI.Barcode;
// In MauiProgram.cs — initialization required before any scan
// ScanbotSDKMain.Initialize(new SdkConfiguration {
// LicenseKey = "YOUR-SCANBOT-LICENSE-KEY",
// LoggingEnabled = false
// }, builder);
// Configure scanner appearance and behavior
var configuration = new BarcodeScannerScreenConfiguration
{
UseCase = new SingleScanningMode()
};
// Open full-screen camera scanner — UI takes over the entire screen
var result = await ScanbotSDKMain.Barcode.StartScannerAsync(configuration);
if (result.IsSuccess)
{
foreach (var item in result.Value.Items)
Console.WriteLine($"{item.Barcode.Format}: {item.Barcode.Text}");
}
Imports ScanbotSDK.MAUI
Imports ScanbotSDK.MAUI.Barcode
' In MauiProgram.vb — initialization required before any scan
' ScanbotSDKMain.Initialize(New SdkConfiguration With {
' .LicenseKey = "YOUR-SCANBOT-LICENSE-KEY",
' .LoggingEnabled = False
' }, builder)
' Configure scanner appearance and behavior
Dim configuration As New BarcodeScannerScreenConfiguration With {
.UseCase = New SingleScanningMode()
}
' Open full-screen camera scanner — UI takes over the entire screen
Dim result = Await ScanbotSDKMain.Barcode.StartScannerAsync(configuration)
If result.IsSuccess Then
For Each item In result.Value.Items
Console.WriteLine($"{item.Barcode.Format}: {item.Barcode.Text}")
Next
End If
El SDK procesa los fotogramas de vídeo en directo en tiempo real, resalta los códigos de barras detectados en el visor y regresa cuando se confirma un código de barras o el usuario cancela la operación. El objeto de configuración controla la apariencia de la interfaz de usuario de la cámara, no el comportamiento de procesamiento. Ese es el modelo completo.
Entendiendo IronBarcode
IronBarcode es una biblioteca comercial .NET para la lectura y generación de códigos de barras, desarrollada por Iron Software. Funciona según un modelo de procesamiento de archivos: las fuentes de entrada son rutas de archivo, flujos de datos, matrices de bytes y documentos PDF. No hay interfaz de usuario para la cámara ni se requiere hardware móvil. La biblioteca funciona en cualquier tipo de proyecto .NET .
El método estático BarcodeReader.Read() de IronBarcode acepta cualquier fuente que proporcione el código llamante, independientemente de cómo se haya producido esa fuente. Un archivo subido a través de HTTP, un PDF en disco, una imagen desde almacenamiento binario o una matriz de bytes decodificada a partir de una cadena base64 son todos datos de entrada equivalentes. La biblioteca devuelve una colección de resultados decodificados, cada uno de los cuales incluye el valor del código de barras, el formato y el número de página, cuando corresponda.
- Fuentes de entrada: Rutas de archivo, flujos de datos, matrices de bytes y documentos PDF (análisis nativo de PDF, no extracción de imágenes).
- Tipos de proyectos compatibles: Aplicaciones de consola, ASP.NET Core, WPF, WinForms, Blazor Server, Azure Functions, AWS Lambda, Docker, Windows Services, .NET MAUI (todos los destinos, incluidos Windows y macOS) y .NET Framework 4.6.2+
- Generación de códigos de barras: Produce códigos de barras como imágenes o incrustados en documentos HTML y PDF.
- Cobertura de formatos: más de 30 formatos unidimensionales y cinco formatos bidimensionales, incluidos QR, DataMatrix, PDF417, Aztecy MaxiCode.
- Mejoras en la lectura: Corrección de errores basada en aprendizaje automático y recuperación de códigos de barras dañados para imágenes difíciles del mundo real.
- Objeto de configuración:
BarcodeReaderOptionscontrola el comportamiento del procesamiento (velocidad, detección de múltiples códigos de barras) en lugar de la apariencia de la interfaz de usuario de la cámara - Modelo de licencia: Compra única y perpetua en cuatro niveles (Lite $749, Plus $1,499, Professional $2,999, Unlimited $5,999); no se requiere renovación anual
Comparación de características
La siguiente tabla destaca las diferencias fundamentales entre SDK de Scanbot e IronBarcode:
| Característica | SDK de Scanbot | IronBarcode |
|---|---|---|
| Caso de uso principal | Escaneo de códigos de barras con cámara en directo desde el móvil | Lectura y generación de códigos de barras de archivos y documentos |
| Modelo de entrada | Solo la señal de la cámara del dispositivo | Ruta de archivo, flujo, matriz de bytes, PDF |
| Soporte de Plataforma | MAUI iOS/Android y UWP/WinUI 3 (vinculado a la cámara) | Todas las plataformas y tipos de proyectos .NET |
| Generación de códigos de barras | No | Sí |
| Extracción de códigos de barras PDF | No | Sí |
| Modelo de licencia | Tarifa plana anual | Perpetuo de una sola vez |
| Interfaz de usuario de la cámara en directo | Sí, componente del visor pulido | No (utiliza MediaPicker para capturar fotos) |
Comparación detallada de características
| Característica | SDK de Scanbot | IronBarcode |
|---|---|---|
| Lectura | ||
| Entrada desde la ruta del archivo | No | Sí |
| Entrada desde el flujo | No | Sí |
| Entrada desde una matriz de bytes | No | Sí |
| Extracción de códigos de barras PDF | No | Sí |
| Visor de la cámara en directo | Sí | No |
| Escaneo de fotogramas en tiempo real | Sí | No |
| Detección de formato automático | Sí | Sí |
| Corrección de errores de aprendizaje automático | No | Sí |
| Recuperación de códigos de barras dañados | No | Sí |
| Recuento de formato 1D | Más de 20 años | 30+ |
| Recuento de formato 2D | QR, DataMatrix, PDF417, Aztec | QR, DataMatrix, PDF417, Aztec, MaxiCode |
| Generación | ||
| Generación de códigos de barras | No | Sí |
| Plataforma | ||
| iOS MAUI | Sí | Sí |
| Android MAUI | Sí | Sí |
| MAUI de Windows | No | Sí |
| macOS MAUI | No | Sí |
| UWP / WinUI 3 (con cámara) | Sí (paquete separado para Windows) | Sí |
| Aplicación de consola | No | Sí |
| ASP.NET Core | No | Sí |
| Servidor Blazor | No | Sí |
| Aplicación WPF | No | Sí |
| Aplicación WinForms | No | Sí |
| Azure Functions | No | Sí |
| AWS Lambda | No | Sí |
| Docker / Linux | No | Sí |
| Servicio de Windows | No | Sí |
| .NET Framework 4.6.2 o superior | No | Sí |
| Licencias | ||
| Modelo de licencia | Tarifa plana anual | Perpetuo de una sola vez |
| Precios publicados | Contacto de ventas | Sí (entre 749 y 5999 dólares) |
| Precios por volumen | No disponible (tarifa fija) | No aplica (niveles perpetuos) |
Arquitectura: Procesamiento de la cámara frente al procesamiento de archivos
La diferencia más significativa entre SDK de Scanbot e IronBarcode no radica en la falta de funcionalidades, sino en una diferencia arquitectónica fundamental en la forma en que cada biblioteca conceptualiza su entrada.
Enfoque del SDK de Scanbot
La arquitectura de Scanbot está construida en torno a un pipeline de cámara nativa. Cuando se llama a ScanbotSDKMain.Barcode.StartScannerAsync(configuration), la biblioteca transfiere el control a una experiencia de cámara en pantalla completa impulsada por las APIs de cámara nativas del dispositivo en iOS, Android o Windows. La biblioteca procesa continuamente los fotogramas de vídeo en directo, aplica la detección de códigos de barras a cada fotograma y devuelve el control a la aplicación que la llamó cuando se confirma un código de barras o el usuario desactiva el escáner. En el modelo de Scanbot no existe el concepto de imagen estática: la entrada es siempre una secuencia de fotogramas de vídeo en directo procedentes de la cámara del dispositivo.
Este diseño produce una experiencia de escaneo con códigos de barras en tiempo real destacados en el visor, región de escaneo configurable con control de relación de aspecto, interruptor de linterna, retroalimentación de audio y háptica, y bloqueo de orientación. Estas son características de UI construidas para el caso de uso de la cámara. La desventaja es que la biblioteca es inseparable del hardware de la cámara y del sistema operativo que la impulsa.
Enfoque IronBarcode
IronBarcode acepta cualquier representación binaria de una imagen que contenga un código de barras y devuelve los resultados decodificados mediante el mismo método estático, independientemente de cómo se haya obtenido la imagen:
// Install: dotnet add package BarCode
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// From a file path — works in any project type
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
Console.WriteLine($"{result.Value} ({result.Format})");
// From a PDF — reads all barcodes on all pages
var pdfResults = BarcodeReader.Read("invoice.pdf");
foreach (var result in pdfResults)
Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
// From a stream — useful for HTTP file uploads
using var stream = File.OpenRead("document.pdf");
var streamResults = BarcodeReader.Read(stream);
// With processing options
var options = new BarcodeReaderOptions { Speed = ReadingSpeed.Balanced };
var configuredResults = BarcodeReader.Read("image.png", options);
// Install: dotnet add package BarCode
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// From a file path — works in any project type
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
Console.WriteLine($"{result.Value} ({result.Format})");
// From a PDF — reads all barcodes on all pages
var pdfResults = BarcodeReader.Read("invoice.pdf");
foreach (var result in pdfResults)
Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
// From a stream — useful for HTTP file uploads
using var stream = File.OpenRead("document.pdf");
var streamResults = BarcodeReader.Read(stream);
// With processing options
var options = new BarcodeReaderOptions { Speed = ReadingSpeed.Balanced };
var configuredResults = BarcodeReader.Read("image.png", options);
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
' From a file path — works in any project type
Dim results = BarcodeReader.Read("barcode.png")
For Each result In results
Console.WriteLine($"{result.Value} ({result.Format})")
Next
' From a PDF — reads all barcodes on all pages
Dim pdfResults = BarcodeReader.Read("invoice.pdf")
For Each result In pdfResults
Console.WriteLine($"Page {result.PageNumber}: {result.Value}")
Next
' From a stream — useful for HTTP file uploads
Using stream = File.OpenRead("document.pdf")
Dim streamResults = BarcodeReader.Read(stream)
End Using
' With processing options
Dim options = New BarcodeReaderOptions With {.Speed = ReadingSpeed.Balanced}
Dim configuredResults = BarcodeReader.Read("image.png", options)
La misma llamada se ejecuta en una aplicación de consola, un controlador ASP.NET Core, una función de Azure, un formulario WPF o una página MAUI. IronBarcode lee los códigos de barras de los archivos PDF de forma nativa , no como imágenes extraídas de los PDF, sino analizando directamente la estructura del PDF y buscando los códigos de barras en cada página.
Cobertura de plataforma e implementación
El ámbito de la plataforma del SDK de Scanbot está determinado por los destinos que admite su paquete NuGet . El ámbito de IronBarcode coincide con el del propio entorno de ejecución de .NET .
Enfoque del SDK de Scanbot
El paquete MAUI de Scanbot tiene como objetivo net9.0-android y net9.0-ios. Un proyecto .NET MAUI Application que declare solo esos dos objetivos se construirá con éxito. Sin embargo, cuando se añade net9.0-maccatalyst o un objetivo MAUI de Windowsa TargetFrameworks, la referencia del paquete MAUI de Scanbot no se resuelve en esos objetivos. Esto no es un problema de configuración: el paquete MAUI no proporciona ensamblajes para MAUI Windows o macOS. El escritorio de Windows está cubierto por el paquete separado Scanbot.BarcodeSDK.Windows para aplicaciones UWP/WinUI 3 con una cámara autofoco.
El resultado es que el conjunto de paquetes .NET de Scanbot tiene como objetivo móviles MAUI y escritorios UWP/WinUI 3, en lugar de tipos de proyecto del lado del servidor o de escritorio sin cámara.
Enfoque IronBarcode
IronBarcode se distribuye como un único paquete NuGet que se resuelve correctamente en todos los tipos de proyectos .NET y marcos de destino:
# Same package, same API — works in ASP.NET Core, WPF, console, MAUI, Azure Functions
dotnet add package BarCode
# Same package, same API — works in ASP.NET Core, WPF, console, MAUI, Azure Functions
dotnet add package BarCode
Para las aplicaciones MAUI que también están dirigidas a Windows o macOS , IronBarcode admite las cuatro plataformas MAUI desde una única referencia de paquete sin necesidad de configuración condicional por plataforma. Los equipos que están construyendo un proyecto MAUI que tiene como objetivo iOS, Android y Windows pueden añadir IronBarcode una vez y usar BarcodeReader.Read() en las tres plataformas sin modificaciones.
Patrones de integración de MAUI
Ambas bibliotecas se pueden usar en proyectos .NET MAUI , pero el patrón de integración difiere significativamente según el modelo de entrada de cada biblioteca.
Enfoque del SDK de Scanbot
En un proyecto MAUI dirigido a iOS y Android, Scanbot proporciona un visor de cámara nativo integrado en el flujo de navegación de la aplicación. La llamada ScanbotSDKMain.Barcode.StartScannerAsync() presenta el escáner de pantalla completa, y el resultado regresa a la página llamante cuando el usuario completa o descarta el escaneo. Esta integración le da a la aplicación móvil una interfaz de usuario de escaneo que se siente nativa a la plataforma.
La limitación aparece cuando el proyecto se expande. Agregar un objetivo macOS o un objetivo MAUI de Windowsrompe la construcción en esas plataformas (el escritorio de Windows se maneja en su lugar por el paquete separado Scanbot.BarcodeSDK.Windows para aplicaciones UWP/WinUI 3). Agregar un componente del lado del servidor sin cabeza que necesite procesamiento de códigos de barras requiere una biblioteca separada: la dependencia de Scanbot no puede seguir el proyecto en ASP.NET Core, Funciones de Azure o Docker.
Enfoque IronBarcode
En un proyecto MAUI, IronBarcode trabaja con el MediaPicker de la plataforma para capturar fotos y leer códigos de barras de las imágenes resultantes. El flujo de trabajo de escaneo utiliza la cámara del sistema en lugar de un visor personalizado:
// Works on iOS, Android, Windows, and macOS MAUItargets
// NuGet: dotnet add package BarCode
using IronBarCode;
private async void ScanButton_Clicked(object sender, EventArgs e)
{
var photo = await MediaPicker.CapturePhotoAsync();
if (photo == null) return;
using var stream = await photo.OpenReadAsync();
using var ms = new MemoryStream();
await stream.CopyToAsync(ms);
var results = BarcodeReader.Read(ms.ToArray());
foreach (var result in results)
await DisplayAlert("Scanned", $"{result.Format}: {result.Value}", "OK");
}
// Works on iOS, Android, Windows, and macOS MAUItargets
// NuGet: dotnet add package BarCode
using IronBarCode;
private async void ScanButton_Clicked(object sender, EventArgs e)
{
var photo = await MediaPicker.CapturePhotoAsync();
if (photo == null) return;
using var stream = await photo.OpenReadAsync();
using var ms = new MemoryStream();
await stream.CopyToAsync(ms);
var results = BarcodeReader.Read(ms.ToArray());
foreach (var result in results)
await DisplayAlert("Scanned", $"{result.Format}: {result.Value}", "OK");
}
Imports IronBarCode
Private Async Sub ScanButton_Clicked(sender As Object, e As EventArgs)
Dim photo = Await MediaPicker.CapturePhotoAsync()
If photo Is Nothing Then Return
Using stream = Await photo.OpenReadAsync()
Using ms As New MemoryStream()
Await stream.CopyToAsync(ms)
Dim results = BarcodeReader.Read(ms.ToArray())
For Each result In results
Await DisplayAlert("Scanned", $"{result.Format}: {result.Value}", "OK")
Next
End Using
End Using
End Sub
La ventaja es la superposición en tiempo real del visor. El usuario ve la interfaz de usuario de la cámara del sistema en lugar de una región de escaneo personalizada, lo cual es adecuado para aplicaciones comerciales donde basta con apuntar y capturar. El tutorial del escáner de códigos de barras .NET MAUI cubre el patrón de integración completo de MAUI para dispositivos iOS y Android , incluyendo la gestión de permisos y la configuración del proyecto.
Modelo de licenciamiento
Scanbot SDK e IronBarcode utilizan estructuras de licencias comerciales fundamentalmente diferentes.
Enfoque de Scanbot
Scanbot funciona con un modelo de tarifa plana anual. El costo anual de la licencia no se mide por volumen de escaneo. Esto proporciona una presupuestación anual predecible para equipos con implementaciones estables exclusivamente móviles. Para conocer el precio exacto, póngase en contacto con el equipo de ventas de Scanbot. Las cifras publicadas no están disponibles. La obligación de renovación anual implica que la licencia supone un coste operativo continuo.
Enfoque IronBarcode
IronBarcode se vende como una compra única y perpetua en cuatro niveles: Lite por $749, Plus por $1,499, Professional por $2,999 e Unlimited por $5,999. No se requiere renovación anual para seguir utilizando la versión adquirida. Las actualizaciones de software dentro del período de licencia están incluidas. Los precios se publican en el sitio web de Iron Software sin necesidad de una conversación de ventas.
Referencia de mapeo de API
Los equipos que evalúen la diferencia arquitectónica entre las dos bibliotecas encontrarán útil este mapeo para comprender las equivalencias de conceptos:
| SDK de Scanbot | IronBarcode |
|---|---|
ScanbotSDKMain.Initialize(new SdkConfiguration { LicenseKey = "..." }, builder) |
IronBarCode.License.LicenseKey = "key" |
new BarcodeScannerScreenConfiguration { UseCase = new SingleScanningMode() } |
new BarcodeReaderOptions() |
ScanbotSDKMain.Barcode.StartScannerAsync(configuration) |
BarcodeReader.Read(path / stream / bytes) |
result.IsSuccess |
Consulta results.Any() o results.FirstOrDefault() != null |
result.Value.Items |
Valor de retorno de BarcodeReader.Read() |
item.Barcode.Format |
result.Format (IronBarCode.BarcodeEncoding) |
item.Barcode.Text |
result.Value |
BarcodeFormat.Code128 |
BarcodeEncoding.Code128 |
BarcodeFormat.QrCode |
BarcodeEncoding.QRCode |
BarcodeFormat.Ean13 |
BarcodeEncoding.EAN13 |
| Configuración de la región de escaneo / relación de aspecto de la cámara | No existe un equivalente: el encuadre de la imagen lo gestiona MediaPicker. |
| Configuración de flash / linterna de la cámara | No existe un equivalente; utilice las opciones de MediaPicker. |
| Entrada solo para cámara | Ruta de archivo, flujo, matriz de bytes o PDF |
| MAUI iOS/Android y UWP/WinUI 3 | Todas las plataformas .NET |
Cuando los equipos consideran migrar del SDK de Scanbot a IronBarcode
Es común que existan diversas situaciones que lleven a los equipos de desarrollo a evaluar IronBarcode como un sustituto o un complemento del SDK de Scanbot.
Procesamiento del lado del servidor y del backend
Una aplicación móvil desarrollada con Scanbot suele coexistir con un componente del lado del servidor que gestiona la carga de documentos, los trabajos por lotes o los puntos finales de la API. Cuando ese componente del servidor necesita procesar códigos de barras (extraer códigos de barras de archivos PDF cargados, validar valores de códigos de barras en documentos entrantes o procesar datos de códigos de barras de archivos adjuntos de imagen), Scanbot no está disponible. El paquete no se compila en ASP.NET Core, Azure Functions, aplicaciones de consola ni en ningún proyecto que no sea MAUI. Los equipos que se encuentran en esta situación deben mantener una dependencia de códigos de barras para dispositivos móviles junto con una solución de códigos de barras independiente para servidores, o bien, evaluar si IronBarcode puede cubrir ambas funciones con un solo paquete.
Requisitos de la aplicación de escritorio
La propuesta de valor de MAUI suele ser la compatibilidad multiplataforma: un único código base que sirve para iOS, Android y Windows. Cuando el objetivo MAUI de Windowsentra en la hoja de ruta — ya sea desde los requisitos iniciales o como una adición posterior — el paquete ScanbotBarcodeSDK.MAUI no se resuelve en ese objetivo, porque Scanbot cubre Windows a través de un paquete separado UWP/WinUI 3 (Scanbot.BarcodeSDK.Windows) en lugar de a través de MAUI Windows. Los equipos que desean una única ruta de compilación de Windows dentro de un proyecto MAUI de múltiples objetivos, o que necesitan un componente de Windows sin cabeza (como un servicio de Windows), no lo obtendrán del conjunto de paquetes de Scanbot. IronBarcode proporciona un único paquete que se resuelve en el objetivo MAUI de Windows y también se ejecuta en contextos de escritorio sin cabeza y servidor.
Flujos de trabajo de PDF y documentos
Las aplicaciones que pasan del escaneo en tiempo real a la automatización de documentos se topan con una limitación de capacidades en Scanbot. Leer códigos de barras de una factura PDF, extraer códigos de rastreo de una imagen de etiqueta de envío escaneada o procesar datos de códigos de barras de un documento archivado se encuentran fuera del modelo de entrada de Scanbot, que está construido alrededor de una transmisión en vivo de la cámara. IronBarcode gestiona de forma nativa todas estas entradas basadas en archivos. El mismo paquete que se ejecuta en la aplicación móvil MAUI puede extraer códigos de barras de documentos PDF mediante un procesamiento en segundo plano, sin dependencias adicionales.
Costes de licencia predecibles
Los costes de renovación anuales invitan a una reevaluación en cada ciclo de renovación. Los equipos que comenzaron con Scanbot en una implementación móvil a pequeña escala y se expandieron a una implementación más amplia con más usuarios o plataformas pueden encontrar que la tarifa anual es menos favorable a medida que aumenta el alcance. El modelo perpetuo de pago único de IronBarcode elimina la obligación de renovación. Los equipos que realizan evaluaciones de renovación de licencias a menudo consideran si una compra única se ajusta mejor a su planificación de costos a largo plazo, especialmente cuando el alcance ampliado del proyecto incluye plataformas de servidor o de escritorio que, de todos modos, quedan fuera de la cobertura de Scanbot.
Consideraciones comunes sobre la migración
Los equipos que migren del SDK de Scanbot a IronBarcode deben prepararse para varias diferencias técnicas que surgen durante la transición.
No tiene equivalente a un visor en directo.
El visor de cámara en tiempo real de Scanbot, con la superposición de la región de escaneo, la detección continua y la retroalimentación háptica, no tiene un equivalente directo en IronBarcode. El patrón de reemplazo utiliza el MediaPicker.CapturePhotoAsync() de MAUI para abrir la cámara del sistema, capturar una foto y devolver la imagen para su procesamiento. La experiencia del usuario consiste en un proceso de captura de fotos, en lugar de un proceso de escaneo continuo. En las aplicaciones empresariales (inventario, logística, procesamiento de documentos), esta distinción rara vez es significativa. En el caso de las aplicaciones de consumo donde la superposición en tiempo real es fundamental para la experiencia del producto, esta es una diferencia real en la experiencia del usuario que debe evaluarse antes de comprometerse con la migración.
Patrón de devolución de llamada de evento para retorno directo
El ScanbotSDKMain.Barcode.StartScannerAsync() de Scanbot es asíncrono y devuelve un resultado con una bandera IsSuccess y una colección Value.Items. El BarcodeReader.Read() de IronBarcode devuelve una colección directamente, no hay un objeto contenedor con un campo de estado. La verificación de éxito cambia de result.IsSuccess a results.Any() o una verificación de nulo en results.FirstOrDefault().
Cambio de espacio de nombres de enumeración de formato
El enum BarcodeFormat de Scanbot (por ejemplo, BarcodeFormat.Code128) y el enum BarcodeEncoding de IronBarcode (por ejemplo, BarcodeEncoding.Code128) contienen miembros similares pero son tipos diferentes en diferentes espacios de nombres. El código que almacena o compara valores de formato por tipo de enumeración requiere que se actualice la referencia de tipo. Las comparaciones de cadenas basadas en la salida .ToString() son generalmente compatibles ya que los nombres de los miembros son similares, pero las comparaciones explícitas de tipos de enum requieren actualización a los valores BarcodeEncoding.
Complementos de compilación de Windows
Si el paquete Scanbot estaba causando fallos en la compilación de MAUI de Windowsantes de la migración, eliminarlo resuelve esos fallos. Tras añadir IronBarcode, verifique que las funcionalidades específicas de Windows (cuadros de selección de archivos, rutas de archivos locales, permisos de Windows) se gestionen correctamente en el código de la aplicación MAUI, ya que difieren de los patrones de acceso a archivos de iOS y Android.
Funcionalidades adicionales de IronBarcode
Más allá de los escenarios principales que se abordan en esta comparación, IronBarcode ofrece funcionalidades que cobran relevancia a medida que los proyectos se expanden:
- Generación de códigos de barras: Genera códigos de barras en todos los principales formatos unidimensionales y bidimensionales como archivos de imagen, flujos de datos o contenido incrustado en documentos HTML y PDF.
- Procesamiento de documentos con múltiples códigos de barras: Lee todos los códigos de barras de todas las páginas de un PDF de varias páginas en una sola llamada, y cada resultado lleva el número de página donde se encontró.
- Corrección de errores mediante aprendizaje automático: Recupera códigos de barras de imágenes dañadas, parcialmente ocultas o de bajo contraste que los algoritmos de detección estándar no pueden decodificar.
- Procesamiento de imágenes por lotes: Procese conjuntos de rutas o secuencias de imágenes en una sola operación para flujos de trabajo de documentos de alto rendimiento.
- Ajuste de BarcodeReaderOptions: Controle la velocidad de lectura, la detección de múltiples códigos de barras, el filtrado de formato y el preprocesamiento de imágenes para equilibrar el rendimiento y la precisión para casos de uso específicos.
- Integración con iOS MAUI : Compatibilidad total con la lectura de códigos de barras en aplicaciones iOS MAUImediante el patrón MediaPicker.
- Integración con Android MAUI : Compatibilidad total con la lectura de códigos de barras en aplicaciones Android MAUIcon la misma API que iOS.
Compatibilidad con .NET y preparación para el futuro
IronBarcode es compatible con .NET 6, .NET 7, .NET 8 y .NET 9, así como con .NET Framework 4.6.2 y versiones posteriores. La biblioteca recibe actualizaciones periódicas que se ajustan al ritmo de lanzamiento de .NET , lo que garantiza la compatibilidad con .NET 10, previsto para finales de 2026, y con futuras versiones. Dado que IronBarcode es una biblioteca de procesamiento de archivos y no un SDK de cámara específico para una plataforma, no depende de las API del sistema operativo móvil ni de las capacidades de hardware, lo que significa que su superficie de compatibilidad crece con el ecosistema .NET en lugar de estar limitada por los ciclos de soporte de la plataforma móvil.
Conclusión
Scanbot SDK e IronBarcode ocupan diferentes categorías de productos que comparten la etiqueta 'SDK de código de barras'. Scanbot es un componente de escaneo de cámara que ofrece una experiencia de visor en vivo para iOS y Android (a través de MAUI) y Windows (a través de UWP/WinUI 3). IronBarcode es una biblioteca de procesamiento de archivos y documentos que lee y genera códigos de barras en toda la gama de tipos de proyectos .NET y destinos de implementación. La comparación se centra en el alcance y la arquitectura, no en la calidad dentro del ámbito previsto de cada biblioteca.
Scanbot SDK es fuerte dentro de su ámbito definido. Para aplicaciones donde el usuario apunta directamente una cámara del dispositivo a un código de barras físico y espera una retroalimentación visual en tiempo real — retail, emisión de boletos, búsqueda en almacén — la canalización de cámara de Scanbot y el componente de visor están construidos específicamente para ese modelo de interacción. Si el despliegue está limitado a objetivos vinculados a la cámara (iOS, Android y UWP/WinUI 3 en Windows), la experiencia de escaneo en vivo es central al producto, y la tarifa plana anual se ajusta al presupuesto, Scanbot es una elección razonable para ese caso de uso.
IronBarcode es apropiado cuando el requisito de procesamiento de códigos de barras va más allá del escenario de la cámara en directo. El procesamiento de documentos del lado del servidor, los puntos finales de ASP.NET Coreque aceptan cargas de archivos, las aplicaciones de escritorio en Windows o macOS, las Azure Functionsactivadas por el almacenamiento de blobs, los proyectos MAUI de múltiples objetivos que incluyen plataformas de escritorio y los trabajos de procesamiento de PDF por lotes se encuentran dentro del ámbito nativo de IronBarcode. El paquete único se instala sin configuración condicional de plataforma y proporciona la misma llamada BarcodeReader.Read() independientemente de si el código se ejecuta en un dispositivo móvil, un servidor o un escritorio.
Para los equipos cuyos requisitos abarcan tanto el escaneo en tiempo real con cámaras móviles como el procesamiento de archivos o servidores, la solución arquitectónicamente más limpia es usar Scanbot para la interfaz de usuario de la cámara móvil e IronBarcode para todo lo demás. El coste de ese enfoque reside en dos dependencias de códigos de barras y dos acuerdos de licencia. Para los equipos que prefieran usar la cámara del sistema en lugar de un visor personalizado para la interacción de escaneo móvil, IronBarcode por sí solo puede cubrir todo el alcance del proyecto, desde la aplicación móvil MAUI hasta la API del servidor y la aplicación complementaria para escritorio de Windows, con un solo paquete y una sola licencia.
Preguntas Frecuentes
¿Qué es Scanbot SDK?
Scanbot SDK es una biblioteca de códigos de barras .NET para generar y leer códigos de barras en aplicaciones C#. Es una de las varias alternativas que los desarrolladores evalúan cuando seleccionan una solución de código de barras para proyectos .NET.
¿Cuáles son las principales diferencias entre Scanbot SDK e IronBarcode?
IronBarcode utiliza una API estática y sin estado que no requiere gestión de instancias, mientras que Scanbot SDK suele requerir la creación y configuración de instancias antes de su uso. IronBarcode también ofrece compatibilidad nativa con PDF, detección automática de formatos y licencia de clave única en todos los entornos.
¿Es IronBarcode más fácil de licenciar que Scanbot SDK?
IronBarcode utiliza una única clave de licencia que cubre tanto el desarrollo como los despliegues de producción. Esto simplifica las canalizaciones de CI/CD y las configuraciones de Docker en comparación con los sistemas de licencias que separan las claves de SDK de las claves de tiempo de ejecución.
¿Es IronBarcode compatible con todos los formatos de código de barras que admite Scanbot SDK?
IronBarcode es compatible con más de 30 simbologías de códigos de barras, incluidos QR Code, Code 128, Code 39, DataMatrix, PDF417, Aztec, EAN-13, UPC-A, GS1 y muchos más. La autodetección de formatos significa que no se requiere una enumeración explícita de formatos.
¿Es IronBarcode compatible con la lectura nativa de códigos de barras en PDF?
Sí. IronBarcode lee códigos de barras directamente desde archivos PDF utilizando BarcodeReader.Read("document.pdf") sin necesidad de una biblioteca de renderizado de PDF independiente. Los resultados por página incluyen el número de página, el formato del código de barras, el valor y la puntuación de confianza.
¿Cómo gestiona IronBarcode el procesamiento por lotes en comparación con Scanbot SDK?
Los métodos estáticos de IronBarcode no tienen estado y son naturalmente seguros para subprocesos, lo que permite el uso directo de Parallel.ForEach sin gestión de instancias por subproceso. No hay límite de rendimiento en ningún nivel de precios.
¿Qué versiones de .NET admite IronBarcode ?
IronBarcode es compatible con .NET Framework 4.6.2+, .NET Core 3.1 y .NET 5, 6, 7, 8 y 9 en un único paquete NuGet. Las plataformas de destino incluyen Windows x64/x86, Linux x64 y macOS x64/ARM.
¿Cómo instalo IronBarcode en un proyecto .NET?
Instale IronBarcode a través de NuGet: ejecute 'Install-Package IronBarCode' en la consola del gestor de paquetes, o 'dotnet add package IronBarCode' en la CLI. No se necesitan instaladores SDK ni archivos de ejecución adicionales.
¿Puedo evaluar IronBarcode antes de comprarlo, a diferencia de Scanbot?
Sí. El modo de prueba de IronBarcode devuelve los valores completos de los códigos de barras descodificados; sólo las imágenes de salida generadas reciben una marca de agua. Puede comprobar la precisión de la lectura en sus propios documentos antes de comprometerse con la compra.
¿Cuál es la diferencia de precio entre Scanbot SDK e IronBarcode?
IronBarcode cuesta a partir de 749 dólares por una licencia perpetua de desarrollador único que cubre el desarrollo y la producción. Los detalles de precios y opciones de volumen están disponibles en la página de licencias de IronBarcode. No se requiere una licencia de ejecución por separado.
¿Es fácil migrar de Scanbot SDK a IronBarcode?
La migración de Scanbot SDK a IronBarcode implica principalmente la sustitución de las llamadas a la API basadas en instancias por los métodos estáticos de IronBarcode, la eliminación de la repetición de licencias y la actualización de los nombres de las propiedades de los resultados. La mayoría de las migraciones implican reducir código en lugar de añadirlo.
¿IronBarcode genera códigos QR con logotipos?
Sí. QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png") incrusta una imagen de marca en un código QR de forma nativa con corrección de errores configurable. Los códigos QR coloreados también son compatibles con ChangeBarCodeColor().

