MODI OCR C# ile IronOCR: C#'de Doğru Optik Karakter Tanıma Kütüphanesi Seçimi
Microsoft Office Document Imaging (MODI) bir zamanlar MS Office 2003 ve 2007 ile birlikte gelen bir OCR bileşeniydi ve geliştiricilerin taranmış görüntülerden doğrudan metin çıkarmasına olanak sağlıyordu. MODI.Document sınıfı yıllarca sayısız belge dijitalleştirme projesini güçlendirmiştir, TIFF ve BMP görüntü dosyalarını Visual Studio çözümleri içinde makine tarafından okunabilir metne dönüştürmüştür.
Ancak, MODI'nin hikayesi önemli bir pürüz içermektedir: Microsoft, Office 2010 ve sonraki sürümlerinden bunu kaldırarak, geliştiricilerin sadece OCR işlevselliklerini sürdürebilmek için eski Office kurulumlarına veya bağımsız yükleyicilere güvenmeleri gerekmektedir. Herhangi bir modern .NET projesi için bulut ortamları veya yeni Windows sürümleri gibi çapraz platform dağıtımlarını hedefleyen MODI, ciddi bir sürtünmeyi temsil eder.
Bu makale,MODI OCRC# ve IronOCR'nin, kod uygulaması, özellikler, platform desteği ve lisanslama açısından nasıl karşılaştırıldığını inceler. Eski kodu sürdürmek veya yeni bir projeye başlamak söz konusu olduğunda, buradaki detaylar doğru tercihi bilgilendirmeye yardımcı olacaktır.
IronOCR'u 30 gün boyunca ücretsiz deneyin ve aşağıdaki kod örnekleriyle birlikte ilerleyin.
Karşılaştırma Nasıl Göz Atılabilir?
| Kategori | MODI OCR | IronOCR |
|---|---|---|
| Temel Mimari | COM Interop; Microsoft Office Document Imaging DLL referansı gerektirir | Saf .NET kütüphanesi; C# için optimize edilmiş Tesseract 5 motoru |
| Platform Desteği | Sadece Windows; bilgisayarda Office 2003/2007'nin kurulmuş olması gereklidir | Windows, Linux, macOS, Azure, Docker, iOS, Android |
| Görüntü Formatları | TIFF, MDI, BMP | TIFF, PNG, JPEG, BMP, GIF, PDF, çok sayfalı görüntüler |
| Dil Desteği | ~22 dil miLANG parametresi ile | 125'ten fazla dil NuGet dil paketleri ile |
| OCR Doğruluğu | Temiz, standart yazı tipi belgelerde yüksek | %99,8+ otomatik görüntü düzeltme filtreleri ile |
| Çıktı Seçenekleri | Layout nesnesinden düz metin | Düz metin, aranabilir PDF, yapılandırılmış veri (sayfalar, satırlar, kelimeler, barkodlar) |
| Kurulum | Office yükleyicisi + Çözüm Gezgini'nde COM referansı | NuGet paketi: Install-Package IronOcr |
| Aktif Geliştirme | Office 2007 sonrası durduruldu | Düzenli güncellemelerle aktif olarak sürdürülen |
| Lisanslama | Uygun bir Microsoft Office lisansı gerektirir | $749'dan başlayan süresiz lisanslar; ücretsiz 30 günlük deneme |
| Destek | Yalnızca topluluk forumları | E-posta, canlı sohbet ve telefon yoluyla doğrudan mühendislik desteği |
How Does Microsoft Office Document Imaging Perform OCR in C#?
MODI, bir COM tabanlı nesne modeli aracılığıyla optik karakter tanımını (OCR) gerçekleştirir. Süreç, MODI.Document nesnesi oluşturarak, bir görüntü dosyası yolunu yükleyerek ve OCR yöntemini çağırarak, görüntüleri analiz edip karakterleri tanımlama süreciyle başlar. OCR işlemi tamamlandıktan sonra, metin ve düzen bilgilerine, her sayfanın Görsel ve Düzen nesneleri aracılığıyla erişilebilir.
MODI'yi bir Visual Studio projesinde kullanmak için, Microsoft Office Document Imaging Tür Kütüphanesi'ne bir referans eklenmesi gerekir. Çözüm Gezgini'nde, Referanslar klasörüne sağ tıklayın, COM sekmesini seçin ve uygun MODI sürümünü seçin (Office 2003 için 11.0 veya Office 2007 için 12.0).
// 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
Bu fonksiyon, standart MODI iş akışını gösterir: Dosyayı yüklemek için Oluşturma yöntemi kullanılır, OCR yöntemi belirtilen bir dil kullanarak tanıma yapar ve Layout.Text çıkarılan diziyi sağlar. Dönül çıkarılan metin ifadesi çıktıyı arayan kişiye iletir.
MODI, keskin, yüksek çözünürlüklü belge görüntüleri için oldukça iyi bir doğruluk sunarken, belirgin sınırlamaları vardır. Sadece TIFF, MDI ve BMP formatlarını destekler. Uygulamayı çalıştıran her bilgisayarda, üretim sunucuları dahil, Microsoft Office yüklemesi gerektirir. Düşük kaliteli görüntüleri tarama, sapmayı düzeltme veya dijital gürültüyü azaltmak için yerleşik bir destek yoktur. Ek olarak, MODI COM Interop'a dayandığından, .NET Core, .NET 5+ veya herhangi bir çapraz-platform senaryosunda kullanılamaz, bu da Docker konteynerleri veya Azure App Services gibi modern dağıtım hedefleri için uygunsuz hale getirir.
Modern bir .NET Kütüphanesi OCR fonksiyonlarını nasıl ele alır?
IronOCR, COM Interop yaklaşımının yerine bir saf .NET API koyar ve tek bir NuGet paketi ile kurulur. IronTesseract sınıfı, yoğun bir şekilde optimize edilmiş bir Tesseract 5 motorunu sarar ve OcrInput sınıfı, görüntü yükleme, ön işleme ve çok formatlı destek konularını ele alır, hedef bilgisayarda Microsoft Office veya herhangi bir harici bağımlılık gerektirmeden.
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
IronOCR Çıkışı

Yukarıdaki kod, IronOCR'un bir TIFF taramasını sadece birkaç satırda tam bir OCR veri hattından geçirdiğini göstermektedir. OcrInput nesnesi neredeyse her türlü görüntü dosyasını veya PDF belgesini kabul ederken, Deskew() ve DeNoise() gibi işlevler, MODI'nin zayıf sonuçlar vermesine neden olacak yaygın tarama hatalarını düzeltir. Read yöntemi, sadece düz metni değil, her biri güven skoru ve koordinat bilgileri ile sayfa, paragraf, satır ve kelimeye göre organize edilmiş yapılandırılmış veriler içeren bir OcrResult nesnesi döndürür.
Faturalar, formlar veya çok sayfalı TIFF dosyalarını işleyen projeler için IronOCR, metin bölgelerini otomatik olarak belirleyen bilgisayar görme yetenekleri, aynı işlemde barkod ve QR kod okuma ve 125'ten fazla dili NuGet paketleri olarak yükleme desteği de sunar.
Görüntülerden Metin Çıkarmadaki Temel Farklar Nelerdir?
Bu iki seçenek arasındaki gerçek fark, 'mükemmel' örnek dosyaları kullanmayı bırakıp gerçek dünya belgeleriyle uğraşmaya başladığınızda ortaya çıkar. Kahve lekeleri olan, eğik sayfalar veya akıllı telefondan çekilmiş düşük çözünürlüklü fotoğraflardan bahsediyoruz.
MODI, özellikle temiz, yüksek kontrastlı ofis belgeleri için farklı bir dönemde inşa edilmiştir. Eğer üst düzey bir tarayıcıdan alınmış net bir TIFF dosyanız varsa, gayet iyi çalışacaktır. Ancak görüntünüz en ufak bir açıyla dönmüş veya biraz dijital 'gürültü' içeriyorsa, MODI'nin doğruluğu ciddi şekilde azalır. Bu sorunları düzeltmek için yerleşik filtrelere sahip olmadığından, OCR sürecine başlamadan önce GDI+ veya System.Drawing gibi ikinci bir kütüphane kullanarak görüntüleri kendiniz önceden işlemeniz gerekir. Ayrıca bellek yönetimi biraz zahmetlidir; eğer Marshal.ReleaseComObject yöntemini manuel olarak çağırmazsanız, üretimde bellek sızıntılarıyla karşılaşmanız olasıdır.
IronOCR, bu ağır yükleri sizin için kutudan çıktığı gibi yönetir. Bir resmi temizlemek için özel kod yazmak yerine, sadece input.Deskew() veya input.DeNoise() işlevlerini çağırırsınız. Bu filtreler, motorun 'çirkin' belgeler üzerinde bile %99,8 doğruluk oranına ulaşması için görüntüyü hazırlar.
Pro-Tavsiye: MODI'den geçiş yapıyorsanız, sadece kodu değiştirmekle kalmayın, yerleşim verilerini de avantaja çevirin. MODI'nin size genellikle devasa bir 'yığın' metin vermesinin aksine,IronOCRşeyleri paragraflar ve satırlara ayırır ve güven skorları ekler. Eğer otomatik bir fatura işlemcisi geliştiriyorsanız ve insan gözüne ihtiyaç duyan belgeleri işaretlemeniz gerekiyorsa bu hayat kurtarıcıdır.
IronOCR ayrıca çok sayfalı TIFF ve PDF'leri tek bir nesne olarak işler. Eski MODI.Images koleksiyonunda yaptığınız gibi görüntüler arasında elle döngü yapmanıza gerek yok. Bu sadece daha hızlı, daha temiz ve açıkçası, çok daha az kırılgandır.
Geliştiriciler Eski Yaklaşımdan Nasıl Geçiş Yapabilir?
Mevcut bir projede MODI'yi değiştirmek basittir. Temel geçiş, bir COM referansını NuGet paketine değiştirmeyi ve OCR yöntem çağrılarını güncellemeyi içerir. MODI modelinin modern eşdeğerine nasıl dönüştüğünü burada görebilirsiniz:
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
Haritalama neredeyse bire bir: MODI.Document.Create, OcrInput.LoadImage oluyor, dil parametreleri ile OCR yöntemi ocr.Language artı ocr.Read oluyor ve Layout.Text, result.Text oluyor. COM referansı yok, Office bağımlılığı yok, belleği manuel olarak yönetmek için Marshal.ReleaseComObject yok.
Doğrudan değişimin ötesinde, geçiş, MODI'de basitçe var olmayan özelliklerin kilidini açar: Linux ve macOS'a çapraz platform dağıtımı, bulut ve konteyner dağıtımı, aranabilir PDF çıktısı ve özel font eğitimi yetenekleriyle tamamlanmış Tesseract 5 motoru.
Hangi Çözüm Modern OCR İhtiyaçları İçin En Uygundur?
MODI, Microsoft Office'in her Windows bilgisayarında bir standart olduğu bir dönemde amacını yerine getirdi. Zaten Office 2003 veya 2007'ye bağımlı olan eski sistemleri sürdüren ekipler için hala çalışabilir, ancak kullanıcıları için ileriye dönük bir yol yoktur ve sona erdirilen yazılımlara dayanan kırılgan bir bağımlılığı temsil eder.
Herhangi bir yeni proje için veya modernizasyonla karşı karşıya olan herhangi bir eski sistem için,IronOCReksiksiz, aktif olarak sürdürülen bir çözüm sağlar. Office bağımlılığını tamamen ortadan kaldırır, her büyük platformda çalışır, eski yöntemi zorlayacak kadar düşük kalitedeki görüntüleri işler ve düz metinden çok daha öteye geçen yapılandırılmış OCR çıktısı sağlar. Kapsamlı belgeler, doğrudan mühendislik desteği, ve $749'dan başlayan süreli lisanslama ile, profesyonel düzeyde belge işleme için üretilmiştir.
Üretimde OCR'ı dağıtmaya hazır mısınız? IronOCR lisanslama seçeneklerini keşfedin ve ekibiniz için doğru olanı bulun.
Sıkça Sorulan Sorular
Microsoft Office Document Imaging (MODI) nedir?
Microsoft Office Document Imaging (MODI), MS Office 2003 ve 2007 ile birlikte gelen bir OCR bileşeniydi. Geliştiricilerin, bir COM tabanlı nesne modeli kullanarak görüntülerden metin çıkarmasına olanak tanırdı.
Neden MODI yerine IronOCR kullanmayı düşünmeliyim?
IronOCR, geliştirilmiş özellikler, daha yüksek doğruluk ve .NET uygulamalarıyla daha iyi entegrasyon sağlayan modern, tamamen desteklenen bir OCR kütüphanesi sunmaktadır.
IronOCR TIFF ve BMP görüntü dosyalarını işleyebilir mi?
Evet, IronOCR, çeşitli belge dijitalleştirme ihtiyaçlarına esneklik sağlayarak TIFF ve BMP de dahil olmak üzere çeşitli görüntü formatlarından metin işleyip çıkarabilir.
MODI'den IronOCR'a geçiş yapmanın faydaları nelerdir?
IronOCR'a geçiş, daha gelişmiş OCR yeteneklerine, düzenli güncellemelere ve aktif desteğe erişim sağlayarak OCR projelerinizin gelecekte de kullanılabilir olmasını sağlar.
IronOCR Visual Studio ile uyumlu mu?
Evet, IronOCR, .NET projelerinize sorunsuz bir şekilde entegrasyon sağlar, Visual Studio ile tamamen uyumludur.
IronOCR'un doğruluk seviyesi MODI'ye kıyasla nasıldır?
IronOCR, özellikle modern görüntü formatları ve karmaşık belgelerde, daha yüksek doğruluk sağlamak için tasarlanmıştır ve eski MODI teknolojisine göre üstündür.
IronOCR geliştiricilere ne tür bir destek sunmaktadır?
IronOCR, uygulamalara OCR işlevselliği eklemek için geliştiricilere kapsamlı dokümantasyon, kod örnekleri ve profesyonel destek sunar.
IronOCR için herhangi bir kod örneği mevcut mu?
Evet, IronOCR, geliştiricilerin .NET uygulamalarında hızlı bir şekilde OCR uygulamaları yapmasına yardımcı olmak için çeşitli kod örnekleri sunar.
IronOCR gerçek zamanlı metin çıkarma için kullanılabilir mi?
IronOCR, taranan görüntülerin veya belgelerin anında işlenmesini gerektiren uygulamalar için uygun, gerçek zamanlı metin çıkarma özelliğine sahiptir.
IronOCR çoklu dil metin tanıma destekliyor mu?
Evet, IronOCR, yüksek doğrulukla çeşitli dillerdeki belgeleri işleyebilmesi için çoklu dil metin tanıma desteği sunar.



