Comment lire les plaques d'immatriculation en OCR C#

Comment lire les plaques d'immatriculation en C# avec IronOCR

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

La méthode ReadLicensePlate d'IronOCR extrait automatiquement les numéros de plaque d'immatriculation à partir d'images de véhicules à l'aide d'une technologie OCR avancée. Cet appel de méthode unique permet de traiter les plaques d'immatriculation avec une grande précision, en renvoyant à la fois le texte de la plaque et le score de confiance pour les systèmes de gestion automatisée des véhicules.

Lorsqu'il s'agit de gérer un grand nombre d'images de véhicules, la lecture manuelle des plaques d'immatriculation prend beaucoup de temps et est source d'erreurs humaines. L'automatisation de ce processus à l'aide d'un outil tel qu'IronOCR offre une solution plus efficace et plus précise. La méthode ReadLicensePlate d'IronOCR permet d'extraire par programmation les numéros de plaque d'immatriculation à partir d'images, ce qui vous fait économiser un temps considérable tout en améliorant la précision des données.

Dans ce guide, nous vous montrerons comment utiliser IronOCR pour la reconnaissance des plaques d'immatriculation, en passant en revue des exemples et des configurations personnalisables qui rendent le processus fluide. En tirant parti de ces méthodes, les développeurs peuvent automatiser la lecture des plaques d'immatriculation, rendant ainsi plus efficaces des tâches telles que la gestion du stationnement, le péage ou la surveillance de sécurité.

Pour utiliser cette fonction, vous devez également installer le package IronOcr.Extension.AdvancedScan.

Guide de démarrage rapide : extraire instantanément un numéro de plaque d'immatriculation

Grâce à un simple appel de méthode utilisant ReadLicensePlate d'IronOCR, vous pouvez extraire par programmation le texte d'une plaque d'immatriculation à partir de n'importe quelle image. Elle est prête à l'emploi : il suffit de charger une image, d'appeler la méthode et d'obtenir immédiatement le numéro de plaque et le niveau de confiance.

  1. Installez IronOCR avec le Gestionnaire de Packages NuGet

    PM > Install-Package IronOcr
  2. Copiez et exécutez cet extrait de code.

    OcrLicensePlateResult result = new IronTesseract().ReadLicensePlate(new OcrInput("plate.jpg"));
  3. Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronOCR dans votre projet dès aujourd'hui avec un essai gratuit

    arrow pointer

Comment lire une plaque d'immatriculation en C# ?

Pour lire une plaque d'immatriculation dans IronOCR, nous suivons les étapes suivantes :

  • Nous utilisons la méthode ReadLicensePlate, qui prend un OcrInput comme paramètre d'entrée. Cette méthode est plus adaptée aux plaques d'immatriculation que son équivalent standard Read de la bibliothèque.
  • En option, nous pouvons configurer IronOCR pour mettre en liste blanche des caractères spécifiques pouvant figurer sur une plaque d'immatriculation, afin d'accélérer le traitement des numéros de plaque.

Veuillez noter

  • La méthode ne fonctionne actuellement qu'avec l'anglais, le chinois, le japonais, le coréen et les alphabets latins.
  • L'utilisation de l'analyse avancée sur .NET Framework nécessite que le projet s'exécute sur une architecture x64. )}]

À quoi ressemble la plaque d'immatriculation d'entrée ?

Plaque d'immatriculation californienne portant le numéro

Comment configurer l'OCR pour les plaques d'immatriculation ?

: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

À quels résultats dois-je m'attendre ?

Console de débogage affichant les résultats de la reconnaissance optique de caractères (OCR) d'une plaque d'immatriculation : État de Californie, plaque 8TRS777, confiance à 95,87 %

Le code montre comment importer une image en tant que OcrInput et l'utiliser avec la méthode ReadLicensePlate pour extraire le texte de la plaque d'immatriculation. Le résultat affiche le texte extrait correspondant à la plaque d'immatriculation visible sur l'image d'entrée, ainsi qu'un niveau de confiance indiquant la précision de l'OCR.

Texte : Texte extrait de l'entrée OCR.

Confiance : propriété double qui indique le niveau de confiance statistique de la précision d'une moyenne de chaque caractère, 1 étant la valeur la plus élevée et 0 la plus faible.

Pour un contrôle plus précis du processus OCR, vous pouvez explorer les options de configuration avancées afin d'affiner les paramètres de reconnaissance des caractères.


Comment extraire les plaques d'immatriculation à partir d'images de voitures ?

Cette méthode fonctionne également bien avec des images représentant une voiture munie d'une plaque d'immatriculation. Le code est le même que celui ci-dessus, seule l'image d'entrée a été modifiée. Vous pouvez également extraire les coordonnées en pixels de la zone où se trouve la plaque d'immatriculation dans l'image.

Quel type d'images de voitures fonctionne le mieux ?

Voiture Skoda gris foncé arborant une plaque d'immatriculation du Maharashtra MH 20 EE 7602, garée sur un trottoir en briques

Pour un résultat optimal, veillez à ce que vos images de voitures présentent les caractéristiques suivantes :

  • Bonne visibilité de la plaque d'immatriculation
  • Bon éclairage (éviter les reflets ou les ombres)
  • Distorsion angulaire minimale
  • Résolution adéquate (envisagez d'ajuster les paramètres DPI pour les images à basse résolution)

Comment obtenir les coordonnées de localisation d'une plaque d'immatriculation ?

: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

Quelles informations le résultat comprend-il ?

Sortie de débogage de Visual Studio affichant la plaque d'immatriculation détectée MH20EE7602 avec les coordonnées et les dimensions du cadre de sélection

L'exemple montre comment la méthode ReadLicensePlate peut être appliquée à l'image d'une voiture. La méthode renverra également les coordonnées du rectangle où se trouve la plaque d'immatriculation dans l'image.

Cette méthode est optimisée pour trouver uniquement des plaques d'immatriculation individuelles et est capable de les rechercher dans des images d'archives.

Comment traiter plusieurs plaques d'immatriculation ?

Lorsque vous traitez plusieurs images de véhicules, vous pouvez les traiter efficacement à l'aide d'opérations par lots :

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

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

    // Configure for optimal performance
    ocr.Co/nfiguration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    ocr.Co/nfiguration.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.Co/nfidence 
        };
    });

    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.Co/nfidence: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.Co/nfiguration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    ocr.Co/nfiguration.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.Co/nfidence 
        };
    });

    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.Co/nfidence: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

Pour le traitement à grande échelle, envisagez de mettre en œuvre des capacités multithread afin d'optimiser les performances.

Comment puis-je améliorer la précision de la reconnaissance des plaques d'immatriculation ?

Pour améliorer la précision de la détection des plaques d'immatriculation, envisagez les techniques d'optimisation suivantes :

Appliquer des filtres de prétraitement d'image

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

Découvrez les filtres d'image et les techniques de correction d'image disponibles pour optimiser vos images d'entrée.

Gérer différentes conditions d'éclairage

Pour les conditions d'éclairage difficiles, appliquez les corrections appropriées :

using IronOcr;

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

input.LoadImage("dark_plate.jpg");
input.Co/ntrast(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.Co/ntrast(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

Comment puis-je surveiller les performances de l'OCR ?

Lors du traitement de grands lots de plaques d'immatriculation, le suivi de la progression aide à gérer les ressources système :

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

Pour un suivi détaillé des performances, découvrez les fonctionnalités de suivi de la progression dans IronOCR.

En quoi cela diffère-t-il d'autres lectures de documents ?

Les capacités spécialisées de lecture de documents d'IronOCR vont au-delà des plaques d'immatriculation. La même technologie de vision par ordinateur qui permet la détection des plaques d'immatriculation peut être appliquée à :

Quels sont les cas d'utilisation courants ?

La reconnaissance des plaques d'immatriculation avec IronOCR permet diverses applications :

  • Gestion des parkings : automatisation de l'enregistrement des entrées/sorties et du traitement des paiements
  • Péage : Accélérer l'identification des véhicules aux postes de péage
  • Surveillance de sécurité : Suivi des mouvements de véhicules dans les zones réglementées
  • Gestion de flotte : Suivi des véhicules d'entreprise et de la logistique
  • Forces de l'ordre : identifier rapidement les véhicules recherchés

Chaque cas d'utilisation bénéficie de la grande précision d'IronOCR et de sa capacité à traiter les images en temps réel, ce qui le rend adapté aussi bien au traitement par lots qu'aux applications en direct.

Questions Fréquemment Posées

Comment lire des plaques d'immatriculation à partir d'images en C# ?

Vous pouvez lire les plaques d'immatriculation en C# à l'aide de la méthode ReadLicensePlate d'IronOcr. Il suffit de créer une instance IronTesseract et d'appeler ReadLicensePlate avec un OcrInput contenant l'image de la plaque d'immatriculation. La méthode renvoie un résultat OcrLicensePlateResult avec le texte de la plaque extrait et le score de confiance.

Quel progiciel dois-je installer pour la reconnaissance des plaques d'immatriculation ?

Pour utiliser la fonctionnalité de reconnaissance des plaques d'immatriculation dans IronOCR, vous devez installer à la fois le package principal IronOCR et le package IronOcr.Extension.AdvancedScan à partir de NuGet. L'extension AdvancedScan fournit la méthode spécialisée ReadLicensePlate.

Puis-je extraire des plaques d'immatriculation avec une seule ligne de code ?

Oui, IronOCR permet d'extraire le texte des plaques d'immatriculation avec une seule ligne de code : OcrLicensePlateResult result = new IronTesseract().ReadLicensePlate(new OcrInput("plate.jpg")) ; Ceci renvoie immédiatement le numéro de la plaque et le score de confiance.

Quelles sont les langues prises en charge pour la reconnaissance des plaques d'immatriculation ?

La méthode ReadLicensePlate d'IronOcr prend actuellement en charge les plaques d'immatriculation en alphabet anglais, chinois, japonais, coréen et latin. La méthode est optimisée spécifiquement pour ces jeux de caractères.

Comment puis-je améliorer la précision de la lecture des plaques d'immatriculation ?

Vous pouvez améliorer la précision dans IronOcr en établissant une liste blanche des caractères spécifiques qui apparaissent dans les plaques d'immatriculation, en veillant à ce que l'image ne contienne que la plaque d'immatriculation sans en-tête ni pied de page, et en utilisant des images de haute qualité. La méthode ReadLicensePlate est déjà optimisée spécifiquement pour la reconnaissance des plaques d'immatriculation.

Quelle est la configuration requise pour la reconnaissance des plaques d'immatriculation sur .NET Framework ?

Lorsque vous utilisez les fonctions d'analyse avancées d'IronOCR, notamment ReadLicensePlate sur .NET Framework, votre projet doit être exécuté sur une architecture x64. Cette exigence garantit des performances optimales pour la fonctionnalité de reconnaissance des plaques d'immatriculation.

Quelles sont les informations renvoyées par le système de reconnaissance des plaques d'immatriculation ?

La méthode ReadLicensePlate d'IronOcr renvoie un objet OcrLicensePlateResult contenant le texte de la plaque d'immatriculation extrait et un score de confiance. Cela vous permet à la fois de récupérer le numéro de la plaque et d'évaluer la fiabilité du résultat de l'OCR.

Quels sont les avantages d'utiliser IronOCR pour la gestion des documents ?

Utiliser IronOCR pour la gestion des documents rationalise le flux de travail en convertissant les documents numérisés en texte modifiable et consultable, réduisant le besoin de saisie manuelle des données et améliorant l'accessibilité des documents.

Comment IronOCR peut-il améliorer la précision des données ?

IronOCR améliore la précision des données grâce à ses algorithmes de reconnaissance avancés et ses fonctionnalités de correction d'image, garantissant que le processus d'extraction de texte est à la fois fiable et précis.

Y a-t-il un essai gratuit disponible pour IronOCR ?

Oui, Iron Software propose un essai gratuit d'IronOCR, permettant aux utilisateurs de tester ses fonctionnalités et capacités avant de prendre une décision d'achat.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Prêt à commencer?
Nuget Téléchargements 5,887,215 | Version : 2026.5 just released
Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ? PM > Install-Package IronOcr
lancez un échantillon regardez votre image se transformer en texte consultable.