C# Guide: Using IronOCR Image Filters for Better OCR
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.
-
IronOCR aşağıdaki NuGet Paket Yöneticisi ile yükleyin
PM > Install-Package IronOcr -
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); -
Canlı ortamınızda test için dağıtım yapın
Ücretsiz deneme ile bugün projenizde IronOCR kullanmaya başlayın
OCR Görüntü Filtreleri Listesi
Aşağıdaki Görüntü filtreleri performansı gerçekten artırabilir:
Filters to change the Image OrientationRotate- 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 ColorsBinarize- 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 ImageContrast- 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 NoiseSharpen- 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.MinimumDPIveOcrInput.TargetDPIdüşü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)
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)
Filtre Kullanım Durumları
Döndür
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)
Önce `Input.Rotate(180) |
`` |
|---|---|
![]() |
![]() |
Kayma
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.
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
Ölçek
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.
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)
Binari
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)
Önce `Binarize() |
`` |
|---|---|
![]() |
![]() |
Çevir
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)
Before |
After |
|---|---|
![]() |
![]() |
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.







