Saltar al pie de página
COMPARAR CON OTROS COMPONENTES

ABBYY FineReader Engine vs IronOCR: OCR .NET

XImage.OCR cobra tarifas de licencia comercial por una biblioteca OCR que ofrece el mismo motor Tesseract al que puedes acceder de forma gratuita; luego te pide que instales un paquete NuGet independiente para cada idioma que necesites, creando una cadena de dependencias que comienza con 2 paquetes solo para inglés y crece hasta 11 paquetes para una aplicación multilingüe modesta. Esta fragmentación no es una peculiaridad del empaquetado; es la decisión arquitectónica central en XImage.OCR, y da forma a todos los aspectos de trabajar con la biblioteca: tu archivo .csproj, tu pipeline de CI/CD, tu gestión de versiones, y en última instancia, tu respuesta a la pregunta sobre el valor comercial que realmente estás comprando.

Comprender XImage.OCR

XImage.OCR es una biblioteca OCR comercial para .NET de RasterEdge, que forma parte de su Suite de SDK para el procesamiento de imágenes de documentos. La biblioteca utiliza el motor Tesseract de código abierto de Google para proporcionar enlaces .NET gestionados para operaciones OCR. RasterEdge lo comercializa como una solución OCR Enterprise para desarrolladores integrada en su ecosistema de procesamiento de imágenes de documentos existente.

La biblioteca está diseñada para .NET Standard 2.0 y .NET Framework 4.5+, lo que la hace accesible para proyectos heredados. Su principal enfoque de soporte es Windows, con una cobertura multiplataforma considerablemente más limitada que la de las alternativas modernas.

Características arquitectónicas clave:

  • Empaquetado de lenguaje fragmentado: Cada idioma compatible se entrega como un paquete NuGet separado (XImage.OCR.Language.English, XImage.OCR.Language.German, etc.), requiriendo instalación individual y mantenimiento sincronizado en versión
  • Motor principal de Tesseract: La tecnología OCR subyacente es idéntica a la que ofrecen las bibliotecas gratuitas: Tesseract con licencia Apache 2.0, disponible sin costo alguno.
  • Sin preprocesamiento integrado: Acceso a Tesseract sin procesar, sin corrección automática de inclinación, reducción de ruido, mejora de contraste ni corrección de resolución; poor-quality input produces poor output
  • Limitaciones de seguridad de subprocesos: Como envoltorio de Tesseract, XImage.OCR no es seguro para subprocesos; cada hilo concurrente requiere su propia instancia de OCRHandler, multiplicando el consumo de memoria proporcionalmente
  • Integración con el ecosistema RasterEdge: el procesamiento de PDF requiere el SDK de PDF de RasterEdge por separado; el OCR nativo de PDF no está incluido en XImage.OCR.
  • Cobertura lingüística limitada: Existen aproximadamente entre 10 y 15 paquetes de idiomas, muchos menos que los más de 100 idiomas disponibles gratuitamente a través de las distribuciones estándar de tessdata.

Fragmentación de paquetes de lenguaje en la práctica

La consecuencia de usar un paquete por idioma se manifiesta concretamente en el archivo del proyecto. Para una aplicación que procesa documentos en cinco idiomas europeos, el manifiesto del paquete tiene este aspecto:


<PackageReference Include="RasterEdge.XImage.OCR" Version="12.4.0" />
<PackageReference Include="XImage.OCR.Language.English" Version="12.4.0" />
<PackageReference Include="XImage.OCR.Language.German" Version="12.4.0" />
<PackageReference Include="XImage.OCR.Language.French" Version="12.4.0" />
<PackageReference Include="XImage.OCR.Language.Spanish" Version="12.4.0" />
<PackageReference Include="XImage.OCR.Language.Italian" Version="12.4.0" />

<PackageReference Include="RasterEdge.XImage.OCR" Version="12.4.0" />
<PackageReference Include="XImage.OCR.Language.English" Version="12.4.0" />
<PackageReference Include="XImage.OCR.Language.German" Version="12.4.0" />
<PackageReference Include="XImage.OCR.Language.French" Version="12.4.0" />
<PackageReference Include="XImage.OCR.Language.Spanish" Version="12.4.0" />
<PackageReference Include="XImage.OCR.Language.Italian" Version="12.4.0" />
XML

Las discrepancias de versión entre los paquetes principales y los paquetes de lenguaje provocan errores de inicialización en tiempo de ejecución. Cuando RasterEdge.XImage.OCR está en 12.4.0 y XImage.OCR.Language.English está en 12.3.0 — un escenario realista después de cualquier actualización parcial — la biblioteca falla en tiempo de ejecución con errores que no identifican claramente la sincronización de versiones como la causa. Ahora, su canalización de CI/CD cuenta con 6 operaciones de restauración distintas y 6 puntos de fallo independientes. Agregar idiomas asiáticos para una implementación global requiere paquetes CJK: chino simplificado, chino tradicional, japonés y coreano, cada uno con su propio paquete, lo que convierte una aplicación de 10 idiomas en una aplicación con 11 dependencias NuGet separadas.

Comprender IronOCR

IronOCR es una biblioteca OCR comercial para .NET construida sobre un motor Teseracto 5 optimizado con extensiones de preprocesamiento y salida propietarias. Se entrega como un único paquete NuGet (IronOcr) que incluye el motor OCR, todas las capacidades de preprocesamiento, entrada nativa de PDF y salida de PDF con búsqueda, lectura de códigos de barras y soporte total para runtime multiplataforma.

Características clave:

  • Despliegue de paquete único: Un comando dotnet add package IronOcr instala todo; Sin gestión de binarios nativos, sin configuración de carpetas tessdata, sin coordinación de DLL específicas de la plataforma.
  • Pipeline de preprocesamiento automático: Filtros integrados Deskew(), DeNoise(), Contrast(), Binarize(), y EnhanceResolution() se aplican directamente a OcrInput antes del reconocimiento — no se requiere biblioteca de procesamiento de imágenes externa
  • Soporte nativo para PDF: input.LoadPdf() lee archivos PDF directamente; result.SaveAsSearchablePdf() escribe PDFs con búsqueda; Los archivos PDF protegidos con contraseña se gestionan con un único parámetro.
  • Diseño seguro para hilos: Una sola instancia de IronTesseract maneja solicitudes concurrentes a través de múltiples hilos sin requerir una instanciación por hilo
  • 125+ idiomas a través de paquetes opcionales de NuGet: Los idiomas se instalan como paquetes IronOcr.Languages.* separados cuando es necesario; El inglés básico viene incluido por defecto.
  • Entorno de ejecución multiplataforma: Windows(x86, x64), Linuxx64, macOS, Docker, Azure App Service y AWS Lambda son compatibles con el mismo paquete.
  • Modelo de resultados estructurado: OcrResult expone Pages, Paragraphs, Lines, Words, y coordenadas y puntuaciones de confianza por palabra a través de un único objeto de resultado
  • Precios: $999 Lite (perpetua), $1,499 Plus, $2,999 Professional — compra única con un año de actualizaciones incluidas

Comparación de características

Característica XImage.OCR IronOCR
Paquetes NuGet para 5 lenguajes 6 1
Preprocesamiento integrado No
Entrada de PDF nativa Requiere el SDK de PDF de RasterEdge
Salida en PDF con capacidad de búsqueda Requiere un SDK independiente.
Seguro para subprocesos No
Multiplataforma Windowsprincipalmente Windows, Linux, macOS, Docker
Idiomas disponibles ~15 125+

Comparación detallada de características

Característica XImage.OCR IronOCR
Gestión de paquetes
Paquetes NuGet (solo en inglés) 2 1
Paquetes NuGet (10 idiomas) 11 1
Requisito de sincronización de versiones Todos los paquetes deben coincidir Versión única
Operaciones de restauración de CI/CD 1 por paquete 1 en total
Motor OCR
Motor principal Tesseract (igual que los envoltorios gratuitos) Teseracto 5 optimizado
Versión del motor 4.x/5.x Teseracto 5
Puntuaciones de confianza Parcial (a través de Tesseract) Sí (result.Confidence)
Preprocesamiento
Inclinación No Sí (input.Deskew())
Reducción de ruido No Sí (input.DeNoise())
Mejora del contraste No Sí (input.Contrast())
Binarización No Sí (input.Binarize())
Mejora de la resolución No Sí (input.EnhanceResolution(300))
Soporte de documentos
Entrada de imagen
Entrada nativa de PDF Requiere SDK adicional
PDF protegido con contraseña Requiere SDK adicional Sí (parámetro único)
Salida en PDF con capacidad de búsqueda Requiere SDK adicional
Salida de hOCR No
Idiomas disponibles
Idiomas disponibles en total ~15 125+
Inglés incluido en el plan de estudios básico.
Las 24 lenguas oficiales de la UE Incompleto Todo incluido
Idiomas CJK 4 paquetes separados Disponible en
Arquitectura
Seguridad de los hilos No es seguro para subprocesos Thread-safe
Memoria por hilo concurrente ~100 MB por instancia Instancia única compartida
OCR basado en la región Limitado (ProcessRegion) Sí (CropRectangle)
Lectura de BarCodes durante el OCR No
Modelo de resultados estructurados Salida de cadena básica Páginas, líneas, palabras, coordenadas
Despliegue
Windows
Linux No
macOS No
Docker No
Azure/AWS No

Fragmentación de paquetes frente a un único NuGet

La diferencia estructural más clara entre XImage.OCR e IronOCR radica en cómo gestionan la compatibilidad con diferentes idiomas. No se trata de un detalle menor: afecta a todos los miembros del equipo que participan en el proyecto, a cada proceso de compilación y a cada despliegue.

Enfoque XImage.OCR

XImage.OCR distribuye cada idioma como un paquete NuGet independiente. El comando de instalación principal instala únicamente el motor OCR. A continuación, deberá instalar cada idioma necesario:

# XImage.OCR: Install sequence for a multilingual application
dotnet add package RasterEdge.XImage.OCR
dotnet add package XImage.OCR.Language.English
dotnet add package XImage.OCR.Language.German
dotnet add package XImage.OCR.Language.French
dotnet add package XImage.OCR.Language.Spanish
dotnet add package XImage.OCR.Language.Italian
dotnet add package XImage.OCR.Language.Portuguese
dotnet add package XImage.OCR.Language.ChineseSimplified
dotnet add package XImage.OCR.Language.ChineseTraditional
dotnet add package XImage.OCR.Language.Japanese
# 10 languages = 11 package commands
# XImage.OCR: Install sequence for a multilingual application
dotnet add package RasterEdge.XImage.OCR
dotnet add package XImage.OCR.Language.English
dotnet add package XImage.OCR.Language.German
dotnet add package XImage.OCR.Language.French
dotnet add package XImage.OCR.Language.Spanish
dotnet add package XImage.OCR.Language.Italian
dotnet add package XImage.OCR.Language.Portuguese
dotnet add package XImage.OCR.Language.ChineseSimplified
dotnet add package XImage.OCR.Language.ChineseTraditional
dotnet add package XImage.OCR.Language.Japanese
# 10 languages = 11 package commands
SHELL

El código en sí refleja la misma complejidad. Para configurar el OCR multilingüe, es necesario que todos los paquetes de idioma estén instalados; la biblioteca no puede validar esto en tiempo de compilación:

// XImage.OCR: Language codes must match installed packages exactly
// If XImage.OCR.Language.German is not installed, this fails at runtime

var ocrHandler = new OCRHandler();

// Activación de licencia required before any OCR operation
RasterEdge.XImage.OCR.License.LicenseManager.SetLicense("your-license-key");

// Set multiple languages — each requires its own NuGet package installed
ocrHandler.Languages = new[] { "eng", "deu", "fra", "spa", "ita" };

string result = ocrHandler.Process(imagePath);
// XImage.OCR: Language codes must match installed packages exactly
// If XImage.OCR.Language.German is not installed, this fails at runtime

var ocrHandler = new OCRHandler();

// Activación de licencia required before any OCR operation
RasterEdge.XImage.OCR.License.LicenseManager.SetLicense("your-license-key");

// Set multiple languages — each requires its own NuGet package installed
ocrHandler.Languages = new[] { "eng", "deu", "fra", "spa", "ita" };

string result = ocrHandler.Process(imagePath);
' XImage.OCR: Language codes must match installed packages exactly
' If XImage.OCR.Language.German is not installed, this fails at runtime

Dim ocrHandler As New OCRHandler()

' Activación de licencia required before any OCR operation
RasterEdge.XImage.OCR.License.LicenseManager.SetLicense("your-license-key")

' Set multiple languages — each requires its own NuGet package installed
ocrHandler.Languages = New String() {"eng", "deu", "fra", "spa", "ita"}

Dim result As String = ocrHandler.Process(imagePath)
$vbLabelText   $csharpLabel

Si falta un paquete de idioma o está en una versión incorrecta, el fallo se produce en tiempo de ejecución durante la llamada al OCR, no en tiempo de compilación ni durante la restauración del paquete. En un proceso de implementación, esto significa descubrir el problema en entornos de producción o preproducción, en lugar de en la máquina del desarrollador.

Enfoque de IronOCR

