Saltar al pie de página
USANDO IRONOCR
Cómo realizar OCR en matrículas en C#

Cómo realizar OCR en matrículas en C# (Tutorial)

El reconocimiento de matrículas se ha convertido en una herramienta esencial en muchas industrias, desde la gestión del tráfico y los sistemas de estacionamiento hasta el cumplimiento de la ley y las soluciones de peaje. Al aprovechar la tecnología de Reconocimiento Óptico de Caracteres (OCR), los desarrolladores pueden extraer eficientemente texto de imágenes, automatizando el proceso de identificación de matrículas. En este tutorial, demostraremos cómo usar IronOCR, una potente biblioteca OCR de C#, para leer con precisión matrículas de las imágenes. Con su integración perfecta con el código fuente de OpenCV para tareas de visión por computadora, IronOCR ofrece una solución robusta para reconocer texto incluso de fuentes de imágenes complejas o ruidosas. Ya sea que esté trabajando con una imagen limpia de matrícula o una foto completa de un vehículo, esta guía lo guiará a través de los pasos para construir un sistema confiable de reconocimiento de matrículas usando técnicas modernas de OCR.

Cómo utilizar el reconocimiento de matrículas en C

  1. Instale la biblioteca C# para usar el reconocimiento de matrículas
  2. Importe la imagen de la matrícula a una nueva instancia de OcrImageInput.
  3. Aplique filtros de imagen para mejorar la extracción de texto en C#.
  4. Mejore la velocidad de reconocimiento especificando la región de la matrícula en la foto.
  5. Imprima el texto extraído usando una instancia de OcrLicensePlateResult.

Introducción a IronOCR

IronOCR es una biblioteca OCR de C# construida sobre el motor de OCR Tesseract, diseñada específicamente para traer alta precisión y eficiencia a proyectos de reconocimiento de texto en aplicaciones .NET. Ideal para manejar imágenes ruidosas o de baja calidad, IronOCR incluye potentes capacidades de preprocesamiento de imágenes como reducción automática de ruido y conversión a escala de grises, que mejoran la claridad de la extracción de texto.

Algunas de las características destacadas de IronOCR incluyen:

  • Alta Precisión OCR: Optimizado para varios idiomas y fuentes, IronOCR sobresale en precisión incluso al trabajar con texto complejo o distorsionado.
  • Soporte de Imágenes y PDF: Puede leer texto de múltiples formatos de imagen y archivos PDF, lo que lo hace versátil para diferentes tipos de documentos.
  • Integración con OpenCV: A través del soporte de OpenCV, IronOCR puede realizar tareas de visión por computadora como detectar regiones de texto específicas dentro de una imagen, lo cual es particularmente útil para el reconocimiento de matrículas.
  • Preprocesamiento Avanzado: Incluye filtros para conversión a escala de grises, rotación, corrección de inclinación y mejora de contraste para mejorar la calidad del reconocimiento.
  • Opciones de Entrada Flexibles: Soporta documentos de varias páginas y regiones ajustables, permitiendo a los desarrolladores enfocar el procesamiento de OCR en áreas seleccionadas para resultados más rápidos y dirigidos.

Con estas capacidades, IronOCR es una solución poderosa para crear aplicaciones de OCR que exigen precisión, flexibilidad y facilidad de integración con otras herramientas de visión por computadora.

Crear un proyecto de Visual Studio

Comience abriendo Visual Studio y seleccionando "Crear un Nuevo Proyecto". Esto lo llevará a una página donde puede seleccionar el tipo de proyecto que desea construir (en nuestro caso, haremos una Aplicación de Consola). Seleccione el tipo de aplicación deseada y haga clic en "Siguiente".

Tipo de Proyecto de Visual Studio

Ahora, déle un nombre a su proyecto y elija la ubicación donde se guardará.

Nombre y Ubicación del Proyecto

Finalmente, seleccione su marco de .NET objetivo y haga clic en el botón "Crear". Esto creará el proyecto, como se muestra a continuación.

Proyecto Creado

El siguiente paso es instalar la biblioteca IronOCR para que podamos comenzar a procesar matrículas.

Instalación de IronOCR

Para comenzar con IronOCR en su proyecto C#, necesitará instalar el paquete IronOCR desde NuGet. IronOCR es compatible con .NET Framework y .NET Core, lo que facilita su integración en diversas aplicaciones .NET.

Paso 1: Abra la consola del administrador de paquetes

En Visual Studio, navegue hasta Herramientas > Administrador de Paquetes NuGet > Consola del Administrador de Paquetes.

Paso 2: Instalar el paquete IronOCR

Ingrese el siguiente comando en la Consola del Administrador de Paquetes:

Install-Package IronOcr

Este comando instala la biblioteca IronOCR, incluyendo todas las dependencias necesarias para ejecutar funciones de OCR en su proyecto. Como nuestra aplicación requiere características avanzadas como la detección de matrículas usando visión artificial, también puede instalar el paquete opcional IronOcr.ComputerVision.Windows de esta manera:

Install-Package IronOcr.ComputerVision.Windows

Asegúrese de tener la extensión IronOCR.Extensions.AdvancedScan instalada para que pueda utilizar su poderoso método ReadLicensePlate:

Install-Package IronOcr.Extensions.AdvancedScan

Alternativamente, puede instalar los paquetes usando Herramientas > Administrador de Paquetes NuGet > Administrar Paquetes NuGet para la Solución y buscar los paquetes que necesita:

Administrador de Paquetes NuGet

Configuración del código

Finalmente, debemos agregar las importaciones necesarias y las declaraciones using en la parte superior de nuestro código:

using IronOcr;
using IronOcr;
Imports IronOcr
$vbLabelText   $csharpLabel

Lectura de matrículas con reconocimiento óptico de caracteres

En esta sección, crearemos un programa para leer matrículas usando IronOCR, un Motor de OCR Tesseract que sobresale en extraer texto de imágenes. Para implementar la detección de vehículos, también podemos incorporar bibliotecas adicionales de aprendizaje automático. Cabe destacar que IronOCR se integra con OpenCV, una biblioteca líder de visión por computadora de código abierto, lo que nos permite realizar tareas de detección de objetos como identificar vehículos y matrículas.

Ejemplo de imagen de matrícula

Trabajaremos con la siguiente matrícula:

Ejemplo de Matrícula

Código de ejemplo para realizar OCR en la matrícula

using IronOcr;

var ocr = new IronTesseract();

using (var input = new OcrImageInput("licensePlate.jpeg"))
{
    // Fixes digital noise and makes the image easier to read
    input.DeNoise();
    input.ToGrayScale();

    // Reads the license plate information and stores it for further use
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);

    // Saves the license plate text to a string variable
    string output = result.Text;

    // Outputs the license plate text to the console
    Console.WriteLine(output);
}
using IronOcr;

var ocr = new IronTesseract();

using (var input = new OcrImageInput("licensePlate.jpeg"))
{
    // Fixes digital noise and makes the image easier to read
    input.DeNoise();
    input.ToGrayScale();

    // Reads the license plate information and stores it for further use
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);

    // Saves the license plate text to a string variable
    string output = result.Text;

    // Outputs the license plate text to the console
    Console.WriteLine(output);
}
Imports IronOcr

Private ocr = New IronTesseract()

Using input = New OcrImageInput("licensePlate.jpeg")
	' Fixes digital noise and makes the image easier to read
	input.DeNoise()
	input.ToGrayScale()

	' Reads the license plate information and stores it for further use
	Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(input)

	' Saves the license plate text to a string variable
	Dim output As String = result.Text

	' Outputs the license plate text to the console
	Console.WriteLine(output)
End Using
$vbLabelText   $csharpLabel

Salida de OCR

Desglose del Código:

  • Inicialización: var ocr = new IronTesseract(); crea una nueva instancia de la clase IronTesseract, que proporciona métodos para el Reconocimiento Óptico de Caracteres (OCR).

  • Entrada de Imagen: La declaración using crea un nuevo objeto OcrImageInput con el archivo de imagen especificado "licensePlate.jpeg". Este objeto está diseñado para mantener los datos de la imagen para el procesamiento de OCR.

  • Preprocesamiento de Imagen:

    • input.DeNoise(); aplica un filtro de reducción de ruido digital para mejorar la calidad de la imagen, facilitando al motor OCR la lectura del texto.
    • input.ToGrayScale(); convierte la imagen a escala de grises, lo que puede mejorar la precisión del reconocimiento y la velocidad de procesamiento.
  • Reconocimiento de Matrícula: La línea OcrLicensePlateResult result = ocr.ReadLicensePlate(input); utiliza el método ReadLicensePlate para analizar la imagen procesada y extraer toda la información de la matrícula que detecte, almacenando los resultados en un objeto OcrLicensePlateResult.

  • Almacenamiento de Salida: El texto de la matrícula se almacena en la variable de cadena output accediendo a result.Text, que contiene el texto reconocido de la matrícula.

  • Salida por Consola: Finalmente, Console.WriteLine(output); imprime el texto de la matrícula extraída en la consola para su verificación.

Escaneo de números de matrícula de un automóvil

Si tenemos una imagen de un coche completo en lugar de solo la matrícula, podemos especificar una región rectangular para centrarnos en el área de la matrícula. Podemos usar System.Drawing.Rectangle para definir esta área en píxeles.

Imagen original

Utilizaremos el siguiente archivo de imagen para nuestro ejemplo:

Coche con Matrícula

Al especificar el área de interés, mejoramos la velocidad de procesamiento y evitamos extraer texto innecesario.

Código de implementación

using IronOcr;
using System.Drawing;

var ocr = new IronTesseract();

using (var input = new OcrInput())
{
    var contentArea = new Rectangle(x: 252, y: 282, width: 148, height: 47);
    input.LoadImage("CarPlate.jpeg", contentArea);
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
    Console.WriteLine(result.Text);
}
using IronOcr;
using System.Drawing;

var ocr = new IronTesseract();

using (var input = new OcrInput())
{
    var contentArea = new Rectangle(x: 252, y: 282, width: 148, height: 47);
    input.LoadImage("CarPlate.jpeg", contentArea);
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
    Console.WriteLine(result.Text);
}
Imports IronOcr
Imports System.Drawing

Private ocr = New IronTesseract()

Using input = New OcrInput()
	Dim contentArea = New Rectangle(x:= 252, y:= 282, width:= 148, height:= 47)
	input.LoadImage("CarPlate.jpeg", contentArea)
	Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(input)
	Console.WriteLine(result.Text)
End Using
$vbLabelText   $csharpLabel

Salida Focalizada de OCR

Desglose del Código:

  • Inicialización: var ocr = new IronTesseract(); crea una nueva instancia de la clase IronTesseract, que se encarga de ejecutar las operaciones de OCR.
  • Entrada de OCR: La declaración using (var input = new OcrInput()) crea un nuevo objeto OcrInput, que se utilizará para cargar y procesar la imagen para el OCR.
  • Definición del Área de Interés: var contentArea = new Rectangle(x: 252, y: 282, width: 148, height: 47); define un área rectangular (contentArea) dentro de la imagen. Este rectángulo especifica las coordenadas y dimensiones (ancho y alto) donde se espera que esté ubicada la matrícula.
  • Carga de la Imagen: input.LoadImage("CarPlate.jpeg", contentArea); carga el archivo de imagen especificado ("CarPlate.jpeg") y se enfoca en el rectángulo definido (contentArea) para limitar el procesamiento de OCR a esa región específica.
  • Leyendo la Matrícula: OcrLicensePlateResult result = ocr.ReadLicensePlate(input); invoca el método ReadLicensePlate, que analiza la imagen de entrada en busca de caracteres de matrícula y devuelve un objeto OcrLicensePlateResult que contiene el texto extraído.
  • Salida: Console.WriteLine(result.Text); imprime el texto reconocido de la matrícula en la consola.

Reconocimiento automático de matrículas

IronOCR utiliza OpenCV para identificar regiones de texto dentro de las imágenes, empleando varias técnicas de procesamiento de imágenes. Esta funcionalidad permite a los programas detectar matrículas localizando áreas de texto en la imagen y luego utilizando Tesseract para leer esas regiones.

Instalación

Para habilitar el modelo de detección de matrículas, instale el paquete requerido a través de la Consola del Administrador de Paquetes:

Ejemplo usando detección automática de regiones para matrículas:

var ocr = new IronTesseract();

using (var input = new OcrImageInput("CarPlate.jpeg"))
{
    input.FindTextRegion();
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
    Console.WriteLine(result.Text);
}
var ocr = new IronTesseract();

using (var input = new OcrImageInput("CarPlate.jpeg"))
{
    input.FindTextRegion();
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
    Console.WriteLine(result.Text);
}
Dim ocr = New IronTesseract()

Using input = New OcrImageInput("CarPlate.jpeg")
	input.FindTextRegion()
	Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(input)
	Console.WriteLine(result.Text)
End Using
$vbLabelText   $csharpLabel

Salida de OCR Automático

Desglose del Código:

  • Inicialización: Se crea una instancia de la clase IronTesseract, que se utilizará para el reconocimiento óptico de caracteres (OCR) con el motor Tesseract.
  • Entrada de Imagen: Se instancia un nuevo objeto OcrImageInput con el archivo de imagen especificado ("CarPlate.jpeg"). Este objeto servirá como la entrada para el proceso de OCR y está encerrado en una declaración using para asegurar una adecuada gestión de recursos.
  • Detección de Región de Texto: Se llama el método FindTextRegion() en el objeto input. Este método emplea técnicas de visión por computadora para identificar automáticamente áreas dentro de la imagen que probablemente contengan texto, apuntando específicamente a la matrícula.
  • Reconocimiento de Matrículas: Se invoca el método ReadLicensePlate para analizar las regiones de texto detectadas y extraer el número de la matrícula. El resultado se almacena en un objeto OcrLicensePlateResult, que contiene el texto reconocido y cualquier metadato asociado.
  • Salida: El texto de la matrícula detectada se imprime en la consola, permitiendo al usuario ver el número de matrícula extraído.

Licencias de IronOCR

Licencia IronOCR

Para quienes desean probar IronOCR por sí mismos, IronOCR ofrece una prueba gratuita que le concede acceso a toda la gama de herramientas que tiene para ofrecer, lo que significa que puede probarlas en sus propios proyectos antes de comprar una licencia. Una vez que su prueba gratuita expire, la licencia de IronOCR comienza desde solo $liteLicense para la licencia lite. También proporciona complementos opcionales por un costo adicional, como la cobertura de redistribución libre de regalías y soporte ininterrumpido y actualizaciones continuas del producto.

Más allá de esto, si encuentra que necesita usar más productos de Iron Software además de IronOCR, como IronPDF para sus tareas relacionadas con PDF o IronWord para trabajar con documentos Word, entonces Iron Software también ofrece Iron Suite, que es una excelente manera de tener acceso a toda la gama de herramientas por un gran precio.

Conclusión

En esta guía, hemos explorado cómo construir un sistema confiable de reconocimiento de matrículas en C# usando IronOCR. Con sus poderosas capacidades de extracción de texto e integración con OpenCV, IronOCR proporciona una solución eficiente y fácil de usar para aplicaciones que requieren reconocimiento preciso de texto en imágenes de vehículos. Desde preprocesar la imagen hasta fijar regiones específicas de detección, IronOCR simplifica el proceso de OCR con herramientas adaptadas para imágenes ruidosas o complejas, como matrículas en tráfico y grabaciones de vigilancia.

Ya sea que esté desarrollando para el monitoreo del tráfico, la aplicación de normas de estacionamiento o cualquier aplicación que requiera reconocimiento automatizado de matrículas, IronOCR ofrece una biblioteca integral que se integra perfectamente en entornos .NET. Siguiendo estos pasos, estará equipado para implementar soluciones potenciadas por OCR que mejoren la eficiencia y la precisión en varios escenarios del mundo real. Con características adicionales como la selección de región y la reducción de ruido, IronOCR garantiza que sus tareas de reconocimiento de matrículas estén optimizadas para obtener los mejores resultados posibles.

Preguntas Frecuentes

¿Cómo puedo usar OCR para identificar números de matrículas en C#?

Puedes usar IronOCR para identificar números de matrículas en C# empleando la clase IronTesseract para crear una instancia de OCR, cargar la imagen que contiene la matrícula, aplicar filtros de preprocesamiento como la reducción de ruido, y extraer el texto usando el método ReadLicensePlate.

¿Cuáles son los beneficios de usar OCR para el reconocimiento de matrículas?

Usar OCR para el reconocimiento de matrículas automatiza el proceso de extracción de texto, ofreciendo alta precisión y eficiencia. IronOCR mejora esto proporcionando soporte para múltiples formatos de imagen e integración con visión por computadora, lo que lo hace ideal para aplicaciones como la gestión de tráfico y la aplicación de la ley.

¿Cómo puedo manejar imágenes ruidosas o de baja calidad en el procesamiento OCR?

IronOCR proporciona poderosas capacidades de preprocesamiento de imágenes, como la reducción automática de ruido y la conversión a escala de grises, que mejoran la precisión de extracción de texto incluso al tratar con imágenes ruidosas o de baja calidad.

¿Es posible enfocar el procesamiento de OCR en regiones específicas de una imagen?

Sí, IronOCR te permite especificar regiones rectangulares de interés dentro de una imagen para enfocar el procesamiento de OCR, mejorando tanto la velocidad como la precisión de la extracción de texto de áreas como las matrículas.

¿Cómo empiezo con OCR en un proyecto de Visual Studio?

Para empezar a usar OCR en un proyecto de Visual Studio, crea una nueva aplicación de consola, instala el paquete IronOCR a través de NuGet e implementa la lógica de OCR utilizando las clases y métodos de IronOCR. Esta configuración te permite realizar fácilmente tareas de OCR dentro de tu aplicación.

¿Qué características ofrece IronOCR para el reconocimiento de matrículas?

IronOCR ofrece alta precisión de OCR, integración con OpenCV para mejorar tareas de visión por computadora, filtros avanzados de preprocesamiento y soporte para múltiples formatos de imagen y PDF, lo que lo convierte en una herramienta versátil para el reconocimiento de matrículas.

¿Cómo se integra IronOCR con tareas de visión por computadora?

IronOCR se integra con OpenCV para realizar varias tareas de visión por computadora, como la detección automática de regiones de texto, mejorando el proceso de OCR para aplicaciones como el reconocimiento de matrículas.

¿Qué opciones de licencia están disponibles para IronOCR?

IronOCR ofrece una prueba gratuita, así como varias opciones de licencia, comenzando por una licencia lite. Add-ons adicionales y el Iron Suite están disponibles para usuarios que buscan funcionalidades ampliadas en diferentes aplicaciones.

¿Se puede aplicar la tecnología OCR a imágenes de vehículos completos?

Sí, IronOCR se puede usar con imágenes de vehículos completos. Al especificar la región de la matrícula, puedes enfocar el procesamiento de OCR en el área deseada, evitando la extracción innecesaria de texto y mejorando la eficiencia del procesamiento.

Kannaopat Udonpant
Ingeniero de Software
Antes de convertirse en Ingeniero de Software, Kannapat completó un doctorado en Recursos Ambientales de la Universidad de Hokkaido en Japón. Mientras perseguía su grado, Kannapat también se convirtió en miembro del Laboratorio de Robótica de Vehículos, que es parte del Departamento de Ingeniería ...
Leer más