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

IronOCR ile LLM-Tabanlı OCR: .NET Geliştiricileri Hangisini Seçmeli?

Dört model dosyası. Bu, tek bir karakter tanınmadan önce RapidOCR.NET'in talep ettiği ilk şey — bir algılama modeli, bir yön sınıflandırıcı, bir tanıma modeli, ve ayrı ayrı bir GitHub sürüm sayfasından indirilen ve kesin yol yapılandırmasıyla birleştirilen bir karakter sözlüğü. İlk engine.Run() çağrınız bir sonuç vermeden önce, manuel bir indirme dizisi yönettiniz, kodda dosya yollarını düzenlediniz, .csproj'e MSBuild kopyalama kuralları eklediniz ve ONNX Runtime'ın yerel ikili dosyalarının dağıtım hedefinizle eşleştiğini doğruladınız. Üretim için OCR seçeneklerini değerlendiren bir ekip için, bu kurulum törenselliği RapidOCR.NET'in tam hikayesidir.

RapidOCR.NET'i Anlamak

RapidOCR.NET, Baidu'nun PaddleOCR derin öğrenme modellerinin ONNX formatına CPU'ye optimize edilmiş bir aktarımı olan RapidOCR projesinin çevresinde topluluk tarafından sürdürülmekte olan bir .NET sarmalayıcıdır. NuGet paketi (RapidOcrNet) GitHub'da BobLd tarafından Apache 2.0 lisansı altında tek bir geliştirici tarafından sürdürülmektedir. Bu soy çizgisini anlamak önemlidir: Kütüphane, Baidu PaddlePaddle'dan PaddleOCR'ye, topluluk RapidOCR ONNX dönüşümüne, .NET sarmalayıcısına kadar üç soyutlama katmanı uzağında yer alır.

Ana mimari özellikler:

  • 4 dosyalı model gereksinimi: Algılama (det.onnx), yön belirleme sınıflandırıcısı (cls.onnx), tanıma (rec.onnx) ve karakter sözlüğü (keys.txt), motor başlatılmadan önce yapılandırılmış yollarda mevcut olmalıdır.
  • ONNX Runtime bağımlılığı: Microsoft.ML.OnnxRuntime (CPU) veya Microsoft.ML.OnnxRuntime.Gpu (CUDA) gerektirir ve uygulama boyutuna 30–50 MB ekler. Çalışma zamanı ikili dosyalar dağıtım platformu ile eşleşmelidir.
  • Dil sınırlaması: Modeller esas olarak Çince ve İngilizce üzerinde eğitilmiştir. Avrupa dilleri (İspanyolca, Fransızca, Almanca), Kiril alfabeleri (Rusça, Ukraynaca), Arapça, İbranice ve Sanskrit alfabeler desteklenmez. Japonca ve Korece sınırlı, topluluk tarafından katkıda bulunulmuş deneysel modellere sahiptir.
  • Sadece görüntü girişi: RapidOCR.NET'in yerel PDF desteği yoktur. Bir PDF'yi işlemek için sayfaları görüntülere dönüştürmek, her görüntüyü ayrı ayrı OCR'den geçirmek ve sonuçları elle tekrar birleştirmek için harici bir işleme kütüphanesi gerekir.
  • Soğuk başlangıç gecikmesi: Model yüklemesi ilk çalıştırmada 2-5 saniye sürer ve çalışma zamanında 300–500 MB bellek tüketir.
  • Topluluk ölçeği: Proje sınırlı Stack Overflow varlığına, README'nin ötesinde minimal belgelendirmeye, ticari bir destek veya bakım SLA'sına sahiptir.
  • Aranabilir PDF çıktısı yok: Kütüphane, görüntülerden metin çıkarır. Metni bir PDF'ye aranabilir bir metin katmanı olarak geri yazamaz.

4 Model Yapılandırma Aşırı Yükü

Her RapidOCR.NET uygulaması, karmaşıklıktan bağımsız olarak bu başlangıç bloğu ile başlar:

// RapidOcrNet: 4 paths required — any missing file throws at runtime
var engine = new RapidOcrEngine(new RapidOcrOptions
{
    DetModelPath = "./models/det.onnx",      // ~3 MB download
    ClsModelPath = "./models/cls.onnx",      // ~1 MB download
    RecModelPath = "./models/rec_en.onnx",   // ~2–10 MB depending on language
    KeysPath     = "./models/en_keys.txt"    // ~100 KB character dictionary
});

// Text blocks returned — must be sorted and joined manually
var result = engine.Run(imagePath);
var text = string.Join("\n", result.TextBlocks
    .OrderBy(b => b.BoundingBox.Top)
    .ThenBy(b => b.BoundingBox.Left)
    .Select(b => b.Text));
// RapidOcrNet: 4 paths required — any missing file throws at runtime
var engine = new RapidOcrEngine(new RapidOcrOptions
{
    DetModelPath = "./models/det.onnx",      // ~3 MB download
    ClsModelPath = "./models/cls.onnx",      // ~1 MB download
    RecModelPath = "./models/rec_en.onnx",   // ~2–10 MB depending on language
    KeysPath     = "./models/en_keys.txt"    // ~100 KB character dictionary
});

// Text blocks returned — must be sorted and joined manually
var result = engine.Run(imagePath);
var text = string.Join("\n", result.TextBlocks
    .OrderBy(b => b.BoundingBox.Top)
    .ThenBy(b => b.BoundingBox.Left)
    .Select(b => b.Text));
Imports System.Linq

' RapidOcrNet: 4 paths required — any missing file throws at runtime
Dim engine = New RapidOcrEngine(New RapidOcrOptions With {
    .DetModelPath = "./models/det.onnx",      ' ~3 MB download
    .ClsModelPath = "./models/cls.onnx",      ' ~1 MB download
    .RecModelPath = "./models/rec_en.onnx",   ' ~2–10 MB depending on language
    .KeysPath = "./models/en_keys.txt"        ' ~100 KB character dictionary
})

' Text blocks returned — must be sorted and joined manually
Dim result = engine.Run(imagePath)
Dim text = String.Join(vbCrLf, result.TextBlocks _
    .OrderBy(Function(b) b.BoundingBox.Top) _
    .ThenBy(Function(b) b.BoundingBox.Left) _
    .Select(Function(b) b.Text))
$vbLabelText   $csharpLabel

Çince OCR'ye geçiş bir yapılandırma değişikliği değil—bu bir dosya değişimidir. İngilizce tanıma modeli (en_rec.onnx / en_keys.txt) ve Çince tanıma modeli (ch_rec.onnx / ch_keys.txt) ayrı indirmelerdir. Bir belge hem Çince hem de İspanyolca metin içeriyorsa, ilerleme yolu yoktur: İspanyolca modeller RapidOCR model kataloğunda yer almaz.

.csproj ayrıca derleme sırasında dört dosyanın tamamının kopyalanması için açık MSBuild girdilerini gerektirir:

<ItemGroup>
  <Content Include="models\**\*.*">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
</ItemGroup>
<ItemGroup>
  <Content Include="models\**\*.*">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
</ItemGroup>
XML

Bu adımı kaçırırsanız, üretim dağıtımı, çalışma zamanında yollar hiçbir şeye çözümlenemediğinde sessizce kırılır.

IronOCR'u Anlamak