IronOCR se instala como un único paquete. La compatibilidad con los idiomas occidentales más comunes viene incluida de forma predeterminada; Los paquetes de idiomas adicionales se instalan como paquetes opcionales siguiendo el mismo patrón de un solo paquete, pero se parte de un estado que funciona en lugar de uno que está roto:

# IronOCR: Install everything in one command
dotnet add package IronOcr
# English included. Add specific language packs only when needed.
dotnet add package IronOcr.Languages.German
# IronOCR: Install everything in one command
dotnet add package IronOcr
# English included. Add specific language packs only when needed.
dotnet add package IronOcr.Languages.German
SHELL

El código para OCR multilenguaje utiliza valores de enumeración OcrLanguage seguros, no códigos de cadena, lo que elimina la clase de errores runtime que provienen de identificadores de idioma erróneos:

// IronOCR: Type-safe languages, single package
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
ocr.AddSecondaryLanguage(OcrLanguage.German);
ocr.AddSecondaryLanguage(OcrLanguage.French);

var result = ocr.Read("multilingual-document.jpg");
Console.WriteLine(result.Text);
// IronOCR: Type-safe languages, single package
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
ocr.AddSecondaryLanguage(OcrLanguage.German);
ocr.AddSecondaryLanguage(OcrLanguage.French);

var result = ocr.Read("multilingual-document.jpg");
Console.WriteLine(result.Text);
Imports IronOcr

' IronOCR: Type-safe languages, single package
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY"

Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.English
ocr.AddSecondaryLanguage(OcrLanguage.German)
ocr.AddSecondaryLanguage(OcrLanguage.French)

Dim result = ocr.Read("multilingual-document.jpg")
Console.WriteLine(result.Text)
$vbLabelText   $csharpLabel

La guía de configuración de IronTesseract cubre la configuración del idioma en detalle. La guía práctica para trabajar con varios idiomas explica cómo combinar idiomas principales y secundarios en documentos con contenido multilingüe.

Para una aplicación de 10 idiomas: XImage.OCR requiere 11 paquetes, 11 líneas en .csproj, y sincronización continua de versión en los 11 cuando llegan actualizaciones.IronOCR requiere 1 paquete en .csproj, además de paquetes opcionales por idioma cuando se necesite. Esa diferencia se acentúa entre los distintos equipos.

Preprocesamiento: Tesseract sin procesar frente a Pipeline integrado

La falta de capacidad de preprocesamiento es la principal limitación técnica de XImage.OCR. Debido a que la biblioteca utiliza Tesseract sin añadir mejoras de imagen, la calidad del documento limita directamente la calidad del OCR. Esta es una limitación decisiva en cualquier implementación real.

Enfoque XImage.OCR

XImage.OCR transfiere las imágenes directamente a Tesseract. Una factura escaneada con una inclinación de 2 grados, ruido del escáner y una resolución de 150 ppp se procesa tal cual. El OCRHandler no tiene métodos para corrección de imágenes:

// XImage.OCR: No preprocessing available
// A skewed, noisy, low-DPI scan goes straight to Tesseract

var ocrHandler = new OCRHandler();
ocrHandler.Language = "eng";

// Direct OCR on problematic image — skew, noise, and low resolution
// all degrade accuracy with no mitigation available in the library
string result = ocrHandler.Process(imagePath);

// To improve results, you would need:
// - External library (OpenCV.NET, ImageSharp, etc.)
// - 100-200 lines of deskew and noise-reduction code
// - Per-document-type tuning
// - Image processing expertise your OCR developer may not have
// XImage.OCR: No preprocessing available
// A skewed, noisy, low-DPI scan goes straight to Tesseract

var ocrHandler = new OCRHandler();
ocrHandler.Language = "eng";

// Direct OCR on problematic image — skew, noise, and low resolution
// all degrade accuracy with no mitigation available in the library
string result = ocrHandler.Process(imagePath);

// To improve results, you would need:
// - External library (OpenCV.NET, ImageSharp, etc.)
// - 100-200 lines of deskew and noise-reduction code
// - Per-document-type tuning
// - Image processing expertise your OCR developer may not have
' XImage.OCR: No preprocessing available
' A skewed, noisy, low-DPI scan goes straight to Tesseract

Dim ocrHandler As New OCRHandler()
ocrHandler.Language = "eng"

' Direct OCR on problematic image — skew, noise, and low resolution
' all degrade accuracy with no mitigation available in the library
Dim result As String = ocrHandler.Process(imagePath)

' To improve results, you would need:
' - External library (OpenCV.NET, ImageSharp, etc.)
' - 100-200 lines of deskew and noise-reduction code
' - Per-document-type tuning
' - Image processing expertise your OCR developer may not have
$vbLabelText   $csharpLabel

La solución alternativa consiste en utilizar una biblioteca de procesamiento de imágenes independiente, escribir el código de preprocesamiento manualmente y mantener ese código actualizado tras las actualizaciones de la biblioteca. Para los equipos que ya están inmersos en el ecosistema de RasterEdge, algunas herramientas están disponibles a través de otros componentes del SDK de RasterEdge, pero eso requiere comprar e integrar productos adicionales.

Enfoque de IronOCR

IronOCR aplica preprocesamiento como métodos encadenables en OcrInput, entre la carga del documento y la ejecución del OCR. No se necesita ninguna biblioteca externa:

// IronOCR: Preprocesamiento integrado pipeline
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

using var input = new OcrInput();
input.LoadImage("low-quality-scan.jpg");

// Apply corrections in sequence
input.Deskew();              // Detect and correct rotation angle
input.DeNoise();             // Remove scanner artifacts and noise
input.Contrast();            // Enhance contrast for faded text
input.Binarize();            // Convert to clean black-and-white
input.EnhanceResolution(300); // Scale low-DPI images to 300 DPI

var result = new IronTesseract().Read(input);
Console.WriteLine(result.Text);
Console.WriteLine($"Confidence: {result.Confidence}%");
// IronOCR: Preprocesamiento integrado pipeline
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

using var input = new OcrInput();
input.LoadImage("low-quality-scan.jpg");

// Apply corrections in sequence
input.Deskew();              // Detect and correct rotation angle
input.DeNoise();             // Remove scanner artifacts and noise
input.Contrast();            // Enhance contrast for faded text
input.Binarize();            // Convert to clean black-and-white
input.EnhanceResolution(300); // Scale low-DPI images to 300 DPI

var result = new IronTesseract().Read(input);
Console.WriteLine(result.Text);
Console.WriteLine($"Confidence: {result.Confidence}%");
Imports IronOcr

' IronOCR: Preprocesamiento integrado pipeline
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY"

Using input As New OcrInput()
    input.LoadImage("low-quality-scan.jpg")

    ' Apply corrections in sequence
    input.Deskew()              ' Detect and correct rotation angle
    input.DeNoise()             ' Remove scanner artifacts and noise
    input.Contrast()            ' Enhance contrast for faded text
    input.Binarize()            ' Convert to clean black-and-white
    input.EnhanceResolution(300) ' Scale low-DPI images to 300 DPI

    Dim result = New IronTesseract().Read(input)
    Console.WriteLine(result.Text)
    Console.WriteLine($"Confidence: {result.Confidence}%")
End Using
$vbLabelText   $csharpLabel

La guía de corrección de la calidad de imagen abarca el conjunto completo de filtros de preprocesamiento. Para correcciones específicas de orientación, la guía de corrección de orientación de imagen y la detección de rotación de página admiten documentos con múltiples ángulos.

El impacto práctico del preprocesamiento en documentos reales es significativo. Tesseract, sin preprocesamiento, en un documento escaneado a 150 ppp con una inclinación de 5 grados, produce una precisión de entre el 60 y el 75 %. Tras corregir la inclinación y mejorar la resolución, el mismo documento a 300 ppp con la rotación corregida alcanza una precisión del 93-97%. XImage.OCR no puede cerrar esa brecha sin código externo.IronOCR lo cierra con 5 llamadas a métodos.

Propuesta de valor frente a los envoltorios Tesseract gratuitos

Para fijar el precio comercial de un envoltorio Tesseract, es necesario responder claramente a una pregunta: ¿qué ofrece la compra del producto comercial que no ofrezca el envoltorio gratuito? Para XImage.OCR, esa pregunta es más difícil de responder de lo que debería ser.

La brecha de la alternativa gratuita

El paquete charlesw/tesseract en NuGet tiene más de 8 millones de descargas, mantenimiento activo y licencia Apache 2.0, lo que significa que es gratuito para uso comercial. Proporciona esencialmente el mismo resultado de OCR que XImage.OCR porque ambos utilizan el mismo motor Tesseract. Las diferencias son:

  • Soporte de idiomas: Tessdata gratuito cuenta con más de 100 idiomas; XImage.OCR admite aproximadamente 15 paquetes de pago.
  • Comunidad: charlesw/tesseract tiene más de 3000 preguntas en Stack Overflow y una amplia documentación de la comunidad; XImage.OCR tiene menos de 100
  • Preprocesamiento: Ninguna de las dos bibliotecas proporciona preprocesamiento integrado; ambas pasan las imágenes directamente a Tesseract.
  • Uso de subprocesos: Ambos tienen la misma restricción de seguridad de subprocesos (se requieren instancias por subproceso).

Cuando el producto comercial tiene menos idiomas, una comunidad más pequeña , la misma brecha en el preprocesamiento y el mismo modelo de subprocesos que la alternativa gratuita, la propuesta de valor comercial se vuelve difícil de articular más allá del soporte del proveedor y la integración en el ecosistema de RasterEdge.

IronOCR como alternativa comercial

IronOCR justifica su precio comercial mediante funcionalidades que ni XImage.OCR ni las alternativas gratuitas ofrecen: preprocesamiento automatizado, compatibilidad nativa con PDF, diseño seguro para subprocesos y despliegue multiplataforma. La licencia $999 Lite es una compra perpetua única. La cuestión no es si merece la pena pagar por el reconocimiento óptico de caracteres (OCR) comercial; a menudo sí. La pregunta es qué se obtiene a cambio del dinero.

// What the IronOCR Lite license buys vs what commercial pricing buys with XImage.OCR

// IronOCR: Preprocessing, PDF, thread safety, cross-platform in one call
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadPdf("scanned-invoice.pdf");   // Native PDF — no extra SDK
input.Deskew();                          // Built-in preprocessing
input.DeNoise();                         // No external library needed
var result = ocr.Read(input);
result.SaveAsSearchablePdf("output.pdf"); // Searchable PDF output
Console.WriteLine($"Confidence: {result.Confidence}%");

// XImage.OCR: Same Tesseract core, no preprocessing, no PDF, not thread-safe
// Requires purchasing and integrating RasterEdge PDF SDK for PDF operations
// What the IronOCR Lite license buys vs what commercial pricing buys with XImage.OCR

// IronOCR: Preprocessing, PDF, thread safety, cross-platform in one call
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadPdf("scanned-invoice.pdf");   // Native PDF — no extra SDK
input.Deskew();                          // Built-in preprocessing
input.DeNoise();                         // No external library needed
var result = ocr.Read(input);
result.SaveAsSearchablePdf("output.pdf"); // Searchable PDF output
Console.WriteLine($"Confidence: {result.Confidence}%");

// XImage.OCR: Same Tesseract core, no preprocessing, no PDF, not thread-safe
// Requires purchasing and integrating RasterEdge PDF SDK for PDF operations
Imports IronOcr

' What the IronOCR Lite license buys vs what commercial pricing buys with XImage.OCR

' IronOCR: Preprocessing, PDF, thread safety, cross-platform in one call
Dim ocr As New IronTesseract()
Using input As New OcrInput()
    input.LoadPdf("scanned-invoice.pdf")   ' Native PDF — no extra SDK
    input.Deskew()                         ' Built-in preprocessing
    input.DeNoise()                        ' No external library needed
    Dim result = ocr.Read(input)
    result.SaveAsSearchablePdf("output.pdf") ' Searchable PDF output
    Console.WriteLine($"Confidence: {result.Confidence}%")
End Using

' XImage.OCR: Same Tesseract core, no preprocessing, no PDF, not thread-safe
' Requires purchasing and integrating RasterEdge PDF SDK for PDF operations
$vbLabelText   $csharpLabel

El tutorial sobre lectura de texto a partir de imágenes y la guía de OCR de C# Tesseract documentan todas las funcionalidades disponibles. Para los equipos que evalúan por qué IronOCR es preferible a un envoltorio básico de Tesseract, la página dedicada "¿Por qué IronOCR y no Tesseract?" explica en detalle las diferencias técnicas.

Procesamiento de PDF

El reconocimiento óptico de caracteres (OCR) de archivos PDF es donde la diferencia arquitectónica entre XImage.OCR e IronOCR se vuelve más costosa desde el punto de vista operativo.

Enfoque XImage.OCR

XImage.OCR no procesa archivos PDF de forma nativa. El flujo de trabajo requiere el SDK de RasterEdge PDF (una compra comercial aparte) para convertir las páginas PDF en imágenes, que XImage.OCR procesa página por página mediante archivos temporales:

// XImage.OCR: PDF requires RasterEdge PDF SDK (additional purchase)
// Workflow: PDF -> render to image -> temp file -> OCR -> delete temp file

var pdfDocument = new PDFDocument(pdfPath); // Requires separate RasterEdge SDK

var results = new System.Text.StringBuilder();
var ocrHandler = new OCRHandler();
ocrHandler.Language = "eng";

for (int i = 0; i < pdfDocument.PageCount; i++)
{
    // Render PDF page to image at 200 DPI
    var pageImage = pdfDocument.RenderPage(i, 200);

    string tempPath = Path.GetTempFileName() + ".png";
    pageImage.Save(tempPath);

    try
    {
        string pageText = ocrHandler.Process(tempPath);
        results.AppendLine($"--- Page {i + 1} ---");
        results.AppendLine(pageText);
    }
    finally
    {
        File.Delete(tempPath); // Manual cleanup required
    }
}

return results.ToString();
// XImage.OCR: PDF requires RasterEdge PDF SDK (additional purchase)
// Workflow: PDF -> render to image -> temp file -> OCR -> delete temp file

var pdfDocument = new PDFDocument(pdfPath); // Requires separate RasterEdge SDK

var results = new System.Text.StringBuilder();
var ocrHandler = new OCRHandler();
ocrHandler.Language = "eng";

for (int i = 0; i < pdfDocument.PageCount; i++)
{
    // Render PDF page to image at 200 DPI
    var pageImage = pdfDocument.RenderPage(i, 200);

    string tempPath = Path.GetTempFileName() + ".png";
    pageImage.Save(tempPath);

    try
    {
        string pageText = ocrHandler.Process(tempPath);
        results.AppendLine($"--- Page {i + 1} ---");
        results.AppendLine(pageText);
    }
    finally
    {
        File.Delete(tempPath); // Manual cleanup required
    }
}

return results.ToString();
Imports System.Text
Imports System.IO

' XImage.OCR: PDF requires RasterEdge PDF SDK (additional purchase)
' Workflow: PDF -> render to image -> temp file -> OCR -> delete temp file

Dim pdfDocument As New PDFDocument(pdfPath) ' Requires separate RasterEdge SDK

Dim results As New StringBuilder()
Dim ocrHandler As New OCRHandler()
ocrHandler.Language = "eng"

For i As Integer = 0 To pdfDocument.PageCount - 1
    ' Render PDF page to image at 200 DPI
    Dim pageImage = pdfDocument.RenderPage(i, 200)

    Dim tempPath As String = Path.GetTempFileName() & ".png"
    pageImage.Save(tempPath)

    Try
        Dim pageText As String = ocrHandler.Process(tempPath)
        results.AppendLine($"--- Page {i + 1} ---")
        results.AppendLine(pageText)
    Finally
        File.Delete(tempPath) ' Manual cleanup required
    End Try
Next

Return results.ToString()
$vbLabelText   $csharpLabel

Este patrón introduce la gestión de archivos temporales, la limpieza explícita y la dependencia de un segundo producto comercial. En este patrón, el objetivo de renderizado de 200 ppp también se sitúa por debajo del umbral de 300 ppp, donde la precisión de Tesseract es óptima, lo que repercute aún más en la calidad. Los equipos que utilizan XImage.OCR para flujos de trabajo con archivos PDF están pagando, en la práctica, por dos productos para hacer lo que uno solo cubre en otros ámbitos.

Enfoque de IronOCR

IronOCR maneja archivos PDF de forma nativa. Sin pasos intermedios, sin archivos temporales, sin un segundo SDK:

// IronOCR: Native PDF input, no extra dependencies
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

using var input = new OcrInput();
input.LoadPdf("scanned-invoice.pdf");  // Direct PDF loading
var result = new IronTesseract().Read(input);
result.SaveAsSearchablePdf("searchable-output.pdf");
Console.WriteLine(result.Text);
// IronOCR: Native PDF input, no extra dependencies
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

using var input = new OcrInput();
input.LoadPdf("scanned-invoice.pdf");  // Direct PDF loading
var result = new IronTesseract().Read(input);
result.SaveAsSearchablePdf("searchable-output.pdf");
Console.WriteLine(result.Text);
Imports IronOcr

' IronOCR: Native PDF input, no extra dependencies
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY"

Using input As New OcrInput()
    input.LoadPdf("scanned-invoice.pdf")  ' Direct PDF loading
    Dim result = New IronTesseract().Read(input)
    result.SaveAsSearchablePdf("searchable-output.pdf")
    Console.WriteLine(result.Text)
End Using
$vbLabelText   $csharpLabel

Los archivos PDF protegidos con contraseña añaden un parámetro:

using var input = new OcrInput();
input.LoadPdf("encrypted.pdf", Password: "secret");
var result = new IronTesseract().Read(input);
using var input = new OcrInput();
input.LoadPdf("encrypted.pdf", Password: "secret");
var result = new IronTesseract().Read(input);
Imports IronOcr

Using input As New OcrInput()
    input.LoadPdf("encrypted.pdf", Password: "secret")
    Dim result = New IronTesseract().Read(input)
End Using
$vbLabelText   $csharpLabel

La guía de entrada de PDF abarca archivos PDF de varias páginas, la selección de rangos de páginas y la configuración de DPI. La guía en formato PDF con función de búsqueda ofrece diferentes opciones de salida. Para los equipos que desarrollan sistemas de archivo de documentos, la página de casos de uso de OCR de PDF en C# cubre el flujo de trabajo completo.

Referencia de mapeo de API

XImage.OCR Equivalente a IronOCR Notas
new OCRHandler() new IronTesseract() Clase principal de OCR
RasterEdge.XImage.OCR.License.LicenseManager.SetLicense("key") IronOcr.License.LicenseKey = "key" Activación de licencia
ocrHandler.Language = "eng" ocr.Language = OcrLanguage.English Enumeración segura frente a cadena
ocrHandler.Languages = new[] { "eng", "deu" } ocr.AddSecondaryLanguage(OcrLanguage.German) Multilingüe
ocrHandler.Process(imagePath) ocr.Read("image.jpg").Text Operación OCR principal
ocrHandler.ProcessRegion(path, rect) input.LoadImage(path, new CropRectangle(x, y, w, h)) OCR basado en la región
ocrHandler.SetVariable("tessedit_char_whitelist", "0123456789") ocr.Configuration.WhiteListCharacters = "0123456789" Filtrado de caracteres
result.Text result.Text Salida de texto sin formato
result.MeanConfidence result.Confidence Porcentaje de confianza
No existe equivalente result.Words / result.Lines / result.Pages Resultados estructurados
No existe equivalente input.Deskew() Preprocesamiento integrado
No existe equivalente input.DeNoise() Preprocesamiento integrado
No existe equivalente input.EnhanceResolution(300) Preprocesamiento integrado
Requiere el SDK de PDF de RasterEdge input.LoadPdf(pdfPath) Entrada nativa de PDF
Requiere el SDK de PDF de RasterEdge result.SaveAsSearchablePdf("out.pdf") Salida en PDF con capacidad de búsqueda
Instancias de OCRHandler por hilo Instancia única de IronTesseract Modelo de seguridad de roscas

