Saltar al pie de página
COMPARAR CON OTROS COMPONENTES

Una comparación entre IronOCR y Dynamsoft OCR

Microsoft Office Document Imaging (MODI) fue una vez un componente predilecto de OCR incluido con MS Office 2003 y 2007, que permitía a los desarrolladores extraer texto de imágenes escaneadas directamente a través de un modelo de objetos basado en COM. Durante años, la clase MODI.Document impulsó innumerables proyectos de digitalización de documentos, convirtiendo archivos de imagen TIFF y BMP en texto legible por máquina dentro de soluciones de Visual Studio.

Sin embargo, la historia de MODI tiene un punto importante: Microsoft lo eliminó de Office 2010 y versiones posteriores, dejando a los desarrolladores depender de instalaciones de Office desactualizadas o instaladores independientes solo para mantener su funcionalidad OCR activa. Para cualquier proyecto moderno .NET dirigido a despliegue multiplataforma, entornos en la nube o versiones recientes de Windows, MODI presenta una fricción seria.

Este artículo examina cómo se comparaMODI OCRC# con IronOCR, una biblioteca de reconocimiento óptico de caracteres .NET creada para tal fin, en implementación de código, características, soporte de plataforma y licencias. Ya sea manteniendo código heredado o comenzando un nuevo proyecto, los detalles aquí ayudarán a informar la elección correcta.

Intente IronOCR gratis durante 30 días para seguir junto con los ejemplos de código a continuación.

¿Cómo se Rompe la Comparación a Simple Vista?

Categoría MODI OCR IronOCR
Arquitectura Central Interop COM; requiere referencia DLL de Microsoft Office Document Imaging Biblioteca pura .NET; Motor Tesseract 5 optimizado para C#
Soporte de plataformas Solo Windows; requiere que Office 2003/2007 esté instalado en la computadora Windows, Linux, macOS, Azure, Docker, iOS, Android
Formatos de imagen TIFF, MDI, BMP TIFF, PNG, JPEG, BMP, GIF, PDF, imágenes de múltiples páginas
Soporte de idiomas ~22 idiomas vía parámetro miLANG Más de 125 idiomas vía paquetes de idiomas NuGet
Precisión OCR Alta en documentos de fuente estándar y limpios Más del 99.8% con filtros automáticos de corrección de imagen
Opciones de Salida Texto simple del objeto Layout Texto simple, PDF buscable, datos estructurados (páginas, líneas, palabras, códigos de barras)
Instalación Instalador de Office + referencia COM en Explorador de Soluciones Paquete NuGet: Install-Package IronOcr
Desarrollo activo Descontinuado después de Office 2007 Mantenido activamente con actualizaciones regulares
Licencias Requiere una licencia de Microsoft Office calificativa Licencias perpetuas de $999; prueba gratuita de 30 días
Soporte Sólo foros comunitarios Soporte técnico directo por correo electrónico, chat en vivo y teléfono

How Does Microsoft Office Document Imaging Perform OCR in C#?

MODI realiza el reconocimiento óptico de caracteres (OCR) a través de un modelo de objetos basado en COM. El proceso comienza creando un objeto MODI.Document, cargando una ruta de archivo de imagen e invocando el método OCR para analizar imágenes e identificar caracteres. Después de que se completa el proceso OCR, la información de texto y diseño está disponible a través de los objetos Image y Layout de cada página.

Para usar MODI en un proyecto de Visual Studio, se debe agregar una referencia a la Biblioteca de Tipo de Microsoft Office Document Imaging. En el Explorador de Soluciones, haga clic derecho en la carpeta Referencias, seleccione la pestaña COM y elija la versión MODI adecuada (11.0 para Office 2003 o 12.0 para Office 2007).

// MODI OCR: Extracting text from a scanned TIFF document
private string ExtractTextFromImage(string path)
{
    string extractedText = "";
    MODI.Document doc = new MODI.Document();
    try
    {
        // Create the document object from the image file path
        doc.Create(path);
        // Run optical character recognition with English language
        doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true);
        // Access the first page image and retrieve recognized text
        MODI.Image modiImage = (MODI.Image)doc.Images[0];
        extractedText = modiImage.Layout.Text;
    }
    catch (Exception ex)
    {
        // Handle OCR exceptions for unsupported or corrupted image files
        string message = ex.Message;
        Console.WriteLine(message);
    }
    finally
    {
        doc.Close(false);
        System.Runtime.InteropServices.Marshal.ReleaseComObject(doc);
    }
    return extractedText;
}
// MODI OCR: Extracting text from a scanned TIFF document
private string ExtractTextFromImage(string path)
{
    string extractedText = "";
    MODI.Document doc = new MODI.Document();
    try
    {
        // Create the document object from the image file path
        doc.Create(path);
        // Run optical character recognition with English language
        doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true);
        // Access the first page image and retrieve recognized text
        MODI.Image modiImage = (MODI.Image)doc.Images[0];
        extractedText = modiImage.Layout.Text;
    }
    catch (Exception ex)
    {
        // Handle OCR exceptions for unsupported or corrupted image files
        string message = ex.Message;
        Console.WriteLine(message);
    }
    finally
    {
        doc.Close(false);
        System.Runtime.InteropServices.Marshal.ReleaseComObject(doc);
    }
    return extractedText;
}
' MODI OCR: Extracting text from a scanned TIFF document
Private Function ExtractTextFromImage(ByVal path As String) As String
    Dim extractedText As String = ""
    Dim doc As New MODI.Document()
    Try
        ' Create the document object from the image file path
        doc.Create(path)
        ' Run optical character recognition with English language
        doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, True, True)
        ' Access the first page image and retrieve recognized text
        Dim modiImage As MODI.Image = CType(doc.Images(0), MODI.Image)
        extractedText = modiImage.Layout.Text
    Catch ex As Exception
        ' Handle OCR exceptions for unsupported or corrupted image files
        Dim message As String = ex.Message
        Console.WriteLine(message)
    Finally
        doc.Close(False)
        System.Runtime.InteropServices.Marshal.ReleaseComObject(doc)
    End Try
    Return extractedText
End Function
$vbLabelText   $csharpLabel

Esta función demuestra el flujo de trabajo estándar de MODI: el método Create carga el archivo, el método OCR realiza el reconocimiento usando un idioma especificado, y Layout.Text proporciona la cadena extraída. La declaración return extractedText entrega la salida al llamador.

Mientras que MODI ofrece una precisión decente para imágenes de documentos nítidas y de alta resolución, tiene limitaciones notables. Solo soporta formatos TIFF, MDI y BMP. Requiere una instalación de Microsoft Office en cada computadora que ejecute la aplicación, incluidos los servidores de producción. No hay soporte incorporado para escanear imágenes de baja calidad, corregir la inclinación o reducir el ruido digital. Además, debido a que MODI se basa en Interop COM, no puede ser utilizado en .NET Core, .NET 5+ o cualquier escenario multiplataforma, lo que lo hace inadecuado para objetivos de implementación modernos como contenedores Docker o Servicios de Aplicaciones de Azure.

¿Cómo Maneja una Biblioteca Moderna .NET la Funcionalidad OCR?

IronOCR reemplaza el enfoque de Interop COM con una API pura de .NET que se instala a través de un solo paquete NuGet. La clase IronTesseract envuelve un motor Tesseract 5 optimizado, y la clase OcrInput maneja la carga de imágenes, el preprocesamiento y el soporte de múltiples formatos, todo sin requerir Microsoft Office o cualquier dependencia externa en la computadora de destino.

using IronOcr;
// Create the IronTesseract OCR engine object
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load images in any common format — PNG, JPEG, TIFF, BMP, GIF, or PDF
input.LoadImage("scanned-document.tiff");
// Apply filters to correct low-quality scans automatically
input.Deskew();   // Straighten skewed page images
input.DeNoise();  // Remove digital noise from scanning artifacts
// Read text from the processed document
var result = ocr.Read(input);
// Output plain text
Console.WriteLine(result.Text);
// Save as a searchable PDF for document management system integration
result.SaveAsSearchablePdf("output-searchable.pdf");
using IronOcr;
// Create the IronTesseract OCR engine object
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load images in any common format — PNG, JPEG, TIFF, BMP, GIF, or PDF
input.LoadImage("scanned-document.tiff");
// Apply filters to correct low-quality scans automatically
input.Deskew();   // Straighten skewed page images
input.DeNoise();  // Remove digital noise from scanning artifacts
// Read text from the processed document
var result = ocr.Read(input);
// Output plain text
Console.WriteLine(result.Text);
// Save as a searchable PDF for document management system integration
result.SaveAsSearchablePdf("output-searchable.pdf");
Imports IronOcr

' Create the IronTesseract OCR engine object
Dim ocr As New IronTesseract()
Using input As New OcrInput()
    ' Load images in any common format — PNG, JPEG, TIFF, BMP, GIF, or PDF
    input.LoadImage("scanned-document.tiff")
    ' Apply filters to correct low-quality scans automatically
    input.Deskew()   ' Straighten skewed page images
    input.DeNoise()  ' Remove digital noise from scanning artifacts
    ' Read text from the processed document
    Dim result = ocr.Read(input)
    ' Output plain text
    Console.WriteLine(result.Text)
    ' Save as a searchable PDF for document management system integration
    result.SaveAsSearchablePdf("output-searchable.pdf")
End Using
$vbLabelText   $csharpLabel

Resultado de IronOCR

MODI OCR C# vs. IronOCR: Elegir la biblioteca adecuada de reconocimiento óptico de caracteres en C#: Imagen 1 - Ejemplo de salida de IronOCR

El código anterior muestra IronOCR procesando un escaneo TIFF a través de una tubería completa de OCR en solo unas pocas líneas. El objeto OcrInput acepta virtualmente cualquier archivo de imagen o documento PDF, mientras Deskew() y DeNoise() corrigen los artefactos comunes de escaneado que causarían que MODI produzca malos resultados. El método Read devuelve un objeto OcrResult que contiene no solo texto plano, sino datos estructurados organizados por página, párrafo, línea y palabra, cada uno con puntuaciones de confianza e información de coordenadas.

Para proyectos que procesan facturas, formularios o archivos TIFF de múltiples páginas,IronOCR también incluye capacidades de visión por computadora que localizan regiones de texto automáticamente, lectura de códigos de barras y QR en el mismo paso, y soporte para más de 125 idiomas instalables como paquetes NuGet.

¿Cuáles son las Principales Diferencias al Extraer Texto de Imágenes?

La verdadera brecha entre estas dos opciones aparece en el momento en que dejas de usar archivos de muestra "perfectos" y comienzas a lidiar con documentos del mundo real. Estamos hablando de esos escaneos desordenados con manchas de café, páginas inclinadas o fotos de baja resolución de un teléfono inteligente.

MODI fue construido para una era diferente, específicamente para documentos de oficina limpios y de alto contraste. Si tienes un archivo TIFF nítido de un escáner de alta calidad, funcionará bien. Pero si tu imagen está incluso ligeramente rotada o tiene algo de "ruido" digital, la precisión de MODI se desploma. Dado que no tiene filtros integrados para solucionar estos problemas, estás atascado preprocesando las imágenes tú mismo usando una segunda biblioteca como GDI+ o System.Drawing antes de siquiera comenzar el proceso OCR. También es un poco difícil de manejar la memoria; si no llamas manualmente a Marshal.ReleaseComObject, es probable que te encuentres con fugas de memoria en producción.

IronOCR maneja este trabajo pesado para ti desde el principio. En lugar de escribir código personalizado para limpiar una imagen, solo llamas a input.Deskew() o input.DeNoise(). Estos filtros preparan la imagen para que el motor alcance ese nivel de precisión del 99.8%, incluso en documentos "feos".

Consejo Profesional: Si estás migrando desde MODI, no solo intercambies el código, aprovecha los datos de diseño. A diferencia de MODI, que principalmente te da un "bloque" gigante de texto,IronOCR descompone las cosas en párrafos y líneas con puntuaciones de confianza. Esto es una salvación si estás construyendo un procesador de facturas automatizado y necesitas marcar documentos que podrían necesitar la revisión de un humano.

También vale la pena señalar que IronOCR maneja TIFFs y PDFs de varias páginas como un solo objeto. No tienes que buclear manualmente a través de las imágenes como hacías con la colección vieja MODI.Images. Es simplemente más rápido, más limpio, y honestamente, mucho menos frágil.

¿Cómo Pueden los Desarrolladores Migrar del Enfoque Heredado?

Reemplazar MODI en un proyecto existente es sencillo. La migración principal implica intercambiar la referencia COM por un paquete NuGet y actualizar las llamadas al método OCR. Así es como el patrón MODI se traduce al equivalente moderno:

using IronOcr;
// Replace: MODI.Document doc = new MODI.Document();
var ocr = new IronTesseract();
// Replace: doc.Create(filePath); with OcrInput
using var input = new OcrInput();
input.LoadImage("document.tiff");  // Accepts the same TIFF files MODI used
// Replace: doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true);
ocr.Language = OcrLanguage.English;
// Replace: modiImage.Layout.Text
var result = ocr.Read(input);
string text = result.Text;
Console.WriteLine(text);
using IronOcr;
// Replace: MODI.Document doc = new MODI.Document();
var ocr = new IronTesseract();
// Replace: doc.Create(filePath); with OcrInput
using var input = new OcrInput();
input.LoadImage("document.tiff");  // Accepts the same TIFF files MODI used
// Replace: doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true);
ocr.Language = OcrLanguage.English;
// Replace: modiImage.Layout.Text
var result = ocr.Read(input);
string text = result.Text;
Console.WriteLine(text);
Imports IronOcr

Dim ocr As New IronTesseract()

Using input As New OcrInput()
    input.LoadImage("document.tiff") ' Accepts the same TIFF files MODI used
    ocr.Language = OcrLanguage.English
    Dim result = ocr.Read(input)
    Dim text As String = result.Text
    Console.WriteLine(text)
End Using
$vbLabelText   $csharpLabel

El mapeo es casi de uno a uno: MODI.Document.Create se convierte en OcrInput.LoadImage, el método OCR con parámetros de idioma se convierte en ocr.Language más ocr.Read, y Layout.Text se convierte en result.Text. Sin referencia COM, sin dependencia de Office, sin Marshal.ReleaseComObject para gestionar la memoria manualmente.

Más allá del reemplazo directo, la migración también desbloquea características que simplemente no existen en MODI: despliegue multiplataforma a Linux y macOS, despliegue en la nube y en contenedores, salida de PDF buscable, y el motor completo Tesseract 5 con capacidades de entrenamiento de fuentes personalizadas.

¿Cuál Solución Satisface Mejor las Necesidades Modernas de OCR?

MODI cumplió su propósito en una era cuando Microsoft Office era un elemento estándar en cada computadora con Windows. Para los equipos que mantienen sistemas heredados que ya dependen de Office 2003 o 2007, puede seguir funcionando, pero representa una dependencia frágil de software discontinuado sin un futuro viable.

Para cualquier nuevo proyecto o cualquier sistema heredado que enfrente modernización,IronOCR proporciona una solución completa y activamente mantenida. Elimina completamente la dependencia de Office, funciona en todas las principales plataformas, maneja imágenes de baja calidad que desorientarían el enfoque anterior, y ofrece una salida de OCR estructurada mucho más allá del texto plano. Con documentación extensa, soporte de ingeniería directo, y licenciamiento perpetuo de $999, está diseñado para el procesamiento de documentos a nivel de producción a gran escala.

Empiece con IronOCR ahora.
green arrow pointer

¿Listo para desplegar OCR en producción? Explore las opciones de licencia de IronOCR para encontrar la que mejor se adapte a su equipo.

Por favor notaMicrosoft MODI and Tesseract son marcas registradas de sus respectivos dueños. Este sitio no está afiliado con, respaldado por, o patrocinado por Google o Microsoft. 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 Microsoft Office Document Imaging (MODI)?

Microsoft Office Document Imaging (MODI) era un componente OCR incluido en MS Office 2003 y 2007. Permitía a los desarrolladores extraer texto de imágenes utilizando un modelo de objetos basado en COM.

¿Por qué debería considerar el uso de IronOCR en lugar de MODI?

IronOCR ofrece una biblioteca de OCR moderna y totalmente compatible con funciones mejoradas, mayor precisión y mejor integración con aplicaciones .NET en comparación con el componente MODI heredado.

¿Puede IronOCR manejar archivos de imagen TIFF y BMP?

Sí, IronOCR puede procesar y extraer texto de varios formatos de imagen, incluidos TIFF y BMP, lo que proporciona flexibilidad para diferentes necesidades de digitalización de documentos.

¿Cuáles son las ventajas de migrar de MODI a IronOCR?

La migración a IronOCR proporciona acceso a funciones de OCR más avanzadas, actualizaciones periódicas y soporte activo, lo que garantiza que sus proyectos de OCR estén preparados para el futuro.

¿Es IronOCR compatible con Visual Studio?

Sí, IronOCR es totalmente compatible con Visual Studio, lo que permite una integración perfecta en sus proyectos .NET.

¿Cómo se compara la precisión de IronOCR con la de MODI?

IronOCR está diseñado para ofrecer una mayor precisión en el reconocimiento de texto, especialmente con formatos de imagen modernos y documentos complejos, en comparación con la antigua tecnología MODI.

¿Qué tipo de soporte ofrece IronOCR a los desarrolladores?

IronOCR ofrece documentación completa, ejemplos de código y asistencia profesional para ayudar a los desarrolladores a integrar la funcionalidad OCR en sus aplicaciones.

¿Hay ejemplos de código disponibles para IronOCR?

Sí, IronOCR proporciona una variedad de ejemplos de código para ayudar a los desarrolladores a implementar rápidamente el OCR en sus aplicaciones .NET.

¿Puede utilizarse IronOCR para la extracción de texto en tiempo real?

IronOCR es capaz de extraer texto en tiempo real, por lo que es adecuado para aplicaciones que requieren el procesamiento inmediato de imágenes o documentos escaneados.

¿IronOCR soporta el reconocimiento de texto en varios idiomas?

Sí, IronOCR es compatible con el reconocimiento de texto multilingüe, lo que le permite procesar documentos en varios idiomas con gran precisión.

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