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, filtreler biçiminde ön işleme ihtiyaç duyabilecek görüntüleri okumanız için gereken araçları sağlar. Görüntülerinizi işlenebilir hale getirmek için manipüle edebilecek geniş bir filtre yelpazesi arasından seçim yapabilirsiniz.

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

Sadece bir basit cagri zincirinde, OCR'dan once tarama netligini arttirmak icin DeNoise, Binarize ve Deskew filtrelerini uygulayabilirsiniz. Bu örnek, IronOCR'nın yerleşik filtrelerini kullanarak görüntüleri nasıl kolaylıkla geliştirebileceğinizi ve hemen başlamanızı gösterir.

  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.

    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 etmek için dağıtın

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

    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 belirli bir derece saat yonunde dondurur. Saat yonunun tersine dondurmek icin negatif sayilar kullanin.
    • Deskew - Bir görüntüyu dogru sekilde yukari ve ortogonal olacak sekilde dondurur. Bu, OCR için çok yararlıdır çünkü Tesseract'ın eğik taramalara toleransı 5 derece kadar düşük olabilir.
    • Scale - OCR giris sayfalarini orantili sekilde olceklendirir.
  • Filters to manipulate Image Colors
    • Binarize - Bu görüntü filtresi her pikseli siyah veya beyaza cevirir, ortasi yoktur. Bu, çok düşük metin-arka plan kontrastı durumlarında OCR performansını artırabilir.
    • ToGrayScale - Bu görüntü filtresi her pikseli gri tonlarina cevirir. OCR doğruluğunu artırması olası değildir ancak hızı artırabilir.
    • Invert - Her rengi tersine cevirir. Ör: Beyaz siyah olur ve tersi de geçerlidir.
    • ReplaceColor - Bir görüntüdeki bir rengi baska bir renkle değiştirir, belirli bir esik dahilinde.
  • Filters to improve Contrast in an Image
    • Contrast - Kontrasti otomatik olarak arttirir. Bu filtre sıklıkla düşük kontrastlı taramalarda OCR hızı ve doğruluğunu artırır.
    • Dilate - Ileri Duzey Morfoloji. Dilatasyon bir görüntüdeki nesnelerin sınırlarına pikseller ekler. Erozyonun zıttıdır.
    • Erode - Ileri Duzey Morfoloji. Erişim nesne sınırlarından pikselleri kaldırır. Dilatasyonun zıttıdır.
  • Filters to reduce Image Noise
    • Sharpen - Bulanik OCR belgelerini keskinlestirir ve alfa kanallarini beyaza duzlestirir.
    • DeNoise - Dijital gurultuyu kaldirir. Bu filtre sadece gurultunun beklenen oldugu durumlarda kullanilmalidir.
    • EnhanceResolution - Dusuk kaliteli görüntülerin cozunurlugunu arttirir. Bu filtre genellikle gerekmiyor cunku OcrInput.MinimumDPI ve OcrInput.TargetDPI dusuk cozunurluklu girisleri otomatik olarak yakalayip cozecektir.

Filtre Örneği ve Kullanımı

Aşağıdaki örnekte, kodunuzda filtrelerin nasıl uygulanacağını 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üleri veya barkodları okumakta zorluk yaşıyorsanız, filtrelenmiş bir sonucun görüntüsünü kaydetmenin bir yolu vardır. Bu şekilde, tam olarak her filtrenin ne yaptığını ve görüntünüzü nasıl manipüle ettiğini görerek hata ayıklayabilirsiniz.

: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ürme

API Referansı

Filtre Açıklaması

Döndürme bir görüntüyü bilinen bir rotasyona manuel olarak ayarlamak için kullanılan bir filtredir. IronOCR, Deskew() calistirmak icin bir fonksiyona sahiptir, ancak bunun tolerans derecesi oldukca dardir ve en iyi sekilde neredeyse tamamen duz olan (yaklasik 15 derece icinde) görüntüler icin kullanilmalidir. Giris görüntüleri 90 derece sapmis veya ters cevrilmis durumda ise, Rotate() cagirmaliyiz.

Kullanım Durumu Kod Örneği

Bu, ters cevrilmis bir görüntüyu düzeltmek icin Rotate() cagrisinin bir ornegidir:

: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
`` ``
Screenshot related to Kullanım Durumu Kod Örneği Screenshot Rotated related to Kullanım Durumu Kod Örneği

Ortadan Kaldırma

API Referansı

Filtre Açıklaması

Taramanın bir Hough Dönüşümü uygular ve belirli derecelerde tolerans içinde düzeltmeyi dener. Tam olarak düzgün olmayan görüntüler için bu önemlidir çünkü eğik bir belge yanlış okunmaya neden olabilir.

Lütfen dikkate alinBu metod bir boole döndürür, filtre uygulandıysa doğru ve uygulama başarısız olduysa yanlış döner, çünkü görüntü yönelimi algılanamadı. (Sayfanın konum belirleyici içerikleri yoksa başarısız olacaktır.

Kullanım Durumu Kod Örneği

Bu, carpik bir görüntüyu düzeltmek icin Deskew() cagrisinin bir ornegidir:

: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, resmin zaten sahip olduğu pikselleri kullanarak yeniden boyutlandırmasına yardımcı olan kullanışlı bir görüntü işleme filtresidir. Bu, bir barkod taranmadığında kullanılabilir çünkü resim yalnızca onlarca piksel genişliğindedir ve her çubuk bir piksel olarak ayarlanmıştır veya metin anti-aliasing olmadan çok küçükse.

Lütfen dikkate alinBir barcodun bulunmadigi durumlarda goz onunde bulundurmaniz gereken, barcodlarin iyi okunabildigi 1000px x 1000px boyutlar icin bir tatli nokta vardir.

Kullanım Durumu Kod Örneği

Bu, tarama icin barlar arasindaki bosluklari buyutmek icin Scale() cagrisinin bir ornegidir:

: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

İkili Yap

API Referansı

Filtre Açıklaması

İkili Yap filtresi, uyarlanabilir bir algoritmaya bağlı olarak bir görüntüdeki tüm pikselleri siyah veya beyaz olarak sınıflandırır. Bu, tüm renkleri kaldırır ve arka planı düz bir beyaz olarak ayırır, metin olarak tanınan her şey kolayca okunabilmesi için tam siyah olarak renklendirilir.

Kullanım Durumu Kod Örneği

Bu, renkli metni hizalamak ve arka plan renklerini ve gurultuyu kaldirmak icin Binarize() cagrisinin bir ornegidir:

: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
`` ``
No Binarize related to Kullanım Durumu Kod Örneği After Binarize related to Kullanım Durumu Kod Örneği

Ters Çevir

API Referansı

Filtre Açıklaması

IronOCR, görüntü black text on a white background iken en iyi sekilde okur. Invert filtresi, bir görüntüdeki tüm renkleri tersine cevirerek bunu basarmak icin kullanilir.

Kullanım Durumu Kod Örneği

Bu, siyahi beyaza cevirme icin Invert() cagrisinin bir ornegidir:

: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#'ta OCR doğruluğunu nasıl artırabilir?

IronOCR'daki görüntü filtreleri, görüntü kalitesini artırmak için ön işleme yaparak OCR doğruluğunu artırabilir. İkili ve Kontrast gibi filtreler, renkleri ve kontrastı ayarlayarak okunabilirliği artırır, Döndürme ve Eğiklik Düzeltme görüntü yönünü düzeltir.

Görüntü yönünü düzeltmek için hangi filtreler mevcut?

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

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

IronOCR'daki Binarize filtresi, görüntü piksellerini siyah beyaza dönüştürerek, arka plan renklerini ortadan kaldırır ve yazı okunabilirliğini artırır, özellikle düşük kontrast koşullarındaki OCR doğruluğunu artırır.

Gürültü azaltma filtreleri ne zaman kullanılmalı?

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ı için metni iyileştirir.

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

Evet, Çözünürlük Artırma filtresini kullanarak, düşük kaliteli görüntülerin çözünürlüğünü artırırsanız, OCR performansı geliştirebilir. IronOCR'un varsayılan MinimumDPI ve TargetDPI ayarları genellikle yeterli olsa da, gerekli durumlarda ek çözünürlük iyileştirmesi sağlayabilir.

Renk manipülasyon filtreleri OCR'de ne role sahiptir?

IronOCR'daki Renk manipülasyon filtreleri, Ters Çevir, Gri Tonlama Dönüştür ve İkili gibi filtreler, görüntü renklerini ayarlayarak metin okunabilirliğini artırır. Ters Çevir renk şemalarını değiştirir, Gri Tonlama, görüntüleri gri tonlamaya dönüştürür, ve İkili, görüntüleri siyah beyaza indirir.

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

IronOCR'daki Kontrast filtresi, açık ve koyu alanlar arasındaki farkı artırarak metin netliğini iyileştirir, Keskinleştirme filtresi ise kenarları belirginleştirerek metni daha belirgin hale getirir, her ikisi de daha iyi OCR tanımasını destekler.

IronOCR'da filtrelenmiş görüntüleri nasıl kaydedip hata ayıklayabilirim?

Filtreler uygulandıktan sonra, filtrenin etkilerini görselleştirmeye ve ön işleme adımlarının görüntü kalitesini iyileştirdiğinden emin olmaya yardımcı olan SaveAsImages işlevini kullanarak IronOCR'da filtrelenmiş görüntüleri kaydedin ve hata ayıklayın.

IronOCR'da mevcut olan ileri düzey morfoloji filtreleri nelerdir?

IronOCR, Genişlet ve Aşındır gibi ileri düzey morfoloji filtreleri sunar. Genişlet, özellikleri artırmak için nesne sınırlarına pikseller ekler, Aşındır ise bunları kaldırır ve her ikisi de görüntü detaylarını netleştirerek OCR doğruluğunu artırmak için kullanılır.

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
İnceleyen
Jeff Fritz
Jeffrey T. Fritz
Baş Program Yöneticisi - .NET Topluluk Ekibi
Jeff, aynı zamanda .NET ve Visual Studio ekipleri için Baş Program Yöneticisi'dir. Microsoft geliştirici etkinlikleri (Microsoft Build, Microsoft Ignite, .NET Conf, Microsoft MVP Summit) için atölye çalışmaları, sunumlar yazar ve içerik planlar ve haftada iki kez yayınlanan 'Fritz ve Arkadaşları' canlı yayınının ev sahibidir.
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.