Cómo leer placas de matrícula en C# OCR

Cómo leer matrículas en C# con IronOCR

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

El método ReadLicensePlate de IronOCR extrae automáticamente números de matrícula de imágenes de vehículos utilizando tecnología OCR avanzada. Esta llamada a un único método puede procesar matrículas con gran precisión, devolviendo tanto el texto de la matrícula como la puntuación de confianza para sistemas automatizados de gestión de vehículos.

Al gestionar un gran volumen de imágenes de vehículos, leer matrículas manualmente consume mucho tiempo y es propenso a errores humanos. Automatizar este proceso con una herramienta como IronOCR proporciona una solución más eficiente y precisa. El método ReadLicensePlate de IronOCR puede extraer mediante programación los números de matrícula de las imágenes, lo que ahorra un tiempo considerable a la vez que mejora la precisión de los datos.

En esta guía, demostraremos cómo utilizar IronOCR para el reconocimiento de matrículas, a través de ejemplos y configuraciones personalizables que hacen que el proceso sea perfecto. Aprovechando estos métodos, los desarrolladores pueden automatizar la lectura de matrículas, haciendo que tareas como la gestión de estacionamientos, cobro de peajes o vigilancia de seguridad sean más eficientes.

Para usar esta función, también debes instalar el paquete IronOcr.Extension.AdvancedScan.

como-título:2(Inicio rápido: Extraer número de matrícula instantáneamente)

Con una sola llamada al método ReadLicensePlate de IronOCR, puede extraer mediante programación el texto de la matrícula de cualquier imagen. Está listo para usar: basta con cargar una imagen, llamar al método y obtener el número de matrícula y la confianza de inmediato.

Nuget IconEmpieza a crear PDF con NuGet ahora:

  1. Instalar IronOCR con el gestor de paquetes NuGet

    PM > Install-Package IronOcr

  2. Copie y ejecute este fragmento de código.

    OcrLicensePlateResult result = new IronTesseract().ReadLicensePlate(new OcrInput("plate.jpg"));
  3. Despliegue para probar en su entorno real

    Empieza a utilizar IronOCR en tu proyecto hoy mismo con una prueba gratuita
    arrow pointer

¿Cómo leer una matrícula en C#?

Para leer una matrícula en IronOCR, aplicamos los siguientes pasos:

  • Utilizamos el método ReadLicensePlate, que toma un OcrInput como parámetro de entrada. Este método está más optimizado para matrículas que el homólogo estándar de la biblioteca Read.
  • Opcionalmente, podemos configurar IronOCR para que incluya una lista blanca de caracteres específicos que pueden existir en una matrícula, con el fin de acelerar el procesamiento del número de matrícula.

[{i:(

  • Actualmente, el método solo funciona para inglés, chino, japonés, coreano y alfabetos latinos.
  • Usar escaneo avanzado en .NET Framework requiere que el proyecto se ejecute en arquitectura x64.
    @@--CIERRE DE SOPORTE--@@

¿Cómo es la matrícula de entrada?

Matrícula de California mostrando '8TRS777' - ejemplo de demostración de lectura de matrículas

¿Cómo configuro el OCR para matrículas?

: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

¿Qué resultados puedo esperar?

Consola de depuración que muestra los resultados del OCR de matrículas: Estado de California, matrícula 8TRS777, confianza 95.87%

El código demuestra cómo importar una imagen como un OcrInput y usarlo con el método ReadLicensePlate para extraer el texto de la matrícula. La salida muestra el texto extraído que coincide con la matrícula mostrada en la imagen de entrada, junto con un nivel de confianza que indica la precisión del OCR.

Texto: El texto extraído de la entrada de OCR.

Confianza: Una propiedad doble que indica la confianza de precisión estadística de un promedio de cada carácter, siendo uno el más alto y 0 el más bajo.

Para obtener un control más preciso sobre el proceso de OCR, puedes explorar opciones de configuración avanzadas para afinar los ajustes de reconocimiento de caracteres.


¿Cómo puedo extraer matrículas de imágenes de coches?

El método también funciona bien con imágenes que contienen un coche con matrícula. El código es el mismo que el anterior, con la imagen de entrada cambiada. También puedes extraer las coordenadas de píxeles del área donde se encuentra la matrícula en la imagen.

¿Qué tipo de imágenes de coches funcionan mejor?

Coche Skoda gris oscuro con matrícula de Maharashtra MH 20 EE 7602 aparcado en una acera de ladrillos

Para obtener resultados óptimos, asegúrese de que las imágenes de su vehículo tengan:

  • Visibilidad clara de la matrícula
  • Buenas condiciones de iluminación (evitar reflejos o sombras)
  • Distorsión angular mínima
  • Resolución adecuada (considere la posibilidad de ajustar DPI settings para imágenes de baja resolución)

¿Cómo obtengo las coordenadas de ubicación de la matrícula?

: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

¿Qué información incluye el resultado?

Salida de depuración de Visual Studio que muestra la matrícula MH20EE7602 detectada con coordenadas y dimensiones del cuadro delimitador

El ejemplo muestra cómo se puede aplicar el método ReadLicensePlate a una imagen de un coche. El método también devolverá las coordenadas del rectángulo donde la matrícula está situada en la imagen.

Este método está optimizado para encontrar solo matrículas individuales y es capaz de buscarlas en imágenes de stock.

¿Cómo puedo procesar varias matrículas?

Cuando se trabaja con varias imágenes de vehículos, es posible procesarlas de forma eficaz mediante operaciones por lotes:

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})");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Para el procesamiento a gran escala, considere la implementación de capacidades multihilo para maximizar el rendimiento.

¿Cómo puedo mejorar la precisión del reconocimiento de matrículas?

Para mejorar la precisión de la detección de matrículas, tenga en cuenta estas técnicas de optimización:

Aplicar filtros de preprocesamiento de imágenes

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);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Obtenga más información sobre los filtros de imagen y técnicas de corrección de imágenes disponibles para optimizar sus imágenes de entrada.

Manejar diferentes condiciones de iluminación

En el caso de situaciones de iluminación complicadas, aplique las correcciones oportunas:

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);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

¿Cómo controlo el rendimiento del OCR?

Cuando se procesan grandes lotes de matrículas, el seguimiento del progreso ayuda a gestionar los recursos del sistema:

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);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Para una supervisión detallada del rendimiento, explore las capacidades de seguimiento del progreso en IronOCR.

¿Cómo se compara esto con la lectura de otros documentos?

Las capacidades especializadas de lectura de documentos de IronOCR van más allá de las matrículas. La misma tecnología de visión por ordenador que permite la detección de matrículas puede aplicarse a:

¿Cuáles son los casos de uso más comunes?

El reconocimiento de matrículas con IronOCR permite diversas aplicaciones:

  • Gestión de aparcamiento: Automatice el registro de entradas y salidas y el procesamiento de pagos
  • Cobro de peaje: agilizar la identificación de vehículos en los peajes
  • Vigilancia de seguridad: seguimiento de los movimientos de vehículos en zonas restringidas
  • Gestión de flotas: Supervisar los vehículos y la logística de la empresa
  • Aplicación de la ley: identificar vehículos de interés rápidamente

Cada caso de uso se beneficia de la alta precisión de IronOCR y de su capacidad para procesar imágenes en tiempo real, lo que lo hace adecuado tanto para el procesamiento por lotes como para aplicaciones en vivo.

Preguntas Frecuentes

¿Cómo puedo leer matrículas a partir de imágenes en C#?

Puede leer matrículas en C# utilizando el método ReadLicensePlate de IronOCR. Simplemente cree una instancia IronTesseract y llame a ReadLicensePlate con un OcrInput que contenga la imagen de su matrícula. El método devuelve un OcrLicensePlateResult con el texto de la matrícula extraído y la puntuación de confianza.

¿Qué paquete necesito instalar para el reconocimiento de matrículas?

Para utilizar la funcionalidad de reconocimiento de matrículas en IronOCR, es necesario instalar tanto el paquete principal IronOCR como el paquete IronOcr.Extension.AdvancedScan de NuGet. La extensión AdvancedScan proporciona el método especializado ReadLicensePlate.

¿Puedo extraer matrículas con una sola línea de código?

Sí, IronOCR permite extraer el texto de la matrícula con una sola línea de código: OcrLicensePlateResult = new IronTesseract().ReadLicensePlate(new OcrInput("plate.jpg")); Esto devuelve tanto el número de matrícula como la puntuación de confianza inmediatamente.

¿Qué idiomas son compatibles con el reconocimiento de matrículas?

El método ReadLicensePlate de IronOCR admite actualmente matrículas con alfabetos inglés, chino, japonés, coreano y latino. El método está optimizado específicamente para estos conjuntos de caracteres.

¿Cómo puedo mejorar la precisión de la lectura de matrículas?

Usted puede mejorar la precisión en IronOCR poniendo en la lista blanca caracteres específicos que aparecen en las matrículas, asegurándose de que la imagen contiene sólo la matrícula sin encabezados ni pies de página, y utilizando imágenes de alta calidad. El método ReadLicensePlate ya está optimizado específicamente para el reconocimiento de matrículas.

¿Cuáles son los requisitos del sistema para el reconocimiento de matrículas en .NET Framework?

Al utilizar las funciones avanzadas de análisis de IronOCR, incluida ReadLicensePlate en .NET Framework, el proyecto debe ejecutarse en arquitectura x64. Este requisito garantiza un rendimiento óptimo de la funcionalidad de reconocimiento de matrículas.

¿Qué información devuelve el reconocimiento de matrículas?

El método ReadLicensePlate de IronOCR devuelve un objeto OcrLicensePlateResult que contiene el texto de la matrícula extraído y una puntuación de confianza. Esto le permite tanto recuperar el número de matrícula como evaluar la fiabilidad del resultado del OCR.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más
¿Listo para empezar?
Nuget Descargas 5,246,844 | Versión: 2025.12 recién lanzado