Zum Fußzeileninhalt springen
MIT ANDEREN KOMPONENTEN VERGLEICHEN

MODI OCR C# vs. IronOCR: Die richtige optische Zeichenerkennungsbibliothek in C# wählen

Microsoft Office Document Imaging (MODI) war einst eine Standard-OCR-Komponente, die in MS Office 2003 und 2007 enthalten war und es Entwicklern ermöglichte, Text direkt aus gescannten Bildern über ein COM-basiertes Objektmodell zu extrahieren. Jahrelang bildete die MODI.Document-Klasse die Grundlage für unzählige Projekte zur Dokumentendigitalisierung und wandelte TIFF- und BMP-Bilddateien in maschinenlesbaren Text innerhalb von Visual Studio-Lösungen um.

Die Geschichte von MODI hat jedoch einen entscheidenden Haken: Microsoft hat es aus Office 2010 und späteren Versionen entfernt. Entwickler sind daher gezwungen, auf veraltete Office-Installationen oder separate Installationsprogramme zurückzugreifen, um die OCR-Funktionalität weiterhin nutzen zu können. Für jedes moderne .NET Projekt, das auf plattformübergreifende Bereitstellung, Cloud-Umgebungen oder aktuelle Windows-Versionen abzielt, stellt MODI ein erhebliches Problem dar.

Dieser Artikel untersucht, wie MODI OCR C# im Vergleich zu IronOCR, einer speziell for .NET entwickelten Bibliothek zur optischen Zeichenerkennung, hinsichtlich Code-Implementierung, Funktionen, Plattformunterstützung und Lizenzierung abschneidet. Ob es um die Pflege von bestehendem Code oder den Start eines neuen Projekts geht, die hier enthaltenen Informationen helfen Ihnen, die richtige Entscheidung zu treffen.

Testen SieIronOCR30 Tage lang kostenlos und folgen Sie den unten stehenden Codebeispielen.

Wie sieht der Vergleich auf einen Blick aus?

Kategorie MODI OCR IronOCR
Kernarchitektur COM-Interop; erfordert einen Verweis auf die Microsoft Office Document Imaging DLL. Reine .NET -Bibliothek; Tesseract 5-Engine optimiert für C#
Plattform-Unterstützung Nur für Windows; Erfordert die Installationvon Office 2003/2007 auf dem Computer. Windows, Linux, macOS, Azure, Docker, iOS, Android
Bildformate TIFF, MDI, BMP TIFF, PNG, JPEG, BMP, GIF, PDF, mehrseitige Bilder
Sprachunterstützung ~22 Sprachen über miLANG-Parameter Mehr als 125 Sprachen über NuGet -Sprachpakete
OCR-Genauigkeit Hoher Wert auf saubere Dokumente in Standardschriftarten 99,8 %+ mit automatischen Bildkorrekturfiltern
Ausgabeoptionen Klartext aus dem Layoutobjekt Klartext, durchsuchbares PDF, strukturierte Daten (Seiten, Zeilen, Wörter, Barcodes)
Installation Office-Installer + COM-Referenz im Projektmappen-Explorer NuGet Paket: Install-PackageIronOCR
Aktive Entwicklung Eingestellt nach Office 2007 Wird aktiv gepflegt und regelmäßig aktualisiert
Lizenzierung Erfordert eine entsprechende Microsoft Office-Lizenz. Dauerlizenzen ab 749 US-Dollar; 30 Tage kostenlos testen
Unterstützung Nur Community-Foren Direkter technischer Unterstützungper E-Mail, Live-Chat und Telefon

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

MODI führt eine optische Zeichenerkennung (OCR) über ein COM-basiertes Objektmodell durch. Der Prozess beginnt mit der Erstellung eines MODI.Document-Objekts, dem Laden eines Bilddateipfads und dem Aufruf der OCR-Methode zur Analyse der Bilder und Identifizierung der Zeichen. Nach Abschluss des OCR-Prozesses sind Text- und Layoutinformationen über die Bild- und Layoutobjekte jeder Seite zugänglich.

Um MODI in einem Visual Studio-Projekt zu verwenden, muss ein Verweis auf die Microsoft Office Document Imaging Type Library hinzugefügt werden. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Ordner "Verweise", wählen Sie die Registerkarte "COM" und anschließend die entsprechende MODI-Version (11.0 für Office 2003 oder 12.0 für 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

Diese Funktion demonstriert den Standard-MODI-Workflow: Die Create-Methode lädt die Datei, die OCR-Methode führt die Erkennung mit einer angegebenen Sprache durch, und Layout.Text liefert die extrahierte Zeichenkette. Die Anweisung return extractedText liefert die Ausgabe an den Aufrufer.

MODI bietet zwar eine gute Genauigkeit bei scharfen, hochauflösenden Dokumentenbildern, weist aber auch deutliche Einschränkungen auf. Es unterstützt nur die Formate TIFF, MDI und BMP. Es erfordert die Installationvon Microsoft Office auf jedem Computer, auf dem die Anwendung ausgeführt wird, einschließlich der Produktionsserver. Es gibt keine integrierte Unterstützung für das Scannen von Bildern geringer Qualität, die Korrektur von Verzerrungen oder die Reduzierung von digitalem Rauschen. Da MODI auf COM Interop basiert, ist es zudem nicht mit .NET Core, .NET 5+ oder plattformübergreifenden Szenarien kompatibel und somit für moderne Bereitstellungsziele wie Docker-Container oder Azure App Services ungeeignet.

Wie handhabt eine moderne .NET Bibliothek die OCR-Funktionalität?

IronOCR ersetzt den COM-Interop-Ansatz durch eine reine .NET -API , die über ein einzelnes NuGet Paket installiert wird. Die IronTesseract-Klasse kapselt eine stark optimierte Tesseract 5-Engine, und die OcrInput-Klasse übernimmt das Laden von Bildern, die Vorverarbeitung und die Unterstützung mehrerer Formate , alles ohne dass Microsoft Office oder sonstige externe Abhängigkeiten auf dem Zielcomputer erforderlich sind.

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

IronOCR-Ausgabe

MODI OCR C# vs. IronOCR: Die richtige Bibliothek für optische Zeichenerkennung in C# auswählen: Bild 1 –IronOCR-Beispielausgabe

Der obige Code zeigt, wieIronOCReinen TIFF-Scan durch eine vollständige OCR-Pipeline in nur wenigen Zeilen verarbeitet. Das OcrInput-Objekt akzeptiert praktisch jede Bilddatei oder jedes PDF-Dokument, während Deskew() und DeNoise() häufige Scanartefakte korrigieren, die dazu führen würden, dass MODI schlechte Ergebnisse liefert. Die Read-Methode gibt ein OcrResult-Objekt zurück, das nicht nur einfachen Text, sondern strukturierte Daten enthält, die nach Seite, Absatz, Zeile und Wort organisiert sind und jeweils Konfidenzwerte und Koordinateninformationen aufweisen.

Für Projekte, die Rechnungen, Formulare oder mehrseitige TIFF-Dateien verarbeiten, bietetIronOCRaußerdem Funktionen für Computer Vision , die Textbereiche automatisch lokalisieren, Barcode- und QR-Code-Lesen im selben Arbeitsgang sowie Unterstützung für mehr als 125 Sprachen, die als NuGet Pakete installiert werden können.

Was sind die wichtigsten Unterschiede beim Extrahieren von Text aus Bildern?

Der eigentliche Unterschied zwischen diesen beiden Optionen zeigt sich in dem Moment, in dem man aufhört, mit "perfekten" Beispieldateien zu arbeiten und anfängt, sich mit realen Dokumenten auseinanderzusetzen. Wir sprechen von diesen verwaschenen Scans mit Kaffeeflecken, schiefen Seiten oder niedrig aufgelösten Fotos vom Smartphone.

MODI wurde für eine andere Ära entwickelt, speziell für saubere, kontrastreiche Bürodokumente. Wenn Sie eine gestochen scharfe TIFF-Datei von einem hochwertigen Scanner haben, ist das Programm bestens geeignet. Sobald Ihr Bild aber auch nur leicht gedreht ist oder digitales Rauschen aufweist, sinkt die Genauigkeit von MODI rapide. Da es keine eingebauten Filter zur Behebung dieser Probleme gibt, bleibt Ihnen nichts anderes übrig, als die Bilder selbst mit einer zweiten Bibliothek wie GDI+ oder System.Drawing vorzuverarbeiten, bevor Sie überhaupt mit dem OCR-Prozess beginnen können. Auch die Speicherverwaltung ist etwas umständlich; Wenn Sie Marshal.ReleaseComObject nicht manuell aufrufen, werden Sie im Produktivbetrieb wahrscheinlich auf Speicherlecks stoßen.

IronOCR nimmt Ihnen diese schwere Arbeit direkt nach dem Auspacken ab. Anstatt eigenen Code zum Bereinigen eines Bildes zu schreiben, rufen Sie einfach input.Deskew() oder input.DeNoise() auf. Diese Filter bereiten das Bild so vor, dass die Engine selbst bei "unansehnlichen" Dokumenten eine Genauigkeit von 99,8 % erreicht.

Profi-Tipp: Wenn Sie von MODI migrieren, tauschen Sie nicht einfach nur den Code aus, sondern nutzen Sie die Layoutdaten. Im Gegensatz zu MODI, das meist einen riesigen Textklumpen liefert, zerlegtIronOCRden Text in Absätze und Zeilen mit entsprechenden Konfidenzwerten. Dies ist ein Lebensretter, wenn Sie einen automatisierten Rechnungsverarbeitungs-Software entwickeln und Dokumente kennzeichnen müssen, die möglicherweise von einem Menschen überprüft werden müssen.

Erwähnenswert ist auch, dassIronOCRmehrseitige TIFFs und PDFs als ein einziges Objekt verarbeitet. Sie müssen die Bilder nicht mehr manuell durchlaufen, wie Sie es bei der alten MODI.Images-Sammlung getan haben. Es ist einfach schneller, sauberer und ehrlich gesagt auch viel weniger anfällig.

Wie können Entwickler vom herkömmlichen Ansatz migrieren?

Der Austausch von MODI in einem bestehenden Projekt ist unkompliziert. Die Kernmigration besteht darin, die COM-Referenz durch ein NuGet Paket zu ersetzen und die OCR-Methodenaufrufe zu aktualisieren. So lässt sich das MODI-Muster in die moderne Entsprechung übersetzen:

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

Die Zuordnung ist nahezu eins zu eins: MODI.Document.Create wird zu OcrInput.LoadImage, die OCR-Methode mit Sprachparametern wird zu ocr.Language Plus ocr.Read und Layout.Text wird zu result.Text. Keine COM-Referenz, keine Office-Abhängigkeit, kein Marshal.ReleaseComObject zur manuellen Speicherverwaltung.

Über den direkten Ersatz hinaus ermöglicht die Migration auch Funktionen, die es in MODI einfach nicht gibt: plattformübergreifende Bereitstellung auf Linux und macOS, Cloud- und Container-Bereitstellung, durchsuchbare PDF-Ausgabe und die vollständige Tesseract 5-Engine mit benutzerdefinierten Schriftartentrainingsfunktionen .

Welche Lösung passt am besten zu den modernen OCR-Anforderungen?

MODI erfüllte seinen Zweck in einer Zeit, als Microsoft Office zur Standardausstattung jedes Windows-Computers gehörte. Für Teams, die Legacy-Systeme pflegen, die bereits von Office 2003 oder 2007 abhängig sind, mag es zwar noch funktionieren, aber es stellt eine fragile Abhängigkeit von eingestellter Software ohne Zukunftsperspektive dar.

Für jedes neue Projekt oder jedes Legacy-System, das modernisiert werden soll, bietetIronOCReine vollständige, aktiv gewartete Lösung. Es beseitigt die Abhängigkeit von Office vollständig, läuft auf allen wichtigen Plattformen, verarbeitet auch Bilder von geringer Qualität, die den älteren Ansatz überfordern würden, und liefert eine strukturierte OCR-Ausgabe, die weit über einfachen Text hinausgeht. Mit umfassender Dokumentation , direktem technischen Support und unbefristeter Lizenzierung ab 749 US-Dollar ist es für die produktionsreife Dokumentenverarbeitung im großen Maßstab konzipiert.

Starten Sie jetzt mit IronOCR.
green arrow pointer

Bereit für den OCR-Einsatz in der Produktion? Entdecken Sie dieIronOCR-Lizenzoptionen , um die passende Lösung für Ihr Team zu finden.

Kannaopat Udonpant
Software Ingenieur
Bevor er Software-Ingenieur wurde, absolvierte Kannapat ein PhD in Umweltressourcen an der Hokkaido University in Japan. Während seines Studiums wurde Kannapat auch Mitglied des Vehicle Robotics Laboratory, das Teil der Fakultät für Bioproduktionstechnik ist. Im Jahr 2022 nutzte er seine C#-Kenntnisse, um dem Engineering-Team von Iron Software ...
Weiterlesen

Iron Support Team

Wir sind 24 Stunden am Tag, 5 Tage die Woche online.
Chat
E-Mail
Rufen Sie mich an