C# OCR'de Plakaları Nasıl Okumak Gerektir

IronOCR ile C# Dilinde Plaka Okuma Nasıl Yapılır

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

IronOCR'nin ReadLicensePlate yöntemi, gelişmiş OCR teknolojisini kullanarak araç görüntülerinden plaka numaralarını otomatik olarak çıkarır. Bu tek yöntem çağrısı, plaka metnini ve otomatik araç yönetim sistemleri için güven puanını yüksek doğrulukla geri döndürerek plakaları işleyebilir.

Çok sayıda araç görüntüsünü yönetirken, plakaları elle okumak zaman alıcıdır ve insan hatasına açıktır. Bu süreci IronOCR gibi bir araçla otomatikleştirmek daha verimli ve doğru bir çözüm sağlar. IronOCR'nin ReadLicensePlate yöntemi, görüntülerden programlı olarak plaka numaralarını çıkarabilir, böylece veri doğruluğunu artırırken önemli ölçüde zaman tasarrufu sağlar.

Bu kılavuzda, plaka tanıma yapmak için IronOCR kullanımını göstereceğiz ve süreci sorunsuz hale getiren örnekler ile özelleştirilebilir yapılandırmaları adım adım ele alacağız. Bu yöntemleri kullanarak, geliştiriciler plaka okuma işlemlerini otomatikleştirerek park yönetimi, geçiş ücreti toplama veya güvenlik gözetimi gibi görevleri daha verimli hale getirebilir.

Bu işlevi kullanmak için IronOcr.Extension.AdvancedScan paketini de yüklemeniz gerekir.

Hızlı Başlangıç: Plaka Numaranızı Anında Çıkarın

IronOCR'nin ReadLicensePlate işlevini kullanarak tek bir yöntem çağrısıyla, herhangi bir görüntüden programlı olarak plaka metnini çıkarabilirsiniz. Kullanıma hazır—sadece bir görüntü yükleyin, metodu çağırın ve hemen hem plaka numarasını hem de güven düzeyini alın.

  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.

    OcrLicensePlateResult result = new IronTesseract().ReadLicensePlate(new OcrInput("plate.jpg"));
  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

C# ile Plaka Nasıl Okunur?

IronOCR'de bir plaka okumak için aşağıdaki adımları uygularız:

  • Giriş için OcrInput parametresini alan ReadLicensePlate yöntemini kullanıyoruz. Bu yöntem, kütüphanenin standart Read karşılığına göre plaka numaraları için daha optimize edilmiştir.
  • İsteğe bağlı olarak, plaka numarası işleme hızını artırmak için IronOCR'u bir plakada bulunabilecek belirli karakterleri beyaz listeye ekleyecek şekilde yapılandırabiliriz.

Lütfen dikkate alın

  • Yöntem şu anda yalnızca İngilizce, Çince, Japonca, Korece ve Latin alfabe yazıları için çalışıyor. Gelişmiş tarama işleminin .NET Framework üzerinde kullanımı için projenin x64 mimarisinde çalıştırılması gerekmektedir. )}]

Girdi Plaka Nasıl Görünür?

'8TRS777' yazan Kaliforniya plakası - plaka okuma gösterimi örneği

Plaka Tanıma için OCR Nasıl Yapılandırılır?

:path=/static-assets/ocr/content-code-examples/how-to/read-license-plate-read-license-plate.cs
using IronOcr;
using System;

var ocr = new IronTesseract();
ocr.Configuration.WhiteListCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_";

using var inputLicensePlate = new OcrInput();
inputLicensePlate.LoadImage("plate.jpeg");

// Read license plate
OcrLicensePlateResult result = ocr.ReadLicensePlate(inputLicensePlate);

// Retrieve license plate number and confidence value
string output = $"{result.Text}\nResult Confidence: {result.Confidence}";

Console.WriteLine(output);
Imports Microsoft.VisualBasic
Imports IronOcr
Imports System

Private ocr = New IronTesseract()
ocr.Configuration.WhiteListCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"

Dim inputLicensePlate = New OcrInput()
inputLicensePlate.LoadImage("plate.jpeg")

' Read license plate
Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(inputLicensePlate)

' Retrieve license plate number and confidence value
Dim output As String = $"{result.Text}" & vbLf & "Result Confidence: {result.Confidence}"

Console.WriteLine(output)
$vbLabelText   $csharpLabel

Ne Tür Sonuçlar Beklemeliyim?

Plaka OCR sonuçlarını gösteren hata ayıklama konsolu: Kaliforniya eyaleti, plaka 8TRS777, güven aralığı %95,87

Kod, bir görüntüyü OcrInput olarak içe aktarmanın ve ReadLicensePlate yöntemiyle kullanarak plaka numarasındaki metni ayıklamanın nasıl yapıldığını gösterir. Çıktı, giriş görüntüsünde gösterilen plaka ile eşleşen çıkarılmış metni ve OCR doğruluğunu gösteren bir güven seviyesi ile birlikte gösterir.

Metin: OCR Girişinden çıkarılan metin.

Güven: Her karakterin ortalamasının istatistiksel doğruluk güvenini gösteren bir double özelliği; 1 en yüksek, 0 en düşük değerdir.

OCR süreci üzerinde daha hassas bir kontrol sağlamak için, ileri yapılandırma seçeneklerini keşfederek karakter tanıma ayarlarını ince ayar yapabilirsiniz.


Araba Görüntülerinden Plaka Nasıl Çıkarabilirim?

Yöntem, plakalı bir araba içeren görüntülerle de iyi çalışır. Kod, yukarıdakiyle aynıdır, yalnızca giriş görüntüsü değiştirilmiştir. Ayrıca, resimde plakanın bulunduğu alanın piksellik koordinatlarını da çıkarabilirsiniz.

Hangi Tip Araç Görselleri En İyi Sonuç Verir?

Koyu gri renkli, Maharashtra plakalı (MH 20 EE 7602) bir Skoda otomobil, tuğla döşeli kaldırımda park etmiş durumda

Optimum sonuçlar için, araba resimlerinizin aşağıdaki özelliklere sahip olduğundan emin olun:

  • Plakanın net görünürlüğü
  • İyi aydınlatma koşulları (parlama veya gölgelerden kaçının)
  • Minimum açı bozulması
  • Yeterli çözünürlük (düşük çözünürlüklü görüntüler için DPI ayarlarını ayarlamayı düşünün)

Plaka Konum Koordinatlarını Nasıl Alırım?

:path=/static-assets/ocr/content-code-examples/how-to/read-license-plate-read-from-car.cs
using IronOcr;
using IronSoftware.Drawing;
using System;

var ocr = new IronTesseract();
using var inputLicensePlate = new OcrInput();
inputLicensePlate.LoadImage("car_license.jpg");

// Read license plate
OcrLicensePlateResult result = ocr.ReadLicensePlate(inputLicensePlate);

// Retrieve license plate coordinates
RectangleF rectangle = result.Licenseplate;

// Write license plate value and coordinates in a string
string output = $"License Plate Number:\n{result.Text}\n\n"
              + $"License Plate Area_\n"
              + $"Starting X: {rectangle.X}\n"
              + $"Starting Y: {rectangle.Y}\n"
              + $"Width: {rectangle.Width}\n"
              + $"Height: {rectangle.Height}";

Console.WriteLine(output);
Imports Microsoft.VisualBasic
Imports IronOcr
Imports IronSoftware.Drawing
Imports System

Private ocr = New IronTesseract()
Private inputLicensePlate = New OcrInput()
inputLicensePlate.LoadImage("car_license.jpg")

' Read license plate
Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(inputLicensePlate)

' Retrieve license plate coordinates
Dim rectangle As RectangleF = result.Licenseplate

' Write license plate value and coordinates in a string
Dim output As String = $"License Plate Number:" & vbLf & "{result.Text}" & vbLf & vbLf & $"License Plate Area_" & vbLf & $"Starting X: {rectangle.X}" & vbLf & $"Starting Y: {rectangle.Y}" & vbLf & $"Width: {rectangle.Width}" & vbLf & $"Height: {rectangle.Height}"

Console.WriteLine(output)
$vbLabelText   $csharpLabel

Sonuç Hangi Bilgileri İçerir?

Tespit edilen MH20EE7602 plakası ile sınırlayıcı kutu koordinatlarını ve boyutlarını gösteren Visual Studio hata ayıklama çıktısı

Örnek, ReadLicensePlate yönteminin bir araba resmine nasıl uygulanabileceğini göstermektedir. Yöntem ayrıca lisans plakasının resimde bulunduğu yerin dikdörtgen koordinatlarını da döndürecektir.

Bu yöntem, yalnızca tek plakaları bulmak için optimize edilmiştir ve stok görüntülerde arama yapabilme yeteneğine sahiptir.

Birden Fazla Plaka Nasıl İşlerim?

Birden fazla araç görüntüsüyle çalışırken, toplu işlemleri kullanarak bunları verimli bir şekilde işleyebilirsiniz:

using IronOcr;
using System.IO;
using System.Threading.Tasks;

public async Task ProcessMultipleLicensePlates(string[] imagePaths)
{
    var ocr = new IronTesseract();

    // Configure for optimal performance
    ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock;

    var tasks = imagePaths.Select(async path => 
    {
        using var input = new OcrInput();
        input.LoadImage(path);

        var result = await Task.Run(() => ocr.ReadLicensePlate(input));

        return new { 
            FilePath = path, 
            PlateNumber = result.Text, 
            Confidence = result.Confidence 
        };
    });

    var results = await Task.WhenAll(tasks);

    // Process results
    foreach (var result in results)
    {
        Console.WriteLine($"File: {result.FilePath}");
        Console.WriteLine($"Plate: {result.PlateNumber} (Confidence: {result.Confidence:P})");
    }
}
using IronOcr;
using System.IO;
using System.Threading.Tasks;

public async Task ProcessMultipleLicensePlates(string[] imagePaths)
{
    var ocr = new IronTesseract();

    // Configure for optimal performance
    ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock;

    var tasks = imagePaths.Select(async path => 
    {
        using var input = new OcrInput();
        input.LoadImage(path);

        var result = await Task.Run(() => ocr.ReadLicensePlate(input));

        return new { 
            FilePath = path, 
            PlateNumber = result.Text, 
            Confidence = result.Confidence 
        };
    });

    var results = await Task.WhenAll(tasks);

    // Process results
    foreach (var result in results)
    {
        Console.WriteLine($"File: {result.FilePath}");
        Console.WriteLine($"Plate: {result.PlateNumber} (Confidence: {result.Confidence:P})");
    }
}
Imports IronOcr
Imports System.IO
Imports System.Threading.Tasks

Public Async Function ProcessMultipleLicensePlates(imagePaths As String()) As Task
    Dim ocr As New IronTesseract()

    ' Configure for optimal performance
    ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock

    Dim tasks = imagePaths.Select(Async Function(path)
                                      Using input As New OcrInput()
                                          input.LoadImage(path)

                                          Dim result = Await Task.Run(Function() ocr.ReadLicensePlate(input))

                                          Return New With {
                                              .FilePath = path,
                                              .PlateNumber = result.Text,
                                              .Confidence = result.Confidence
                                          }
                                      End Using
                                  End Function)

    Dim results = Await Task.WhenAll(tasks)

    ' Process results
    For Each result In results
        Console.WriteLine($"File: {result.FilePath}")
        Console.WriteLine($"Plate: {result.PlateNumber} (Confidence: {result.Confidence:P})")
    Next
End Function
$vbLabelText   $csharpLabel

Geniş ölçekli işlem sırasında, performansı en üst seviyeye çıkarmak için çoklu iş parçacığı yeteneklerini uygulamayı düşünün.

Plaka Tanıma Doğruluğunu Nasıl Artırabilirim?

Plaka tespitinin doğruluğunu artırmak için bu optimizasyon tekniklerini göz önünde bulundurun:

Görüntü Ön İşleme Filtrelerini Uygula

using IronOcr;

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

// Load and preprocess the image
input.LoadImage("blurry_plate.jpg");
input.Deskew();  // Correct image rotation
input.DeNoise(); // Remove background noise
input.EnhanceResolution(225); // Upscale for better clarity
input.Sharpen(); // Enhance edge definition

var result = ocr.ReadLicensePlate(input);
using IronOcr;

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

// Load and preprocess the image
input.LoadImage("blurry_plate.jpg");
input.Deskew();  // Correct image rotation
input.DeNoise(); // Remove background noise
input.EnhanceResolution(225); // Upscale for better clarity
input.Sharpen(); // Enhance edge definition

var result = ocr.ReadLicensePlate(input);
Imports IronOcr

Dim ocr As New IronTesseract()
Using input As New OcrInput()
    ' Load and preprocess the image
    input.LoadImage("blurry_plate.jpg")
    input.Deskew() ' Correct image rotation
    input.DeNoise() ' Remove background noise
    input.EnhanceResolution(225) ' Upscale for better clarity
    input.Sharpen() ' Enhance edge definition

    Dim result = ocr.ReadLicensePlate(input)
End Using
$vbLabelText   $csharpLabel

Girdi görsellerinizi optimize etmek için mevcut görsel filtreleri ve görsel düzeltme teknikleri hakkında daha fazla bilgi edinin.

Farklı Aydınlatma Koşullarını İdare Etme

Zorlayıcı aydınlatma senaryoları için uygun düzeltmeleri uygulayın:

using IronOcr;

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

input.LoadImage("dark_plate.jpg");
input.Contrast(1.5); // Increase contrast
input.Brightness(1.2); // Adjust brightness
input.Binarize(); // Convert to black and white for clarity

var result = ocr.ReadLicensePlate(input);
using IronOcr;

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

input.LoadImage("dark_plate.jpg");
input.Contrast(1.5); // Increase contrast
input.Brightness(1.2); // Adjust brightness
input.Binarize(); // Convert to black and white for clarity

var result = ocr.ReadLicensePlate(input);
Imports IronOcr

Dim ocr As New IronTesseract()
Using input As New OcrInput()
    input.LoadImage("dark_plate.jpg")
    input.Contrast(1.5) ' Increase contrast
    input.Brightness(1.2) ' Adjust brightness
    input.Binarize() ' Convert to black and white for clarity

    Dim result = ocr.ReadLicensePlate(input)
End Using
$vbLabelText   $csharpLabel

OCR Performansını Nasıl İzlerim?

Büyük miktarda plaka işlenirken, ilerlemeyi takip etmek sistem kaynaklarını yönetmeye yardımcı olur:

using IronOcr;

var ocr = new IronTesseract();

// Subscribe to progress events
ocr.OcrProgress += (sender, e) => 
{
    Console.WriteLine($"Processing: {e.ProgressPercent}% complete");
};

using var input = new OcrInput();
input.LoadImage("large_parking_lot.jpg");

var result = ocr.ReadLicensePlate(input);
using IronOcr;

var ocr = new IronTesseract();

// Subscribe to progress events
ocr.OcrProgress += (sender, e) => 
{
    Console.WriteLine($"Processing: {e.ProgressPercent}% complete");
};

using var input = new OcrInput();
input.LoadImage("large_parking_lot.jpg");

var result = ocr.ReadLicensePlate(input);
Imports IronOcr

Dim ocr As New IronTesseract()

' Subscribe to progress events
AddHandler ocr.OcrProgress, Sub(sender, e)
                                Console.WriteLine($"Processing: {e.ProgressPercent}% complete")
                            End Sub

Using input As New OcrInput()
    input.LoadImage("large_parking_lot.jpg")

    Dim result = ocr.ReadLicensePlate(input)
End Using
$vbLabelText   $csharpLabel

Detaylı performans izleme için, IronOCR'daki ilerleme izleme yeteneklerini keşfedin.

Bu, Diğer Belge Okuma Yöntemleriyle Nasıl Karşılaştırılır?

IronOCR'un uzmanlaşmış belge okuma yetenekleri, plaka okumalarının ötesine uzanır. Aynı bilgisayarla görme teknolojisi plaka tespitini güçlendiren teknoloji, şunlara da uygulanabilir:

Yaygın Kullanım Durumları Nelerdir?

IronOCR ile plaka tanıma, çeşitli uygulamaları mümkün kılar:

  • Otopark Yönetimi: Giriş/çıkış kaydını ve ödeme işlemlerini otomatikleştirin
  • Geçiş Ücreti Toplama: Gişelerde araç tanımlamayı hızlandırın Güvenlik Gözetimi: Kısıtlı alanlardaki araç hareketlerini izleyin Filo Yönetimi: Şirket araçlarını ve lojistiği izleyin
  • Hukuk Uygulayıcıları: İlgi çekici araçları hızlıca tespit edin

Her kullanım senaryosu, IronOCR'un yüksek doğruluğundan ve görüntüleri gerçek zamanlı olarak işleyebilme yeteneğinden faydalanır; bu da onu hem toplu işlem hem de canlı uygulamalar için uygun hale getirir.

Sıkça Sorulan Sorular

C# dilinde görüntülerden plakaları nasıl okurum?

IronOCR'un ReadLicensePlate yöntemini kullanarak C# dilinde plakaları okuyabilirsiniz. Bir IronTesseract örneği oluşturun ve ReadLicensePlate yöntemini plaka görüntünüzü içeren bir OcrInput ile çağırın. Yöntem, çıkarılan plaka metni ve güven puanı ile bir OcrLicensePlateResult döndürür.

Plaka tanıma işlevi için hangi paketi yüklemem gerekiyor?

IronOCR'daki plaka tanıma işlevini kullanmak için, hem ana IronOCR paketini hem de NuGet'ten IronOcr.Extension.AdvancedScan paketini yüklemeniz gerekmektedir. AdvancedScan uzantısı, özel ReadLicensePlate yöntemini sağlar.

Sadece bir satır kodla plaka çıkarabilir miyim?

Evet, IronOCR size tek bir satır kodla plaka metnini çıkarmanıza olanak tanır: OcrLicensePlateResult result = new IronTesseract().ReadLicensePlate(new OcrInput("plate.jpg")); Bu, hem plaka numarasını hem de güven puanını hemen döndürür.

Plaka tanıma için hangi diller destekleniyor?

IronOCR'un ReadLicensePlate yöntemi, şu anda İngilizce, Çince, Japonca, Korece ve Latin alfabesi karakter setlerini desteklemektedir. Yöntem, bu karakter setleri için özel olarak optimize edilmiştir.

Plaka okuma doğruluğunu nasıl artırabilirim?

IronOCR'da plakalarda görünen belirli karakterleri beyaz listeye alarak, görüntünün yalnızca plakayı içerdiğinden emin olarak ve yüksek kaliteli görüntüler kullanarak doğruluğu artırabilirsiniz. ReadLicensePlate yöntemi zaten plaka tanıma için optimize edilmiştir.

.NET Framework'te plaka tanıma için sistem gereksinimleri nelerdir?

İleri seviye tarama özellikleri, ReadLicensePlate dahil, .NET Framework'te kullanıldığı zaman projenizin x64 mimarisi üzerinde çalışması gerekiyor. Bu gereklilik, plaka tanıma işlevselliği için optimal performansı sağlamak içindir.

Plaka tanıma hangi bilgileri geri döndürür?

IronOCR'un ReadLicensePlate yöntemi, çıkarılan plaka metni ve bir güven puanı içeren bir OcrLicensePlateResult nesnesi döndürür. Bu, hem plaka numarasını almanıza hem de OCR sonucunun güvenilirliğini değerlendirmenize olanak tanır.

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.