Optimal Performans için C#'da Hızlı OCR Yapılandırması

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronOCR'un hızlı yapılandırması, EnglishFast dil modunu kullanarak ve barkod okuma gibi gereksiz özellikleri devre dışı bırakarak %17'ye kadar daha hızlı OCR işlem hızları sağlar ve doğruluk kaybı yaşanmaz. Bu optimizasyon, zamanın kritik olduğu yüksek hacimli işlemler için idealdir.

IronOCR kutudan çıktığı gibi etkili çalışır. Hız, mutlak doğruluktan daha öncelikli olduğunda, IronOCR hızlı bir yapılandırma sunar. Bu ayar, standart OCR yapılandırmasından çok daha hızlı yaparak önemli tarama performans kazanımları sağlar.

Bu makale hızlı yapılandırmanın nasıl ayarlandığını gösterir ve hızlı ve standart IronOCR yapılandırmaları arasında karşılaştırmalı test sonuçlarını gösterir. Taranmış belgeleri, PDF'leri veya görüntüleri işliyor olsanız da, bu optimizasyonlar uygulamanızın performansını önemli ölçüde artırabilir.


Hızlı Başlangıç: C#'da Hızlı OCR Yapılandırmasını Ayarla

Hızlı yapılandırma için ana bileşen Language özelliğidir. Language özelliğini OcrLanguage.EnglishFast olarak ayarlamak, doğrulukta küçük bir potansiyel maliyetin üzerinde hızı önceliklendirir. Bu, IronOCR'nin toplu olarak daha hızlı okuma yapmasına olanak tanır; bu, zamanın kritik olduğu görevlerde özellikle yararlıdır.

Hızlı dili ayarlamanın yanı sıra, ReadBarCodes gibi gereksiz yapılandırmaları devre dışı bırakarak daha fazla hız kazanabilirsiniz. Kurulumu basit tutmak için IronOCR'nin sayfa bölümlendirmesini otomatik olarak algılamasına izin verin. Daha fazla gelişmiş yapılandırma seçeneği için Tesseract ayrıntılı yapılandırma kılavuzumuza bakın.

Aşağıdaki kod örneği, aşağıdaki giriş görüntüsünü işler:

Hangi Giriş Formatını Kullanmalıyım?

Moby Dick'in açılış metni, karanlık bir arka planda beyaz renkte Ishmael'in tanıtımıyla gösteriliyor

Hızlı Yapılandırma için Hangi Koda İhtiyacım Var?

  1. NuGet Paket Yöneticisi ile https://www.nuget.org/packages/IronOcr yükleyin

    PM > Install-Package IronOcr
  2. Bu kod parçasını kopyalayıp çalıştırın.

    /* :path=/static-assets/ocr/content-code-examples/how-to/ocr-fast-configuration.cs */
    using IronOcr;
    using System;
    
    var ocrTesseract = new IronTesseract();
    
    // Fast Dictionary
    ocrTesseract.Language = OcrLanguage.EnglishFast;
    
    // Turn off unneeded options
    ocrTesseract.Configuration.ReadBarCodes = false;
    
    // Assume text is laid out neatly in an orthogonal document
    ocrTesseract.Configuration.PageSegmentationMod = TesseractPageSegmentationMod.Auto;
    
    using var ocrInput = new OcrInput();
    ocrInput.LoadImage("image.png");
    
    var ocrResult = ocrTesseract.Read(ocrInput);
    Console.WriteLine(ocrResult.Text);
  3. Canlı ortamınızda test etmek için dağıtın

    Bugün projenizde IronOCR kullanmaya başlayın ücretsiz deneme ile

    arrow pointer

Ne Tür Bir Çıktı Bekleyebilirim?

Visual Studio düzenleyicisinde Moby Dick romanının açılış pasajını gösteriyor

Bu, yukarıdan çıkarılan metin çıktısıdır. OCR motoru edebi metni doğru bir şekilde yakalarken orijinal format ve yapıyı korur. Hızlı yapılandırma, bu örnek gibi açık ve yüksek kontrastlı metin için mükemmel sonuçlar sağlar.


Hızlı Yapılandırma ile Standart Arasında Nasıl Karşılaştırılır?

Gerçek dünyadaki etkiyi göstermek için, hızlı yapılandırmaya karşı standart yapılandırmanın performansını karşılaştırırız. Performansı karşılaştırmak ve hızlı yapılandırma kullanmanın getirdiği takasları görselleştirmek için 10 örnek görüntü seti kullanıyoruz, her biri birkaç paragraf içeriyor.

Standart yapılandırma için, hız odaklı özellikler uygulamadan, IronTesseract varsayılan ayarlarıyla başlatırız. Bu karşılaştırma yaklaşımı, OCR işlemlerini gerçek zamanlı izlemeyi gösteren performans izleme kılavuzumuza benzerdir.

İşte testi çalıştırmak için kullandığımız örnek girişler. Bu görüntüler, çok sayfalı belgeler veya toplu işlemler yaparken karşılaşabileceğiniz tipik belge senaryolarını temsil eder.

Karşılaştırmaları Nasıl Çalıştırırım?

:path=/static-assets/ocr/content-code-examples/how-to/ocr-fast-configuration-benchmark.cs
using IronOcr;
using System;
using System.Diagnostics;
using System.IO;

// --- Tesseract Engine Setup ---
var ocrTesseract = new IronTesseract();
ocrTesseract.Language = OcrLanguage.EnglishFast;
ocrTesseract.Configuration.ReadBarCodes = false;
ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto;

// --- 1. Define folder and get files ---
string folderPath = @"images"; // IMPORTANT: Set this to your image directory
string filePattern = "*.png";    // Change to "*.jpg", "*.bmp", etc. as needed
string outputFilePath = "ocr_results.txt"; // The new results file

// Get all image files in the directory
var imageFiles = Directory.GetFiles(folderPath, filePattern);

Console.WriteLine($"Found {imageFiles.Length} total images to process...");
Console.WriteLine($"Results will be written to: {outputFilePath}");

// --- 2. Start timer and process images, writing to file ---
// Open the output file *before* the loop for efficiency
using (StreamWriter writer = new StreamWriter(outputFilePath))
{
    var stopwatch = Stopwatch.StartNew();

    foreach (var file in imageFiles)
    {
        string fileName = Path.GetFileName(file);

        using var ocrInput = new OcrInput();
        ocrInput.LoadImage(file);

        var ocrResult = ocrTesseract.Read(ocrInput);

        // Check if any text was actually found
        if (!string.IsNullOrEmpty(ocrResult.Text))
        {
            // Write to Console
            Console.WriteLine($"--- Text found in: {fileName} ---");
            Console.WriteLine(ocrResult.Text.Trim());
            Console.WriteLine("------------------------------------------");

            // Write to File
            writer.WriteLine($"--- Text found in: {fileName} ---");
            writer.WriteLine(ocrResult.Text.Trim());
            writer.WriteLine("------------------------------------------");
            writer.WriteLine(); // Add a blank line for readability
        }
        else
        {
            // Write to Console
            Console.WriteLine($"No text found in: {fileName}");

            // Write to File
            writer.WriteLine($"No text found in: {fileName}");
            writer.WriteLine();
        }
    }

    stopwatch.Stop();

    // --- 3. Print and write final benchmark summary ---
    string lineSeparator = "\n========================================";
    string title = "Batch OCR Processing Complete";
    string summary = $"Fast configuration took {stopwatch.Elapsed.TotalSeconds:F2} seconds";

    // Write summary to Console
    Console.WriteLine(lineSeparator);
    Console.WriteLine(title);
    Console.WriteLine("========================================");
    Console.WriteLine(summary);

    // Write summary to File
    writer.WriteLine(lineSeparator);
    writer.WriteLine(title);
    writer.WriteLine("========================================");
    writer.WriteLine(summary);

    if (imageFiles.Length > 0)
    {
        string avgTime = $"Average time per image: {(stopwatch.Elapsed.TotalSeconds / (double)imageFiles.Length):F3} seconds";
        Console.WriteLine(avgTime);
        writer.WriteLine(avgTime);
    }
}

Console.WriteLine($"\nSuccessfully saved results to {outputFilePath}");
Imports IronOcr
Imports System
Imports System.Diagnostics
Imports System.IO

' --- Tesseract Engine Setup ---
Dim ocrTesseract As New IronTesseract()
ocrTesseract.Language = OcrLanguage.EnglishFast
ocrTesseract.Configuration.ReadBarCodes = False
ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto

' --- 1. Define folder and get files ---
Dim folderPath As String = "images" ' IMPORTANT: Set this to your image directory
Dim filePattern As String = "*.png" ' Change to "*.jpg", "*.bmp", etc. as needed
Dim outputFilePath As String = "ocr_results.txt" ' The new results file

' Get all image files in the directory
Dim imageFiles = Directory.GetFiles(folderPath, filePattern)

Console.WriteLine($"Found {imageFiles.Length} total images to process...")
Console.WriteLine($"Results will be written to: {outputFilePath}")

' --- 2. Start timer and process images, writing to file ---
' Open the output file *before* the loop for efficiency
Using writer As New StreamWriter(outputFilePath)
    Dim stopwatch = Stopwatch.StartNew()

    For Each file In imageFiles
        Dim fileName As String = Path.GetFileName(file)

        Using ocrInput As New OcrInput()
            ocrInput.LoadImage(file)

            Dim ocrResult = ocrTesseract.Read(ocrInput)

            ' Check if any text was actually found
            If Not String.IsNullOrEmpty(ocrResult.Text) Then
                ' Write to Console
                Console.WriteLine($"--- Text found in: {fileName} ---")
                Console.WriteLine(ocrResult.Text.Trim())
                Console.WriteLine("------------------------------------------")

                ' Write to File
                writer.WriteLine($"--- Text found in: {fileName} ---")
                writer.WriteLine(ocrResult.Text.Trim())
                writer.WriteLine("------------------------------------------")
                writer.WriteLine() ' Add a blank line for readability
            Else
                ' Write to Console
                Console.WriteLine($"No text found in: {fileName}")

                ' Write to File
                writer.WriteLine($"No text found in: {fileName}")
                writer.WriteLine()
            End If
        End Using
    Next

    stopwatch.Stop()

    ' --- 3. Print and write final benchmark summary ---
    Dim lineSeparator As String = vbLf & "========================================"
    Dim title As String = "Batch OCR Processing Complete"
    Dim summary As String = $"Fast configuration took {stopwatch.Elapsed.TotalSeconds:F2} seconds"

    ' Write summary to Console
    Console.WriteLine(lineSeparator)
    Console.WriteLine(title)
    Console.WriteLine("========================================")
    Console.WriteLine(summary)

    ' Write summary to File
    writer.WriteLine(lineSeparator)
    writer.WriteLine(title)
    writer.WriteLine("========================================")
    writer.WriteLine(summary)

    If imageFiles.Length > 0 Then
        Dim avgTime As String = $"Average time per image: {(stopwatch.Elapsed.TotalSeconds / CDbl(imageFiles.Length)):F3} seconds"
        Console.WriteLine(avgTime)
        writer.WriteLine(avgTime)
    End If
End Using

Console.WriteLine(vbLf & $"Successfully saved results to {outputFilePath}")
$vbLabelText   $csharpLabel

Bu karşılaştırma kodu birkaç önemli kavramı gösteriyor:

  1. Toplu İşleme: Kod, çok iş parçacıklı OCR örneğimize benzer şekilde tek seferde birden fazla resmi işliyor ve paralel işlem gücüyle daha fazla hız kazanımı sağlamak için paralel işlem gücünü kullanmayı gösteriyor.

  2. Performans Ölçümü: Stopwatch sınıfı kullanılarak milisaniyeye kadar doğru zaman ölçümleri sağlanır, bu farklı yapılandırmaları karşılaştırmak için önemlidir.

  3. Sonuç Kaydı: Konsol ve dosya çıkışı, sonuçları daha sonra analiz edebilmenizi ve yapılandırmalar arasındaki doğruluk farklılıklarını doğrulamanızı sağlar.

Ne Kadar Performans Kazancı Bekleyebilirim?

Mod Toplam Süre Ort. Süre / Görüntü Standarda Karşı Süre Kazancı Standarda Karşı Doğruluk Kazancı
Standart 10,40 s 1,040 s Temel Çizgi Temel Çizgi
Hızlı 8,60 s 0,860 s +%17,31 (Daha Hızlı) +0% (Aynı)

Standart ve hızlı yapılandırmalar arasındaki karşılaştırma, hızlı yapılandırma için önemli bir performans avantajı gösteriyor. Standart modu baz olarak alarak (toplam 10,40 saniye), hızlı yapılandırma aynı 10 görüntü partisindeki işlem süresini sadece 8,60 saniyede tamamladı. Bu, %17,31'lik önemli bir zaman kazancı temsil eder. Çok önemli olarak, bu hız artışı kaliteyi tehlikeye atmadı; her iki modda da doğruduluk aynıydı ve her iki yapılandırmada da aynı metin çıktısı üretildi.

Sonuçları doğrulamak için hem hızlı metin çıktısını hem de standart metin çıktısını indirebilirsiniz.

Hızlı Yapılandırmayı Ne Zaman Kullanmalıyım?

Hızlı yapılandırma şu durumlarda özellikle faydalıdır:

  • Yüksek hacimli belge işleme durumları, binlerce sayfanın hızlı işlenmesi gerektiğinde
  • Gerçek zamanlı uygulamalar, yanıt süresinin kritik olduğu durumlar
  • Web uygulamaları, kullanıcı deneyimlerini hızlı tutması gereken
  • Toplu işleme sistemleri, sıkı zamanlamalarla çalışan

Birden fazla dil içeren veya düşük kaliteli taramalar ya da plaka gibi özel belge türleri içeren karmaşık senaryolarda, maksimum doğruluğu sağlamak için standart yapılandırmayı kullanmak isteyebilirsiniz.

IronOCR, yapılandırmalar arasında geçiş yapmayı basit hale getiriyor - sadece birkaç özelliği değiştirerek uygulamanız farklı performans gereksinimlerine uyum sağlayabilir, büyük kod değişiklikleri olmadan.

Sıkça Sorulan Sorular

Hızlı OCR yapılandırması, standart ayarlarla karşılaştırıldığında ne kadar hızlıdır?

IronOCR'ın hızlı yapılandırması, standart OCR ayarlarına göre %17'ye kadar daha hızlı işlem hızları elde edebilir ve doğruluk üzerinde asgari etki yapar. Bu performans kazanımı, İngilizceFast dil modu ve gereksiz özelliklerin devre dışı bırakılması ile sağlanır.

Hızlı OCR işlemesi için ana ayar nedir?

IronOCR'da hızlı yapılandırmanın ana bileşeni, Dil özelliğini OcrLanguage.EnglishFast olarak ayarlamaktır. Bu, düşük bir doğruluk maliyeti potansiyelinin üzerine hızı önceliklendirir ve toplu işleme ve zaman kritikli uygulamalar için idealdir.

EnglishFast modunun ötesinde OCR hızını nasıl daha da optimize edebilirim?

IronOCR'da gereksiz özellikleri, örneğin barkod algılamaya ihtiyaçınız yoksa ReadBarCodes ayarını false yaparak ek hız iyileştirmeleri elde edebilirsiniz. Ayrıca, TesseractPageSegmentationMode.Auto'yu kullanarak IronOCR'ın sayfa segmentasyonunu otomatik algılamasına izin verin.

Ne zaman hızlı OCR yapılandırmasını standart ayarlar yerine kullanmalıyım?

IronOCR'daki hızlı OCR yapılandırması, zamanın kritik olduğu ve doğrulukta hafif bir değiş tokuşun kabul edilebilir olduğu yüksek hacimli işleme senaryoları için idealdir. Taranmış belgelerin, PDF'lerin veya resimlerin hızlı bir şekilde işlenmesi gereken kritik uygulamalar için özellikle kullanışlıdır.

Hızlı yapılandırma tüm belge türleri ile çalışıyor mu?

Evet, IronOCR'ın hızlı yapılandırması, taranan belgeler, PDF'ler ve resimler dahil olmak üzere çeşitli belge türleri ile etkili bir şekilde çalışır. Optimizasyon faydaları, işlenen giriş formatından bağımsız olarak geçerlidir.

Hızlı OCR modu kullanılırken herhangi bir doğruluk kaybı var mı?

IronOCR'ın hızlı yapılandırması, minimal doğruluk etkisiyle önemli tarama performansı kazançları sağlar. İngilizceFast modu kullanılırken küçük bir doğruluk maliyeti potansiyeli olabilir, ancak hız öncelikli uygulamalar için değiş tokuş genellikle buna değer.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında lisans derecesine sahiptir (Carleton Üniversitesi) ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirme üzerine uzmanlaşmıştır. Kullanıcı dostu ve estetik açıdan hoş arayüzler tasarlamaya tutkuyla bağlı olan Curtis, modern çerç...

Daha Fazlasını Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 5,585,834 | Sürüm: 2026.4 just released
Still Scrolling Icon

Hala Kaydiriyor musunuz?

Hızlı bir kanit mi istiyorsunuz? PM > Install-Package IronOcr
örnekleri çalıştır resminizin aranabilir metne donuşünü izleyin.