IRONSOFTWAREHOME
DIĞER BILEŞENLERLE KARŞILAŞTIRIN

Paddle OCR vs Tesseract: Ayrıntılı OCR Karşılaştırması

Curtis Chau
Curtis Chau
Updated: 28 Haziran 2026

PaddleOCR, Çince karakter tanımada son derece başarılıdır – ancak bir .NET uygulamasında tek bir görüntüyü işlemek için beş NuGet paketi, yaklaşık 100MB'lik bir asenkron model indirme, Çin'deki Baidu sunucularına bağlanmayı gerektirir, her görüntü yükleme için bir OpenCvSharp bağımlılığı ve ilk çalışmada 3-5 saniyelik soğuk başlatma süresi gerekiyor. .NET projesinden bir Python-priori derin öğrenme sistemi kullanmanın vergisi budur. Çince yazı üzerinde hassasiyetin zorunlu olduğu ve GPU altyapısının zaten mevcut olduğu yoğun CJK iş yükleri için, bu vergi ödenecek değerlidir. Diğer her şey için, proje asla ihtiyaç duyulmayan bir genel giderdir.

PaddleOCR'yi Anlama

PaddleOCR, Baidu tarafından Baidu'nun kendi derin öğrenme çerçevesi PaddlePaddle üzerine inşa edilen açık kaynaklı bir OCR sistemidir. Proje, Python geliştiricileri için baştan sona tasarlandı ve .NET topluluğu, GitHub'da Zhou Jie (sdcb) tarafından sürdürülen bir topluluk sarmalayıcısı Sdcb.PaddleOCR aracılığıyla buna erişiyor.

Tanıma boru hattı, sıralı bir şekilde üç sinir ağını zincirler: metin bölge sınır kutularını tanımlayan fark edilebilir ikicme kullanarak bir metin algılama modeli, metin yönünü belirleyen bir yön sınıflandırıcısı ve tespit edilen bölge piksellerini diziye dönüştüren evrimli sinirsel ağ kullanan bir tanıma modeli. Bu ağların her biri, herhangi bir çıkarım başlamadan önce diskte bulunması gereken ayrı bir model dosyasıdır.

Ana mimari özellikler:

  • Çok paketli kurulum: Çekirdek paket (Sdcb.PaddleOCR), platform çalıştırma ortamı (Sdcb.PaddleInference.runtime.win64.mkl veya CUDA eşdeğeri), model indirme yardımı (Sdcb.PaddleOCR.Models.Online) ve görüntü yükleme için OpenCvSharp — minimum dört paket, OpenCvSharp çalıştırma ortamını ayırırsanız beş
  • Zorunlu model indirme: Modeller paketlenmemiştir. İlk kullanım OnlineFullModels.ChineseV4.DownloadAsync() çağrısını yapar, bu da Baidu kontrolündeki sunuculardan (bj.bcebos.com) indirir ve dağıtım nesnelerine ~100MB ekler
  • Her görüntü için OpenCV bağımlılığı: Bir dosya yolundan doğrudan çıkarıma gidecek bir yol yoktur. Görüntüler, ocr.Run(mat)'e geçirilmeden önce bir OpenCvSharp Mat nesnesi olarak yüklenmelidir
  • GPU hızlandırma için CUDA/cuDNN kurulumu gerekli: Reklamı yapılan performans rakamlarına ulaşmak için NVIDIA sürücüleri, CUDA Araç Seti 11.8, cuDNN 8.6+ ve ayrı bir GPU çalışma zamanı NuGet paketi — ortam başına kurulum süresi 2-8 saat
  • Python-priori sürüm sıklığı: Yeni PaddleOCR model versiyonları ilk python'da yer alır; .NET wrapper güncellemeleri haftalar veya aylar sonra takip eder
  • 14 desteklenen dil: Çinçe Basitleştirilmiş, Çinçe Geleneksel, İngilizce, Fransızca, Almanca, Korece, Japonca, İtalyanca, İspanyolca, Portekizce, Rusça, Arapça, Hintçe ve Tamil — bir sert tavan

NuGet paketi yaklaşık 200.000 indirme sayısına sahiptir. Daha küçük ayak izi, daha az Stack Overflow yanıtı, daha az test edilmiş üretim raporları ve deneyim yoluyla soruları yanıtlayabilecek daha ince bir geliştirici havuzu anlamına gelir.

Pratikte Üç-Model Boru Hattı

PaddleOCR her bir çıkarım çağrısı üç sinir ağını ardı ardına çalıştırır. Aşağıdaki kod, herhangi bir metin dönmeden önce bir geliştiricinin karşılaştığı tam kurulum yolunu gösteriyor:

// Five packages required before this compiles:
// dotnet add package Sdcb.PaddleOCR
// dotnet add package Sdcb.PaddleOCR.Models.Online
// dotnet add package Sdcb.PaddleInference.runtime.win64.mkl
// dotnet add package OpenCvSharp4
// dotnet add package OpenCvSharp4.runtime.win

using Sdcb.PaddleOCR;
using Sdcb.PaddleOCR.Models.Online;
using OpenCvSharp;

// Async download from Baidu servers — blocks first run for 10-30 seconds
FullOcrModel models = await OnlineFullModels.ChineseV4.DownloadAsync();

// PaddleOcrAll bundles detection, classification, and recognition
using PaddleOcrAll ocr = new PaddleOcrAll(models)
{
    AllowRotateDetection = true,
    Enable180Classification = true
};

// OpenCV required — no file path shortcut
using Mat mat = Cv2.ImRead("document.png");

if (mat.Empty())
{
    throw new FileNotFoundException("Could not load image");
}

// Three neural networks fire in sequence
PaddleOcrResult result = ocr.Run(mat);

Console.WriteLine(result.Text);

result.Regions dizisi, her biri bir Text dizgesi, bir Score güven değeri ve bir Rect sınırlayıcı kutu ile birlikte bireysel metin alanı nesneleri içerir. Güvene göre filtrelemek için: result.Regions.Where(r => r.Score > 0.8). Bölge sıralaması mekansaldır, okuma sırası garanti edilmez, bu yüzden region.Rect.Center.Y sonra region.Rect.Center.X sıralamak yaygın bir modeldir.

IronOCR'u Anlamak

IronOCR, ham Tesseract'ın gerektirdiği yapılandırma ve ön işleme çalışmalarını ortadan kaldırmak için optimize edilmiş bir Tesseract 5 LSTM motoruna sahip, .NET için ticari bir OCR kütüphanesidir. Tek bir NuGet paketi tam çalışma zamanını, dil modellerini, yerel ikili dosyalarını ve ön işleme boru hattını yükler.

Anahtar özellikler:

  • Tek paket dağıtımı: dotnet add package IronOcr her şeyi kurar. Ek runtime paketleri, model indirmeler, yerel kütüphane yapılandırması yok
  • Otomatik ön işleme: Eğim düzeltme, Gürültü Azaltma, Kontrast, Üçleme ve Çözünürlük Artırma zayıf kalitedeki girdiler için otomatik olarak uygulanır; Gerektiğinde açık kontrol mevcuttur
  • Yerli PDF desteği: Taralı PDF'ler, üçüncü parti dönüşüm adımı olmadan input.LoadPdf() ile doğrudan yüklenir
  • NuGet üzerinden125+dil: Her dil paketi, standart bir NuGet bağımlılığıdır — dotnet add package IronOcr.Languages.ChineseSimplified — model dizini yönetimi yok
  • İplik güvenliği, CPU için optimize edilmiştir: Yerleşik paralelleştirme CUDA veya GPU donanım gereksinimi olmadan
  • SLA ile ticari destek: ABD tabanlı Iron Software ticari destek sağlar; Ürün, topluluk yan projelerinden biri değildir
  • Süresiz lisanslama: $999 Lite / $1,499 Plus / $2,399 Professional — bir kez ödeyin, sayfa başına ücret olmadan süresiz çalıştırın

Özellik Karşılaştırması

ÖzellikPaddleOCR (Sdcb)IronOCR
NuGet paketleri gerekli4-51
Model indirmesi gerekliEvet (~100MB, Baidu sunucuları)Hayır (paketlenmiş)
Kurulum süresi30-60 dakika5 dakika
CJK doğruluğuMükemmel (%95+)İyi (%85-90)
İngilizce/Latin doğruluğuİyi (%92-95)Mükemmel (%97-99)
GPU desteğiEvet (karmaşık CUDA kurulumu)CPU için optimize edilmiş
Yerel PDF desteğiHayırEvet
Desteklenen diller14125+
LisansApache 2.0 (ücretsiz)Ticari ($999+)
Şirketin kökeniÇin (Baidu)ABD (Iron Software)

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

Kategori / ÖzellikPaddleOCR (Sdcb)IronOCR
Kurulum
NuGet paketleri4-51
Yükleme sırasında model indirmeGereklidirDahil
İlk çalıştırma soğuk başlangıç3-5 saniye1 saniyeden az
Kurulum süresi30-60 dakika5 dakikadan az
OpenCV bağımlılığıGereklidirNone
Dil desteği
Desteklenen diller14125+
Dil yükleme yöntemiModel indirmeNuGet paketi
Çoklu dil aynı andaArdışık model değişimiEvet (AddSecondaryLanguage)
CJK doğruluğuMükemmelİyi
Latin/İngilizce doğruluğuİyiMükemmel
Girdi işleme
Görüntü dosya girişiOpenCvSharp Mat aracılığıylaDoğrudan dosya yolu
Yerel PDF girişiHayırEvet
Şifre korumalı PDFHayırEvet
Akış girişiDolaylıEvet
Bayt dizisi girişiDolaylıEvet
Ön işlem
Otomatik ön işlemHayırEvet
HizalamaYönergeYerleşik
Gürültü azaltmaYönergeYerleşik
Kontrast artırmaYönergeYerleşik
Çözünürlük ölçeklemeYönergeEnhanceResolution(300)
Çıktı
Tam metin dizisiEvetEvet
Bölge/kelime sonuçlarıresult.Regionsresult.Words, result.Lines
Güven skoruBölge başına (region.Score)Kelime başına (word.Confidence)
Sınır kutularıregion.Rectword.X, word.Y, word.Width, word.Height
Aranabilir PDF çıktısıHayırEvet
hOCR içeri aktarmaHayırEvet
Performans
Görüntü başına CPU300-500ms150-300ms
Görüntü başına GPU50-100ms (CUDA gerektirir)N/A (CPU optimize edilmiş)
Bellek kullanımı500MB-1GB100-200MB
Dağıtım boyutu300-500MB~80MB
Dağıtım
Docker taban görüntü boyutu~1.5GB (CUDA tabanlı)~400MB
Çapraz platformWindows/Linux (kısmi)Windows, Linux, macOS
İzole dağıtımEvet (önceden indirilmiş modeller)Evet (indirmeye gerek yok)
Destek ve lisanslama
Lisans türüApache 2.0 (ücretsiz)Süresiz ticari
Ticari destekTopluluk/GitHubEvet, SLA ile
Firma / bakımcıBaidu / topluluk sarıcıIron Software (ABD)
NuGet indirmeleri~200K~5.3M

CJK Doğruluğu ve Kurulum Maliyeti

CJK doğruluğu PaddleOCR'nin gerçek gücüdür. Basitleştirilmiş Çince belgeler için, derin öğrenme CRNN mimarisi, sıkı Çince karakter ızgaralarında, karışık Çince/İngilizce düzenlerinde ve dikey metin bloklarında Tesseract tabanlı motorların önünde tutarlılıkla %95+'lik doğruluk rakamları ortaya koyar. Bir projenin birincil iş yükü Çince fatura işleme, Mandarin sözleşmeleri veya Japon ürün kataloglarıysa, bu doğruluk avantajı gerçektir.

PaddleOCR Yaklaşımı

Çinli model hattı, Baidu tarafından geniş ölçekli Çin belgeleri veri setleri üzerinde eğitilmiş tespit ve tanıma ağları nedeniyle iyi performans gösterir, ki Baidu'nun temel işi, geniş çapta Çin web içeriği işlemeyi içerir.

// Chinese model: highest accuracy for CJK documents
FullOcrModel models = await OnlineFullModels.ChineseV4.DownloadAsync();

using PaddleOcrAll ocr = new PaddleOcrAll(models)
{
    AllowRotateDetection = true,
    Enable180Classification = true
};

using Mat mat = Cv2.ImRead("chinese-invoice.png");
PaddleOcrResult result = ocr.Run(mat);

// Filter low-confidence regions for cleaner output
var highConfidence = result.Regions
    .Where(r => r.Score >= 0.8)
    .OrderBy(r => r.Rect.Center.Y)
    .ThenBy(r => r.Rect.Center.X);

foreach (var region in highConfidence)
{
    Console.WriteLine($"{region.Text} ({region.Score:P0})");
}

Güven filtresi kalıbı (r.Score >= 0.8) önemlidir çünkü derin öğrenme tespit adımı bazen metin dışı alanları metin olarak işaretleyecektir. Filtreleme olmadan, gürültü bölgeleri çıktıda görünür. Önce Rect.Center.Y ardından Rect.Center.X sıralamak, okuma sırasını yaklaşık olarak belirler ancak karmaşık çok sütunlu düzenlerde garanti etmez.

IronOCR Yaklaşımı

IronOCR'nin Basitleştirilmiş Çince desteği bir NuGet paketi olarak kurulabilir ve model yönetimi gerektirmez. Çince belgelerde doğruluk oranı %85-90 aralığında seyreder — aynı malzemede PaddleOCR'nin %95+'sinden düşük, ancak özellikle belgeler tutarlı formata sahip olduğunda birçok üretim kullanım durumu için yeterlidir.

// dotnet add package IronOcr.Languages.ChineseSimplified

using IronOcr;

var ocr = new IronTesseract();
ocr.Language = OcrLanguage.ChineseSimplified;

using var input = new OcrInput();
input.LoadImage("chinese-invoice.png");

// Preprocessing handles rotation, noise, and contrast automatically
input.Deskew();
input.DeNoise();

var result = ocr.Read(input);

// Word-level results with coordinates
foreach (var word in result.Words)
{
    Console.WriteLine($"{word.Text} at ({word.X},{word.Y}) — {word.Confidence}%");
}

Birkaç dili aynı anda kullanmaları gereken ekipler için — örneğin karışık Çince/İngilizce belgeler — IronOCR, kombinasyonu AddSecondaryLanguage ile ele alır. PaddleOCR, diller arasında model setlerini değiştirmeyi gerektirir, bu da ayrı indirme çağrıları ve ayrı motor örnekleri anlamına gelir.

Taviz belirli: PaddleOCR, saf CJK doğruluğunda kazanır. IronOCR, İngilizce/Latince doğruluğunda (97-99% vs. 92-95%), düşük kaliteli taramalar için ön işleme ve model dosyalarını yönetmenin operasyonel basitliğinde kazanır. Karışık dillerde belge işleyen veya ağırlıklı olarak Avrupa dillerindeki belgeleri işleyen ekipler, IronOCR'nin doğruluk profilini toplamda daha kullanışlı bulacaktır. IronOCR eğitim merkezi'ne çok dilli ve ön işleme örnekleri için bakın.

Model İndirme ve Yönetimi

PaddleOCR ve IronOCR arasındaki model yönetimi farkı, günlük operasyonun en belirgin farkını temsil eder. İlk kurulum, CI/CD hatları, Docker görüntüleri ve izole dağıtımları etkiler.

PaddleOCR Yaklaşımı

PaddleOCR, gidip indirmek için NuGet paketinden bağımsız modeller gönderir. Tam hat OCR çalışması için üç model dizini gereklidir ve bunları elde etmenin her bir yaklaşımı farklı bir denge içerir:

// Option A: Online download — simplest, but requires Baidu server access
// This runs on application startup; first run blocks for 10-30 seconds
FullOcrModel onlineModels = await OnlineFullModels.ChineseV4.DownloadAsync();

// Option B: Pre-downloaded local models — for air-gapped or compliance environments
// Developer must manually download and maintain three directories:
//   models/ch_PP-OCRv4_det_infer/
//   models/ch_ppocr_mobile_v2.0_cls_infer/
//   models/ch_PP-OCRv4_rec_infer/
FullOcrModel localModels = new FullOcrModel(
    LocalDetectionModel.FromDirectory("models/ch_PP-OCRv4_det_infer"),
    LocalClassificationModel.FromDirectory("models/ch_ppocr_mobile_v2.0_cls_infer"),
    LocalRecognitionModel.FromDirectory("models/ch_PP-OCRv4_rec_infer")
);

// Option C: Embedded model package — adds 100MB to NuGet restore, simplest deployment
// dotnet add package Sdcb.PaddleOCR.Models.LocalV4

// Japanese and Korean require separate model downloads:
FullOcrModel japaneseModels = await OnlineFullModels.JapanV4.DownloadAsync();
FullOcrModel koreanModels = await OnlineFullModels.KoreanV4.DownloadAsync();

Model sürümü, sarıcı sürümü ile uyuşmalıdır. Sdcb.PaddleOCR güncellendiğinde, önceki sürümden önceden indirilen modellerin yeniden indirilmesi gerekebilir. NuGet restore adımını önbelleğe alan CI/CD hatları, model dosyası önbelleğe almayı ayrıca yönetmeli veya konteyner yapı aşamasında model indirmeleri tetiklemelidir. Docker görüntüsü karşılaştırması sonucu gösterir: bir PaddleOCR konteyneri yaklaşık olarak 1.5GB'dir; bir IronOCR konteyneri yaklaşık olarak 400MB.

IronOCR Yaklaşımı

IronOCR dil modelleri standart NuGet paketleridir. İndirme çağrıları yok, model dizini yönetimi yok, sürüm eşitleme yok. NuGet paketi,IronOCR için İngilizce modeli içerir; Ek dil paketleri diğer bağımlılıklar gibi kurulur.

// dotnet add package IronOcr
// dotnet add package IronOcr.Languages.ChineseSimplified
// dotnet add package IronOcr.Languages.Japanese

using IronOcr;

//Hayırasync initialization, no model path, no version matching
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.ChineseSimplified;
ocr.AddSecondaryLanguage(OcrLanguage.Japanese);

using var input = new OcrInput();
input.LoadImage("mixed-cjk-document.png");

var result = ocr.Read(input);
Console.WriteLine(result.Text);
C#

Dil paketleri, dotnet restore'in bir parçası olarak geri yüklenir. models/ dizinlerini kopyalayan, apt-get install libopencv-dev çalıştıran ve CUDA tabanlı görüntüyü ekleyen Docker yapı adımı,IronOCR konteynerinde basitçe mevcut değildir. Docker dağıtımı veya Azure dağıtımı kullanan ekipler için, konteyner inşa karmaşıklığındaki fark önemli.

GPU ve CUDA Bağımlılığı

PaddleOCR'nin GPU performans rakamları — CPU'da 300-500ms'ye karşı görüntü başına 50-100ms — gerçektir. Derin öğrenme modelleri, Tesseract tabanlı motorlarda olmayan bir şekilde GPU paralelliğinden önemli ölçüde faydalanır. Günlük on binlerce görüntü işleyen bir iş yükü için, bu 5-10 kat geçiş artışı altyapı konuşmasını değiştirir.

PaddleOCR Yaklaşımı

GPU çıkarımları NuGet dışında tamamen ayrı bir yazılım yığını gerektirir. Ortam ön koşulları hassastır ve sürüm kilitlidir:

// Prerequisites (must be installed before this compiles correctly):
// 1. NVIDIA GPU with CUDA capability 3.5+
// 2. NVIDIA Driver 452.39+ (Windows) / 450.80.02+ (Linux)
// 3. CUDA Toolkit 11.8 — exact version, not 12.x
// 4. cuDNN 8.6.0+ for CUDA 11.x
// 5. dotnet add package Sdcb.PaddleInference.runtime.win64.cuda118

using Sdcb.PaddleOCR;
using Sdcb.PaddleOCR.Models.Online;
using Sdcb.PaddleInference;
using OpenCvSharp;

FullOcrModel models = await OnlineFullModels.ChineseV4.DownloadAsync();

// GPU device 0, 1000MB GPU memory pool
using PaddleOcrAll ocr = new PaddleOcrAll(models, PaddleDevice.Gpu(deviceId: 0))
{
    AllowRotateDetection = true,
    Enable180Classification = true
};

using Mat mat = Cv2.ImRead(imagePath);
PaddleOcrResult result = ocr.Run(mat);

CUDA_PATH ayarlanmadıysa, eşleşen cuDNN DLL beklenen yolda yoksa veya çalışma zamanı paketi sürümü yüklü CUDA araç takımı ile uyuşmuyorsa, çağrı doğal kitaplık yükleme istisnası atar. Bu arızayı teşhis etmek, sürücü sürümlerini, PATH girdilerini ve DLL varlığını çeşitli dizinlerde kontrol etmeyi gerektirir. Docker'da, GPU desteği nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 tabanlı görüntü artı nvidia-container-toolkit ana makinede gerektirir, bu da hem görüntü oluşturma hem de konteyner çalışma zamanı yapılandırmasına karmaşıklık katar.

Sadece CPU dağıtımları için, PaddleOCR, MKL hızlandırmalı çalışma zamanı varsayılanı: soğuk başlangıç model yüklemesi 3-5 saniye ile görüntü başına yaklaşık 300-500ms'dir.

IronOCR Yaklaşımı

IronOCR, CPU çıkarımı için tasarlanmıştır. Standart donanımda, GPU bağımlılığı, CUDA yığını veya sürücü sürümü endişesi olmadan görüntü başına150-300mssağlar. Motor ayrıca bir saniyenin altında başlar çünkü modeller başlatma sırasında diskten yükleneceği yerine paketlendikleri için.

using IronOcr;

//HayırGPU setup, no CUDA, no driver checks
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

var ocr = new IronTesseract();

// Preprocessing built-in — improves accuracy on poor scans without extra code
using var input = new OcrInput();
input.LoadImage("document.png");
input.Deskew();
input.DeNoise();
input.EnhanceResolution(300);

var result = ocr.Read(input);
Console.WriteLine($"Confidence: {result.Confidence}%");
C#

GPU donanımı olmadan ölçekli geçiş için, IronOCR'ın iş parçacığı güvenli tasarımı, ayrı IronTesseract örnekleri ile bir dizi görüntü üzerinde Parallel.ForEach sağlar — her bir işlem kilitlenmeden bağımsız olarak işler. çoklu iş parçacığı örneği modelini gösterir. 4 çekirdekli bir CPU'da görüntü başına 150-300ms'lik bir hızda, 100 görüntüden oluşan bir toplu iş, paralellik kullanılarak 20-40 saniyede tamamlanır — çoğu web API ve belge hattı senaryosu için GPU yatırımını gereksiz hale getiren CPU geçişi.

görüntü kalite düzeltme kılavuzu, otomatik ön işlemenin ayar gerektirdiği durumlar için ön işleme yapılandırmasını ayrıntılı olarak ele alır.

PDF İşleme

PaddleOCR'nin yerel PDF desteği yok. PaddleOCR aracılığıyla işlenen her PDF, sayfaları önce görüntülere dönüştürmek için harici bir kütüphane gerektirir, dönüşüm ve çıkarım arasında geçici dosya yönetimi ve temizlik mantığıyla işlenmesi gerekir.

PaddleOCR Yaklaşımı

// Requires additional package: PdfiumViewer or similar
using Sdcb.PaddleOCR;
using Sdcb.PaddleOCR.Models.Online;
using OpenCvSharp;
using PdfiumViewer;
using System.Drawing.Imaging;
using System.Text;

FullOcrModel models = await OnlineFullModels.ChineseV4.DownloadAsync();
using PaddleOcrAll ocr = new PaddleOcrAll(models);

var results = new StringBuilder();

//YönergePDF-to-image conversion, page by page
using PdfDocument pdf = PdfDocument.Load("document.pdf");

for (int i = 0; i < pdf.PageCount; i++)
{
    // Render page to bitmap — 200 DPI
    using var pageImage = pdf.Render(i, 200, 200, PdfRenderFlags.CorrectFromDpi);

    // Save to temp file — OpenCvSharp cannot read from memory easily
    string tempPath = Path.GetTempFileName() + ".png";
    pageImage.Save(tempPath, ImageFormat.Png);

    try
    {
        using Mat mat = Cv2.ImRead(tempPath);
        var result = ocr.Run(mat);
        results.AppendLine($"--- Page {i + 1} ---");
        results.AppendLine(result.Text);
    }
    finally
    {
        File.Delete(tempPath);  // Must clean up temp files
    }
}

return results.ToString();
C#

Bu, tek bir PDF için 30+'dan fazla satırdır. Başka bir NuGet bağımlılığı (PdfiumViewer) eklenmesi, seçilen DPI'da manuel sayfa işlemesi, geçici dosya oluşturma ve silme ve sonuçların tekrar ve tekrar toplanması — tümü PaddleOCR'nin kendisinden önce başlatılır. Çok düşük DPI seçimi doğruluğu düşürür; çok yüksek olanı işlem süresini artırır. Geliştirici bu karara sahiptir.

IronOCR Yaklaşımı

IronOCR, PDF'leri yerel olarak okur. Dönüşüm kütüphanesi yok, geçici dosyalar yok, çağrı yerinde sayfa başına döngü yok:

using IronOcr;

var ocr = new IronTesseract();

// Yerel PDF girişi — no external library needed
using var input = new OcrInput();
input.LoadPdf("document.pdf");

var result = ocr.Read(input);

// Per-page access available if needed
foreach (var page in result.Pages)
{
    Console.WriteLine($"Page {page.PageNumber}: {page.Text.Length} chars");
}

// Produce a searchable PDF in one additional line
result.SaveAsSearchablePdf("searchable-output.pdf");
C#

Şifre korumalı PDF'ler, aynı LoadPdf yolu ile bir Password parametresi kullanır. PDF giriş kılavuzu ve arama yapılabilir PDF kılavuzu çok sayfalı ve çıktı seçeneklerini ayrıntılı olarak kapsar. PDF olarak gelen her dosyanın geldiği taranmış belge arşivlerini dijitalleştiren kuruluşlar için bu fark, bir entegrasyon kodu katmanını önemli ölçüde ortadan kaldırır.

API Eşleme Başvurusu

PaddleOCR (Sdcb)IronOCR KarşılığıNotlar
Sdcb.PaddleOCRIronOcrNamespace
PaddleOcrAllIronTesseractAna OCR orkestrasyon sınıfı
FullOcrModelYokEşdeğeri yok — modeller paketlenmiş
OnlineFullModels.ChineseV4.DownloadAsync()dotnet add package IronOcr.Languages.ChineseSimplifiedModel edinme
LocalDetectionModel.FromDirectory(path)YokModel yolu yönetimi yok
LocalClassificationModel.FromDirectory(path)YokModel yolu yönetimi yok
LocalRecognitionModel.FromDirectory(path)YokModel yolu yönetimi yok
new PaddleOcrAll(models)new IronTesseract()Motor örnekleme
new PaddleOcrAll(models, PaddleDevice.Gpu(0))N/A (CPU optimize edilmiş)GPU cihaz seçimi
Cv2.ImRead(imagePath) (OpenCvSharp)new OcrInput(imagePath) veya input.LoadImage(path)Görüntü yükleme
ocr.Run(mat)ocr.Read(input)OCR'yi yürüt
result.Textresult.TextTam belge metni
result.Regionsresult.Words / result.LinesYapılı metin bölgeleri
region.Textword.TextBir bölgeden metin
region.Scoreword.ConfidenceGüven değeri (0-1 vs 0-100)
region.Rect.Center.X / .Center.Yword.X / word.YSınır kutusu pozisyonu
region.Rect.Size.Width / .Heightword.Width / word.HeightSınır kutusu boyutları
AllowRotateDetection = trueinput.Deskew()Dönüş imajı
Enable180Classification = trueOtomatikTers çevrilmiş metin tespiti
Yokinput.DeNoise()Gürültü giderme
Yokinput.Contrast()Kontrast artırma
Yokinput.EnhanceResolution(300)DPI ölçeklendirme
Yokinput.LoadPdf(path)Yerel PDF girişi
Yokresult.SaveAsSearchablePdf(path)Aranabilir PDF çıktısı
Yokocr.AddSecondaryLanguage(lang)Birden çok dil aynı anda

Takımlar PaddleOCR'den IronOCR'ye Geçmeyi Düşündüğünde

Dil Gereklilikleri 14'ün Ötesine Geçtiğinde

Bir proje Çin faturalarını işlemeye başlar — PaddleOCR bunu iyi çalıştırır. Sonra müşteri tabanı genişler ve belgeler Lehçe, Felemenkçe, Yunanca, Vietnamca ve Türkçe olarak gelir. PaddleOCR'nin desteklenen 14 dili, bunlardan hiçbirini kapsamaz. Taşınma zorunlu hale gelir çünkü araç kullanım durumuyla büyüyemez. IronOCR'da Lehçe desteğini eklemek bir NuGet paket eklemesi ve tek satır konfigürasyon değişikliğidir. Bir projeyi "başlangıçta Çince ağırlıklı ama sonunda çok bölgesel" olarak çalışan ekipler, bir yeniden yazım olmadan dil kapsamını genişletebilen bir araçla başlamaya karar vermelidir.

Kurulum Maliyeti Sorun Bütçesini Aştığında

PaddleOCR belgeleri, ilk kurulum için CPU'da 30-60 dakika ve GPU'da 2-8 saat tahmin eder. Saatte 100$ olan geliştirici zamanı, ilk GPU konfigürasyonu denemesinin ilk üretim görüntüsü işlenmeden önce 200-800$ maliyetine neden olur.IronOCR kurulumu tek bir kurulum komutu ve dört satırlık bir kod örneği — beş dakikadan az. Dahili araçlar, prototipler veya OCR'nin ana üründen ziyade ikincil bir özellik olduğu projeler için bu zaman farkı, OCR özelliğinin mevcut sprintte gönderilip gönderilmeyeceğini veya öncelik dışına çıkarılacağını belirler.IronOCR ile çabaya başlamak bir CUDA ortamını yapılandırmaktan daha az zaman alır.

PDF İş Akışlarının Hakim Olduğu Durumlar

Taranmış belge arşivlerini dijitalleştiren kuruluşlar, faks-to-PDF hatlarını işleyen veya PDF formatında faturalar ve sözleşmelerden veri çıkaranlar PaddleOCR'de yapısal bir sorunla karşılaşır: her PDF, ek bir kütüphane, manuel sayfa işlemesi, geçici dosya yönetimi ve DPI seçim mantığı gerektirmeden önce PaddleOCR tarafından işlenmelidir. Bu, rastgele bir karmaşıklık değildir — kalıcı bir bakımdır. İlk PaddleOCR entegrasyonundan sonra iş yüklerinin %80+'i PDF tabanlı olduğunu keşfeden ekipler, %80+'i PDF tabanlı olduklarında taşınır genellikle PDF dönüşüm katmanı bir hata kaynağı haline geldiğinde taşınır.

Baidu Menşei Uyarıları Uyumluluk İncelemeleri

Hükümet, savunma, sağlık hizmetleri ve finansal hizmetler kuruluşlarındaki kurumsal güvenlik ekipleri giderek artan bir şekilde Çin devletiyle bağlantılı şirketlerden kaynaklanan bileşenlere inceleme kriterleri uygulamaktadır. PaddleOCR, bir Baidu projesidir; model indirmeleri varsayılan olarak Baidu Cloud Storage'a bağlanır; PaddlePaddle çerçevesi bir Baidu ürünüdür. Kod yerel olarak çalışır ve belgeler iletilmez, ancak model eserleri Baidu altyapısından kaynaklanır. FedRAMP, ITAR veya CMMC ortamları için, bu menşei uyumluluk incelemesini tetikler ve benimsemeyi engelleyebilir. IronOCR, ABD merkezli bir şirket olan Iron Software'in bir ürünüdür, içerikleri yerel olarak işler, dış bağlantı yapmaz ve üçüncü taraf bir sunucudan model indirmeleri gerektirmez.

GPU Altyapısı Hazır Olmadığında

PaddleOCR CPU'da (300-500ms/görüntü, 3-5 saniye soğuk başlangıç,500MB-1GBbellek)IronOCR CPU'dan (150-300ms/görüntü, bir saniyeden az soğuk başlangıç,100-200MBbellek) daha yavaş ve daha ağırdır. PaddleOCR'nin GPU avantajı yalnızca CUDA/cuDNN kurulumu sonrasında belirginleşir ve yalnızca yüksek hacimde operasyonel karmaşıklığı doğrular. GPU örnekleri olmayan yetkili bulut altyapısı çalıştıran takımlar — GPU olmayan EC2, Azure App Service, AWS Lambda — PaddleOCR kurulum maliyetini haklı çıkarmayan bir performans avantajı almadan öder.

Genel Geçiş Dikkat Edilmesi Gereken Hususlar

Paket ve Namespace Değişimi

Paket değişimi beş bağımlılığı kaldırır ve bir tane ekler. Sdcb.PaddleOCR, Sdcb.PaddleOCR.Models.Online, Sdcb.PaddleInference.runtime.* paketi, OpenCvSharp4 ve OpenCvSharp4.runtime.win, .csproj'den kaldırın. IronOcr ekleyin. Önceden indirilen bir model seti kullanan İngilizce olmayan tüm diller için NuGet paketleri olarak dil paketleri ekleyin.

using Sdcb.PaddleOCR ve using OpenCvSharp direktifleri using IronOcr ile değiştirilir. Mat mat = Cv2.ImRead(path) kalıbı new OcrInput(path) veya input.LoadImage(path) ile değiştirilir. ocr.Run(mat) çağrısı ocr.Read(input) olur. Görüntü giriş API'sini kullanan projeler için, OcrInput nesnesi dosya yollarını, bayt dizilerini, akışları ve System.Drawing.Bitmap kabul eder — OpenCvSharp aracı tamamen ortadan kalkar.

Sonuç Yapısı Yeniden Eşleme

PaddleOCR, result.Regions döndürüyor — PaddleOcrResultRegion nesnelerinin bir dizisi olarak, region.Score 0 ile 1 arasında bir float. IronOCR, result.Words döndürüyor — word.Confidence ise 0 ile 100 arasında bir yüzde. Güven filtresi r.Score >= 0.8, w.Confidence >= 80 ile eşlenir. Sınırlayıcı kutu erişimi, region.Rect.Center.X / region.Rect.Size.Width'den word.X / word.Width'ya değişiyor. yapılı sonuçlar rehberi sayfaları, paragrafları, satırları ve kelimeleri kapsar.

İtalik sıralama (okuma sırasını taklit etmek için Y'ye sonra X'e göre sıralama),IronOCR ile daha az sıklıkla gereklidir çünkü Tesseract düzen motoru sayfa segmentasyonu adımında okuma-sırası analizini gerçekleştirir. PaddleOCR'nin özel sıralama mantığını gerektirdiği belgelerde, IronOCR'nin varsayılan çıktı düzeninin zaten bu gereksinimi karşılayıp karşılamadığını portlama kodunu aktarmadan önce test edin.

Ön İşleme Geçişi

PaddleOCR'nin derin öğrenme tespit modeli, orta derece görüntü kalitesi bozulmasına tolerans gösterir — sinir ağı, gürültü ve eğriliği, Tesseract'ın klasik segmentasyon hattından daha güvenilir bir şekilde ele alır. IronOCR'ye geçiş yaparken, önceden sorunsuz işlenmiş belgeler için açık ön işleme ekleyin:

using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput();
input.LoadImage("low-quality-scan.png");

// These filters recover the accuracy that PaddleOCR provided automatically
// on noisy or skewed inputs
input.Deskew();
input.DeNoise();
input.Contrast();
input.Binarize();
input.EnhanceResolution(300);

var result = ocr.Read(input);

Standart olmayan açılarda veya arka plan gürültüsü olan taranmış belgeler için bu dört filtre çoğu doğruluk boşluğunu kapatır. görüntü yönlendirme düzeltme kılavuzu ve görüntü rengi düzeltme kılavuzu, her filtrenin yaygın tarama artefaktlar üzerindeki etkisini belgelemektedir. Son geçişi öncesinde her iki hattan temsili belgeleri çalıştırarak doğruluğun gerçek belge setinde gereksinimleri karşıladığını doğrulayın.

Dağıtım Temizliği

Taşıma sonrası, dağıtım eseri önemli ölçüde küçülür. models/ dizin ağacını silin (üç alt dizin, ~21MB model dosyası), paddle_inference.dll (~200MB), paddle2onnx.dll (~5MB), ve opencv_world*.dll dosyaları (~50MB toplam). Dockerfile'dan apt-get install libopencv-dev satırını kaldırın ve model kopyalama adımını silin. Modelleri önceden indiren veya model dizinlerini önbelleğe alan herhangi bir CI/CD adımını kaldırın. Docker görüntüsü yaklaşık 1.5GB'dan 400MB'a düşer.

Ek IronOCR Yetenekleri

Yukarıda kaplanan karşılaştırma noktalarının ötesinde, IronOCR, OCR'nin ötesine geçen özellikler sağlar:

  • OCR sırasında Barkod okuma: ocr.Configuration.ReadBarCodes = true'yı ayarlayın ve aynı belgedeki barkodlar, bir geçişte metin ile birlikte çözümlenir — ayrı bir barkod kütüphanesi gerekmez
  • Bölge tabanlı OCR: Tam sayfayı işlemden geçirmeden belirli belge alanlarını (fatura numarası alanı, başlık satırı, imza bloğu) hedeflemek için CropRectangle kullanın
  • Asenkron OCR: ASP.NET denetleyicilerinde ve arka plan hizmetlerinde engellenmeyen entegrasyon için tam asenkron/yayın destek.
  • Güven puanlama: Belge seviyesi ve kelime seviyesi güven, kalite kapılarını sağlar — insan incelemesi için düşük güvenlik sonuçlarını reddedin veya işaretleyin
  • hOCR dışa aktarma: Konumsal HTML tüketen genel belge yönetim sistemleri için hOCR çıktısı üretin
  • El yazısı tanıma: Yazılı belge OCR'sının ötesine, el yazılı formlara ve notlar çıkarır
  • Tablo çıkarımı: Faturalar, raporlar ve formlardan tablolu veri yapılı halde çıkarma
  • İlerleme takibi: UI bağlamlarında uzun çok sayfalı toplu iş operasyonları için OCR ilerleme raporu

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

IronOCR, Windows x64, Windows x86, Linux x64 ve macOS üzerinde .NET 6, 7, 8 ve 9 hedefler. Azure App Service, AWS Lambda, Docker konteynerleri üzerinde çalışır, ve izole yerinde ortamlar — tamamı aynı NuGet paketinden. Kütüphane, her .NET sürüm döngüsüne uyumlu Iron Software'den düzenli güncellemeler alır, .NET 10 ile planlanan uyumluluk dahil. PaddleOCR'nin .NET sarıcı, topluluk tarafından sürdürülen bir projedir; yeni .NET sürümleriyle uyumluluk, tek bir bakımcının kapasitesine bağlıdır. Sarının yayın zaman çizelgesi ve yeni PaddleOCR Python model sürümlerinin .NET'e ulaşması için 3 aylık gecikmesi, topluluk mevcudiyetine bağımlılığı ve ticari yayın taahhütlerini gösterir.

Sonuç

PaddleOCR'nin CJK doğruluk avantajı gerçektir ve özeldir. Bir projenin ana iş yükü Basitleştirilmiş Çince belgelerse ve ekip derin öğrenme uzmanlığına ve mevcut GPU altyapısına sahipse, çoklu paket kurulum maliyeti ve CUDA konfigürasyon karmaşıklığı, Tesseract tabanlı motorlar tarafından şu anda eşleştirilmeyen sıkı Çince karakter tanıma üzerine konumlandırılmış olan doğruluk rakamlarıyla haklı çıkarılır.

Sorun, bu belirli senaryonun .NET OCR kullanım durumlarının azınlığını tanımlamasıdır. Çoğu ticari uygulama İngilizce ve Avrupa dillerindeki belgeleri işler, burada IronOCR'nin %97-99 doğruluğu PaddleOCR'nin %92-95'ini aşar. Çoğu geliştirme ekipleri önceden kurulmuş bir CUDA altyapısına sahip değildir. Çoğu belge hattı PDF alır ve bunlar PaddleOCR'nin ek bir kütüphane olmadan işleyemediği dosyalardır. .NET projesinde çalışan çoğu geliştirici tek bir paket yüklemenin tam kurulum adımı olmasını bekler — beş paketlik ilk olan, bir asenkron model indirme ve bir OpenCV bağımlılığı ardında değildir.

Ölçekte GPU geçişi gerektiren ekipler için, PaddleOCR CPU performansı (300-500ms),IronOCR CPU performansının (150-300ms) zaten gerisinde, yani PaddleOCR'nin performans açısından tek senaryo, CUDA altyapısının zaten operasyonel olduğu durumdur. IronOCR'nin süresiz lisans maliyeti, yalnızca GPU konfigürasyon süresi göz önüne alındığında genellikle ilk hafta içinde telafi edilir.

Açılış sorusu, %95+'lik Çince karakter doğruluğunun onu sağlayan tam yığını haklı çıkarıp çıkarmadığıdır. Çoğunluğu Çince-odaklı iş yükleri olan, GPU altyapısı ve Baidu kökenli yazılım için uyumluluk onayına sahip olan ortamlar için cevap evet. Her şey için,IronOCR beş dakika içinde çalışmaya başlar ve çoğu .NET OCR projesinin gerçekten karşılaştığı dil, ön işleme ve PDF gereksinimlerinin kapsamını karşılar.

Lütfen dikkate alın: PDFium, PaddleOCR ve Tesseract, ilgili sahiplerinin tescilli ticari markalarıdır. Bu site, Baidu, Chromium Project, Google veya PaddlePaddle ile ilişkili, onaylanmış veya sponsorlu değildir. 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.
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ılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez