USO DE IRONOCR

Cómo hacer OCR de subtítulos en C# (Tutorial)

Actualizado 21 de febrero, 2023
Compartir:

En este tutorial, aprenderemos a extraer subtítulos codificados de archivos de vídeo. Tomaremos un archivo de vídeo de muestra y extraeremos los subtítulos codificados en un archivo txt. Desarrollaremos un programa C# .NET que extraerá los subtítulos codificados utilizando el proceso OCR. Voy a mantener este tutorial simple y fácil para que incluso un principiante C # programador puede entenderlo.

Necesitamos un reconocimiento óptico de caracteres eficaz (OCR) que puede procesar el vídeo y obtener archivos de subtítulos independientemente del idioma de los subtítulos.

Hay muchas bibliotecas disponibles que proporcionan resultados de OCR. Algunas son de pago, otras son difíciles de usar y otras no son eficaces ni precisas, por lo que es muy difícil encontrar una biblioteca que sea gratuita, eficaz, fácil de usar y proporcione resultados precisos.

IronOCR, que es gratuito para el desarrollo, ofrece una prueba gratuita de un mes para fines comerciales. Es compatible con más de 150 idiomas y ofrece mayor precisión que la mayoría de las bibliotecas de OCR disponibles. También es eficaz y fácil de usar. Utilizaremos esta biblioteca para nuestra demostración.

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.

Entre las características de IronOCR se incluyen:

  • Lectura de texto a partir de muchos formatos, como imágenes (JPEG, PNG, BMP), GIF, TIF/TIFF, Streams, y PDFs
  • Corrección de 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 diferentes, junto con Soporte de códigos QR
  • Utiliza la última versión de Tesseract OCR, con un rendimiento superior al de otras bibliotecas de su clase.
  • Exportación de PDF con opción de búsqueda, exportación de hOCR / HTML y texto con contenido de imagen.

    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 nuevo proyecto.

Abre Visual Studio. Haga clic en Crear Nuevo Proyecto, y seleccione la plantilla de proyecto Aplicación de Consola.

Haga clic en el botón Siguiente y asigne un nombre al proyecto (Yo lo he llamado "OCR Subtitles", usted puede ponerle el nombre que desee.).

Haga clic en el botón Siguiente y seleccione el marco de trabajo 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 subtítulos en C# (Tutorial), Figura 1: Creación de un nuevo proyecto en Visual Studio

Creación de un nuevo proyecto en Visual Studio

Ahora, necesitamos instalar la librería IronOCR para usarla en nuestro proyecto. La forma más sencilla es instalarlo a través de NuGet Package Manager for Solution.

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 solución, como se muestra a continuación.

Cómo hacer OCR de subtítulos en C# (Tutorial), Figura 2: Instalación de IronOCR en Visual Studio

Instalación de IronOCR en Visual Studio

Aparecerá la siguiente ventana.

Cómo hacer OCR de subtítulos en C# (Tutorial), Figura 3: Interfaz de usuario del gestor de paquetes NuGet de Visual Studio

Interfaz de usuario del gestor de paquetes NuGet de Visual Studio

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

Cómo hacer OCR de subtítulos en C# (Tutorial), Figura 4: Búsqueda de IronOCR en la interfaz de usuario del gestor de paquetes NuGet

Búsqueda de IronOCR en la interfaz de usuario del gestor de paquetes NuGet.

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

Extraer subtítulos codificados

Escribamos un programa para extraer subtítulos codificados.

Vamos a utilizar la siguiente captura de pantalla para extraer subtítulos.

Cómo hacer OCR de subtítulos en C# (Tutorial), Figura 5: Captura de pantalla de vídeo de ejemplo de la que se extraerá el texto

Captura de pantalla de vídeo de ejemplo de la que se extraerá el texto.

Añade el siguiente espacio de nombres:

using IronOcr;
using IronOcr;
Imports IronOcr
VB   C#

Escriba el siguiente código debajo de la declaración del espacio de nombres.

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