IronOCR, optimize edilmiş bir Tesseract 5 motoru üzerine inşa edilmiş, tek bir NuGet paketi ile çalışan ticari bir .NET OCR kütüphanesidir, dış model dosyaları yok, tessdata yönetimi yok ve yerel ikili yapılandırma gerektirmez. .NET geliştirme senaryolarının tam yelpazesini hedefler — ASP.NET web uygulamaları, konsol toplu işleyiciler, WPF masaüstü araçları, Azure Fonksiyonları, AWS Lambda, Docker konteynerleri ve MAUI mobil uygulamaları — Windows, Linux, macOS ve ARM üzerinde.

Anahtar özellikler:

  • Tek paket dağıtımı: dotnet add package IronOcr tam kurulumu sağlar. Tüm motor ikilileri, varsayılan (İngilizce) yapılandırma için dil verileri ve ön işleme algoritmaları paketin içindedir.
  • Otomatik ön işleme hattı: Eğiklik düzeltme, gürültü azaltma, kontrast iyileştirme, ikilileştirme ve çözünürlük normalizasyonu, ihtiyaç duyan görüntülerde otomatik olarak çalışır. Manuel filtre uygulaması gerektiğinde kullanılabilir.
  • Yerel PDF desteği: PDF'ler doğrudan IronTesseract.Read()'e beslenir, dönüştürme adımı yoktur. Parola korumalı PDF'ler bir Password parametresini kabul eder. Aranabilir PDF çıktısı, sonuç üzerindeki tek bir yöntem çağrısıdır.
  • NuGet üzerinden 125'ten fazla dil: Her dil paketi (IronOcr.Languages.French, IronOcr.Languages.Arabic, vb.) bir NuGet bağımlılığı olarak yüklenir. Dilleri değiştirmek bir dosya indirme değil, bir özellik ataması.
  • Yapılandırılmış sonuç modeli: OcrResult, .Pages, .Paragraphs, .Lines ve her kelime için güven skorlarını sınır kutusu koordinatlarıyla birlikte açıklar.
  • İplik güvenli ve durumdan bağımsız: Birden çok IronTesseract örneği kilit veya paylaşılan durum olmadan paralel çalışır.
  • Ticari destek: $999 (Lite) başlangıçtan itibaren süresiz lisanslı, e-posta desteği ve aktif bakımdaki sürümlenmiş API ile.

Özellik Karşılaştırması

Özellik RapidOCR.NET IronOCR
Kurulum NuGet + 4 manuel model indirimi Tek bir NuGet paketi
Dil desteği ~5 (CJK + yalnızca İngilizce) 125+NuGet dil paketleri aracılığıyla
Yerel PDF girişi Hayır Evet
Aranabilir PDF çıktısı Hayır Evet
Dahili ön işleme Hayır Evet (otomatik + manuel filtreler)
Ticari destek Yok (topluluk) Evet (lisansla birlikte gelir)

Ayrıntılı Özellik Karşılaştırması

Kategori / Özellik RapidOCR.NET IronOCR
Kurulum ve Yükleme
NuGet yükle Evet Evet
Dış model indirmeleri gerekli Evet (4 dosya) Hayır
Yol yapılandırması gerekli Evet Hayır
MSBuild kopyalama kuralları gerekli Evet Hayır
NuGet yüklemesinden hemen sonra çalışır Hayır Evet
Dil Desteği
İngilizce Evet Evet
Çince Basitleştirilmiş / Geleneksel Evet (öncelikli odak) Evet
Japonca Yalnızca deneysel Evet
Korece Yalnızca deneysel Evet
Avrupa dilleri (İspanyolca, Fransızca, Almanca, vb.) Hayır Evet (30+)
Kiril (Rusça, Ukraynaca, vb.) Hayır Evet (15+)
Arapça / İbranice Hayır Evet
Sanskrit alfabeler (Hintçe, Bengalce, Tamil) Hayır Evet (10+)
Çok dilli eşzamanlı OCR Hayır Evet
Toplam desteklenen diller ~5 125+
Giriş Biçimleri
JPEG / PNG / BMP / TIFF Evet Evet
PDF (yerel, dönüşüm yok) Hayır Evet
Şifre korumalı PDF Hayır Evet
Akış / bayt dizisi Sınırlı Evet
URL girişi Hayır Evet
Çıktı
Düz metin Evet Evet
Metin bloğu çevreleyici kutuları Evet Evet
Yapılandırılmış kelimeler / satırlar / paragraflar Kısmen (yalnızca bloklar) Evet
Kelime başına güvenilirlik puanları Evet (blok başına) Evet
Aranabilir PDF Hayır Evet
hOCR içeri aktarma Hayır Evet
Ön işlem
Otomatik ön işlem Hayır Evet
Hizalama Hayır Evet
Gürültü giderme Hayır Evet
Kontrast / ikilileştirme Hayır Evet
Çözünürlük iyileştirmesi Hayır Evet
Dağıtım
Kendi kendine yeten tek paket Hayır (4+ dış dosya) Evet
Docker desteği Manuel model kopyası gerekli Evet (kutu dışı)
Linux desteği ONNX Runtime yerel ikilileri gerektirir Evet
macOS desteği ONNX Runtime yerel ikilileri gerektirir Evet
Destek ve Bakım
Ticari destek / SLA Hayır Evet
Aktif şirket destekli bakım Hayır (tek bir topluluk geliştiricisi) Evet
Lisans türü Apache 2.0 (ücretsiz) Süresiz ticari ($999+)

ONNX Model Yönetimi ve Sıfır Yapılandırma Karşılaştırması

RapidOCR.NET ile IronOCR arasındaki en büyük operasyonel fark, doğruluk değil — uygulamanızın temas ettiği her ortamda dört dış model dosyasının yönetiminin süregiden maliyetidir.

RapidOCR.NET Yaklaşımı

Model dosyaları NuGet paketi ile paketlenmemiştir. RapidOCR projesi için GitHub sürüm sayfalarında bulunurlar ve bant dışı indirilmeli, elle sürümlenmeli ve uygulamanızla dağıtılmalıdır. RapidOCR projesi, daha iyi doğruluk için güncellenmiş modeller yayınladığında, indirimi tekrarlarsınız ve dağıtımınızdaki dosyaları değiştirirsiniz.

CI/CD boru hattında, model dosyaları ya depoya taahhüt edilmelidir (Git geçmişine 15–25 MB ikili veri ekler) ya da özel betiklerle derleme adımında getirilmelidir. Docker konteynerinde, her dilin model seti özel bir COPY talimatı ve azımsanmayacak bir katman ekler. Bir Kubernetes dağıtımında, model dosyaları genellikle monte edilmiş bir hacimde veya görüntüde yer alır, her ikisi de güncellemelerin nasıl yayılacağına dair politikaları gerektirir.

Kaynak dosyalarındaki doğrulama mantığı kırılganlığı somut hale getirir:

