Ir para o conteúdo do rodapé
COMPARAR COM OUTROS COMPONENTES

MODI OCR C# vs. IronOCR: Escolhendo a Biblioteca Certa de Reconhecimento Óptico de Caracteres em C#

Microsoft Office Document Imaging (MODI) era outrora um componente OCR incluído no MS Office 2003 e 2007, permitindo que os desenvolvedores extraíssem texto de imagens digitalizadas diretamente através de um modelo de objeto baseado em COM. Por anos, a classe MODI.Document alimentou inúmeros projetos de digitalização de documentos, convertendo arquivos de imagem TIFF e BMP em texto legível por máquina dentro de soluções do Visual Studio.

No entanto, a história do MODI tem um ponto importante: a Microsoft o removeu do Office 2010 e das versões posteriores, deixando os desenvolvedores a depender de instalações antigas do Office ou instaladores autônomos apenas para manter sua funcionalidade OCR viva. Para qualquer projeto moderno do .NET visando implantação multiplataforma, ambientes de nuvem ou versões recentes do Windows, o MODI apresenta sérios atritos.

Este artigo examina como oMODI OCRC# se compara ao IronOCR, uma biblioteca de reconhecimento óptico de caracteres .NET desenvolvida especificamente, através da implementação de código, recursos, suporte a plataformas e licenciamento. Seja mantendo código legado ou iniciando um novo projeto, os detalhes aqui ajudarão a informar a escolha certa.

Experimente oIronOCRgratuitamente por 30 dias para seguir junto com os exemplos de código abaixo.

Como a Comparação se Desdobra de Relance?

Categoria MODI OCR IronOCR
Arquitetura Principal Interoperação COM; requer referência do DLL Microsoft Office Document Imaging Biblioteca pura .NET; Motor Tesseract 5 otimizado para C#
Suporte da plataforma Apenas Windows; requer Office 2003/2007 instalado no computador Windows, Linux, macOS, Azure, Docker, iOS, Android
Formatos de Imagem TIFF, MDI, BMP TIFF, PNG, JPEG, BMP, GIF, PDF, imagens de múltiplas páginas
Suporte de Idioma ~22 idiomas via parâmetro miLANG 125+ idiomas via pacotes de idioma NuGet
Precisão do OCR Alta em documentos limpos, com fonte padrão 99,8%+ com filtros de correção de imagem automáticos
Opções de Saída Texto simples do objeto Layout Texto simples, PDF pesquisável, dados estruturados (páginas, linhas, palavras, códigos de barras)
Instalação Instalador do Office + referência COM no Solution Explorer Pacote NuGet: Install-Package IronOcr
Desenvolvimento Ativo Descontinuado após o Office 2007 Mantido ativamente com atualizações regulares
Licenciamento Requer licença qualificada do Microsoft Office Licenças perpétuas a partir de $749; teste gratuito de 30 dias
Apoiar Somente fóruns da comunidade Suporte técnico direto via email, chat ao vivo e telefone

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

MODI realiza reconhecimento ótico de caracteres (OCR) através de um modelo de objeto baseado em COM. O processo começa criando um objeto MODI.Document, carregando um caminho de arquivo de imagem e invocando o método OCR para analisar imagens e identificar caracteres. Após a conclusão do processo de OCR, texto e informações de layout estão acessíveis através dos objetos Image e Layout de cada página.

Para usar MODI em um projeto do Visual Studio, uma referência à Microsoft Office Document Imaging Type Library deve ser adicionada. No Solution Explorer, clique com o botão direito na pasta Referências, selecione a aba COM e escolha a versão apropriada do MODI (11.0 para Office 2003 ou 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;
}
$vbLabelText   $csharpLabel

Esta função demonstra o fluxo de trabalho padrão do MODI: o método Create carrega o arquivo, o método OCR realiza o reconhecimento usando um idioma especificado, e Layout.Text fornece a string extraída. A declaração retorno extractedText entrega a saída para o chamador.

Embora o MODI ofereça precisão adequada para imagens de documentos nítidas e de alta resolução, ele apresenta limitações notáveis. Ele suporta apenas os formatos TIFF, MDI e BMP. Requer uma instalação do Microsoft Office em cada computador que executa o aplicativo, incluindo servidores de produção. Não há suporte embutido para digitalização de imagens de baixa qualidade, correção de inclinação ou redução de ruído digital. Além disso, como o MODI depende do Interop COM, não pode ser usado em .NET Core, .NET 5+ ou qualquer cenário multiplataforma, tornando-o inadequado para alvos de implantação modernos como contêineres Docker ou Azure App Services.

Como uma biblioteca moderna .NET lida com funcionalidade de OCR?

IronOCR substitui a abordagem COM Interop por uma API pura .NET que instala através de um único pacote NuGet. A classe IronTesseract envolve um motor Tesseract 5 fortemente otimizado, e a classe OcrInput lida com carregamento de imagens, pré-processamento e suporte a múltiplos formatos, tudo sem exigir Microsoft Office ou qualquer dependência externa no computador 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");
$vbLabelText   $csharpLabel

Saída do IronOCR

MODI OCR C# vs. IronOCR: Escolhendo a Biblioteca de Reconhecimento Óptico de Caracteres Correta em C#: Imagem 1 - Exemplo de saída do IronOCR

O código acima mostra oIronOCRprocessando uma digitalização TIFF através de um pipeline completo de OCR em apenas algumas linhas. O objeto OcrInput aceita virtualmente qualquer arquivo de imagem ou documento PDF, enquanto Deskew() e DeNoise() corrigem os artefatos comuns de digitalização que causariam resultados ruins no MODI. O método Read retorna um objeto OcrResult contendo não apenas texto simples, mas dados estruturados organizados por página, parágrafo, linha e palavra, cada um com pontuações de confiança e informações de coordenadas

Para projetos que processam faturas, formulários ou arquivos TIFF de múltiplas páginas, oIronOCRtambém inclui recursos de visão computacional que localizam automaticamente regiões de texto, leitura de código de barras e QR no mesmo passe, e suporte para 125+ idiomas instaláveis como pacotes NuGet.

Quais são as principais diferenças ao extrair texto de imagens?

A verdadeira diferença entre essas duas opções aparece no momento em que você para de usar arquivos de amostra "perfeitos" e começa a lidar com documentos do mundo real. Estamos falando sobre aquelas digitalizações bagunçadas com manchas de café, páginas inclinadas ou fotos de baixa resolução tiradas de um smartphone.

MODI foi construído para uma era diferente, especificamente para documentos de escritório limpos e de alto contraste. Se você tem um arquivo TIFF nítido de um scanner de ponta, ele funcionará bem. Mas se a sua imagem estiver ligeiramente girada ou tiver algum "ruído" digital, a precisão do MODI cai drasticamente. Como ele não possui filtros integrados para corrigir esses problemas, você está preso a pré-processar imagens você mesmo usando uma segunda biblioteca como GDI+ ou System.Drawing antes mesmo de começar o processo de OCR. Também é um pouco irritante gerenciar a memória; se você não chamar manualmente o Marshal.ReleaseComObject, provavelmente encontrará vazamentos de memória em produção.

IronOCR faz este trabalho pesado para você desde o primeiro momento. Em vez de escrever código personalizado para limpar uma imagem, você só precisa chamar input.Deskew() ou input.DeNoise(). Esses filtros preparam a imagem para que o mecanismo alcance aquela marca de 99,8% de precisão, mesmo em documentos "feios".

Dica Pro: Se você está migrando do MODI, não apenas troque o código, aproveite os dados de layout. Ao contrário do MODI, que geralmente fornece um grande "bloco" de texto, oIronOCRdivide as coisas em parágrafos e linhas com pontuações de confiança. Isso é um salva-vidas se você está construindo um processador de faturas automatizado e precisa destacar documentos que possam precisar do olhar humano para verificação.

Também vale a pena notar que oIronOCRlida com TIFFs e PDFs de várias páginas como um único objeto. Você não precisa percorrer imagens manualmente como fazia com a coleção antiga MODI.Images. É simplesmente mais rápido, mais limpo e, honestamente, muito menos frágil.

Como os Desenvolvedores Podem Migrar da Abordagem Legada?

Substituir o MODI em um projeto existente é direto. A migração principal envolve trocar a referência COM por um pacote NuGet e atualizar as chamadas de método OCR. Aqui está como o padrão MODI se traduz para o 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);
$vbLabelText   $csharpLabel

O mapeamento é quase um-para-um: MODI.Document.Create se torna OcrInput.LoadImage, o método OCR com parâmetros de idioma se torna ocr.Language além de ocr.Read, e Layout.Text se torna result.Text. Sem referência COM, sem dependência do Office, sem Marshal.ReleaseComObject para gerenciar memória manualmente.

Além da substituição direta, a migração também desbloqueia recursos que simplesmente não existem no MODI: implantação multiplataforma para Linux e macOS, implantação em nuvem e em contêiner, saída PDF pesquisável e o mecanismo completo Tesseract 5 com capacidades de treinamento de fonte personalizada.

Qual Solução Melhor se Encaixa nas Necessidades Modernas de OCR?

MODI cumpriu seu propósito em uma era em que o Microsoft Office era um padrão em todos os computadores com Windows. Para equipes que mantêm sistemas legados que já dependem do Office 2003 ou 2007, pode ainda funcionar, mas representa uma dependência frágil em softwares descontinuados sem caminho adiante.

Para qualquer novo projeto, ou qualquer sistema legado passando por modernização, oIronOCRfornece uma solução completa e ativamente mantida. Elimina completamente a dependência do Office, roda em todas as principais plataformas, lida com imagens de baixa qualidade que iriam confundir a abordagem mais antiga e entrega uma saída de OCR estruturada muito além do texto simples. Com documentação extensa, suporte técnico direto e licenciamento perpétuo a partir de $749, ele é construído para o processamento de documentos em escala de produção.

!{--010011000100100101000010010100100100000101010010010110010101111101000111010001010101010100010111110101001101010100010000010101001001010100010001010100010001011111010101110100100 101010100010010000101111101010000010100100111101000100010101010100001101010100010111110101010001010010010010010010010100000101001100010111110100001001001100010011110100001101001011--}

Pronto para implantar OCR em produção? Explore as opções de licenciamento do IronOCR para encontrar o ajuste certo para sua equipe.

Kannaopat Udonpant
Engenheiro de Software
Antes de se tornar Engenheiro de Software, Kannapat concluiu um doutorado em Recursos Ambientais pela Universidade de Hokkaido, no Japão. Durante o doutorado, Kannapat também integrou o Laboratório de Robótica Veicular, que faz parte do Departamento de Engenharia de Bioprodução. Em 2022, ele utilizou suas habilidades ...
Leia mais

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me