Optimal Performans için C#'da Hızlı OCR Yapılandırması
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.
OCR Hızlı Yapılandırmayı Nasıl Ayarlarım
- IronOCR'yi kurmak için OCR Kütüphanesini NuGet ile Kur
- OCR motorunu başlatın
- Dili İngilizceHızlı olarak ayarlayın
ReadBarCodesözelliğinifalseolarak ayarlayın- Görüntüyü yükleyin ve metni çıkarın
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?
Hızlı Yapılandırma için Hangi Koda İhtiyacım Var?
-
NuGet Paket Yöneticisi ile https://www.nuget.org/packages/IronOcr yükleyin
PM > Install-Package IronOcr -
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); -
Canlı ortamınızda test etmek için dağıtın
Bugün projenizde IronOCR kullanmaya başlayın ücretsiz deneme ile
Ne Tür Bir Çıktı Bekleyebilirim?
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}")
Bu karşılaştırma kodu birkaç önemli kavramı gösteriyor:
-
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.
-
Performans Ölçümü:
Stopwatchsı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. - 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.