// RapidOcrNet: Runtime validation needed because any missing file crashes the engine
public static bool ValidateModelFiles()
{
    var requiredFiles = new[]
    {
        Path.Combine(ModelDirectory, "det.onnx"),
        Path.Combine(ModelDirectory, "cls.onnx"),
        Path.Combine(ModelDirectory, "rec_en.onnx"),
        Path.Combine(ModelDirectory, "en_keys.txt")
    };

    var missingFiles = requiredFiles.Where(f => !File.Exists(f)).ToList();

    if (missingFiles.Any())
    {
        Console.WriteLine("ERROR: Missing required model files:");
        foreach (var file in missingFiles)
            Console.WriteLine($"  - {file}");
        return false;
    }

    return true;
}
// RapidOcrNet: Runtime validation needed because any missing file crashes the engine
public static bool ValidateModelFiles()
{
    var requiredFiles = new[]
    {
        Path.Combine(ModelDirectory, "det.onnx"),
        Path.Combine(ModelDirectory, "cls.onnx"),
        Path.Combine(ModelDirectory, "rec_en.onnx"),
        Path.Combine(ModelDirectory, "en_keys.txt")
    };

    var missingFiles = requiredFiles.Where(f => !File.Exists(f)).ToList();

    if (missingFiles.Any())
    {
        Console.WriteLine("ERROR: Missing required model files:");
        foreach (var file in missingFiles)
            Console.WriteLine($"  - {file}");
        return false;
    }

    return true;
}
Imports System
Imports System.IO
Imports System.Linq

Public Class RapidOcrNet
    Public Shared Function ValidateModelFiles() As Boolean
        Dim requiredFiles = {
            Path.Combine(ModelDirectory, "det.onnx"),
            Path.Combine(ModelDirectory, "cls.onnx"),
            Path.Combine(ModelDirectory, "rec_en.onnx"),
            Path.Combine(ModelDirectory, "en_keys.txt")
        }

        Dim missingFiles = requiredFiles.Where(Function(f) Not File.Exists(f)).ToList()

        If missingFiles.Any() Then
            Console.WriteLine("ERROR: Missing required model files:")
            For Each file In missingFiles
                Console.WriteLine($"  - {file}")
            Next
            Return False
        End If

        Return True
    End Function
End Class
$vbLabelText   $csharpLabel

RapidOCR.NET'i kullanan üretim uygulamaları rutin olarak, eksik bir model dosyasının paket yükleme zamanında temiz bir hata üretmediği — motor ilk başlatıldığında çalışma zamanı çökmesine neden olduğu için bu tür başlangıç doğrulamalarını içerir. Bu başarısızlık, geliştirme değil, üretimde yüzeye çıkar.

IronOCR Yaklaşımı

Yönetilecek model dosyası yok. dotnet add package IronOcr'den sonra, motor hazırdır:

// IronOCR: no model downloads, no path configuration, no validation boilerplate
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";
var text = new IronTesseract().Read("document.jpg").Text;
// IronOCR: no model downloads, no path configuration, no validation boilerplate
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";
var text = new IronTesseract().Read("document.jpg").Text;
' IronOCR: no model downloads, no path configuration, no validation boilerplate
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim text = New IronTesseract().Read("document.jpg").Text
$vbLabelText   $csharpLabel

IronTesseract kurulum rehberi tam kurulum yolunu gösterir. İngilizce dışındaki dilleri genişleten dil paketleri, NuGet paketleridir — dotnet add package IronOcr.Languages.French — ve geri yükleme adımı, zaten NuGet bağımlılıklarını geri yükleyen CI/CD boru hatlarında her şeyi halleder. İkili model dosyaları, Dockerfile'daki COPY katmanları veya başlangıç doğrulama betikleri hakkında hiçbir .gitignore kararı yoktur.

Docker'a dağıtan ekipler için IronOCR Docker kılavuzu, Debian/Ubuntu tabanlı görüntülerde tek gereken sistem bağımlılığı (libgdiplus) ve başka bir şey içermez.

Dil Desteği

RapidOCR.NET Yaklaşımı

RapidOCR.NET'in dil kapsamı kökenini yansıtır. PaddleOCR, Baidu tarafından Çince dilindeki internet aramalarına hizmet etmek için inşa edilmiştir. Modelleri, Çince Basitleştirilmiş ve Geleneksel için mükemmeldir. İngilizce desteği dahil edilmiştir ancak tasarımın birincil hedefi değildi. Japonca ve Korece, topluluk tarafından katkıda bulunulmuş deneysel modellere sahiptir. Geriye kalan her şey — İspanyolca, Fransızca, Almanca, Rusça, Arapça, Hintçe, Portekizce ve 100'den fazla diğer dil — mevcut modeller yok.

Desteklenen diller arasında geçiş yapmak farklı model dosyalarını indirmenizi gerektirir:

// RapidOcrNet:İngilizceengine
var englishEngine = new RapidOcrEngine(new RapidOcrOptions
{
    DetModelPath = Path.Combine(modelPath, "det.onnx"),
    ClsModelPath = Path.Combine(modelPath, "cls.onnx"),
    RecModelPath = Path.Combine(modelPath, "en_rec.onnx"),   // English-specific
    KeysPath     = Path.Combine(modelPath, "en_keys.txt")    // English-specific
});

// RapidOcrNet: Chinese engine — different rec and keys files required
var chineseEngine = new RapidOcrEngine(new RapidOcrOptions
{
    DetModelPath = Path.Combine(modelPath, "det.onnx"),
    ClsModelPath = Path.Combine(modelPath, "cls.onnx"),
    RecModelPath = Path.Combine(modelPath, "ch_rec.onnx"),   // Different download
    KeysPath     = Path.Combine(modelPath, "ch_keys.txt")    // Different download
});

// Spanish? NotSupportedException — no model exists
// RapidOcrNet:İngilizceengine
var englishEngine = new RapidOcrEngine(new RapidOcrOptions
{
    DetModelPath = Path.Combine(modelPath, "det.onnx"),
    ClsModelPath = Path.Combine(modelPath, "cls.onnx"),
    RecModelPath = Path.Combine(modelPath, "en_rec.onnx"),   // English-specific
    KeysPath     = Path.Combine(modelPath, "en_keys.txt")    // English-specific
});

// RapidOcrNet: Chinese engine — different rec and keys files required
var chineseEngine = new RapidOcrEngine(new RapidOcrOptions
{
    DetModelPath = Path.Combine(modelPath, "det.onnx"),
    ClsModelPath = Path.Combine(modelPath, "cls.onnx"),
    RecModelPath = Path.Combine(modelPath, "ch_rec.onnx"),   // Different download
    KeysPath     = Path.Combine(modelPath, "ch_keys.txt")    // Different download
});

// Spanish? NotSupportedException — no model exists
' RapidOcrNet:İngilizceengine
Dim englishEngine = New RapidOcrEngine(New RapidOcrOptions With {
    .DetModelPath = Path.Combine(modelPath, "det.onnx"),
    .ClsModelPath = Path.Combine(modelPath, "cls.onnx"),
    .RecModelPath = Path.Combine(modelPath, "en_rec.onnx"),   ' English-specific
    .KeysPath = Path.Combine(modelPath, "en_keys.txt")        ' English-specific
})

' RapidOcrNet: Chinese engine — different rec and keys files required
Dim chineseEngine = New RapidOcrEngine(New RapidOcrOptions With {
    .DetModelPath = Path.Combine(modelPath, "det.onnx"),
    .ClsModelPath = Path.Combine(modelPath, "cls.onnx"),
    .RecModelPath = Path.Combine(modelPath, "ch_rec.onnx"),   ' Different download
    .KeysPath = Path.Combine(modelPath, "ch_keys.txt")        ' Different download
})

' Spanish? NotSupportedException — no model exists
$vbLabelText   $csharpLabel

Aynı sıradan İngilizce, Çince ve İspanyolca belgeleri işlemek isteyen bir uygulamanın RapidOCR.NET'te İspanyol belgeleri için uygun bir yolu yoktur.

IronOCR Yaklaşımı

IronOCR 125+dili destekler, her biri bir NuGet dil paketi olarak mevcuttur. Geçiş, IronTesseract örneğindeki bir enum özelliği atamasıdır — dosya indirmeleri yok, motor yeniden oluşturma yok:

// IronOCR: language switching is a property change, not a file swap
var ocr = new IronTesseract();

// English
ocr.Language = OcrLanguage.English;

// Chinese Simplified
ocr.Language = OcrLanguage.ChineseSimplified;

// Spanish — no model download needed
ocr.Language = OcrLanguage.Spanish;

// Arabic — just works
ocr.Language = OcrLanguage.Arabic;

// Russian — just works
ocr.Language = OcrLanguage.Russian;

var result = ocr.Read("document.jpg");
// IronOCR: language switching is a property change, not a file swap
var ocr = new IronTesseract();

// English
ocr.Language = OcrLanguage.English;

// Chinese Simplified
ocr.Language = OcrLanguage.ChineseSimplified;

// Spanish — no model download needed
ocr.Language = OcrLanguage.Spanish;

// Arabic — just works
ocr.Language = OcrLanguage.Arabic;

// Russian — just works
ocr.Language = OcrLanguage.Russian;

var result = ocr.Read("document.jpg");
Imports IronOcr

Dim ocr As New IronTesseract()

' English
ocr.Language = OcrLanguage.English

' Chinese Simplified
ocr.Language = OcrLanguage.ChineseSimplified

' Spanish — no model download needed
ocr.Language = OcrLanguage.Spanish

' Arabic — just works
ocr.Language = OcrLanguage.Arabic

' Russian — just works
ocr.Language = OcrLanguage.Russian

Dim result = ocr.Read("document.jpg")
$vbLabelText   $csharpLabel

Karma dil belgeleri AddSecondaryLanguage kullanır:

var ocr = new IronTesseract();
ocr.Language = OcrLanguage.ChineseSimplified;
ocr.AddSecondaryLanguage(OcrLanguage.English);
var result = ocr.Read("mixed-document.jpg");
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.ChineseSimplified;
ocr.AddSecondaryLanguage(OcrLanguage.English);
var result = ocr.Read("mixed-document.jpg");
Imports IronOcr

Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.ChineseSimplified
ocr.AddSecondaryLanguage(OcrLanguage.English)
Dim result = ocr.Read("mixed-document.jpg")
$vbLabelText   $csharpLabel

çok dilli nasıl yapılır ve uluslararası diller örneği dil paketi yüklemesini ve ikincil dil yapılandırmasını ayrıntılı olarak kapsar.

PDF İşleme ve Çıktı Yetenekleri

RapidOCR.NET Yaklaşımı

RapidOCR.NET görüntüleri işler. PDF'ler görüntü değildir. Kütüphanede PDF işleme yeteneği, PDF yazma yeteneği ve aranabilir PDF çıktısı oluşturma mekanizması yoktur. RapidOCR.NET ile taranmış bir PDF'den metin çıkarmak en az üç ayrı bileşen gerektirir:

// RapidOcrNet: PDF processing requires external library + manual assembly
public async Task<string> ExtractTextFromPdf(string pdfPath)
{
    // Step 1: Requires PdfPig, Docotic, or similar external library
    var pageImages = await RenderPdfToImages(pdfPath);

    // Step 2: Initialize RapidOcr with 4 model files (must already be downloaded)
    using var engine = new RapidOcrEngine(new RapidOcrOptions
    {
        DetModelPath = "models/det.onnx",
        ClsModelPath = "models/cls.onnx",
        RecModelPath = "models/rec_en.onnx",
        KeysPath     = "models/en_keys.txt"
    });

    // Step 3: OCR each image individually
    var results = new List<string>();
    foreach (var pageImage in pageImages)
    {
        var result = engine.Run(pageImage);
        results.Add(string.Join("\n", result.TextBlocks.Select(b => b.Text)));
    }

    // Step 4: Combine manually — page structure not preserved
    return string.Join("\n\n", results);
}
// RapidOcrNet: PDF processing requires external library + manual assembly
public async Task<string> ExtractTextFromPdf(string pdfPath)
{
    // Step 1: Requires PdfPig, Docotic, or similar external library
    var pageImages = await RenderPdfToImages(pdfPath);

    // Step 2: Initialize RapidOcr with 4 model files (must already be downloaded)
    using var engine = new RapidOcrEngine(new RapidOcrOptions
    {
        DetModelPath = "models/det.onnx",
        ClsModelPath = "models/cls.onnx",
        RecModelPath = "models/rec_en.onnx",
        KeysPath     = "models/en_keys.txt"
    });

    // Step 3: OCR each image individually
    var results = new List<string>();
    foreach (var pageImage in pageImages)
    {
        var result = engine.Run(pageImage);
        results.Add(string.Join("\n", result.TextBlocks.Select(b => b.Text)));
    }

    // Step 4: Combine manually — page structure not preserved
    return string.Join("\n\n", results);
}
Imports System.Threading.Tasks
Imports System.Collections.Generic
Imports System.Linq

Public Class PdfTextExtractor
    ' RapidOcrNet: PDF processing requires external library + manual assembly
    Public Async Function ExtractTextFromPdf(pdfPath As String) As Task(Of String)
        ' Step 1: Requires PdfPig, Docotic, or similar external library
        Dim pageImages = Await RenderPdfToImages(pdfPath)

        ' Step 2: Initialize RapidOcr with 4 model files (must already be downloaded)
        Using engine As New RapidOcrEngine(New RapidOcrOptions With {
            .DetModelPath = "models/det.onnx",
            .ClsModelPath = "models/cls.onnx",
            .RecModelPath = "models/rec_en.onnx",
            .KeysPath = "models/en_keys.txt"
        })

            ' Step 3: OCR each image individually
            Dim results As New List(Of String)()
            For Each pageImage In pageImages
                Dim result = engine.Run(pageImage)
                results.Add(String.Join(vbLf, result.TextBlocks.Select(Function(b) b.Text)))
            Next

            ' Step 4: Combine manually — page structure not preserved
            Return String.Join(vbLf & vbLf, results)
        End Using
    End Function

    ' Placeholder for the RenderPdfToImages method
    Private Async Function RenderPdfToImages(pdfPath As String) As Task(Of List(Of Object))
        ' Implementation goes here
        Return New List(Of Object)()
    End Function
End Class
$vbLabelText   $csharpLabel

Bu, başka bir NuGet bağımlılığı, başka bir API yüzey alanını öğrenmeyi ve büyük belgeler için sayfa işlenmiş bitmapleri bellekte tutmanın getirdiği bellek baskısını ekler. Aranabilir PDF çıktısı — tanınan metni orijinal taramanın üzerine gizli bir OCR katmanı olarak yazmak — bu hattın herhangi bir noktasında elde edilemez.

IronOCR Yaklaşımı

IronOCR, PDF'leri yerel olarak okur. Aynı IronTesseract.Read() yöntemi hem görüntü yollarını hem de PDF yollarını kabul eder:

