IRONSOFTWAREHOME
IRONOCR KULLANIMI

.NET OCR SDK: C# için Bir Metin Tanıma Kütüphanesi

Curtis Chau
Curtis Chau
Updated: 21 Nisan 2026

Bir .NET OCR SDK, C# ve .NET uygulamalarının görüntülerden, taranmış PDF'lerden ve diğer belge formatlarından programatik olarak metin çıkarmasına izin veren bir yazılım geliştirme kitidir. IronOCR, Tesseract 5 motorunu ön işleme filtreleri, barkod okuma, aranabilir PDF çıktısı ve 125'ten fazla dil desteğine sahip, üretim için hazır bir .NET OCR SDK'dir — Windows, Linux, macOS ve bulut platformlarında çalışan temiz bir C# API ile erişilebilir.

IronOCR'u Projeniz İçin Doğru .NET OCR SDK Yapan Nedir?

Metinden metin tanıma oluşturmak, görüntü ön işleme hatlarını, dil veri dosyalarını, iş parçacığı modellerini ve çıktı ayrıştırmalarını yönetmek anlamına gelir - ilk kelimenizi çıkarmadan önce aylarca çalışma. IronOCR, ekibinizin dakikalar içinde bir projeye bırakabileceği savaşta test edilmiş bir motor göndererek bu ek yükü ortadan kaldırır.

Onu ham Tesseract bağlamalarından ayıran temel yetenekler:

  • El yazısı dahil 125+ dil ve yazı sisteminin tanınması
  • Dahili filtreler: gürültü giderme, düzgünleştirme, ikili hale getirme, çözünürlük iyileştirme ve kontrast düzeltme
  • Aynı okuma geçişinde barkod ve QR kodu tanıma
  • Arşivleme iş akışları için görünmez metin katmanlarıyla aranabilir PDF oluşturma
  • Yüksek verimli hatlar için eşzamanlı asenkron ve paralel toplu işlem
  • İşlem süresini azaltmak için belirli sayfa bölgelerini hedef alan bölgesel OCR
  • Windows, Linux, macOS, Docker ve Azure üzerinde çapraz platform desteği

Tesseract OCR projesi belgelerine göre, ham Tesseract dil paketleri, DPI ayarları ve çıktı modları için manuel yapılandırma gerektirir. IronOCR tüm bunları otomatik olarak yönetir, bu sayede çıkartılan metnin ne anlama geldiğine odaklanabilir ve nasıl çıkarılacağını düşünmezsiniz.

IronOCR, Ham Tesseract ile Nasıl Karşılaştırılır?

P/Invoke sarıcı veya Tesseract NuGet paketi aracılığıyla ham Tesseract, tessdata dil dosyalarını indirip yerleştirmek, doğru sayfa segmentasyon modunu seçmek, çok sayfalı TIFF ve PDF'leri kendiniz bölmek ve paralel işlem istiyorsanız iş parçacığını bağlamak sorumluluğunu size bırakır. Bu detayların hiçbiri iş gereksinimlerinize özel değildir.

IronOCR, tüm bu tesisatı sarmalar. Yazılı bir API yüzeyi, otomatik tessdata yönetimi, yerleşik PDF ayırma ve yeniden birleştirme, ve talepler arasında yeniden kullanılabilecek, iş parçacığı güvenli bir motor alırsınız. Ticari kullanım için ödeme gerektiren bir lisans söz konusu—lisanslama sayfası mevcut fiyatlandırma katmanlarını, ücretsiz geliştirme lisansı dahil, göstermektedir.

Sadece açık kaynaklı bağımlılıklar gerektiren ekipler için, özel ön işleme ile ham Tesseract geçerli bir yolu ifade eder. Hızla güvenilir OCR sağlaması gereken ekipler için, IronOCR entegrasyon yüzeyini birkaç satır C#'a indirger.

IronOCR .NET SDK Nasıl Yüklenir?

Kurulum standart .NET paket yöneticisi olan NuGet üzerinden gerçekleşir. Proje dizininizde aşağıdaki komutu çalıştırın:

PM > Install-Package IronOcr

Visual Studio kullanıcıları için, NuGet Paket Yöneticisi arayüzünde IronOcr arayın ve oradan yükleyin. Manuel DLL referansları dahil tüm kurulum seçenekleri için IronOCR kurulum belgelerine bakın.

Kurulumdan sonra, lisans anahtarını uygulamanızın başlangıcına veya appsettings.json ekleyin. Ücretsiz deneme başlatabilirsiniz ve değerlendirme sırasında tüm özellikleri açacak bir deneme anahtarı edinebilirsiniz.

Kurulumu Doğrulama

Kurulumdan sonra hızlı bir akıl sağlığı kontrolü her şeyin doğru bağlandığını onaylar. .NET 10 hedefleyen bir konsol uygulaması oluşturun:

using IronOcr;

// Minimal smoke test -- reads a single image and prints extracted text
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("sample.png");
var result = ocr.Read(input);
Console.WriteLine(result.Text);

Konsolda metin görünüyorsa, SDK kurulu ve lisans anahtarı geçerlidir. Üretim iş akışları oluşturmaya hazırsınız.

C# ile Görüntülerden ve PDF'lerden Metin Nasıl Çıkarılır?

Çekirdek çıkarım deseni tüm giriş türleri arasında tutarlıdır. Bir IronTesseract örneği oluşturur, içeriği bir OcrInput nesnesine yükler ve Read() çağırırsınız. IronOCR dosya biçimini uzantıdan otomatik olarak algılar, bu nedenle aynı kod yolu JPEG, PNG, TIFF, BMP ve çok sayfalı PDF'lerle ilgilenir.

using IronOcr;

// Reusable OCR service encapsulating the IronTesseract engine
public class OcrService
{
    private readonly IronTesseract _ocr = new IronTesseract();

    public string ExtractText(string filePath)
    {
        using var input = new OcrInput();

        // LoadPdf for PDF files; LoadImage for raster formats
        if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(filePath);
        else
            input.LoadImage(filePath);

        return _ocr.Read(input).Text;
    }

    public async Task<string> ExtractTextAsync(string filePath)
    {
        using var input = new OcrInput();

        if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(filePath);
        else
            input.LoadImage(filePath);

        var result = await _ocr.ReadAsync(input);
        return result.Text;
    }
}

Hizmeti deneyimlemek için üst seviye giriş noktası:

using IronOcr;

var service = new OcrService();
string text = await service.ExtractTextAsync("invoice.pdf");
Console.WriteLine(text);

IronTesseract örneği iş parçacığı güvenliğindedir ve yeniden kullanım için tasarlanmıştır. ASP.NET Core gibi bağımlılık enjeksiyonu aracılığıyla uygulama başlangıcında bir kez oluşturun ve her istek için yeniden örneklemeyin.

Çok sayfalı PDF'ler için, result.Pages size sayfa başına metin erişimi, güven puanı ve sınır kutuları sunar. Sayfa bazında yineleme üzerine detaylar için çok sayfalı PDF OCR kılavuzuna bakın.

Ön İşleme Filtreleriyle OCR Doğruluğunu Nasıl Geliştirirsiniz?

Düz yatak tarayıcılarından, akıllı telefon kameralarından veya faks makinelerinden gelen ham taramalar sıklıkla gürültü, döndürme, düşük kontrast ve yetersiz çözünürlükten muzdarip olur. IronOCR'un görüntü kalitesi düzeltme hattı her sorunu okuma çağrısının öncesinde zincirleyeceğiniz hedefli filtrelerle ele alır.

using IronOcr;

public class AccuracyOptimizedOcr
{
    private readonly IronTesseract _ocr = new IronTesseract();

    public string ProcessLowQualityDocument(string filePath)
    {
        using var input = new OcrInput();

        if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(filePath);
        else
            input.LoadImage(filePath);

        // Chain preprocessing filters in order of operation
        input.DeNoise();              // Remove scan artifacts and speckling
        input.Deskew();               // Correct page tilt up to 35 degrees
        input.Scale(150);             // Enlarge small text for better recognition
        input.Binarize();             // Convert to black/white for cleaner edges
        input.EnhanceResolution(300); // Sharpen blurry or low-DPI input

        var result = _ocr.Read(input);

        // Confidence below 70 often signals a preprocessing mismatch
        if (result.Confidence < 70)
            Console.WriteLine($"Warning: low confidence ({result.Confidence:F1}%)");

        return result.Text;
    }
}

Filtre seçimi rehberi:

  • DeNoise() -- ağır benekli veya sıkıştırma artefaktlı taramalar için kullanın
  • Deskew() -- belgeler açılı çekildiyse kullanın; otomatik algılama için sayfa döndürme algılamaya bakın
  • Scale() -- küçük baskı veya 150 DPI altı girdiler için kullanın; 150-200 değerleri genellikle en iyi sonuçları verir
  • Binarize() -- renkli veya gradyanlı arka planlar için kullanın; görüntüyü katı siyah-beyaza dönüştürür
  • EnhanceResolution() -- bulanık veya düşük kontrastlı metinler için kullanın; Tesseract'ın tatlı noktası olarak 300 DPI hedefler

International Journal on Document Analysis and Recognition'da yayınlanan araştırmalar, ikili hale getirme ve düzgünleştirmenin karakter tanıma oranlarını iyileştirmek için en yüksek etkili ön işleme adımları olduğunu tutarlı bir şekilde göstermektedir. Tüm üretim hattı için bunları bir temel oluşturun.

IronOCR ön işleme filtreleri ve birincil kullanım durumları
FiltreÇözülen SorunNe Zaman Uygulanmalı
DeNoise()Tarayıcı kalıntıları, benek gürültüsüHerhangi bir düz yatak veya faks taraması
Deskew()Sayfa eğimi ve döndürmeFotoğraflanan veya hatalı hizalanmış belgeler
Scale()Küçük metin veya düşük DPI150 DPI altında giriş
Binarize()Renkli arka planlar, geçişlerRenkli kağıt veya markalı formlar
EnhanceResolution()Bulanıklık ve düşük kontrastKamera çekimleri ve sıkıştırılmış JPEG'ler

Üretim Toplu İşleme Hattı Nasıl Kurulur?

Tek belgeli çıkarım basittir, ancak üretim senaryoları kuyruklarda, paylaşılan klasörlerde veya bulut depolamada yüzlerce veya binlerce dosya içerir. IronOCR'un asenkron API'si ve iş parçacığı güvenli motoru, paralel iş yükleri için uygun hale getirir.

using IronOcr;
using Microsoft.Extensions.Logging;

public class ProductionOcrService
{
    private readonly IronTesseract _ocr;
    private readonly ILogger<ProductionOcrService> _logger;

    public ProductionOcrService(ILogger<ProductionOcrService> logger)
    {
        _logger = logger;
        _ocr = new IronTesseract
        {
            Configuration =
            {
                RenderSearchablePdfsAndHocr = true,
                ReadBarCodes = true
            }
        };
    }

    public async Task<IReadOnlyList<string>> ProcessBatchAsync(
        IEnumerable<string> filePaths,
        int maxDegreeOfParallelism = 4)
    {
        var results = new System.Collections.Concurrent.ConcurrentBag<string>();

        var options = new ParallelOptions
        {
            MaxDegreeOfParallelism = maxDegreeOfParallelism
        };

        await Parallel.ForEachAsync(filePaths, options, async (filePath, ct) =>
        {
            try
            {
                using var input = new OcrInput();

                if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
                    input.LoadPdf(filePath);
                else
                    input.LoadImage(filePath);

                var result = await _ocr.ReadAsync(input);
                results.Add(result.Text);
                _logger.LogInformation("Processed {FilePath} at {Confidence:F1}% confidence",
                    filePath, result.Confidence);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "OCR failed for {FilePath}", filePath);
                results.Add(string.Empty);
            }
        });

        return results.ToList();
    }

    public void CreateSearchablePdf(string inputPath, string outputPath)
    {
        using var input = new OcrInput();

        if (inputPath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(inputPath);
        else
            input.LoadImage(inputPath);

        _ocr.Read(input).SaveAsSearchablePdf(outputPath);
        _logger.LogInformation("Searchable PDF written to {OutputPath}", outputPath);
    }
}

MaxDegreeOfParallelism tavanı, dosyalar büyük olduğunda bellek tükenmesini önler. Dört çekirdekli bir sunucuda, 4 değeri iyi çalışır; yalnızca bellek kullanımını profilleme sonrası artırın. Azure Functions veya AWS Lambda dağıtımları için, her işlev örneği başına eşzamanlılığı 1 olarak ayarlayın ve bunun yerine yatay ölçekte artırın.

CreateSearchablePdf, orijinal görüntünün görünür bir katman olarak korunduğu ve tanınan metnin altında görünmez bir şekilde gömüldüğü bir PDF oluşturur. Bu, PDF görüntüleyicilerde tam metin aramasına ve arama motorları tarafından endekslenmesine olanak tanır — belge yönetim sistemlerinde yaygın bir gereksinim.

Üretimde Güven Skorlarını İzleme

Her OcrResult bir Confidence özelliği (0-100) sunar ve motorun tanınan metin hakkında ne kadar emin olduğunu yansıtır. Bu metriği günlük alt yapınızda izlemek, tarayıcı kalibrasyonu kayarsa veya yeni bir belge sağlayıcısı beklenenden daha düşük DPI taramalar gönderirse, belge kalitesi bozulduğunda erken uyarı sinyali verir.

Pratik bir eşik stratejisi: güvenin 80'in altına düşmesini bir uyarı olarak kaydedin, 70'in altına düştüğünde bir ön işleme-tekrar deneme geçişini tetikleyin ve 60'ın altına düştüğünde insan incelemesi için belgeleri işaretleyin. Bu katmanlı yaklaşım, sorunsuz veri bozulmasını öncesinde yakalar.

Microsoft .NET günlükleme belgeleri, yukarıdaki toplu hizmette kullanılan ve ASP.NET Core'un yerleşik DI konteynerine entegre olan ekipler için ILogger desenlerini kapsar.

Taranmış Belgelerden Yapılandırılmış Veriler Nasıl Çıkarılır?

Metin çıkarma ilk adımdır. İkinci adım, bu metni uygulamanızın üzerinde işlem yapabileceği türdeş alanlara ayrıştırmaktır. Bu desen IronOCR'ın okuma geçişini .NET'in Regex ile birleştirerek faturalar, formlar ve raporlardan yapılandırılmış verileri çekmek için kullanılır.

using IronOcr;
using System.Text.RegularExpressions;

public record Invoice(
    string? InvoiceNumber,
    DateOnly? Date,
    decimal? TotalAmount,
    string RawText
);

public class InvoiceOcrService
{
    private readonly IronTesseract _ocr = new IronTesseract();

