Przejdź do treści stopki
PORóWNAJ Z INNYMI KOMPONENTAMI

Porównanie pomiędzy IronOCR a Dynamsoft OCR

Microsoft Office Document Imaging (MODI) był kiedyś komponentem OCR zainstalowanym w pakiecie MS Office 2003 i 2007, umożliwiającym programistom ekstrakcję tekstu z zeskanowanych obrazów bezpośrednio poprzez model obiektu oparty na COM. Przez lata klasa MODI.Document napędzała niezliczone projekty cyfryzacji dokumentów, konwertując pliki obrazu TIFF i BMP na tekst maszynowy w ramach rozwiązań Visual Studio.

Jednak historia MODI ma znaczącą trudność: Microsoft usunął go z wersji Office 2010 i późniejszych, pozostawiając programistom poleganie na przestarzałych instalacjach biurowych lub samodzielnych instalatorach, aby utrzymać swoją funkcjonalność OCR. Dla nowoczesnych projektów .NET skierowanych na wdrożenia ogólnokrajowe, środowiska chmurowe lub nowsze wersje Windows, MODI stanowi poważne utrudnienie.

W tym artykule przeanalizowano, jakMODI OCRw C# porównuje się z IronOCR, biblioteka OCR .NET zaprojektowaną specjalnie do optycznego rozpoznawania znaków, pod kątem implementacji kodu, funkcji, wsparcia platformy i licencjonowania. Niezależnie od obsługi kodu dziedziczonego czy zaczynania nowego projektu, szczegóły tutaj pomogą podjąć właściwą decyzję.

Wypróbuj IronOCR za darmo przez 30 dni, aby śledzić przykłady kodu poniżej.

Jak wygląda porównanie w skrócie?

Kategoria MODI OCR IronOCR
Architektura podstawowa COM Interop; wymaga odniesienia do biblioteki DLL Microsoft Office Document Imaging Czysta biblioteka .NET; Silnik Tesseract 5 zoptymalizowany dla C#
Obsługa platform Tylko Windows; wymaga zainstalowania Office 2003/2007 na komputerze Windows, Linux, macOS, Azure, Docker, iOS, Android
Formaty obrazów TIFF, MDI, BMP TIFF, PNG, JPEG, BMP, GIF, PDF, obrazy wielostronicowe
Obsługa języków ~22 języki poprzez parametr miLANG 125+ języków poprzez paczki językowe NuGet
Dokładność OCR Wysoka na czystych dokumentach o standardowej czcionce 99,8%+ z automatycznymi filtrami korekcji obrazów
Opcje wyjściowe Zwykły tekst z obiektu Layout Zwykły tekst, przeszukiwalny PDF, dane strukturalne (strony, linie, słowa, kody kreskowe)
Instalacja Instalator Office + odniesienie COM w Eksploratorze Rozwiązań Paczka NuGet: Install-Package IronOcr
Aktywny rozwój Przerwano po Office 2007 Utrzymywane aktywnie z regularnymi aktualizacjami
Licencjonowanie Wymaga odpowiedniej licencji Microsoft Office Licencje wieczyste od $999; bezpłatna 30-dniowa wersja próbna
Wsparcie Tylko fora społecznościowe Bezpośrednie wsparcie inżynieryjne poprzez email, czat na żywo i telefon

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

MODI wykonuje optyczne rozpoznawanie znaków (OCR) poprzez model obiektowy oparty na COM. Proces rozpoczyna się od stworzenia obiektu MODI.Document, załadowania ścieżki pliku obrazu i wezwania metody OCR w celu analizy obrazów i identyfikacji znaków. Po zakończeniu procesu OCR, tekst i informacje o układzie są dostępne poprzez obiekty Image i Layout dla każdej strony.

Aby używać MODI w projekcie Visual Studio, trzeba dodać odniesienie do Biblioteki Typów Microsoft Office Document Imaging. W Eksploratorze Rozwiązań, kliknij prawym przyciskiem myszy folder Odwołania, wybierz kartę COM i wybierz odpowiednią wersję MODI (11.0 dla Office 2003 lub 12.0 dla 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

Ta funkcja demonstruje standardowy przepływ pracy MODI: metoda Create ładuje plik, metoda OCR wykonuje rozpoznanie przy użyciu określonego języka, a Layout.Text dostarcza wyekstrahowany ciąg znaków. Instrukcja zwrotu extractedText dostarcza dane wyjściowe do wywołującego.

Podczas gdy MODI oferuje przyzwoitą dokładność dla czystych, wysokiej jakości obrazów dokumentów, ma znaczące ograniczenia. Obsługuje tylko formaty TIFF, MDI i BMP. Wymaga instalacji Microsoft Office na każdym komputerze, który uruchamia aplikację, w tym serwerach produkcyjnych. Nie ma wbudowanego wsparcia dla skanowania obrazów niskiej jakości, korekcji przekosu ani redukcji cyfrowego szumu. Ponadto, ponieważ MODI polega na COM Interop, nie można go używać w .NET Core, .NET 5+ ani w żadnym scenariuszu ogólnokrajowym, co czyni go nieodpowiednim dla nowoczesnych celów wdrożeniowych, takich jak kontenery Docker czy usługi aplikacji Azure.

Jak nowoczesna biblioteka .NET obsługuje funkcjonalność OCR?

IronOCR zastępuje podejście COM Interop czystym API .NET, które instaluje się za pośrednictwem pojedynczego pakietu NuGet. Klasa IronTesseract owija mocno zoptymalizowany silnik Tesseract 5, a klasa OcrInput obsługuje ładowanie obrazów, wstępne przetwarzanie i obsługę wielu formatów, wszystko bez potrzeby Microsoft Office lub jakiejkolwiek zewnętrznej zależności na docelowym komputerze.

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

Wynik IronOCR

MODI OCR C# vs. IronOCR: Wybor odpowiedniej biblioteki optycznego rozpoznawania znakow w C#: Obraz 1 - przyklad wyjscia IronOCR

Powyższy kod pokazuje, jak IronOCR przetwarza skan TIFF poprzez kompletny proces OCR w zaledwie kilku liniach. Obiekt OcrInput akceptuje praktycznie dowolny plik obrazu lub dokument PDF, podczas gdy Deskew() i DeNoise() korygują typowe artefakty skanowania, które mogłyby spowodować, że MODI wygenerowałoby słabe wyniki. Metoda Read zwraca obiekt OcrResult zawierający nie tylko tekst, ale i uporządkowane dane zorganizowane według strony, akapitu, linii i słowa, każdy z wynikami pewności i informacją o współrzędnych

Dla projektów przetwarzających faktury, formularze lub pliki TIFF wielostronicowe,IronOCR zawiera także możliwości widzenia komputerowego lokalizujące regiony tekstowe automatycznie, czytanie kodów kreskowych i QR w jednym przejściu oraz wsparcie dla 125+ języków instalowanych jako pakiety NuGet.

Jakie są kluczowe różnice przy ekstrakcji tekstu z obrazów?

Rzeczywista różnica między tymi dwoma opcjami ujawnia się, gdy przestaniesz używać "idealnych" plików i zaczniesz przetwarzać dokumenty z rzeczywistego świata. Mówimy o tych chaotycznych skanach z plamami po kawie, przechylonymi stronami lub zdjęciami o niskiej rozdzielczości z telefonu.

MODI zostało stworzone na inną epokę, specjalnie dla czystych, wysokokontrastowych dokumentów biurowych. Jeśli masz wyraźny plik TIFF z wysokiej klasy skanera, to będzie działać dobrze. Ale jeśli twój obraz jest nawet lekko obrócony lub zawiera trochę cyfrowego "szumu", dokładność MODI drastycznie spada. Ponieważ nie ma wbudowanych filtrów do naprawy tych problemów, musisz samodzielnie wstępnie przetworzyć obrazy, używając drugiej biblioteki jak GDI+ lub System.Drawing, zanim rozpoczniesz proces OCR. Zarządzanie pamięcią jest również dość uciążliwe; jeśli nie wywołasz ręcznie Marshal.ReleaseComObject, najprawdopodobniej natkniesz się na wycieki pamięci w produkcji.

IronOCR wykonuje tę ciężką pracę za Ciebie od razu po wyjęciu z pudełka. Zamiast pisać własny kod do oczyszczania obrazu, po prostu wywołujesz input.Deskew() lub input.DeNoise(). Te filtry przygotowują obraz, aby silnik osiągnął 99,8% dokładności, nawet na "brzydkich" dokumentach.

Porada: Jeśli migrujesz z MODI, nie zamieniaj tylko kodu, skorzystaj z danych o układzie. W przeciwieństwie do MODI, które głównie dawają ogromną "bryłę" tekstu,IronOCR dzieli go na akapity i linie z wynikami pewności. To jest niezastąpione, jeśli tworzysz automatyczny procesor faktur i musisz oznaczać dokumenty, które mogą potrzebować weryfikacji przez człowieka.

Warto również zauważyć, że IronOCR obsługuje TIFFy i PDFy wielostronicowe jako jeden obiekt. Nie musisz manulanie przechodzić przez obrazy jak w starej kolekcji MODI.Images. Jest po prostu szybsze, czystsze i naprawdę dużo mniej podatne na awarie.

Jak programiści mogą migrować z podejścia legacy?

Zastąpienie MODI w istniejącym projekcie jest proste. Główna migracja polega na zamianie referencji COM na pakiet NuGet i aktualizacji wywołań metod OCR. Oto jak wzorzec MODI przekłada się na nowoczesny odpowiednik:

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

Mapowanie jest niemal jeden-do-jednego: MODI.Document.Create staje się OcrInput.LoadImage, metoda OCR z parametrami językowymi staje się ocr.Language wraz z ocr.Read, a Layout.Text staje się result.Text. Bez referencji COM, bez zależności Office, bez Marshal.ReleaseComObject do ręcznego zarządzania pamięcią.

Poza bezpośrednią zamianą, migracja również odblokowuje funkcje, które po prostu nie istnieją w MODI: wdrożenie wieloplatformowe do Linuxa i macOS, wdrożenie w chmurze i kontenerze, wyjście w postaci przeszukiwalnego PDF i kompletny silnik Tesseract 5 z możliwościami treningu czcionek.

Które rozwiązanie najlepiej odpowiada współczesnym potrzebom OCR?

MODI spełniało swoją rolę w epoce, gdy Microsoft Office był standardowym wyposażeniem każdego komputera z Windows. Dla zespołów utrzymujących systemy legacy, które już zależą od Office 2003 lub 2007, może nadal działać, ale stanowi kruche uzależnienie od porzuconego oprogramowania bez drogi naprzód.

Dla każdego nowego projektu, lub każdego systemu legacy zmierzającego ku modernizacji,IronOCR zapewnia kompletną, aktywnie utrzymywaną rozwiązanie. Całkowicie eliminuje zależność od Office, działa na każdej głównej platformie, obsługuje niskiej jakości obrazy, które zatrzymałyby starsze podejście, i dostarcza strukturalne wyjście OCR daleko wykraczające poza zwykły tekst. Z rozbudowana dokumentacja, bezposrednim wsparciem inzynierskim i licencjonowaniem wieczystym od $999, jest przeznaczony do przetwarzania dokumentow klasy produkcyjnej na duza skale.

Zacznij z IronOCR teraz.
green arrow pointer

Gotowy na wdrożenie OCR w produkcji? Zobacz opcje licencjonowania IronOCR by znaleźć odpowiednie dla Twojego zespołu.

Zwróć uwagęMicrosoft MODI i Tesseract są zarejestrowanymi znakami towarowymi ich odpowiednich właścicieli}. Ta strona nie jest powiązana, zatwierdzona ani sponsorowana przez Google ani Microsoft. Wszystkie nazwy produktów, logo i marki są własnością ich odpowiednich właścicieli. Porównania mają charakter wyłącznie informacyjny i odzwierciedlają informacje dostępne publicznie w momencie pisania.

Często Zadawane Pytania

Czym jest Microsoft Office Document Imaging (MODI)?

Microsoft Office Document Imaging (MODI) był komponentem OCR dołączanym do MS Office 2003 i 2007. Umożliwiał programistom wyodrębnianie tekstu z obrazów za pomocą modelu obiektowego opartego na COM.

Dlaczego powinienem rozważyć użycie IronOCR zamiast MODI?

IronOCR oferuje nowoczesną, w pełni wspieraną bibliotekę OCR z ulepszonymi funkcjami, wyższą dokładnością i lepszą integracją z aplikacjami .NET w porównaniu do starego komponentu MODI.

Czy IronOCR obsługuje pliki graficzne TIFF i BMP?

Tak, IronOCR może przetwarzać i wyodrębniać tekst z różnych formatów obrazów, w tym TIFF i BMP, zapewniając elastyczność dla różnych potrzeb digitalizacji dokumentów.

Jakie są korzyści z migracji z MODI do IronOCR?

Migracja do IronOCR zapewnia dostęp do bardziej zaawansowanych możliwości OCR, regularnych aktualizacji i aktywnego wsparcia, zapewniając, że Twoje projekty OCR są przyszłościowe.

Czy IronOCR jest kompatybilny z Visual Studio?

Tak, IronOCR jest w pełni kompatybilny z Visual Studio, umożliwiając płynne integrowanie z projektami .NET.

Jak dokładność IronOCR wypada w porównaniu z MODI?

IronOCR został zaprojektowany, aby zapewniać wyższą dokładność w rozpoznawaniu tekstu, szczególnie w przypadku nowoczesnych formatów obrazów i skomplikowanych dokumentów, w porównaniu do starszej technologii MODI.

Jakie wsparcie oferuje IronOCR dla deweloperów?

IronOCR oferuje kompleksową dokumentację, przykłady kodu i profesjonalne wsparcie, aby pomóc deweloperom w integracji funkcji OCR w ich aplikacjach.

Czy są dostępne jakieś przykłady kodu dla IronOCR?

Tak, IronOCR dostarcza różnorodne przykłady kodu, aby pomóc deweloperom szybko wdrożyć OCR w ich aplikacjach .NET.

Czy IronOCR można używać do ekstrakcji tekstu w czasie rzeczywistym?

IronOCR jest zdolne do ekstrakcji tekstu w czasie rzeczywistym, co czyni go odpowiednim do aplikacji wymagających natychmiastowego przetwarzania skanowanych obrazów lub dokumentów.

Czy IronOCR obsługuje rozpoznawanie tekstu w wielu językach?

Tak, IronOCR obsługuje rozpoznawanie tekstu w wielu językach, co pozwala mu przetwarzać dokumenty w różnych językach z dużą dokładnością.

Kannaopat Udonpant
Inżynier oprogramowania
Zanim stał się inżynierem oprogramowania, Kannapat ukończył doktorat z zasobów środowiskowych na Uniwersytecie Hokkaido w Japonii. W czasie studiowania, Kannapat również został członkiem Laboratorium Robotyki Pojazdów, które jest częścią Wydziału Inżynierii Bioprodukcji. W 2022 roku wykorzystał swoje umiejętności w ...
Czytaj więcej

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie