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
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
Wynik 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
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.
Gotowy na wdrożenie OCR w produkcji? Zobacz opcje licencjonowania IronOCR by znaleźć odpowiednie dla Twojego zespołu.
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ą.