El código anterior funciona de la siguiente manera:

  1. Inicializar IronTesseract objeto. Creará una instancia por defecto de IronTessearct.
  2. Crear un nuevo OcrInput rellenado con un archivo de imagen de entrada o un documento PDF. OcrInput es el tipo de entrada preferido porque permite el OCR de documentos de varias páginas y permite mejorar las imágenes antes del OCR para obtener resultados más rápidos y precisos.
  3. Lee un texto de un Objeto de Entrada OCR y devuelve un objeto Resultado OCR. ocr.Read extraerá los subtítulos de la captura de pantalla dada.
  4. result.Text devolverá todo el contenido extraído de la entrada dada.

    El programa de ejemplo produce la siguiente salida de consola:

    Cómo hacer OCR de subtítulos en C# (Tutorial), Figura 7: Salida de consola generada al realizar la extracción de texto en la imagen de muestra utilizando IronOCR.

    Salida de consola generada al realizar la extracción de texto en la imagen de muestra utilizando IronOCR.

    Supongamos que tiene un fotograma de vídeo que contiene tanto el título del vídeo como los subtítulos:

    Cómo hacer OCR de subtítulos en C# (Tutorial), Figura 6: Un solo fotograma de un vídeo más largo que contiene regiones de texto para el título del vídeo y los subtítulos del vídeo.

    Un único fotograma de un vídeo más largo que contiene regiones de texto para el título del vídeo y los subtítulos.

    Nuestro objetivo es extraer los subtítulos codificados de la región inferior de la imagen. En este caso, tenemos que especificar la región de texto en la que se muestra el subtítulo.

Especificar la ubicación de los subtítulos en el fotograma

Podemos usar un System.Drawing.Rectangle para especificar una región en la que leeremos un subtítulo del fotograma de Video. La unidad de medida es siempre píxeles.

Utilizaremos el siguiente código de ejemplo para especificar la región de texto.

var ocr = new IronTesseract();
using (var input = new OcrInput())
{
    //  una mejora de la velocidad del 41
    var contentArea = new CropRectangle(x: 189, y: 272, height: 252, width: 77);
    input.AddImage(@"D:\subtitle\image.png", 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: 189, y: 272, height: 252, width: 77);
    input.AddImage(@"D:\subtitle\image.png", 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:= 189, y:= 272, height:= 252, width:= 77)
	input.AddImage("D:\subtitle\image.png", 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. En contentArea, hemos especificado el punto de inicio en x e y, y luego la altura y anchura de la región de subtítulos requerida.

Guardar subtítulo en un archivo de texto de subtítulos

Vamos a guardar los subtítulos extraídos en un archivo TXT.

var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\subtitle\subtitle1.png"))
{
    var result = ocr.Read(input);
    result.SaveAsTextFile(@"D:\subtitle\subtitlefile.txt");
}
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\subtitle\subtitle1.png"))
{
    var result = ocr.Read(input);
    result.SaveAsTextFile(@"D:\subtitle\subtitlefile.txt");
}
Dim ocr = New IronTesseract()
Using input = New OcrInput("D:\subtitle\subtitle1.png")
	Dim result = ocr.Read(input)
	result.SaveAsTextFile("D:\subtitle\subtitlefile.txt")
End Using
VB   C#

result.SaveAsTextFile tomará la ruta de salida como argumento y guardará el archivo en la ruta dada.

Cómo hacer OCR de subtítulos en C# (Tutorial), Figura 8: Un solo fotograma de un vídeo más largo que contiene regiones de texto para el título del vídeo y los subtítulos del vídeo.

Un único fotograma de un vídeo más largo que contiene regiones de texto para el título del vídeo y los subtítulos.

Resumen

En este tutorial, hemos aprendido a utilizar IronOCR y desarrollar un programa muy simple para leer subtítulos de la captura de pantalla de vídeo. También podemos especifique la región del que queremos extraer el texto.

IronOCR ofrece las siguientes funciones OpenCV para Visión por ordenador. Hemos visto que IronOCR nos permite leer texto a partir de imágenes borrosas o de baja resolución. Esta biblioteca es eficaz y proporciona precisión. Admite más de 127 idiomas con total precisión. Es gratuito para el desarrollo y no tiene restricciones para la producción.

En resumen, IronOCR proporciona:

< ANTERIOR
Cómo obtener texto de una captura de pantalla con OCR en C#

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

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