C# Guide: Using IronOCR Image Filters for Better OCR

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

IronOCR, ön işleme gerektirebilecek görüntüleri okumak için ihtiyaç duyduğunuz araçları sağlar. Görüntülerinizi işlenebilir hale getirmek için manipüle edebilecek geniş bir filtre yelpazesinden seçim yapabilirsiniz.

Hızlı Başlangıç: OCR Görüntülerini Temizlemek İçin Filtreleri Uygula

Tek bir basit çağrı zinciriyle, DeNoise, Binarize ve Deskew filtrelerini uygulayarak OCR öncesinde tarama netliğini artırabilirsiniz. Bu örnek, IronOCR'un yerleşik filtrelerini kullanarak görüntüleri nasıl kolayca iyileştirebileceğinizi ve hemen başlayabileceğinizi gösterir.

  1. IronOCR aşağıdaki NuGet Paket Yöneticisi ile yükleyin

    PM > Install-Package IronOcr
  2. Bu kod parçacığını kopyalayın ve çalıştırın.

    using var input = new IronOcr.OcrInput("scan.jpg"); input.DeNoise(true).Binarize().Deskew(45); var result = new IronOcr.IronTesseract().Read(input);
  3. Canlı ortamınızda test için dağıtım yapın

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

    arrow pointer

OCR Görüntü Filtreleri Listesi

Aşağıdaki Görüntü filtreleri performansı gerçekten artırabilir:

  • Filters to change the Image Orientation
    • Rotate - Görüntüleri saat yönünde belirli bir derece döndürür. Saat yönünün tersine döndürmek için negatif sayılar kullanın.
    • Deskew - Görüntüyü doğru yönde ve dik olacak şekilde döndürür. Bu, özellikle OCR için çok faydalıdır çünkü Tesseract'ın eğik taramalara toleransı 5 derece kadar düşük olabilir.
    • Scale - OCR giriş sayfalarını orantılı olarak ölçeklendirir.
  • Filters to manipulate Image Colors
    • Binarize - Bu görüntü filtresi, her pikseli ara tonlar olmadan siyah veya beyaza dönüştürür. Bu, çok düşük metin-arka plan kontrastı durumlarında OCR performansını artırabilir.
    • ToGrayScale - Bu görüntü filtresi, her pikseli gri tonlarına dönüştürür. OCR doğruluğunu artırma olasılığı düşük ama hızı artırabilir.
    • Invert - Tüm renkleri tersine çevirir. Örneğin, beyaz siyah olur ve tam tersi.
    • ReplaceColor - Bir görüntüdeki rengi, belirli bir eşik değeri dahilinde başka bir renkle değiştirir.
  • Filters to improve Contrast in an Image
    • Contrast - Kontrastı otomatik olarak artırır. Bu filtre genellikle düşük kontrastlı taramalarda OCR hızını ve doğruluğunu artırır.
    • Dilate - Gelişmiş Morfoloji. Dilate görüntüdeki nesnelerin sınırlarına pikseller ekler. Erode'un tersi.
    • Erode - Gelişmiş Morfoloji. Erozyon nesne sınırlarından pikselleri kaldırır. Dilate'un tersi.
  • Filters to reduce Image Noise
    • Sharpen - Bulanık OCR belgelerini netleştirir ve alfa kanallarını beyaza dönüştürür.
    • DeNoise - Dijital gürültüyü giderir. Bu filtre yalnızca gürültünün beklendiği senaryolarda kullanılmalıdır.
    • EnhanceResolution - Düşük kaliteli görüntülerin çözünürlüğünü artırır. OcrInput.MinimumDPI ve OcrInput.TargetDPI düşük çözünürlüklü girdileri otomatik olarak yakalayıp çözdüğü için bu filtreye genellikle ihtiyaç duyulmaz.

Filtre Örneği ve Kullanımı

Aşağıdaki örnekte kodunuzda filtreleri nasıl uygulayabileceğinizi gösteriyoruz.

:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-1.cs
using IronOcr;
using System;

var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("my_image.png");
input.Deskew();

var result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Imports System

Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("my_image.png")
input.Deskew()

Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
$vbLabelText   $csharpLabel

Hata Ayıklama Filtresi / Filtre ne yapıyor?

Programınızda görüntü veya barkod okuma ile ilgili zorluk yaşıyorsanız, filtrelenmiş sonucun bir görüntüsünü kaydetmenin bir yolu vardır. Bu şekilde, her filtrenin ne yaptığını ve görüntünüzü nasıl manipüle ettiğini hata ayıklayarak görebilirsiniz.

:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-2.cs
using IronOcr;
using System;

var file = "skewed_image.tiff";
var ocr = new IronTesseract();
using var input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(file, pageindices);
// Here we apply the filter: Deskew
input.Deskew();

// Save the input with filter(s) applied
input.SaveAsImages("my_deskewed");

// We read, then print the text to the console
var result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Imports System

Private file = "skewed_image.tiff"
Private ocr = New IronTesseract()
Private input = New OcrInput()
Private pageindices = New Integer() { 1, 2 }
input.LoadImageFrames(file, pageindices)
' Here we apply the filter: Deskew
input.Deskew()

' Save the input with filter(s) applied
input.SaveAsImages("my_deskewed")

' We read, then print the text to the console
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
$vbLabelText   $csharpLabel

Filtre Kullanım Durumları

Döndür

API Referansı

Filtre Açıklaması

Döndür, bir görüntüye elle belirli bir dönüş ayarlamak için kullanılan bir filtredir. IronOCR, Deskew() işlevini çalıştırma özelliğine sahiptir, ancak bunun tolerans derecesi oldukça dardır ve en iyi şekilde neredeyse tamamen düz (15 derece civarında) görüntüler için kullanılır. 90 derece kaymış veya ters duran giriş görüntüleri için Rotate() komutunu kullanmalıyız.

Kullanım Durumu Kod Örneği

Bu, ters duran bir görüntüyü düzeltmek için Rotate() çağrısının bir örneğidir:

:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-3.cs
using IronOcr;
using System;

var image = "screenshot.png";
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);

// Rotate 180 degrees because image is upside-down
input.Rotate(180);

// Read image into variable: result
var result = ocr.Read(input);

// Example print to console
Console.WriteLine(result.Text);
Imports IronOcr
Imports System

Private image = "screenshot.png"
Private ocr = New IronTesseract()
Private input = New OcrInput()
' Load at least one image
input.LoadImage(image)

' Rotate 180 degrees because image is upside-down
input.Rotate(180)

' Read image into variable: result
Dim result = ocr.Read(input)

' Example print to console
Console.WriteLine(result.Text)
$vbLabelText   $csharpLabel
Önce `Input.Rotate(180) ``
Screenshot related to Kullanım Durumu Kod Örneği Screenshot Rotated related to Kullanım Durumu Kod Örneği

Kayma

API Referansı

Filtre Açıklaması

Bir görüntüyü belirli tolerans dereceleri dahilinde düzleştirmeye çalışmak için Hough Dönüşümü kullanır. Bu, tam olarak düz olmayan belgeler önemlidir çünkü eğik bir belge yanlış okunabilir.

Lütfen dikkate alınBu yöntem bir boole döndürür, filtre uygulanmışsa true ve görüntü yönü tespit edilemediği için uygulanamamışsa false döner. Sayfada yönü tanımlamak için içerik yoksa başarısız olacaktır.

Kullanım Durumu Kod Örneği

Bu, çarpık bir görüntüyü düzeltmek için Deskew() çağrısının bir örneğidir:

:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-4.cs
using IronOcr;
using System;

var image = @"paragraph_skewed.png";
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);

// Apply deskew with 15 degree snap
bool didDeskew = input.Deskew(15);
if (didDeskew)
{
    // Read image into variable: result
    var result = ocr.Read(input);
    Console.WriteLine(result.Text);
}
else
{
    Console.WriteLine("Deskew not applied because Image Orientation could not be determined.");
}
Imports IronOcr
Imports System

Private image = "paragraph_skewed.png"
Private ocr = New IronTesseract()
Private input = New OcrInput()
' Load at least one image
input.LoadImage(image)

' Apply deskew with 15 degree snap
Dim didDeskew As Boolean = input.Deskew(15)
If didDeskew Then
	' Read image into variable: result
	Dim result = ocr.Read(input)
	Console.WriteLine(result.Text)
Else
	Console.WriteLine("Deskew not applied because Image Orientation could not be determined.")
End If
$vbLabelText   $csharpLabel

Ölçek

API Referansı

Filtre Açıklaması

Ölçek, mevcut pikselleri kullanarak bir görüntüyü yeniden boyutlandırmaya yardımcı olan faydalı bir görüntü manipülasyon filtresidir. Bu, bir barkod tarandığında kullanılır çünkü görüntü sadece birkaç piksel genişliğinde olup, her çubuk bir piksel genişliğindedir ya da yazı metni çok küçük olup antialiasing yoktur.

Lütfen dikkate alınBarCode'ların iyi okunabildiği 1000px x 1000px BarCode boyutları için ideal bir aralık vardır; BarCode'unuz bulunamıyorsa bu husus dikkate alınmalıdır.

Kullanım Durumu Kod Örneği

Bu, tarama için bir BarCode'daki çubuklar arasındaki boşlukları genişletmek üzere Scale() çağrısının bir örneğidir:

:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-5.cs
using IronOcr;
using System;

var image = @"small_barcode.png";
var ocr = new IronTesseract();

// Optional: This example uses a barcode
ocr.Configuration.ReadBarCodes = true;

using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);

// Apply scale
input.Scale(400); // 400% is 4 times larger

// Read image into variable: result
var result = ocr.Read(input);

// Example print to console
Console.WriteLine(result.Text);
Imports IronOcr
Imports System

Private image = "small_barcode.png"
Private ocr = New IronTesseract()

' Optional: This example uses a barcode
ocr.Configuration.ReadBarCodes = True

Dim input = New OcrInput()
' Load at least one image
input.LoadImage(image)

' Apply scale
input.Scale(400) ' 400% is 4 times larger

' Read image into variable: result
Dim result = ocr.Read(input)

' Example print to console
Console.WriteLine(result.Text)
$vbLabelText   $csharpLabel

Binari

API Referansı

Filtre Açıklaması

Binari filtresi, bir adaptif algoritmaya bağlı olarak bir görüntüdeki tüm pikselleri ya siyah ya da beyaz olarak sınıflandırır. Bu, tüm renkleri kaldırır ve arka planı düz beyaz hale getirir, metin olarak tanınan her şeyin tamamen siyah renkte olduğu kolay okuma sağlar.

Kullanım Durumu Kod Örneği

Bu, renkli metni hizalamak ve arka plan renklerini ve gürültüyü kaldırmak için Binarize() çağrısının bir örneğidir:

:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-6.cs
using IronOcr;
using System;

var image = @"no-binarize.jpg";
var ocr = new IronTesseract();

using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);

// Apply Binarize
input.Binarize();

// Read image into variable: result
var result = ocr.Read(input);

// Example print to console
Console.WriteLine(result.Text);
Imports IronOcr
Imports System

Private image = "no-binarize.jpg"
Private ocr = New IronTesseract()

Private input = New OcrInput()
' Load at least one image
input.LoadImage(image)

' Apply Binarize
input.Binarize()

' Read image into variable: result
Dim result = ocr.Read(input)

' Example print to console
Console.WriteLine(result.Text)
$vbLabelText   $csharpLabel
Önce `Binarize() ``
No Binarize related to Kullanım Durumu Kod Örneği After Binarize related to Kullanım Durumu Kod Örneği

Çevir

API Referansı

Filtre Açıklaması

IronOCR, görüntü black text on a white background olduğunda en iyi şekilde okunur. Invert filtresi, bir görüntüdeki tüm renkleri tersine çevirerek bunu sağlamak için kullanılır.

Kullanım Durumu Kod Örneği

Bu, siyah üzerine beyazı beyaz üzerine siyah haline getirmek için Invert() çağrısının bir örneğidir:

:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-7.cs
using IronOcr;
using System;

var image = @"before-invert.png";
var ocr = new IronTesseract();

using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);

// Apply Invert
input.Invert(true);

// Read image into variable: result
var result = ocr.Read(input);

// Example print to console
Console.WriteLine(result.Text);
Imports IronOcr
Imports System

Private image = "before-invert.png"
Private ocr = New IronTesseract()

Private input = New OcrInput()
' Load at least one image
input.LoadImage(image)

' Apply Invert
input.Invert(True)

' Read image into variable: result
Dim result = ocr.Read(input)

' Example print to console
Console.WriteLine(result.Text)
$vbLabelText   $csharpLabel
Before After
Before Invert related to Kullanım Durumu Kod Örneği After Invert related to Kullanım Durumu Kod Örneği

Sıkça Sorulan Sorular

Görüntü filtreleri C# dilinde OCR doğruluğunu nasıl artırır?

IronOCR'daki görüntü filtreleri, OCR doğruluğunu artırarak, görüntü kalitesini yükseltmek için ön işlem yapar. Binarize ve Kontrast gibi filtreler, renkler ve kontrastı ayarlayarak okunabilirliği artırır, Döndür ve Eğiklik Düzeltme ise görüntü yönünü düzeltir.

Görüntü yönlendirme sorunlarını düzeltmek için hangi filtreler mevcuttur?

IronOCR, görüntü yönlendirme sorunlarını düzeltmek için Döndür ve Eğiklik Düzeltme filtreleri sağlar. Döndür, görüntü açılarını manuel olarak ayarlamanıza olanak tanırken, Eğiklik Düzeltme hafifçe eğik olan görüntüleri otomatik olarak düzeltir.

Binarize filtresi, görüntü ön işlemeyi nasıl etkiler?

IronOCR'daki Binarize filtresi, görüntü piksellerini siyah-beyaz renklere dönüştürerek arka plan renklerini kaldırır ve metin görünürlüğünü artırır, özellikle düşük kontrast koşullarında OCR doğruluğunu iyileştirir.

Gürültü azaltma filtrelerini ne zaman kullanmak uygundur?

Keskinleştir ve Gürültü Azalt gibi gürültü azaltma filtreleri, görüntülerde dijital gürültü olduğunda kullanılmalıdır. Bu filtreler görüntüyü temizleyerek metni daha net hale getirir ve IronOCR'da daha iyi OCR sonuçları elde edilmesini sağlar.

Görüntü çözünürlüğünü artırmak OCR performansını etkileyebilir mi?

Evet, Çözünürlüğü Artır filtresini kullanmak, düşük kaliteli görüntülerin çözünürlüğünü artırarak OCR performansını iyileştirebilir. IronOCR'un varsayılan MinimumDPI ve TargetDPI ayarları genellikle yeterli olsa da, gerekirse ilave çözünürlük artırma sağlayabilir.

Renk manipülasyon filtreleri OCR'da ne rol oynar?

IronOCR'daki İnvert, ToGrayScale ve Binarize gibi renk manipülasyon filtreleri, metin okunabilirliğini artırmak için görüntü renklerini ayarlar. İnvert, renk şemalarını değiştirir, ToGrayScale, görüntüleri gri tonlamalıya dönüştürür ve Binarize, görüntüleri siyah-beyaz hale getirir.

Kontrast filtresi ve Keskinleştirme filtresi arasındaki fark nedir?

IronOCR'daki Kontrast filtresi, açık ve koyu alanlar arasındaki farkı artırarak metnin netliğini artırırken, Keskinleştirme filtresi, metni daha belirgin hale getirmek için kenarları güçlendirir ve her ikisi de daha iyi bir OCR tanımını destekler.

IronOCR'da filtrelenmiş görüntüleri nasıl kaydeder ve hata ayıklarsınız?

Filtre uygulandıktan sonra SaveAsImages fonksiyonunu kullanarak IronOCR'da filtrelenmiş görüntüleri kaydetmek ve hatalarını gidermek mümkündür. Bu, filtre etkilerini görselleştirmenize ve ön işleme adımlarının görüntü kalitesini OCR için geliştirdiğinden emin olmanıza yardımcı olur.

IronOCR'da mevcut gelişmiş morfoloji filtreleri nelerdir?

IronOCR, Büyüt ve Aşındır gibi gelişmiş morfoloji filtreleri sunar. Büyüt, özellikleri artırmak için nesne sınırlarına piksel eklerken, Aşındır bunları kaldırır ve her ikisi de OCR doğruluğunu artırmak için görüntü ayrıntılarını netleştirmek amacıyla kullanılı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
Gözden Geçiren
Jeff Fritz
Jeffrey T. Fritz
Baş Program Yöneticisi - .NET Topluluğu Ekibi
Jeff, .NET ve Visual Studio ekipleri için bir Baş Program Yöneticisidir. .NET Conf sanal konferans serisinin baş yapımcısıdır ve haftada iki kez canlı yayınlanan 'Fritz and Friends' adlı bir akış programı sunar; burada izleyicilerle birlikte teknoloji konuşur ve kod yazar. Jeff, en büyük Microsoft geliştirici etkinlikleri için atölyeler, sunumlar ve içerik planları yazar, Microsoft Build, Microsoft Ignite, .NET Conf ve Microsoft MVP Summit gibi etkinliklerde yer alır.
Başlamaya Hazır mısınız?
Nuget İndirmeler 5,896,332 | Sürüm: 2026.5 just released
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package IronOcr
örnek çalıştır görüntünüzün aranabilir metin haline gelmesini izleyin.