    public Invoice ExtractInvoiceData(string invoicePath)
    {
        using var input = new OcrInput();

        if (invoicePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(invoicePath);
        else
            input.LoadImage(invoicePath);

        input.DeNoise();
        input.Deskew();

        var result = _ocr.Read(input);
        string text = result.Text;

        return new Invoice(
            InvoiceNumber: ExtractInvoiceNumber(text),
            Date: ExtractDate(text),
            TotalAmount: ExtractAmount(text),
            RawText: text
        );
    }

    private static string? ExtractInvoiceNumber(string text)
    {
        var match = Regex.Match(text, @"Invoice\s*#?:?\s*(\S+)", RegexOptions.IgnoreCase);
        return match.Success ? match.Groups[1].Value : null;
    }

    private static DateOnly? ExtractDate(string text)
    {
        // Numeric format: MM/DD/YYYY
        var numeric = Regex.Match(text, @"\b(\d{1,2}/\d{1,2}/\d{2,4})\b");
        if (numeric.Success && DateTime.TryParse(numeric.Groups[1].Value, out var d1))
            return DateOnly.FromDateTime(d1);

        // Written format: January 15, 2025
        var written = Regex.Match(text,
            @"\b(January|February|March|April|May|June|July|August|September|October|November|December)\s+(\d{1,2}),?\s+(\d{4})\b",
            RegexOptions.IgnoreCase);
        if (written.Success && DateTime.TryParse(written.Value, out var d2))
            return DateOnly.FromDateTime(d2);

        return null;
    }

    private static decimal? ExtractAmount(string text)
    {
        var match = Regex.Match(text, @"\$\s*(\d+(?:\.\d{2})?)");
        return match.Success && decimal.TryParse(match.Groups[1].Value, out var amt)
            ? amt
            : null;
    }
}

Bu yaklaşım, bir formun neresinde her alanın olduğunu tam olarak bildiğinizde bölgesel OCR ile iyi bir eşleşme sağlar. Bir sınır dikdörtgeni sağlayarak tam sayfa tanımayı atlar ve sadece fatura numarası veya toplamı içeren bölgeyi hedef alarak sabit düzen belgeler için işlem süresini büyük ölçüde azaltırsınız.

Tablolar ve yapılandırılmış formlar dahil olmak üzere daha gelişmiş çıkarma senaryoları için ürün sitesindeki IronOCR veri çıkarma örneklerini gözden geçirin.

.NET'de Çok Dilli OCR Nasıl Ele Alınır?

Birçok kuruluş, ithalat/ihracat formları, uluslararası sözleşmeler veya çok dilli müşteri gönderimleri nedeniyle birden fazla dilde belgeler işliyor. IronOCR, okuma çağrısı öncesinde dil paketini yapılandırmanıza izin vererek bunu ele alır.

using IronOcr;

// Configure multi-language recognition
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.EnglishBest;  // Swap for any of 125+ supported languages

// For mixed-language documents, combine language packs
ocr.AddSecondaryLanguage(OcrLanguage.German);

using var input = new OcrInput();
input.LoadPdf("multilingual-contract.pdf");
var result = ocr.Read(input);
Console.WriteLine(result.Text);

IronOCR dil desteği sayfası, indirme talimatları ile birlikte mevcut 125+ dil paketinin hepsini listeler. Dil paketleri, NuGet paketleri olarak dağıtılır (örneğin, IronOcr.Languages.German) böylece zaten kullandığınız aynı paket yönetimi iş akışı ile entegre olurlar.

Latin alfabesi dışındaki karakter setleri için — Arapça, Çince, Japonca, Korece — IronOCR, sağdan sola metin yönü ve ideografik yazı sistemlerini ele alan optimize edilmiş modeller sağlar. Yapılandırma ayrıntıları için CJK OCR kılavuzuna bakın.

Sonraki Adımlarınız Neler?

Artık .NET 10 uygulamanıza üretim düzeyinde OCR eklemek için gereken desenlere sahipsiniz: temel metin çıkarma, zor taramalar için önleme, asenkron toplu işlem, yapılandırılmış veri ayrıştırma ve çok dilli destek.

Bu noktadan itibaren, proje ihtiyaçlarınıza göre bu alanları keşfedin:

ücretsiz deneme lisansı ile başlayarak kendi belgelerinizde tüm özellik setini değerlendirin ve bir katmana bağlı kalmadan önce deneyin.

NuGetNuGet ile yükleyin

PM > Install-Package IronOcr

Install IronOCR by running the command above in the NuGet Package Manager Console, or search for the package in the NuGet Package Manager.
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