Altbilgi içeriğine atla
DIğER BILEşENLERLE KARşıLAşTıRıN

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

IronOCR Çıkışı

MODI OCR C# ve IronOCR: C#'da Doğru Optik Karakter Tanıma Kütüphanesini Seçme: Görüntü 1 -IronOCRörnek çıktısı

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
$vbLabelText   $csharpLabel

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.

Şimdi IronOCR ile başlayın.
green arrow pointer

Ü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.

Kannaopat Udonpant
Yazılım Mühendisi
Yazılım Mühendisi olmadan önce, Kannapat Japonya'daki Hokkaido Üniversitesi'nden Çevresel Kaynaklar alanında doktora yaptı. Derecesini tamamlarken, Biyoprodüksiyon Mühendisliği Bölümü'nün bir parçası olan Taşıt Robotik Laboratuvarı'na da üye oldu. 2022'de, Iron Software mühendislik ekibine katılmak iç...
Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara