USO DE IRONOCR

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

Actualizado 26 de febrero, 2023
Compartir:

En este tutorial, aprenderemos sobre el reconocimiento programático de matrículas. Tomaremos algunas imágenes de matrículas de muestra y extraeremos el número de matrícula. Desarrollaremos un programa en C# y .NET para realizar el reconocimiento automático de matrículas. Este tutorial es simple y fácil por lo que es perfecto incluso para un programador principiante de C#.

Hay muchas bibliotecas disponibles para realizar OCR. Algunas son de pago, otras son difíciles de usar y otras no son eficaces ni precisas. Puede resultar muy difícil encontrar una biblioteca que sea gratuita, eficaz, fácil de usar y proporcione resultados precisos. Encontré y utilicé IronOCR; es gratuito para el desarrollo, ofrece un mes de prueba gratuita para uso comercial, es fácil de usar, es eficiente, proporciona multi-threading, soporta más de 150 idiomas, y además de todo esto también proporciona una mayor precisión. Realizará todas las tareas, desde la detección de matrículas hasta la obtención de números de matrícula.

IronOCR

IronOCR es una librería desarrollada y mantenida por Iron Software que ayuda a los Ingenieros de Software C# a realizar OCR, Escaneo de Códigos de Barras y Extracción de Texto en proyectos .NET.

Características de IronOCR

  • Lectura de texto a partir de muchos formatos, como imágenes (JPEG, PNG, GIFF, TIFF, BMP), Streams y PDF
  • Corregir escaneos y fotos de baja calidad con una plétora de filtros como Deskew, Denoise, Binarize, Enhance Resolution, Dilate, y muchos más.
  • Lectura de códigos de barras de más de 20 formatos y Compatibilidad con códigos QR
  • Utilizando la última versión de Tesseract OCR, ajustado para mejorar el rendimiento
  • Exportación de PDF con función de búsqueda HTML y texto de contenido de imágenes.

    Vamos a desarrollar una aplicación de demostración para leer números de matrícula.

Crear un proyecto de Visual Studio

El primer paso es crear un proyecto de Visual Studio.

Abre Visual Studio. Haga clic en "Crear nuevo proyecto" y seleccione Plantilla de proyecto. (He seleccionado la plantilla Aplicación de consola para esta aplicación de demostración, pero puede seleccionar cualquiera según sus necesidades o preferencias). Haga clic en el botón "Siguiente" y asigne un nombre al proyecto (Yo lo he llamado "License plate OCR", pero puedes ponerle cualquier nombre). Haga clic en el botón "Siguiente" y seleccione su .NET Framework de destino. Por último, haga clic en el botón "Crear" para crear el proyecto. El proyecto se creará como se muestra a continuación.

Cómo hacer OCR de matrículas en C# (Tutorial), Figura 1: Creación de un proyecto Visual Studio para nuestro proyecto OCR de matrículas

**Creación de un proyecto de Visual Studio para nuestro proyecto de reconocimiento óptico de matrículas.

Ahora, necesitamos instalar la librería IronOCR para usarla en nuestro proyecto. La forma más sencilla es instalarlo a través del gestor de paquetes NuGet.

Instalar el paquete NuGet IronOCR

Haga clic en Herramientas en la barra de menú superior y seleccione Administrador de paquetes NuGet > Administrar paquetes NuGet para la solución, como se muestra a continuación.

Cómo realizar el reconocimiento óptico de matrículas en C# (Tutorial), Figura 2: Localización de la interfaz de usuario del gestor de paquetes NuGet en Visual Studio

Localización de la interfaz de usuario del gestor de paquetes NuGet en Visual Studio

Aparecerá la siguiente ventana.

Cómo realizar el reconocimiento óptico de matrículas en C# (Tutorial), Figura 3: La interfaz de usuario del gestor de paquetes NuGet en Visual Studio

La interfaz de usuario del gestor de paquetes NuGet en Visual Studio.

Haga clic en Examinar y busque IronOCR. Seleccione el paquete IronOCR y haga clic en el botón Instalar, como se muestra a continuación.

Cómo realizar el reconocimiento óptico de matrículas en C# (Tutorial), Figura 4: Instalación de la biblioteca IronOCR en la interfaz de usuario del gestor de paquetes NuGet

Instale la biblioteca IronOCR en la interfaz de usuario del gestor de paquetes NuGet.

La librería IronOCR estará instalada y lista para su uso.

Lectura de matrículas mediante reconocimiento óptico de caracteres

Escribamos un programa para leer la matrícula. IronOCR es un motor OCR de Tesseract que se utiliza para extraer texto de una imagen, por lo que si necesitamos implementar visión por ordenador para detectar vehículos, es posible que tengamos que utilizar algunas otras bibliotecas de aprendizaje automático. IronOCR es compatible con OpenCV, un modelo de detección de código abierto líder en el mercado. IronOCR puede utilizarse con OpenCV para realizar la detección de objetos, como la detección de coches o de matrículas.

Leeremos la siguiente matrícula:

Cómo realizar el reconocimiento óptico de matrículas en C# (Tutorial), Figura 5: Imagen de una matrícula con los números de matrícula claramente visibles.

Imagen de una matrícula con los números de matrícula claramente visibles

Ahora, escribiremos el código.

Añade el siguiente espacio de nombres:

using IronOcr;
using IronOcr;
Imports IronOcr
VB   C#

A continuación, añada el siguiente código:

var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\Liscence Plate\plate3.jpg"))
{
    input.DeNoise(); //  corrige el ruido digital y el escaneado deficiente
    input.ToGrayScale();
    var result = ocr.Read(Input);
    Console.WriteLine(result.Text);
}
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\Liscence Plate\plate3.jpg"))
{
    input.DeNoise(); //  corrige el ruido digital y el escaneado deficiente
    input.ToGrayScale();
    var result = ocr.Read(Input);
    Console.WriteLine(result.Text);
}
Dim ocr = New IronTesseract()
Using input = New OcrInput("D:\Liscence Plate\plate3.jpg")
	input.DeNoise() '  corrige el ruido digital y el escaneado deficiente
	input.ToGrayScale()
	Dim result = ocr.Read(Input)
	Console.WriteLine(result.Text)
End Using
VB   C#

Esto realiza lo siguiente:

  • Inicializa el IronTesseract con la configuración predeterminada.
  • Crea un nuevo OcrInput rellenado con un archivo de imagen de entrada.
  • Invoca DeNoise que elimina el ruido digital. Este filtro sólo debe utilizarse cuando se espera ruido; en nuestro caso, los vídeos o imágenes de CCTV suelen estar llenos de ruido.
  • Invoca el a escala de grises que convierte cada píxel en un tono de gris. (esto puede mejorar la velocidad).
  • Lee texto de un objeto OcrInput mediante el método Read, que devuelve un objeto OcrResult objeto. OcrInput es el tipo de entrada preferido porque permite OCR de documentos de varias páginas y permite mejorar las imágenes antes de leerlas para obtener resultados más rápidos y precisos.
  • `resultado.Texto devuelve todo el contenido extraído de la matrícula.

    Podemos ver que se extrae el número de matrícula correcto de la matrícula detectada.

    Cómo realizar el reconocimiento óptico de matrículas en C# (Tutorial), Figura 6: IronOCR detecta y extrae correctamente los números de la imagen de la matrícula.

    **IronOCR detecta y extrae correctamente los números de la imagen de la matrícula.

    Supongamos que no tenemos matrículas separadas, sino una foto del coche completo. Ahora, tenemos que escanear el área de la matrícula y realizar el reconocimiento de texto.

Escanear matrículas desde un coche

Podemos utilizar un System.Drawing.Rectangle para especificar una región en la que leeremos una matrícula. La unidad de medida es siempre el píxel.

Utilizaremos el siguiente archivo de imagen de ejemplo.

Cómo realizar el reconocimiento óptico de matrículas en C# (Tutorial), Figura 7: Imagen completa, vista trasera de un coche con la matrícula visible.

**Imagen completa de un coche con la matrícula visible.

Veremos que esto proporciona mejoras en la velocidad, además de evitar la lectura de texto innecesario.

var ocr = new IronTesseract();
using (var input = new OcrInput())
{
    //  una mejora de la velocidad del 41
    var contentArea = new CropRectangle(x: 365, y: 240, height: 80, width: 29);
    input.AddImage(@"D:\Liscence Plate\plate1.jpg", contentArea);
    var result = ocr.Read(input);
    Console.WriteLine(result.Text);
}
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
    //  una mejora de la velocidad del 41
    var contentArea = new CropRectangle(x: 365, y: 240, height: 80, width: 29);
    input.AddImage(@"D:\Liscence Plate\plate1.jpg", contentArea);
    var result = ocr.Read(input);
    Console.WriteLine(result.Text);
}
Dim ocr = New IronTesseract()
Using input = New OcrInput()
	'  una mejora de la velocidad del 41
	Dim contentArea = New CropRectangle(x:= 365, y:= 240, height:= 80, width:= 29)
	input.AddImage("D:\Liscence Plate\plate1.jpg", contentArea)
	Dim result = ocr.Read(input)
	Console.WriteLine(result.Text)
End Using
VB   C#

Esto supone un aumento de la velocidad del 41%** y nos permite ser específicos. Especificamos las coordenadas iniciales de la región (x e y) y la anchura y altura de la región de detección.

Áreas de contenido (Recorte OCR) también es compatible con la lectura de archivos PDF.

Reconocimiento automático de matrículas

IronOCR utiliza OpenCV para utilizar la visión por ordenador para detectar las áreas donde existe texto en una imagen. Realiza técnicas de procesamiento de imágenes y utiliza un modelo de detección para detectar matrículas. El uso de la visión por ordenador en IronOCR determinará dónde existen regiones de texto y, a continuación, utilizará Tesseract para intentar leer esas regiones.

Necesitamos instalar IronOcr.ComputerVision.Windows para utilizar el modelo de detección de matrículas.

Utilice el siguiente comando en Package Manager Console.

PM> Install-Package IronOcr.ComputerVision.Windows

Esto proporcionará los ensamblajes necesarios para utilizar IronOCR Computer Vision con nuestro archivo de modelo.

El siguiente código de ejemplo detectará automáticamente la matrícula del coche.

var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\Liscence Plate\plate1.jpg"))
{
    input.FindTextRegion();
    OcrResult result = ocr.Read(input);
    Console.WriteLine(result.Text);
}
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\Liscence Plate\plate1.jpg"))
{
    input.FindTextRegion();
    OcrResult result = ocr.Read(input);
    Console.WriteLine(result.Text);
}
Dim ocr = New IronTesseract()
Using input = New OcrInput("D:\Liscence Plate\plate1.jpg")
	input.FindTextRegion()
	Dim result As OcrResult = ocr.Read(input)
	Console.WriteLine(result.Text)
End Using
VB   C#

Uso de BuscarRegiónDeTexto utilizará Computer Vision para detectar regiones que contengan matrículas en cada imagen de un objeto OcrInput.

Resumen

En este tutorial, hemos aprendido a utilizar IronOCR y hemos desarrollado un sencillo programa para leer la matrícula de un coche. Hemos visto que IronOCR nos permite leer texto a partir de imágenes borrosas o de baja resolución, es eficaz, proporciona una gran precisión, admite más de 127 idiomas con total exactitud, es gratuito para el desarrollo y no tiene restricciones para la producción.

En resumen, IronOCR proporciona:

  • OCR para C# para escanear y leer imágenes y archivos PDF
  • Biblioteca OCR .NET con más de 127 paquetes de idiomas globales
  • Salida como texto, datos estructurados o PDF con función de búsqueda
  • Compatible con .NET 6, 5, Core, Standard, Framework

    IronOCR forma parte del Iron Suite. Esta suite contiene otras bibliotecas muy útiles como IronPDF para leer y escribir PDF, IronXL para manipular archivos Excel, y IronWebScrapper para extraer datos de sitios web. Puede comprar Iron Suite por el precio de dos bibliotecas licencias.

< ANTERIOR
Cómo OCR Licencia de Conducir en C#
SIGUIENTE >
Cómo obtener texto de una factura en C# Tutorial

¿Listo para empezar? Versión: 2024.7 recién publicada

Descarga gratuita de NuGet Descargas totales: 2,012,139 Ver licencias >
123