// IronOCR: direct PDF OCR — no conversion, no external library
var text = new IronTesseract().Read("scanned-document.pdf").Text;

//Şifre korumalı PDF— one parameter
using var input = new OcrInput();
input.LoadPdf("encrypted.pdf", Password: "secret");
var result = new IronTesseract().Read(input);

// Aranabilir PDF— one method call on the result
var result = new IronTesseract().Read("scanned.pdf");
result.SaveAsSearchablePdf("searchable-output.pdf");
// IronOCR: direct PDF OCR — no conversion, no external library
var text = new IronTesseract().Read("scanned-document.pdf").Text;

//Şifre korumalı PDF— one parameter
using var input = new OcrInput();
input.LoadPdf("encrypted.pdf", Password: "secret");
var result = new IronTesseract().Read(input);

// Aranabilir PDF— one method call on the result
var result = new IronTesseract().Read("scanned.pdf");
result.SaveAsSearchablePdf("searchable-output.pdf");
Imports IronOcr

' IronOCR: direct PDF OCR — no conversion, no external library
Dim text As String = New IronTesseract().Read("scanned-document.pdf").Text

' Şifre korumalı PDF— one parameter
Using input As New OcrInput()
    input.LoadPdf("encrypted.pdf", Password:="secret")
    Dim result = New IronTesseract().Read(input)
End Using

' Aranabilir PDF— one method call on the result
Dim result2 = New IronTesseract().Read("scanned.pdf")
result2.SaveAsSearchablePdf("searchable-output.pdf")
$vbLabelText   $csharpLabel

PDF girişi nasıl yapılır rehberi sayfa seçimi, parola yönetimi ve çok sayfalı işlemeyi kapsar. aranabilir PDF nasıl yapılır rehberi, orijinal tarama ile görsel olarak özdeş kalan, ancak tam metin arama katmanı ekleyen uyumlu derece çıktıyı oluşturmayı gösterir. Belge arşivleme hatları oluşturan ekipler için, bu çıktı formatı nihai hedeftir — ve IronOCR paketinin ötesinde başka hiçbir ek bağımlılık gerektirmez.

Üretim Hazırlığı ve Topluluk Olgunluğu

RapidOCR.NET Yaklaşımı

RapidOCR.NET daha yeni bir projedir. GitHub deposu, yerleşik .NET OCR kütüphaneleri ile karşılaştırıldığında sınırlı yıldız ve katkı aktivitesine sahiptir. Stack Overflow'da minimal kapsama sahiptir. Üretimde kenar vakalar ortaya çıktığında — alışılmadık görüntü yönlendirmeleri, belirli karakter setleri, ONNX Runtime sürüm çatışmaları, GPU mod yapılandırması — birincil kaynak GitHub sorunlar takipçisidir. Ticari bir destek katmanı yok, bakım SLA'sı yok ve garanti edilen bir yanıt zaman çizelgesi yok.

Bağımlılık zinciri ilave risk tanıtıyor. RapidOCR.NET, RapidOCR projesinin model sürümlerine bağlıdır. RapidOCR projesi, PaddleOCR'ın model mimarisine bağlıdır. Bu zincirin herhangi bir katmanındaki bir kırılma değişikliği, kullanıcıların güncellenmeden önce .NET sarmalayıcı sürdürücüsünün yanıt vermesini gerektirir — ve sarmalayıcı, tek bir topluluk geliştiricisi tarafından örgütsel bir arka plan olmadan sürdürülmektedir.

Dağıtım da ONNX Runtime sürümleme sorunlarını ortaya çıkarır. Microsoft.ML.OnnxRuntime paketi, küçük versiyonlar arasında yıkıcı değişikliklere sahipti ve onunla birlikte gönderilen yerel ikili dosyalar platforma özgüdür. linux/amd64 üzerine inşa edilmiş bir konteyner görüntüsü, linux/arm64 üzerine inşa edilmiş olanla aynı ONNX Runtime ikili dosyalarını kullanamaz. Her dağıtım hedefi doğrulama gerektirir.

IronOCR Yaklaşımı

IronOCR daha fazla bir on yıldır aktif ticari geliştirme altındadır. Kütüphane, belgelenmiş kırılma değişiklikleri, .NET SDK sürümleriyle uyumlu düzenli sürümleri olan sürümlenen bir API altında gönderilir ve her ticari lisansla birlikte e-posta desteği dahil edilir. Üretim hatları oluşturan ekipler, GitHub sorunlar kuyruğu yerine, birinin boş zamanında izlenen bir destek yolu alır.

Tek paket tasarımı, dağıtım doğrulama döngüsünü tamamen ortadan kaldırır. NuGet geri yükleme adımı belirleyicidir: Aynı paket sürümü, Windows, Linux ve macOS'ta aynı çalışan kurulumu üretir, platforma özgü yerel ikili yönetimi olmaksızın. AWS Lambda ve Azure dağıtımları için, fonksiyon paketi yalnızca yayınlanan uygulamayı içerir — model dosyası yedek parçaları, hacim montajları yok, başlangıç doğrulama mantığı yok.

düşük kaliteli tarama örneği ve görüntü kalitesi düzeltme nasıl yapılır rehberi, genellikle ONNX tabanlı hatlarda özel kod gerektiren ön işleme senaryolarını — eğik taramalar, gürültülü arka planlar, düşük kontrastlı belgeler — seçilen uygun filtre yöntemleri dışında herhangi bir kod gerektirmeden kapsar.

API Eşleme Başvurusu

RapidOCR.NET IronOCR Karşılığı
new RapidOcrEngine(new RapidOcrOptions { ... }) new IronTesseract()
RapidOcrOptions.DetModelPath Gerekli değil — paket dahilinde
RapidOcrOptions.ClsModelPath Gerekli değil — paket dahilinde
RapidOcrOptions.RecModelPath Gerekli değil — paket dahilinde
RapidOcrOptions.KeysPath Gerekli değil — paket dahilinde
RapidOcrOptions.UseGpu Doğrudan karşılık yok (içsel olarak CPU'ye optimize edilmiş)
RapidOcrOptions.NumThreads IronTesseract (iplik güvenli; kullan Parallel.ForEach)
engine.Run(imagePath) new IronTesseract().Read(imagePath)
result.TextBlocks result.Words / result.Lines / result.Paragraphs
result.TextBlocks[i].Text result.Words[i].Text
result.TextBlocks[i].Confidence result.Words[i].Confidence
result.TextBlocks[i].BoundingBox result.Words[i].X, .Y, .Width, .Height
string.Join("\n", result.TextBlocks.Select(b => b.Text)) result.Text
Manuel dil dosyası değişimi ocr.Language = OcrLanguage.French
PDF-to-image + engine.Run() new IronTesseract().Read("doc.pdf")
Mevcut değil result.SaveAsSearchablePdf("output.pdf")
Mevcut değil result.SaveAsHocrFile("output.hocr")
engine.Dispose() using var ocr = new IronTesseract()

Ekibiniz RapidOCR.NET'ten IronOCR'a Geçmeyi Düşündüğünde

Model Dosya Yönetimi Dağıtımda Tıkanıklık Olduğunda

Prototip için RapidOCR.NET ile başlayan ekipler, üretim aşamasına geçmeye çalıştıklarında genellikle model dosyası yönetimi duvarına çarparlar. Dört model dosyasının sürümlendirilmesi, izlenmesi, oluşturulurken kopyalanması, CI (Sürekli Entegrasyon) eserlerine dahil edilmesi, sahne ortamına ve üretim ortamına dağıtılması gerekir — NuGet bağımlılık grafiğinden ayrı olarak. Küçük bir ekipte, bu operasyonel yük bir kez üstlenilir ve unutulur. Birden fazla hizmet, birden fazla ortam ve birden fazla CI boru hattını sürdüren bir ekipte, model dosyası dağıtımı etrafındaki özel betik yazımı, anlamlı bir bakım maliyetine dönüşür. Bir ekip arkadaşı "neden bu models/ klasörünü depoda bulunduruyoruz ve silersem ne olur?" diye sorduğunda ve cevap beş dakikalık bir açıklama gerektirdiğinde, genellikle değerlendirme o zaman başlar. IronOCR, model yönetim yüzeyinin tamamını ortadan kaldırır: ayrı olarak indirilecek hiçbir şey, CI'ye kopyalanacak hiçbir şey, başlangıçta doğrulanacak hiçbir şey yok.

Desteklenmeyen Dilde Bir Belge Geldiğinde

Dil kapsamı eksikliği bir durma noktasıdır, yapılandırma sorunu değildir. Bir kuruluş Almanca sözleşmeler, Fransızca faturalar, Rusça satın alma siparişleri veya Arapça yazışmalar alırsa, RapidOCR.NET bu belgeler için hiçbir yol sunmaz — "sınırlı doğruluk" değil, model yok, sonuç yok. CJK odaklı bir kullanım durumu için başlangıçta RapidOCR.NET'i seçen ekipler, bu kümenin dışındaki bir belgeyi işlemeleri gerektiğinde ilk kez bu sınırı keşfeder. IronOCR'nin dil özellikleri, NuGet üzerinden kurulabilen 125'ten fazla dili kapsar, böylece OCR hattının işleyebileceği kapsam uygulama koduna dokunmadan genişletilir - sadece dil paketini ekleyin ve bir enum özelliğini değiştirin.

Uygulama PDF Giriş veya Çıkışı Gerektirdiğinde

Belgelerin OCR işlemlerinde önemli bir kategori PDF'leri içerir: taranmış sözleşmeler, arşivlenmiş faturalar, çok işlevli yazıcılar tarafından PDF'ye dönüştürülmüş faks formları. RapidOCR.NET, ayrı bir PDF işleme kütüphanesi, özel dönüşüm kodu ve sayfa boyutundaki bit eşlemeler için bellek yönetimi olmadan hiçbirini okuyamaz. Belge alım hatları inşa eden ekipler, RapidOCR.NET yığınının hızlı bir şekilde en az iki kütüphane gerektirdiğini keşfeder — biri PDF oluşturma, diğeri OCR için — her biri kendi güncelleme döngüleri ve uyumluluk yüzeyleri ile. IronOCR, her ikisini tek bir pakette işler. RapidOCR.NET için kapsam dışında kalan taranmış bir arşivi arama yapılabilir bir dizine dönüştürerek arama yapılabilir PDF'ler üretme yeteneği,IronOCR ile tek bir yöntem çağrısıdır. Uyumluluk gereksinimlerine sahip belge yönetimi uygulamaları geliştiren ekipler, genellikle arama yapılabilir PDF çıktısı özelliğini belirleyici yetenek olarak belirtir.

Destek Yolu Olmadan Üretim Sorunları Ortaya Çıktığında

Topluluk projeleri, katkıda bulunanların müsaitliğine bağlı olarak yürütülür. Bir RapidOCR.NET üretim dağıtımı yeni bir edge vakası ile karşılaştığında — belirli bir ONNX Runtime sürüm uyuşmazlığı, alışılmadık bir resim formatında model çıkarım hatası, sürekli yük altında bir bellek sızıntısı — destek yolu bir GitHub sorunu açmak ve beklemektir. SLA yükümlülükleri veya iş açısından kritik belge işleme boru hatlarına sahip ekipler için, bu geçerli bir olay müdahale modeli değildir. IronOCR'nin ticari lisansı, ekiplerin bir Pazartesi günü son teslim tarihinden önce Cuma gecesi bir şey bozulduğunda gerçek bir iletişim noktası sağlayan doğrudan e-posta desteğini içerir.

Proje Prototip Varsayımlarının Ötesine Geçtiğinde

RapidOCR.NET, deneysel bir kavram kanıtı için makul bir seçimdir: ücretsiz, üzerinde pazarlık yapılacak bir lisans yoktur, model ayarının ötesinde hızlı kurulum yapılabilir. Bu kavram kanıtı bir üretim özelliği haline geldiğinde, laboratuvar ortamında kabul edilebilir olan kısıtlamalar — PDF desteği olmaması, dar dil kapsamı, manuel model yönetimi, ticari destek eksikliği — engel haline gelir. RapidOCR.NET'ten IronOCR'a geçiş yolu mekaniktir: paketleri kaldırın, modeller dizinini silin, MSBuild kopya kurallarını kaldırın, motor başlangıç bloğunu sıfır argümanlı bir OCR motoru yapıcısı ile değiştirin ve aynı anda PDF girişini, 125 dil kapsamını, otomatik ön işlemeyi ve aranabilir çıktıyı açın.

Genel Geçiş Dikkat Edilmesi Gereken Hususlar

Motor Başlatma İşlemini Değiştirme

En doğrudan kod değişikliği, RapidOcrEngine başlangıç bloğunu bir IronTesseract örneklemesiyle değiştirmektir. Dört yol konfigürasyon nesnesi tamamen kaybolur:

// Before: RapidOcrNet — engine needs all 4 paths populated
var engine = new RapidOcrEngine(new RapidOcrOptions
{
    DetModelPath = "models/det.onnx",
    ClsModelPath = "models/cls.onnx",
    RecModelPath = "models/rec_en.onnx",
    KeysPath     = "models/en_keys.txt"
});
var result = engine.Run(imagePath);
var text = string.Join("\n", result.TextBlocks
    .OrderBy(b => b.BoundingBox.Top)
    .Select(b => b.Text));

// After:IronOCR— no configuration required
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";
var text = new IronTesseract().Read(imagePath).Text;
// Before: RapidOcrNet — engine needs all 4 paths populated
var engine = new RapidOcrEngine(new RapidOcrOptions
{
    DetModelPath = "models/det.onnx",
    ClsModelPath = "models/cls.onnx",
    RecModelPath = "models/rec_en.onnx",
    KeysPath     = "models/en_keys.txt"
});
var result = engine.Run(imagePath);
var text = string.Join("\n", result.TextBlocks
    .OrderBy(b => b.BoundingBox.Top)
    .Select(b => b.Text));

// After:IronOCR— no configuration required
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";
var text = new IronTesseract().Read(imagePath).Text;
Imports System.Linq

' Before: RapidOcrNet — engine needs all 4 paths populated
Dim engine = New RapidOcrEngine(New RapidOcrOptions With {
    .DetModelPath = "models/det.onnx",
    .ClsModelPath = "models/cls.onnx",
    .RecModelPath = "models/rec_en.onnx",
    .KeysPath = "models/en_keys.txt"
})
Dim result = engine.Run(imagePath)
Dim text = String.Join(vbCrLf, result.TextBlocks _
    .OrderBy(Function(b) b.BoundingBox.Top) _
    .Select(Function(b) b.Text))

' After: IronOCR— no configuration required
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim text = New IronTesseract().Read(imagePath).Text
$vbLabelText   $csharpLabel

Manuel OrderBy ve Select zincirine sahip result.TextBlocks koleksiyonu result.Text'ya çöker. TextBlocks tarafından sağlanan sınır kutusu verilerine ihtiyaç duyan uygulamalar için, result.Words sonuçları okuma nasıl yapılır içinde belgelenmiş yapılandırılmış bir API aracılığıyla aynı kelime başına koordinatları ve güven değerlerini açıklar.

Model Dosyası Altyapısını Kaldırma

Kodu değiştirdikten sonra, models/ dizinini silin, model dosyalarını derlemede kopyalayan MSBuild <Content> girişlerini kaldırın ve eksik dosyalar için kontrol edilen herhangi bir başlangıç doğrulama mantığını kaldırın. Bunlara gerek yoktur —IronOCR verilerini dahili olarak gönderir. CI/CD hatlarında, model dosyalarını getiren veya önbelleğe alan adımları kaldırın. Görüntü girdi yönergesi, mevcut RapidOCR.NET kodunun muhtemelen kullandığı yaygın dosya yolu, akış ve bayt dizisi senaryoları için girdi işleme modellerini kapsar.

Düşük Kaliteli Görüntülerin İşlenmesi

RapidOCR.NET'in ONNX modelleri, çıkarım sırasında dahili ön işleme uygular, ancak kütüphane çağrıcıya bir ön işleme API'si sunmaz. Mevcut kod, engine.Run()'ye iletmeden önce görüntü manipülasyonunu uyguluyorsa, bu kod ayrı bir görüntü kütüphanesine karşı yazılmıştır. IronOCR, doğrudan OcrInput üzerinde bir ön işleme API'si açıklar:

using var input = new OcrInput();
input.LoadImage("low-quality-scan.jpg");
input.Deskew();           // Correct skewed scans
input.DeNoise();          // Remove scanner noise
input.Contrast();         // Enhance contrast
input.Binarize();         // Convert to black/white
input.EnhanceResolution(300);

var result = new IronTesseract().Read(input);
Console.WriteLine($"Confidence: {result.Confidence}%");
using var input = new OcrInput();
input.LoadImage("low-quality-scan.jpg");
input.Deskew();           // Correct skewed scans
input.DeNoise();          // Remove scanner noise
input.Contrast();         // Enhance contrast
input.Binarize();         // Convert to black/white
input.EnhanceResolution(300);

var result = new IronTesseract().Read(input);
Console.WriteLine($"Confidence: {result.Confidence}%");
Imports IronOcr

Using input As New OcrInput()
    input.LoadImage("low-quality-scan.jpg")
    input.Deskew()           ' Correct skewed scans
    input.DeNoise()          ' Remove scanner noise
    input.Contrast()         ' Enhance contrast
    input.Binarize()         ' Convert to black/white
    input.EnhanceResolution(300)

    Dim result = New IronTesseract().Read(input)
    Console.WriteLine($"Confidence: {result.Confidence}%")
End Using
$vbLabelText   $csharpLabel

Görsel yönlendirme düzeltme rehberi ve DPI ayarları rehberi, taranmış belgelerde en yaygın olarak doğruluğu etkileyen iki ön işleme konusunu ele alır. Güven skoru result.Confidence ve her kelime için result.Words[i].Confidence aracılığıyla mevcuttur.

PDF Desteği Ekleme

engine.Run() çağrılmadan önce PDF-to-image dönüşümü yapan kodlar tamamen silinebilir. IronTesseract.Read() doğrudan bir PDF yolunu kabul eder. PDF render kütüphanesi bağımlılığını ve dönüştürme ek kodunu kaldırın — bu, bağımlılıkların eklenmesi değil, toplamda azaltılması anlamına gelir.

Ek IronOCR Yetenekleri

Karşılaştırma bölümlerinde ele alınan özelliklerin ötesinde, IronOCR'un RapidOCR.NET'te karşılığı olmayan yetenekleri bulunmaktadır:

  • Bölge tabanlı OCR: Tüm sayfayı işlemeye gerek kalmadan, bir görüntünün belirli bir alanından metin çıkarın. Bölge bazlı OCR nasıl yapılır ve kırpma dikdörtgeni örneği, fatura başlığı çıkarımı, form alanı hedefleme ve benzeri kısmi belge senaryoları için CropRectangle kullanımını kapsar.
  • OCR sırasında barkod okuma: Barkod değerlerini tek bir geçişte metinle birlikte çıkarmak için ocr.Configuration.ReadBarCodes = true ayarlayın. barkod OCR nasıl yapılır ve barkod OCR örneği, result.Barcodes'nin standart OCR çıktısıyla nasıl entegre olduğunu gösterir.
  • Özel belge türleri: IronOCR, pasaportlar, plaka, el yazısı ve tablo çıkarma için test edilmiş rehberlik sağlar.
  • Async OCR: async OCR nasıl yapılır kılavuzu, ASP.NET istek işleyicileri ve arka plan servisleri için engelleyici olmayan işlem kalıplarını gösterir.
  • hOCR ve yapılandırılmış dışa aktarma: IronOCR, OCR sonuçlarını sözcük düzeyinde sınır kutularını koruyarak hOCR XML formatında kaydedebilir ve bu format, sonrasında belge işleme araçlarıyla uyumludur. hOCR dışa aktarma nasıl yapılır kılavuzu çıktı formatı seçeneklerini kapsar.

.NET Uyumluluğu ve Geleceğe Hazırlık

IronOCR, .NET 8, .NET 9, .NET Standard 2.0 ve .NET Framework 4.6.2 ve sonrası olmak üzere, mevcut kurumsal .NET ortamlarının tüm spektrumunu kapsar. Kütüphane, Windows x64/x86, Linux x64, macOS x64 ve macOS ARM (Apple Silicon) için platformlar arası ikili dosyalarla birlikte gönderilir ve konteyner görüntüleri, standart mcr.microsoft.com/dotnet/aspnet taban görüntülerine karşı test edilir. RapidOCR.NET'in uyumluluğu, benzer hedefleri kapsayan ancak platforma özgü NuGet paketi seçimi (Microsoft.ML.OnnxRuntime CPU için vs. Microsoft.ML.OnnxRuntime.Gpu CUDA için) gerektiren ve aynı binary-in-package sadeliğini garanti etmeyen ONNX Runtime platform destek matrisi ile sınırlıdır. IronOCR, aktif sürüm döngüsü sayesinde .NET 10 (Kasım 2026'da beklenen) ile uyumluluğunu korur ve SDK güncellendiğinde uygulama kodunda herhangi bir değişiklik yapılmasını gerektirmez.

Sonuç

RapidOCR.NET, belirli bir problemi iyi bir şekilde çözer: Tam Python ekosistemini gerektirmeden, .NET içinde CPU-optimize edilmiş PaddleOCR modellerini çalıştırmak. Çin veya İngilizce görüntüleri kontrol altında bir ortamda, model dosyalarının manuel olarak yönetilebileceği bir ortamda işleyen ekipler için, ücretsiz olarak makul bir doğruluk sunar. Bu, üretim kullanım durumunun kapsamıdır.

Model yönetim yükü belirleyici kısıtlamadır. Dört ayrı dosya, harici bir GitHub deposundan sağlanmış, uygulama ile birlikte dağıtılmış, çalıştırma zamanında doğrulanmış ve üst proje yeni ağırlıkları yayımladığında el ile güncellenmiş — bu, bir prototip için bir sorun değildir. CI/CD boru hatları, çoklu ortam dağıtımları ve birden fazla geliştirici ile bir üretim hizmeti için, mühendislik çeyreği boyunca sessizce saatleri tüketen operasyonel sürtüşme türüdür. Dil kapsamı tavanı sorunu daha da karmaşık hale getirir: bir iş gereksinimi, CJK olmayan bir dili tanıttığı anda, RapidOCR.NET tamamen devre dışı kalır.

IronOCR, RapidOCR.NET'in sınırlamalarının başladığı yerde devreye girer. Tek bir NuGet paketi, harici dosya yok,125+dil, yerel PDF girişi ve aranabilir PDF çıktısı, otomatik ön işleme, yapısal sonuç çıkarımı ve sürümlenmiş bir API altında ticari destek. $999 Lite lisansı, işlem başına metering veya yıllık yenileme gereksinimi olmadan tek seferlik bir maliyettir. Model yönetimi, PDF dönüştürme çözümleri ve desteklenmeyen dil artışları üzerinde harcanan mühendislik saatlerinin maliyetini hesaplayan ekipler, genellikle ticari bir kütüphanenin ücretsiz alternatife göre ekonomik olarak daha avantajlı olduğunu bulmaktadır.

Hali hazırda RapidOCR.NET'i üretimde çalıştıran veya yeni bir proje için değerlendiren takımlar için,IronOCR eğitim merkezi ve nasıl yapılır kılavuzları pratik bir başlangıç noktası sunar. Geçiş mekanik olup, kod daha basit hale gelir ve operasyonel yüzey tek bir paket referansına indirgenir.

Lütfen dikkate alınBitmiracle Docotic.Pdf, PaddleOCR, PdfPig, RapidOCR, ve Tesseract kendi sahiplerinin tescilli ticari markalarıdır. Bu site, Baidu, Bit Miracle, Google, PaddlePaddle, RapidOCR veya UglyToad ile ilişkili değildir, onaylanmamıştır veya desteklenmemektedir. Tüm ürün adları, logolar ve markalar kendi sahiplerine aittir. Karşılaştırmalar, yalnızca bilgilendirme amaçlıdır ve yazı sırasında halka açık bilgilerle alakalı olarak yansıtılmaktadır.

Sıkça Sorulan Sorular

RapidOCR.NET nedir?

RapidOCR.NET, geliştiriciler ve işletmeler tarafından görüntülerden ve belgelerden metin çıkarmak için kullanılan bir OCR çözümüdür. .NET uygulama geliştirme için IronOCR ile birlikte değerlendirilen birkaç OCR seçeneğinden biridir.

IronOCR, .NET geliştiricileri için RapidOCR.NET ile nasıl karşılaştırılır?

IronOCR, çekirdek motoru olarak IronTesseract kullanan, NuGet-native .NET OCR kütüphanesidir. RapidOCR.NET ile karşılaştırıldığında, daha basit bir dağıtım (SDK yükleyicileri yok), sabit fiyatlandırma ve COM etkileşimi veya bulut bağımlılıkları olmadan temiz bir C# API sunar.

IronOCR, RapidOCR.NET'ten daha mı kolay kurulur?

IronOCR, tek bir NuGet paketi aracılığıyla yüklenir. SDK kurulumları, kopyalamak için lisans dosyaları, kaydedilecek COM bileşenleri veya yönetilecek ayrı çalışma zamanı ikili dosyaları yoktur. Tüm OCR motoru paket içinde yer alır.

RapidOCR.NET ve IronOCR arasında hangi doğruluk farkları vardır?

IronOCR, standart iş belgeleri, faturalar, makbuzlar ve taranmış formlar için yüksek tanıma doğruluğu sağlar. Çok kötü durumda olan belgeler ya da nadir yazılar için ise doğruluk, kaynak kalitesine göre değişiklik gösterebilir. IronOCR, düşük kaliteli girişlerde tanımayı geliştirmek için görüntü ön işleme filtreleri içerir.

IronOCR, PDF metin çıkarma desteği sunuyor mu?

Evet. IronOCR, tek bir çağrıda hem yerel PDF'lerden hem de taranmış PDF görüntülerinden metin çıkarır. Çok sayfalı TIFF dosyaları, görüntüler ve akıntılar da desteklenir. Taranmış PDF'ler için, OCR sayfa bazında uygulanır ve her sayfa için sonuç nesneleri sağlanır.

RapidOCR.NET lisanslaması, IronOCR ile nasıl karşılaştırılır?

IronOCR, sayfa veya tarama başına ücret içermeyen sabit oranlı bir süresiz lisans kullanır. Yüksek belge hacmi işleyen kuruluşlar, hacme rağmen aynı lisans maliyetini öder. Ayrıntılar ve hacim fiyatlandırması IronOCR lisans sayfasında mevcuttur.

IronOCR hangi dilleri destekliyor?

IronOCR, ayrı NuGet dil paketleri aracılığıyla 127 dili destekler. Bir dil eklemek için tek bir 'dotnet add package IronOcr.Languages.{Language}' komutu gerekir. Manuel dosya yerleştirme veya yol yapılandırması gerekmez.

.NET projesine IronOCR'yi nasıl kurarım?

NuGet üzerinden kurun: 'Install-Package IronOcr' Package Manager Console'da veya 'dotnet add package IronOcr' CLI'de. Ek dil paketleri aynı şekilde yüklenir. Yerel SDK kurucusu gerekmez.

IronOCR, RapidOCR.NET'in aksine, Docker ve konteynerleştirilmiş dağıtımlar için uygun mu?

Evet. IronOCR, NuGet paketi aracılığıyla Docker konteynerlerinde çalışır. Lisans anahtarı, bir ortam değişkeni aracılığıyla ayarlanır. Lisans dosyaları, SDK yolları veya OCR motoru için hacimlerin bağlanmasına gerek yoktur.

IronOCR'u satın almadan önce RapidOCR.NET ile karşılaştırarak deneyebilir miyim?

Evet. IronOCR deneme modu, belgeleri işler ve çıkış üzerine bir filigran eklemeli OCR sonuçları döndürür. Lisans satın almadan önce kendi belgeleriniz üzerinde doğruluğu kontrol edebilirsiniz.

IronOCR, metin çıkarma yanında barkod okuma desteği sunar mı?

IronOCR, metin çıkarma ve OCR'ye odaklanır. Barkod okuma için Iron Software, eşlik eden bir kütüphane olan IronBarcode'u sağlar. Her ikisi de ayrı ayrı veya Iron Suite paketi olarak mevcuttur.

RapidOCR.NET'ten IronOCR'a geçiş yapmak kolay mı?

RapidOCR.NET'ten IronOCR'a geçiş genellikle başlatma dizilerini IronTesseract örneği ile değiştirmeyi, COM yaşam döngüsü yönetimini kaldırmayı ve API çağrılarını güncellemeyi içerir. Çoğu geçiş, kod karmaşıklığını önemli ölçüde azaltır.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku

Iron Destek Ekibi

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