Cuando los equipos consideran migrar de XImage.OCR a IronOCR

La gestión de paquetes se ha convertido en una carga de mantenimiento.

Los equipos que comenzaron con dos o tres paquetes de idiomas para XImage.OCR suelen llegar a un punto de inflexión cuando la aplicación se amplía a 8 o 10 idiomas. El archivo del proyecto ahora tiene entre 9 y 11 referencias a paquetes, todas las cuales requieren sincronización de versiones. El desarrollador que actualizó únicamente el paquete principal provocó silenciosamente un fallo en el reconocimiento óptico de caracteres (OCR) para todos los idiomas. La canalización de CI/CD falla intermitentemente porque la caché de paquetes restauró un paquete de idioma antiguo. En esta etapa, la sobrecarga de sincronización de versiones supera cualquier valor que proporcione el empaquetado por idioma, y ​​consolidar en una solución de paquete único se convierte en la decisión arquitectónica obvia.

La calidad de los documentos en el mundo real exige un preprocesamiento.

Los equipos que implementan XImage.OCR en escaneos controlados y de alta calidad no encuentran inicialmente problemas de precisión. El problema surge cuando se amplía el flujo de documentos: cargas de fotos desde dispositivos móviles, escaneos de archivos antiguos, documentos de fax, formularios rellenados a mano y escaneados a 150 ppp. Sin un preprocesamiento, la precisión de Tesseract en estas entradas es deficiente, independientemente del envoltorio que se utilice. Los equipos se enfrentan entonces a una disyuntiva: crear y mantener su propia integración de biblioteca de preprocesamiento, o bien migrar a una solución con preprocesamiento integrado. Las funciones integradas de corrección de inclinación, reducción de ruido y mejora de la resolución de IronOCR eliminan por completo la dependencia externa y ofrecen una mejora en la precisión sin que el desarrollador del OCR necesite conocimientos especializados en procesamiento de imágenes.

Los flujos de trabajo de PDF requieren una segunda compra de SDK.

Cuando el flujo de trabajo de documentos de un equipo se expande de archivos de imagen a archivos PDF, la ruta de escalamiento más común para las aplicaciones de procesamiento de documentos, XImage.OCR obliga a la compra de un segundo producto RasterEdge. El SDK de PDF requiere una licencia comercial independiente. Los equipos que pagaban precios comerciales por el OCR no presupuestaron una segunda licencia comercial para que el OCR funcionara con el formato de documento más común en los entornos Enterprise . La compatibilidad nativa de IronOCR con archivos PDF hace que esta preocupación sea irrelevante desde el primer día, y el ejemplo de OCR de PDF demuestra exactamente lo directa que es la integración.

El despliegue multiplataforma se convierte en un requisito.

La arquitectura de XImage.OCR, que se basa principalmente en Windows, se convierte en una limitación importante cuando entra en juego la implementación en contenedores en Linuxo en un entorno de desarrollo macOS. Los equipos de desarrollo .NET modernos utilizan Dockerpara el desarrollo local y lo implementan en una infraestructura de contenedores basada en Linux. Una biblioteca OCR exclusiva para Windowsno puede participar en esa pila.IronOCR es compatible con Windows, Linux, macOSy Dockerdesde el mismo paquete, sin necesidad de realizar cambios de configuración. La guía de implementación de Docker y la guía de implementación de Linux explican la configuración en detalle.

Limitaciones de seguridad de subprocesos en el rendimiento de las aplicaciones de servidor

El reconocimiento óptico de caracteres (OCR) en una aplicación de servidor, el procesamiento de trabajos por lotes o el manejo de solicitudes HTTP concurrentes requieren multihilo. El modelo de controlador por hilo de XImage.OCR implica que cada hilo concurrente carga su propia instancia del motor Tesseract, consumiendo entre 40 y 100 MB por lenguaje y por hilo. Un servidor de 4 hilos que procesa documentos en 5 idiomas consume aproximadamente entre 900 MB y 1,2 GB solo para las instancias del controlador OCR. El diseño seguro para subprocesos de IronOCR comparte una única instancia entre todos los subprocesos; esa única instancia gestiona las solicitudes concurrentes sin multiplicar el consumo de memoria. Los equipos que se topan con limitaciones de memoria o rendimiento en producción suelen atribuir la causa principal a esta diferencia arquitectónica.

Consideraciones comunes sobre la migración

Reemplazar OCRHandler con IronTesseract

La sustitución del código principal es sencilla. Reemplazar OCRHandler con IronTesseract, reemplazar códigos de idioma de cadena ("eng", "deu") con valores de enumeración OcrLanguage seguros, y envolver la carga de imágenes en OcrInput. La activación de la licencia se mueve de LicenseManager.SetLicense() a la propiedad estática IronOcr.License.LicenseKey, que se puede establecer desde una variable de entorno para la seguridad en el despliegue:

// Before: XImage.OCR
RasterEdge.XImage.OCR.License.LicenseManager.SetLicense("your-key");
var ocrHandler = new OCRHandler();
ocrHandler.Language = "eng";
string text = ocrHandler.Process(imagePath);

// After: IronOCR
IronOcr.License.LicenseKey = Environment.GetEnvironmentVariable("IRONOCR_LICENSE");
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage(imagePath);
var result = ocr.Read(input);
string text = result.Text;
// Before: XImage.OCR
RasterEdge.XImage.OCR.License.LicenseManager.SetLicense("your-key");
var ocrHandler = new OCRHandler();
ocrHandler.Language = "eng";
string text = ocrHandler.Process(imagePath);

// After: IronOCR
IronOcr.License.LicenseKey = Environment.GetEnvironmentVariable("IRONOCR_LICENSE");
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage(imagePath);
var result = ocr.Read(input);
string text = result.Text;
Imports System
Imports IronOcr

' Before: XImage.OCR
RasterEdge.XImage.OCR.License.LicenseManager.SetLicense("your-key")
Dim ocrHandler As New OCRHandler()
ocrHandler.Language = "eng"
Dim text As String = ocrHandler.Process(imagePath)

' After: IronOCR
IronOcr.License.LicenseKey = Environment.GetEnvironmentVariable("IRONOCR_LICENSE")
Dim ocr As New IronTesseract()
Using input As New OcrInput()
    input.LoadImage(imagePath)
    Dim result = ocr.Read(input)
    text = result.Text
End Using
$vbLabelText   $csharpLabel

La guía completa de entrada de imágenes abarca todos los tipos de entrada: rutas de archivo, matrices de bytes, flujos y URL.

Agregar preprocesamiento donde no existía.

Los equipos que migran desde XImage.OCR tienen la oportunidad inmediata de añadir un preprocesamiento que antes no estaba disponible. La migración no es solo un cambio de nombre de clase, sino una oportunidad para corregir problemas de precisión que se aceptaron tácitamente porque no existía una mejor opción. Tras cargar los datos de entrada, añada los filtros adecuados para sus tipos de documento:

using var input = new OcrInput();
input.LoadImage(imagePath);

// Add these lines immediately after loading — no other changes needed
input.Deskew();
input.DeNoise();
input.EnhanceResolution(300);

var result = new IronTesseract().Read(input);
using var input = new OcrInput();
input.LoadImage(imagePath);

// Add these lines immediately after loading — no other changes needed
input.Deskew();
input.DeNoise();
input.EnhanceResolution(300);

var result = new IronTesseract().Read(input);
Imports IronOcr

Using input As New OcrInput()
    input.LoadImage(imagePath)

    ' Add these lines immediately after loading — no other changes needed
    input.Deskew()
    input.DeNoise()
    input.EnhanceResolution(300)

    Dim result = New IronTesseract().Read(input)
End Using
$vbLabelText   $csharpLabel

El tutorial sobre filtros de imagen ofrece orientación sobre qué filtros aplicar para solucionar problemas específicos de calidad de los documentos. Aplíquelas únicamente a documentos cuya calidad sea variable: los escaneos limpios y de alta resolución no se benefician del preprocesamiento y este paso adicional aumenta el tiempo de procesamiento.

Simplificando la lista de paquetes

Elimine todos los paquetes XImage.OCR del proyecto. La eliminación del paquete es la parte más larga del proceso para las aplicaciones con muchos idiomas instalados:

# Remove all XImage.OCR packages
dotnet remove package RasterEdge.XImage.OCR
dotnet remove package XImage.OCR.Language.English
dotnet remove package XImage.OCR.Language.German
dotnet remove package XImage.OCR.Language.French
# ... remove all language packages

# Add IronOCR
dotnet add package IronOcr
# Remove all XImage.OCR packages
dotnet remove package RasterEdge.XImage.OCR
dotnet remove package XImage.OCR.Language.English
dotnet remove package XImage.OCR.Language.German
dotnet remove package XImage.OCR.Language.French
# ... remove all language packages

# Add IronOCR
dotnet add package IronOcr
SHELL

Actualizar el pipeline de CI/CD para eliminar las múltiples operaciones de restauración y simplificar los pasos de verificación de dependencias de paquetes. La lógica de sincronización de versiones, si estaba automatizada, puede eliminarse por completo.

Manejo del OCR basado en regiones

XImage.OCR expone el procesamiento de regiones a través de ProcessRegion(imagePath, rectangle).IronOCR maneja esto a través de CropRectangle pasado en el momento de la carga de entrada:

//IronOCR region-based OCR
var region = new CropRectangle(x: 0, y: 0, width: 600, height: 100);
using var input = new OcrInput();
input.LoadImage("invoice.jpg", region);
var text = new IronTesseract().Read(input).Text;
//IronOCR region-based OCR
var region = new CropRectangle(x: 0, y: 0, width: 600, height: 100);
using var input = new OcrInput();
input.LoadImage("invoice.jpg", region);
var text = new IronTesseract().Read(input).Text;
Imports IronOcr

Dim region As New CropRectangle(x:=0, y:=0, width:=600, height:=100)
Using input As New OcrInput()
    input.LoadImage("invoice.jpg", region)
    Dim text As String = New IronTesseract().Read(input).Text
End Using
$vbLabelText   $csharpLabel

La guía de OCR basada en regiones y el ejemplo de recorte de región documentan el método para documentos de diseño fijo, como facturas y formularios.

Funcionalidades adicionales de IronOCR

Más allá de los puntos de comparación básicos,IronOCR proporciona capacidades que no tienen equivalente en XImage.OCR:

  • OCR asíncrono : Ejecución de OCR sin bloqueo para aplicaciones ASP.NET que procesan documentos en flujos de solicitudes.
  • Tipos de documentos especializados : Rutas de procesamiento diseñadas específicamente para pasaportes, matrículas, cheques MICR y reconocimiento de escritura a mano.
  • Optimización de velocidad : Perfiles de configuración optimizados para el rendimiento cuando los requisitos de precisión permiten ciertas concesiones, abarcando el modo de segmentación de página y la selección del modo de motor.
  • Procesamiento de TIFF multifotograma : Todos los fotogramas de un archivo TIFF multipágina se leen en una sola llamada con resultados por página; no se requiere iteración manual de fotogramas.
  • Paquete NuGet : Disponible en NuGet con control de versiones completo y herramientas estándar de gestión de paquetes.

Compatibilidad con .NET y preparación para el futuro

IronOCR está diseñado para .NET 6, .NET 7, .NET 8 y .NET 9, con soporte activo para .NET Standard 2.0 y .NET Framework 4.6.2+ para compatibilidad con proyectos heredados. La biblioteca incluye binarios de ejecución multiplataforma que funcionan de forma idéntica en Windows, Linuxy macOSsin necesidad de compilación condicional ni empaquetado específico para cada plataforma. XImage.OCR está diseñado para .NET Standard 2.0 y .NET Framework 4.5+, lo que conserva la compatibilidad con versiones anteriores, pero no se extiende de manera significativa a los entornos de implementación modernos: la contenerización con Docker, la infraestructura en la nube basada en Linuxy el desarrollo para macOSquedan fuera del ámbito de compatibilidad probado.IronOCR recibe actualizaciones periódicas alineadas con el ciclo de lanzamiento de .NET , y la arquitectura de paquete único significa que las actualizaciones de compatibilidad se aplican de manera uniforme en todos los lenguajes y características sin la coordinación por paquete que requiere el modelo fragmentado de XImage.OCR.

Conclusión

XImage.OCR presenta la misma limitación fundamental que otros envoltorios comerciales de Tesseract: cobra por una capa gestionada sobre tecnología gratuita sin diferenciar claramente lo que ya ofrecen los envoltorios gratuitos. El modelo fragmentado de paquetes de lenguaje agrava esto al introducir una sobrecarga operativa real: sincronización de versiones en 11 paquetes para una aplicación de 10 lenguajes, 11 puntos de fallo de CI/CD en lugar de 1, y una cobertura de lenguaje limitada que alcanza un máximo de alrededor de 15 lenguajes, mientras que las distribuciones gratuitas de tessdata incluyen más de 100. Los equipos que ya forman parte del ecosistema RasterEdge tienen una razón válida para usar XImage.OCR; Los equipos que la evalúen de forma independiente como una solución OCR autónoma tendrán dificultades para justificar el precio comercial.

El preprocesamiento es el punto técnico donde la comparación resulta más clara. Los documentos reales —escaneados con resolución variable, fotografiados en ángulos ligeramente diferentes e impresos en equipos obsoletos— requieren corrección de imagen antes de que el OCR produzca resultados fiables. XImage.OCR no realiza ningún preprocesamiento. Para lograr una precisión aceptable en estos datos de entrada, es necesario escribir y mantener código externo para el procesamiento de imágenes.IronOCR gestiona esto con cinco llamadas a métodos y sin dependencias externas.

La compatibilidad con PDF y la implementación multiplataforma representan los dos escenarios en los que la arquitectura de XImage.OCR genera costes adicionales. El procesamiento de archivos PDF requiere una segunda compra comercial de RasterEdge. No se admiten implementaciones en Linuxni en Docker. Para los equipos cuyos requisitos incluyen cualquiera de estas opciones (y el desarrollo .NET Enterprise moderno suele incluir ambas),IronOCR es la solución funcionalmente adecuada, mientras que XImage.OCR requiere soluciones arquitectónicas alternativas que aumentan el coste y la complejidad.

La decisión para los equipos que actualmente utilizan XImage.OCR se centra principalmente en si el ecosistema de RasterEdge justifica la dependencia de dicho ecosistema. Para los equipos que eligen una biblioteca OCR desde cero, el modelo de paquete único de IronOCR, el preprocesamiento integrado, la compatibilidad nativa con PDF y el entorno de ejecución multiplataforma representan una oferta comercial más completa a un precio comparable.

Por favor notaTesseract y xImage.OCR son marcas registradas de sus respectivos dueños. Este sitio no está afiliado, aprobado ni patrocinado por Google o RasterEdge. Todos los nombres de producto, logotipos y marcas son propiedad de sus respectivos dueños. Las comparaciones son solo para fines informativos y reflejan información públicamente disponible en el momento de la redacción.

Preguntas Frecuentes

¿Qué es xImage.OCR?

xImage.OCR es una solución de OCR utilizada por desarrolladores y empresas para extraer texto de imágenes y documentos. Es una de las diversas opciones de OCR evaluadas junto con IronOCR for .NET para el desarrollo de aplicaciones.

¿Cómo se compara IronOCR con xImage.OCR para desarrolladores .NET?

IronOCR es una biblioteca de OCR .NET nativa de NuGet que utiliza IronTesseract como motor principal. En comparación con xImage.OCR, ofrece un despliegue más sencillo (sin instaladores SDK), precios de tarifa plana y una API de C# limpia sin interoperabilidad COM ni dependencias de la nube.

¿Es IronOCR más fácil de configurar que xImage.OCR?

IronOCR se instala mediante un único paquete NuGet. No hay instaladores de SDK, archivos de licencia que copiar, componentes COM que registrar ni binarios de ejecución independientes que gestionar. Todo el motor de OCR está incluido en el paquete.

¿Qué diferencias de precisión existen entre xImage.OCR y IronOCR?

IronOCR logra una alta precisión de reconocimiento para documentos comerciales estándar, facturas, recibos y formularios escaneados. Para documentos muy degradados o escrituras poco comunes, la precisión varía en función de la calidad de la fuente. IronOCR incluye filtros de preprocesamiento de imágenes para mejorar el reconocimiento en entradas de baja calidad.

¿Es IronOCR compatible con la extracción de texto en PDF?

Sí. IronOCR extrae texto tanto de PDF nativos como de imágenes PDF escaneadas en una sola llamada. También admite archivos TIFF de varias páginas, imágenes y secuencias. En el caso de los PDF escaneados, el OCR se aplica página a página con objetos de resultado por página.

¿Qué diferencia hay entre las licencias de xImage.OCR y las de IronOCR?

IronOCR utiliza una licencia perpetua de tarifa plana sin cargos por página o por escaneo. Las organizaciones que procesan grandes volúmenes de documentos pagan el mismo coste de licencia independientemente del volumen. Encontrará más información y precios por volumen en la página de licencias de IronOCR.

¿Qué idiomas admite IronOCR?

IronOCR es compatible con 127 idiomas a través de paquetes de idiomas NuGet independientes. Para añadir un idioma, basta con ejecutar el comando 'dotnet add package IronOcr.Languages.{Language}'. No es necesaria la colocación manual de archivos ni la configuración de rutas.

¿Cómo instalo IronOCR en un proyecto .NET ?

Instalación a través de NuGet: install-Package IronOcr' en la consola del gestor de paquetes o 'dotnet add package IronOcr' en la CLI. Los paquetes de idiomas adicionales se instalan del mismo modo. No se requiere ningún instalador nativo del SDK.

¿A diferencia de xImage.OCR, IronOCR es adecuado para Docker y las implementaciones en contenedores?

Sí. IronOCR funciona en contenedores Docker a través de su paquete NuGet. La clave de licencia se establece mediante una variable de entorno. No se requieren archivos de licencia, rutas de SDK ni montajes de volumen para el propio motor de OCR.

¿Puedo probar IronOCR antes de comprarlo, en comparación con xImage.OCR?

Sí. El modo de prueba de IronOCR procesa documentos y devuelve resultados de OCR con una marca de agua superpuesta en la salida. Puede verificar la precisión en sus propios documentos antes de adquirir una licencia.

¿Admite IronOCR la lectura de códigos de barras junto con la extracción de texto?

IronOCR se centra en la extracción de texto y el reconocimiento óptico de caracteres. Para la lectura de códigos de barras, Iron Software ofrece IronBarcode como biblioteca complementaria. Ambas están disponibles por separado o como parte del paquete Iron Suite.

¿Es fácil migrar de xImage.OCR a IronOCR?

La migración de xImage.OCR a IronOCR suele implicar la sustitución de las secuencias de inicialización por la instanciación de IronTesseract, la eliminación de la gestión del ciclo de vida de COM y la actualización de las llamadas a la API. La mayoría de las migraciones reducen significativamente la complejidad del código.

Kannaopat Udonpant
Ingeniero de Software
Antes de convertirse en Ingeniero de Software, Kannapat completó un doctorado en Recursos Ambientales de la Universidad de Hokkaido en Japón. Mientras perseguía su grado, Kannapat también se convirtió en miembro del Laboratorio de Robótica de Vehículos, que es parte del Departamento de Ingeniería ...
Leer más

Equipo de soporte de Iron

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