C#'ta Bir Görüntünün Belirli Bir OCR Bölgesini Nasıl Tanımlarım?

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

C#'da bir görüntünün belirli bir bölgesinden metin çıkarmak için, IronOCR'nin Rectangle nesnesini kullanarak y koordinatlarını, width ve height'yi belirleyerek tam alanı tanımlayın, ardından hedefli OCR işleme için LoadImage yöntemine aktarın.

Başlangıç: Belirli Bir Görüntü Bölgesinden Metin Çıkarma

  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 IronOcr;
    using IronSoftware.Drawing;
    
    // 1. Install IronOCR via NuGet: Install-Package IronOcr
    var ocr = new IronTesseract();
    using var input = new OcrInput();
    
    // 2. Create a Rectangle with coordinates
    var region = new Rectangle(x: 215, y: 1250, width: 1335, height: 280);
    
    // 3. Load image with region
    input.LoadImage("image.png", region);
    
    // 4. Extract text
    var result = ocr.Read(input);
    Console.WriteLine(result.Text);
  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

Genellikle, bir görüntünün sadece küçük bir bölümünden metin çıkarmanız gerekir, örneğin bir faturadaki toplam tutar veya bir formdan belirli bir alan. Tam belgeyi taramak verimsizdir ve gereksiz metni yakalayarak hatalar tanıtabilir.

IronOCR, taramak için tam dikdörtgen bölgeyi belirterek, doğruluğu, performansı ve hassasiyeti artırmanıza izin verir. Bu kılavuz, belirli bir OCR bölgesi tanımlama, bu bölgeden metin çıkarma ve OCR görevleriniz için koordinatların doğru olduğunu görsel olarak doğrulama üzerine adım adım bir süreç sağlar.

IronOCR ile Başlayın


Belirli Bir Bölgede OCR Nasıl Yaparım?

Belirli bir OCR bölgesi tanımlamak için, Rectangle ad alanından bir IronSoftware.Drawing nesnesi oluşturursunuz. Bu nesne dört değer gerektirir: x-koordinatı, y-koordinatı, width ve height; bunların tümü piksel cinsindendir. (x, y) koordinatları, istediğiniz alanın sol üst köşesini temsil eder.

LoadImage kullanarak resminizi yüklediğinizde, bu Rectangle öğesini ikinci parametre olarak geçirirsiniz. IronOCR, bu sayede OCR işlemini yalnızca bu sınırlama kutusundaki piksellerle sınırlar.

Bölgesel OCR, özellikle faturalar, taratılmış formlar veya kimlik belgeleri gibi yapısal belgelerle çalışırken özellikle faydalıdır, çünkü belirli bilgiler her zaman öngörülebilir yerlerde yer alır. OCR'yi yalnızca ilgili alanlarla sınırlayarak, işleme hızını önemli ölçüde artırabilir ve gereksiz metinden kaynaklanan yanlış pozitifleri azaltabilirsiniz.

Rectangle'nizin koordinatlarını bulmak için MS Paint gibi basit bir resim düzenleyici kullanabilirsiniz. Giriş resminizi açın, farenizi belirtilen bölgenin sol üst ve sağ alt köşelerinin üzerine getirin ve (x, y) piksel koordinatlarını not edin. Ardından dikdörtgenin özelliklerini hesaplayabilirsiniz: (x1, y1, width, height), burada width = x1 ve height = y1.

Test için Hangi Görüntüyü Kullanmalıyım?

Üç paragraf içeren örnek bir görüntü kullanacağız. Amacımız yalnızca ikinci paragrafı çıkarmak ve diğer metni göz ardı etmektir. Bu, daha büyük bir belgeden belirli alanları veya bölümleri çıkarmanız gerektiği yaygın bir senaryoyu göstermektedir.

Terminal penceresi, OCR sonuçlarıyla ve bir kitabevi hakkında çıkarılan metin ile

Bölgesel OCR'yi Koda Nasıl Uygularım?

Uygulama, bir OcrInput nesnesi oluşturmayı ve görüntünüzü belirtilen dikdörtgen bölgeyle yüklemeyi içerir. Bu yaklaşım JPG, PNG, GIF, TIFF ve BMP dahil olmak üzere çeşitli görüntü formatlarıyla çalışır.

:path=/static-assets/ocr/content-code-examples/how-to/ocr-region-of-an-image.cs
using IronOcr;
using IronSoftware.Drawing;
using System;

var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();

// Define the specific region as a Rectangle
// (x, y) is the top-left corner.
var ContentArea = new Rectangle(x: 215, y: 1250, width: 1335, height: 280);

ocrInput.LoadImage("region-input.png", ContentArea);

var ocrResult = ocrTesseract.Read(ocrInput);

// Print the extracted text
Console.WriteLine(ocrResult.Text);
Imports IronOcr
Imports IronSoftware.Drawing
Imports System

Dim ocrTesseract As New IronTesseract()
Using ocrInput As New OcrInput()

    ' Define the specific region as a Rectangle
    ' (x, y) is the top-left corner.
    Dim ContentArea As New Rectangle(x:=215, y:=1250, width:=1335, height:=280)

    ocrInput.LoadImage("region-input.png", ContentArea)

    Dim ocrResult = ocrTesseract.Read(ocrInput)

    ' Print the extracted text
    Console.WriteLine(ocrResult.Text)

End Using
$vbLabelText   $csharpLabel

Daha karmaşık senaryolar için, aynı görüntü içinde birden çok bölge tanımlayabilirsiniz. Bu, birden fazla alan içeren formları işlerken veya belgelerdeki tabloları işlerken özellikle faydalıdır:

using IronOcr;
using IronSoftware.Drawing;

var ocr = new IronTesseract();
using var input = new OcrInput();

// Define multiple regions for different form fields
var nameField = new Rectangle(x: 100, y: 200, width: 300, height: 50);
var dateField = new Rectangle(x: 100, y: 300, width: 200, height: 50);
var amountField = new Rectangle(x: 400, y: 500, width: 150, height: 50);

// Load the same image multiple times with different regions
input.LoadImage("form.png", nameField);
var nameResult = ocr.Read(input);

input.Clear();
input.LoadImage("form.png", dateField);
var dateResult = ocr.Read(input);

input.Clear();
input.LoadImage("form.png", amountField);
var amountResult = ocr.Read(input);

// Process each field separately
Console.WriteLine($"Name: {nameResult.Text}");
Console.WriteLine($"Date: {dateResult.Text}");
Console.WriteLine($"Amount: {amountResult.Text}");
using IronOcr;
using IronSoftware.Drawing;

var ocr = new IronTesseract();
using var input = new OcrInput();

// Define multiple regions for different form fields
var nameField = new Rectangle(x: 100, y: 200, width: 300, height: 50);
var dateField = new Rectangle(x: 100, y: 300, width: 200, height: 50);
var amountField = new Rectangle(x: 400, y: 500, width: 150, height: 50);

// Load the same image multiple times with different regions
input.LoadImage("form.png", nameField);
var nameResult = ocr.Read(input);

input.Clear();
input.LoadImage("form.png", dateField);
var dateResult = ocr.Read(input);

input.Clear();
input.LoadImage("form.png", amountField);
var amountResult = ocr.Read(input);

// Process each field separately
Console.WriteLine($"Name: {nameResult.Text}");
Console.WriteLine($"Date: {dateResult.Text}");
Console.WriteLine($"Amount: {amountResult.Text}");
Imports IronOcr
Imports IronSoftware.Drawing

Dim ocr As New IronTesseract()
Using input As New OcrInput()

    ' Define multiple regions for different form fields
    Dim nameField As New Rectangle(x:=100, y:=200, width:=300, height:=50)
    Dim dateField As New Rectangle(x:=100, y:=300, width:=200, height:=50)
    Dim amountField As New Rectangle(x:=400, y:=500, width:=150, height:=50)

    ' Load the same image multiple times with different regions
    input.LoadImage("form.png", nameField)
    Dim nameResult = ocr.Read(input)

    input.Clear()
    input.LoadImage("form.png", dateField)
    Dim dateResult = ocr.Read(input)

    input.Clear()
    input.LoadImage("form.png", amountField)
    Dim amountResult = ocr.Read(input)

    ' Process each field separately
    Console.WriteLine($"Name: {nameResult.Text}")
    Console.WriteLine($"Date: {dateResult.Text}")
    Console.WriteLine($"Amount: {amountResult.Text}")

End Using
$vbLabelText   $csharpLabel

Ne Tür Sonuçlar Bekleyebilirim?

Konsol çıktısından görebileceğiniz gibi, OCR yalnızca ikinci paragrafı işler. Bu hedeflenmiş yaklaşım, görüntünün diğer bölümlerindeki ilgisiz metnin sonuçları etkilemediğinden emin olur.

OCR Çıkışı

Bölgesel OCR'nin doğruluğu birkaç faktöre bağlıdır:

  • Görüntü kalitesi: Daha yüksek çözünürlüklü görüntüler genellikle daha iyi sonuçlar verir. Görüntülerinizi optimize etmek için DPI ayarlarını kullanmayı düşünün.
  • Metin yönelimi: Metnin doğru hizalandığından emin olun. Gerekirse sayfa yönelimi algılama kullanın.
  • Kontrast ve netlik: Metin okunabilirliğini artırmak için görüntü düzeltme filtreleri uygulayın.

Koordinatlarımın Doğru Olduğunu Nasıl Doğrulayabilirim?

Giriş görüntüsü için doğru koordinatları seçtiğinizden emin olmak için tanımladığınız ContentArea'yı görselleştirin. Bunu yapmanın basit bir yolu, giriş görüntüsüne dikdörtgen çizmek ve bunu StampCropRectangleAndSaveAs ile yeni bir dosya olarak kaydetmektir. Bu, koordinatları optimal performans için ince ayar yapmanıza ve sorun gidermenize yardımcı olur.

Bu görselleştirme tekniği, karmaşık düzenlerle çalışırken veya belirli metin alanlarını kalite güvence amaçlarıyla vurgulamanız gerektiğinde özellikle faydalıdır.

Belirtilen sınırlayıcı kutuyu yukarıdaki örnek giriş görüntüsüne çizdikten sonra çıktı görüntüsü.

Seçilen Bölge Nasıl Görselleştirilir?

:path=/static-assets/ocr/content-code-examples/how-to/ocr-region-of-an-image-highlighted.cs
using IronOcr;
using IronSoftware.Drawing;

var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();

// Define the specific rectangular area to scan within the image.
// The coordinates are in pixels: (x, y) is the top-left corner of the rectangle.
var ContentArea = new Rectangle(x: 4, y: 59, width: 365, height: 26);

ocrInput.LoadImage("region-input.png", ContentArea);

var ocrResult = ocrTesseract.Read(ocrInput);

// Draws the rectangle from above in a blue bounding box on the image for visualization.
ocrInput.StampCropRectangleAndSaveAs(ContentArea, Color.Aqua, "region-input.png");
Imports IronOcr
Imports IronSoftware.Drawing

Dim ocrTesseract = New IronTesseract()
Using ocrInput As New OcrInput()

    ' Define the specific rectangular area to scan within the image.
    ' The coordinates are in pixels: (x, y) is the top-left corner of the rectangle.
    Dim ContentArea As New Rectangle(x:=4, y:=59, width:=365, height:=26)

    ocrInput.LoadImage("region-input.png", ContentArea)

    Dim ocrResult = ocrTesseract.Read(ocrInput)

    ' Draws the rectangle from above in a blue bounding box on the image for visualization.
    ocrInput.StampCropRectangleAndSaveAs(ContentArea, Color.Aqua, "region-input.png")
End Using
$vbLabelText   $csharpLabel

Görselleştirme Nasıl Görünür?

OCR Vurgulanan Çıktı

Hafif mavi dikdörtgen, işleme için doğru bir şekilde ikinci paragrafı izole ettiğimizi doğrular.

Bölgesel OCR Ne Zaman Kullanılmalı?

Bölgesel OCR, birçok yaygın senaryo için idealdir:

  1. Form İşleme: Verinin tutarlı yerlerde göründüğü standartlaştırılmış formlardan belirli alanları çıkarmak için.
  2. Fatura İşleme: Tüm belgeyi işlemden geçirmeden toplamlar, tarihler veya fatura numaraları gibi belirli değerleri çıkarmak için.
  3. Plakalar: Plaka tanıma kullanırken, yalnızca plaka alanına odaklanın.
  4. Kimlik Belgeleri: Pasaportlar veya kimlik kartlarından belirli alanları çıkarmak için.
  5. Ekran Görüntüleri: Belirli kullanıcı arayüzü öğelerinden ekran görüntüleri alırken metin yakalandığında.

Bölgesel OCR için En İyi Uygulamalar

Bölgesel OCR ile en iyi sonuçları elde etmek için:

  1. Kenar boşluğu ekleyin: Metninizin etrafında küçük bir tampon dahil edin, böylece kenarlarda karakterlerin kesilmemesi sağlanır.
  2. Örnek görüntülerle test edin: Büyük partileri işlemeye başlamadan önce koordinatlarınızı temsilci örneklerle daima doğrulayın.
  3. Varyasyonları yönetin: Tarama belgelerindeki hafif konum varyasyonlarını hesaba katarak, bölgelerinizi gerekenden biraz daha büyük yapın.
  4. Performansı optimize edin: Çoklu iş parçacığı ile işleme için farklı bölgeleri paralel olarak işleyin.
  5. Güveni izleyin: Doğruluğu sağlamak için sonuç güveni puanlarını kontrol edin.

OCR işlemlerini belirli bölgelere odaklayarak, metin çıkarma görevlerinizin hızını ve doğruluğunu önemli ölçüde artırabilirsiniz. Bu hedefe yönelik yaklaşım, .NET uygulamalarınızda verimli belge işleme iş akışları oluşturmak için esastır.

Sıkça Sorulan Sorular

C#'da yalnızca bir görüntünün belirli bir bölümünden nasıl metin çıkarırım?

IronOCR ile, x/y koordinatları, genişlik ve yükseklik değerleriyle bir Dikdörtgen nesnesi oluşturarak belirli bir bölgeden metin çıkarabilirsiniz. Bu Dikdörtgeni, LoadImage metodunun ikinci parametresi olarak geçirin ve IronOCR, OCR işlemini yalnızca o tanımlı alanla sınırlayacaktır.

Tüm görüntüyü taramak yerine bir OCR bölgesi tanımlamanın faydaları nelerdir?

IronOCR ile belirli bir OCR bölgesi tanımlayarak, işlem hızını artırabilir, doğruluğu artırabilir ve alakasız metin yakalamadan kaynaklanan hataları azaltabilirsiniz. Bu, bilgilerin öngörülebilir konumlarda göründüğü yapılandırılmış belgeler için özellikle faydalıdır.

Bölgesel OCR için bir Dikdörtgen oluşturmak için hangi parametrelere ihtiyacım var?

IronOCR'nin bölgesel OCR'si için bir Dikdörtgen oluşturmak için, piksel cinsinden dört değere ihtiyacınız var: x-koordinat, y-koordinat, genişlik ve yükseklik. (x, y) koordinatları, istenen tarama alanının sol üst köşesini temsil eder.

OCR bölgeleri tanımlamak için kullanılan Dikdörtgen nesnesi hangi ad alanındadır?

IronOCR'de OCR bölgelerini tanımlamak için kullanılan Dikdörtgen nesnesi, IronSoftware.Drawing ad alanında bulunur.

Bölgesel OCR işleminden en çok hangi belge türleri yararlanır?

IronOCR'nin bölgesel OCR'si, özel bilgilerin tutarlı bir şekilde aynı konumlarda göründüğü fatura, taranmış formlar ve kimlik belgeleri gibi yapılandırılmış belgeler için özellikle etkilidir.

IronOCR birden fazla dili destekliyor mu?

IronOCR, birden çok dili destekler ve farklı dillerde metin tanımaya ihtiyaç duyan global uygulamalar için çok yönlü bir araçtır.

IronOCR mevcut uygulamalara entegre edilebilir mi?

IronOCR, C# kullanarak mevcut uygulamalara kolayca entegre edecek şekilde tasarlanmıştır, bu sayede geliştiriciler, yazılımlarına minimal çabayla OCR işlevselliği ekleyebilir.

IronOCR'yi belge yönetimi için kullanmanın faydaları nelerdir?

IronOCR'yi belge yönetimi için kullanmak, taranmış belgeleri aranabilir ve düzenlenebilir metne dönüştürerek iş akışını hızlandırır, manuel veri giriş ihtiyacını azaltır ve belge erişilebilirliğini artırır.

IronOCR veri doğruluğunu nasıl artırabilir?

IronOCR, gelişmiş tanıma algoritmaları ve görüntü düzeltme özellikleriyle veri doğruluğunu artırır, böylece metin çıkarım sürecinin hem güvenilir hem de kesin olmasını sağlar.

IronOCR için ücretsiz bir deneme mevcut mu?

Evet, Iron Software, IronOCR'nin özelliklerini ve yeteneklerini, bir satın alma kararı vermeden önce test edebilmek için ücretsiz bir deneme sunar.

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
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.