Saltar al pie de página
COMPARAR CON OTROS COMPONENTES

Scanbot SDK vs IronBarcode: Comparación de bibliotecas de códigos de barras C#

El SDK de Scanbot abre una vista de escaneo de códigos de barras a pantalla completa utilizando la cámara del dispositivo. No existe el 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 para MAUI que integra las API de escaneo nativas de iOS y Android en un componente de visor pulido. ScanbotBarcodeSDK.BarcodeScanner.Open(configuration)entrega el control a una experiencia de cámara a pantalla completa, el usuario apunta el dispositivo a un código de barras, el SDK lo detecta en la transmisión de vídeo en directo y el resultado vuelve a su aplicación. La comparación es importante porque el nombre del paquete NuGet - ScanbotBarcodeSDK.MAUI - y la categoría del producto - "SDK de código de barras" - puede llevar a los desarrolladores a evaluarlo para el procesamiento de documentos del lado del servidor, aplicaciones de escritorio WPF o APIs ASP.NET Core. Este artículo explica la diferencia arquitectónica entre las dos herramientas, lo que cada una hace realmente, y donde IronBarcode cubre escenarios que Scanbot estructuralmente no puede.

Comprensión del SDK de Scanbot

Scanbot SDK es un kit de desarrollo de software (SDK) comercial para el escaneo de códigos de barras en dispositivos móviles, desarrollado por Scanbot GmbH. Su oferta para .NET es ScanbotBarcodeSDK.MAUI, un paquete dirigido a net8.0-android y net8.0-ios. El SDK requiere un proyecto .NET MAUI Application con <UseMaui>true</UseMaui> y objetivos móviles en su TargetFrameworks. No se resolverá en una aplicación de consola, una biblioteca de clases, un proyecto ASP.NET Coreo una aplicación MAUI dirigida a Windows.

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 ofrece un componente de escaneo optimizado para aplicaciones móviles de consumo y Enterprise para iOS y Android.

  • Plataforma principal de destino: dispositivos móviles iOS y Android a través del framework .NET MAUI ; No se admiten destinos MAUI para Windows y macOS.
  • 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 la API: BarcodeScanner.Open(configuration) entrega el control a una experiencia de cámara a pantalla completa y devuelve un OperationResult cuando el usuario confirma una exploración o la cancela
  • 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
  • Restricción de tipo de proyecto: No se compilará en proyectos de consola, bibliotecas de clases, ASP.NET Core, WPF, WinForms, Funciones Azureo proyectos alojados en Docker.

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. No hay sobrecarga de BarcodeScanner.Open() que acepte una ruta de archivo o flujo; la firma del método requiere un BarcodeScannerConfiguration porque toda la operación está dirigida por una cámara:

// In MauiProgram.cs or App.xaml.cs — initialization required before any scan
ScanbotSDK.Initialize(new ScanbotSDKConfiguration
{
    LicenseKey = "YOUR-SCANBOT-LICENSE-KEY",
    EnableLogging = false
});

// Configure accepted formats and camera appearance
var configuration = new BarcodeScannerConfiguration();
configuration.BarcodeFormats = new[]
{
    BarcodeFormat.Code128,
    BarcodeFormat.QrCode,
    BarcodeFormat.Ean13
};

// Open full-screen camera scanner — UI takes over the entire screen
var result = await ScanbotBarcodeSDK.BarcodeScanner.Open(configuration);

if (result.Status == OperationResult.Ok)
{
    foreach (var barcode in result.Barcodes)
        Console.WriteLine($"{barcode.Format}: {barcode.Text}");
}
// In MauiProgram.cs or App.xaml.cs — initialization required before any scan
ScanbotSDK.Initialize(new ScanbotSDKConfiguration
{
    LicenseKey = "YOUR-SCANBOT-LICENSE-KEY",
    EnableLogging = false
});

// Configure accepted formats and camera appearance
var configuration = new BarcodeScannerConfiguration();
configuration.BarcodeFormats = new[]
{
    BarcodeFormat.Code128,
    BarcodeFormat.QrCode,
    BarcodeFormat.Ean13
};

// Open full-screen camera scanner — UI takes over the entire screen
var result = await ScanbotBarcodeSDK.BarcodeScanner.Open(configuration);

if (result.Status == OperationResult.Ok)
{
    foreach (var barcode in result.Barcodes)
        Console.WriteLine($"{barcode.Format}: {barcode.Text}");
}
Imports System

' In MauiProgram.vb or App.xaml.vb — initialization required before any scan
ScanbotSDK.Initialize(New ScanbotSDKConfiguration With {
    .LicenseKey = "YOUR-SCANBOT-LICENSE-KEY",
    .EnableLogging = False
})

' Configure accepted formats and camera appearance
Dim configuration As New BarcodeScannerConfiguration()
configuration.BarcodeFormats = New BarcodeFormat() {
    BarcodeFormat.Code128,
    BarcodeFormat.QrCode,
    BarcodeFormat.Ean13
}

' Open full-screen camera scanner — UI takes over the entire screen
Dim result = Await ScanbotBarcodeSDK.BarcodeScanner.Open(configuration)

If result.Status = OperationResult.Ok Then
    For Each barcode In result.Barcodes
        Console.WriteLine($"{barcode.Format}: {barcode.Text}")
    Next
End If
$vbLabelText   $csharpLabel

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 de llamada, independientemente de cómo se haya producido dicha 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: BarcodeReaderOptions controla 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 Solo para iOS y Android MAUI Todas las plataformas y tipos de proyectos .NET
Generación de códigos de barras No
Extracción de códigos de barras PDF No
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
Entrada desde el flujo No
Entrada desde una matriz de bytes No
Extracción de códigos de barras PDF No
Visor de la cámara en directo No
Escaneo de fotogramas en tiempo real No
Detección de formato automático
Corrección de errores de aprendizaje automático No
Recuperación de códigos de barras dañados No
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
Plataforma
iOS MAUI
Android MAUI
MAUI de Windows No
macOS MAUI No
Aplicación de consola No
ASP.NET Core No
Servidor Blazor No
Aplicación WPF No
Aplicación WinForms No
Funciones Azure No
AWS Lambda No
Docker / Linux No
Servicio de Windows No
.NET Framework 4.6.2 o superior No
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 alrededor de una tubería de cámara nativa. Cuando se llama a BarcodeScanner.Open(configuration), la biblioteca cede el control a una experiencia de cámara a pantalla completa impulsada por las API de cámara nativas del dispositivo en iOS y Android. 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 ofrece una experiencia de escaneo impecable: códigos de barras resaltados en tiempo real en el visor, región de escaneo configurable con control de relación de aspecto, activación/desactivación de la linterna, retroalimentación háptica y de audio, y bloqueo de orientación. Estas son las características de la interfaz de usuario en las que Scanbot ha invertido para el caso de uso de la cámara móvil. La desventaja es que la biblioteca es inseparable del hardware de la cámara y del sistema operativo móvil que la controla.

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 IronBarcode
IronBarCode.License.LicenseKey = "YOUR-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 IronBarcode
IronBarCode.License.LicenseKey = "YOUR-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
Imports System.IO

' Install: dotnet add package IronBarcode
License.LicenseKey = "YOUR-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)
$vbLabelText   $csharpLabel

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 de Scanbot está dirigido a net8.0-android y net8.0-ios. Un proyecto .NET MAUI Application que declare sólo esos dos objetivos se construirá con éxito. Sin embargo, cuando net8.0-windows o net8.0-maccatalyst se añade a TargetFrameworks, la referencia del paquete Scanbot no se resuelve en esos destinos. Esto no es un problema de configuración; el paquete no proporciona ensamblados para Windows ni macOS. El fallo se produce durante el primer intento de compilación en el equipo de escritorio, no en el momento de la instalación de NuGet .

Esta limitación implica que Scanbot es estructuralmente incompatible con proyectos MAUI multiobjetivo que incluyen plataformas de escritorio, y no se puede utilizar en ningún tipo de proyecto de servidor o escritorio que no sea MAUI, independientemente de la versión del framework.

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 IronBarcode
// Same package, same API — works in ASP.NET Core, WPF, console, MAUI, Azure Functions
dotnet add package IronBarcode
$vbLabelText   $csharpLabel

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 crean un proyecto MAUI dirigido a iOS, Android y Windows pueden añadir IronBarcode una vez y utilizar 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 BarcodeScanner.Open() presenta el escáner a pantalla completa, y el resultado vuelve a la página de llamada cuando el usuario completa o descarta el escáner. Esta integración proporciona a la aplicación móvil una interfaz de escaneo especializada que se siente como propia de la plataforma.

La limitación aparece cuando el proyecto se expande. Agregar un destino de Windows o macOS al proyecto MAUI provoca que la compilación falle en esas plataformas. Agregar un componente del lado del servidor que necesite procesar códigos de barras requiere una biblioteca independiente. La dependencia de Scanbot no puede seguir al proyecto más allá de iOS y Android.

Enfoque IronBarcode

En un proyecto MAUI, IronBarcode trabaja con la plataforma MediaPicker 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 IronBarcode
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 IronBarcode
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
$vbLabelText   $csharpLabel

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 coste de la licencia anual es fijo independientemente del volumen de escaneos: ya sean 100 escaneos al año o 10 millones de escaneos al año, la tarifa es la misma. 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
ScanbotSDK.Initialize(new ScanbotSDKConfiguration { LicenseKey = "..." }) IronBarCode.License.LicenseKey = "key"
new BarcodeScannerConfiguration() new BarcodeReaderOptions()
ScanbotBarcodeSDK.BarcodeScanner.Open(configuration) BarcodeReader.Read(path / stream / bytes)
result.Status == OperationResult.Ok Compruebe results.Any() o results.FirstOrDefault() != null
result.Barcodes Valor de retorno de BarcodeReader.Read()
barcode.Format result.Format (IronBarCode.BarcodeEncoding)
barcode.Text result.Value
BarcodeFormat.Code128 BarcodeEncoding.Code128
BarcodeFormat.QrCode BarcodeEncoding.QRCode
BarcodeFormat.Ean13 BarcodeEncoding.EAN13
BarcodeScannerConfiguration.FinderAspectRatio No existe un equivalente: el encuadre de la imagen lo gestiona MediaPicker.
BarcodeScannerConfiguration.FlashEnabled No existe un equivalente; utilice las opciones de MediaPicker.
Entrada solo para cámara Ruta de archivo, flujo, matriz de bytes o PDF
Solo para iOS y Android MAUI 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 destino MAUI de Windowsentra en la hoja de ruta, ya sea como requisito inicial o como adición posterior, el paquete de Scanbot no se resuelve en ese destino. La compilación para Windows no puede continuar con Scanbot en la lista de dependencias. Los equipos descubren esto durante el primer intento de compilar la versión de escritorio, y la solución requiere eliminar Scanbot de la lista de dependencias compartidas. Para los equipos donde la versión de escritorio para Windows es un requisito indispensable, IronBarcode se convierte en la única opción entre las bibliotecas de códigos de barras para dispositivos móviles que también cubre la plataforma de escritorio.

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 en PDF, extraer códigos de seguimiento de una imagen escaneada de una etiqueta de envío o procesar datos de códigos de barras de un documento archivado: ninguno de estos flujos de trabajo es posible dentro del modelo Scanbot, porque la entrada siempre debe ser una transmisión de cámara en vivo. 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 sustitución utiliza 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 BarcodeScanner.Open() de Scanbot es asíncrono y devuelve un OperationResult con un campo de estado y una colección Barcodes. El BarcodeReader.Read() de IronBarcode devuelve una colección directamente - no existe un objeto envoltorio con un campo de estado. La comprobación de éxito cambia de result.Status == OperationResult.Oka results.Any() o una comprobación nula 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 espacios de nombres diferentes. 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 tipo enum requieren la actualización a 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 pertenecen a categorías de productos diferentes que comparten la etiqueta "SDK de códigos de barras". Scanbot es un componente de escaneo para cámaras móviles que ofrece una experiencia de visor en tiempo real optimizada para aplicaciones iOS y Android. 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.

El SDK de Scanbot es realmente potente dentro de su ámbito de aplicación definido. Para aplicaciones móviles de consumo y Enterprise en las que el usuario apunta directamente la cámara de un dispositivo a un código de barras físico y espera una retroalimentación visual en tiempo real (venta minorista, venta de entradas, consulta de almacenes), el sistema de cámara y el componente de visor optimizado de Scanbot están diseñados específicamente para ese modelo de interacción. Si la implementación se limita a dispositivos móviles iOS y Android, la experiencia de escaneo en tiempo real es fundamental para el producto y la tarifa plana anual se ajusta al presupuesto, Scanbot es una opción razonable para ese caso de uso específico y bien definido.

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 funciones de Azure activadas 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 ordenador de sobremesa.

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().

Jordi Bardia
Ingeniero de Software
Jordi es más competente en Python, C# y C++. Cuando no está aprovechando sus habilidades en Iron Software, está programando juegos. Compartiendo responsabilidades para pruebas de productos, desarrollo de productos e investigación, Jordi agrega un valor inmenso a la mejora continua del producto. La experiencia variada lo mantiene ...
Leer más

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame