Passer au contenu du pied de page
UTILISATION D'IRONOCR

Comment effectuer la reconnaissance de sous-titres en C# (Tutoriel)

Dans ce didacticiel, nous allons apprendre à extraire des sous-titres intégrés à partir de fichiers vidéo. Nous prendrons un fichier vidéo d'exemple et extrairons les sous-titres intégrés dans un fichier texte. Nous développerons un programme C# .NET qui extraira les sous-titres intégrés en utilisant le processus OCR. Je garderai ce didacticiel simple et facile afin qu'il soit compréhensible même pour un programmeur C# débutant.

Nous avons besoin d'un moteur de reconnaissance optique de caractères (OCR) efficace capable de traiter la vidéo et d'obtenir les fichiers de sous-titres quel que soit la langue des sous-titres.

Il existe de nombreuses bibliothèques disponibles qui fournissent des résultats OCR. Certaines d'entre elles sont payantes, certaines sont difficiles à utiliser, et certaines ne sont ni efficaces ni précises, il est donc très difficile de trouver une bibliothèque qui soit gratuite, efficace, facile à utiliser, et offre des résultats précis.

IronOCR, qui est gratuit pour le développement, offre un essai gratuit d'un mois à des fins commerciales. Il prend en charge plus de 150 langues et offre une meilleure précision que la plupart des autres bibliothèques OCR disponibles. Il est également efficace et facile à utiliser. Nous utiliserons cette bibliothèque pour notre démonstration.

IronOCR

IronOCR est une bibliothèque développée et maintenue par Iron Software qui aide les ingénieurs en logiciels C# à réaliser l'OCR, le balayage de code-barres et l'extraction de texte dans des projets .NET.

Les fonctionnalités d'IronOCR incluent :

  • Lecture de texte à partir de nombreux formats tels que les images (JPEG, PNG, BMP), GIF, TIF/TIFF, Streams, et PDF Correction de scans et photos de basse qualité avec une pléthore de filtres tels que Deskew, Denoise, Binarisation, Amélioration de la résolution, Dilatation, et bien d'autres Lecture de codes-barres de plus de 20 formats différents, avec en plus le Support des QR Codes Utilisation de la dernière version de Tesseract OCR, avec ses performances améliorées au-delà des autres bibliothèques de son genre Export de PDF consultables, export hOCR / HTML et texte de contenu d'image.

Développons une application de démonstration pour lire les numéros de plaques d'immatriculation.

Créer un projet Visual Studio

La première étape consiste à créer un nouveau projet.

Ouvrir Visual Studio. Cliquez sur Créer un nouveau projet, et sélectionnez le modèle de projet d'application console.

Cliquez sur le bouton Suivant, et nommez le projet (je l'ai nommé "OCR Subtitles", vous pouvez le nommer selon votre choix).

Cliquez sur le bouton Suivant, et sélectionnez votre Framework cible. Enfin, cliquez sur le bouton Créer pour créer le projet.

Le projet sera créé comme indiqué ci-dessous.

Comment OCR des sous-titres en C# (Didacticiel), Figure 1 : Création d'un Nouveau Projet dans Visual Studio Création d'un nouveau projet dans Visual Studio

Maintenant, nous devons installer la bibliothèque IronOCR pour l'utiliser dans notre projet. La façon la plus simple est de l'installer via le Gestionnaire de Packages NuGet pour Solution.

Installer le Package NuGet IronOCR

Cliquez sur Outils dans la barre de menu du haut, et sélectionnez Gestionnaire de Packages NuGet > Gérer les Packages NuGet pour Solution, comme illustré ci-dessous.

Comment OCR des sous-titres en C# (Didacticiel), Figure 2 : Installation d'IronOCR dans Visual Studio Installation d'IronOCR dans Visual Studio

La fenêtre suivante apparaîtra.

Comment OCR des sous-titres en C# (Didacticiel), Figure 3 : Interface du gestionnaire de packages NuGet de Visual Studio Interface du gestionnaire de packages NuGet de Visual Studio

Cliquez sur rechercher, et cherchez IronOCR. Sélectionnez le package IronOCR et cliquez sur le bouton Installer, comme montré ci-dessous.

Comment OCR des sous-titres en C# (Didacticiel), Figure 4 : Recherche de IronOCR dans l'interface du gestionnaire de packages NuGet Recherche de IronOCR dans l'interface du gestionnaire de packages NuGet

La bibliothèque IronOCR sera installée et prête à l'emploi.

Extraire des sous-titres intégrés

Écrivons un programme pour extraire des sous-titres intégrés.

Nous allons utiliser la capture d'écran suivante pour extraire les sous-titres.

Comment OCR des sous-titres en C# (Didacticiel), Figure 5 : Capture d'écran vidéo d'exemple à partir de laquelle le texte sera extrait Capture d'écran vidéo d'exemple à partir de laquelle le texte sera extrait

Ajoutez l'espace de noms suivant :

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

Écrivez le code suivant sous la déclaration de namespace.

// Initialize IronTesseract object
var ocr = new IronTesseract();
// Create an OCR Input using the specified image path
using (var input = new OcrInput(@"D:\License Plate\plate3.jpg"))
{
    // Perform OCR on the input image to extract text
    var result = ocr.Read(input);
    // Output the extracted text to the console
    Console.WriteLine(result.Text);
}
// Initialize IronTesseract object
var ocr = new IronTesseract();
// Create an OCR Input using the specified image path
using (var input = new OcrInput(@"D:\License Plate\plate3.jpg"))
{
    // Perform OCR on the input image to extract text
    var result = ocr.Read(input);
    // Output the extracted text to the console
    Console.WriteLine(result.Text);
}
' Initialize IronTesseract object
Dim ocr = New IronTesseract()
' Create an OCR Input using the specified image path
Using input = New OcrInput("D:\License Plate\plate3.jpg")
	' Perform OCR on the input image to extract text
	Dim result = ocr.Read(input)
	' Output the extracted text to the console
	Console.WriteLine(result.Text)
End Using
$vbLabelText   $csharpLabel

Le code ci-dessus fonctionne comme suit :

  1. Initialisez l'objet IronTesseract. Il créera une instance par défaut de IronTesseract.
  2. Créez un nouvel objet OcrInput peuplé avec un fichier image d'entrée ou un document PDF. OcrInput est le type d'entrée privilégié car il permet l'OCR de documents multi-pages et permet d'améliorer les images avant l'OCR pour obtenir des résultats plus rapides et plus précis.
  3. Lisez un texte à partir d'un objet d'entrée OCR et renvoyez un objet de résultat OCR. ocr.Read extraira les sous-titres de la capture d'écran d'entrée donnée.
  4. result.Text renverra tout le contenu extrait de l'entrée donnée.

Le programme exemple produit la sortie console ci-dessous :

Comment OCR des sous-titres en C# (Didacticiel), Figure 7 : Sortie console générée à partir de l'extraction de texte sur l'image d'exemple en utilisant IronOCR Sortie console générée à partir de l'extraction de texte sur l'image d'exemple en utilisant IronOCR

Supposons que vous ayez une image vidéo contenant à la fois le titre de la vidéo et les sous-titres :

Comment OCR des sous-titres en C# (Didacticiel), Figure 6 : Une seule image d'une vidéo plus longue contenant des régions de texte pour le titre de la vidéo et les sous-titres de la vidéo Une seule image d'une vidéo plus longue contenant des régions de texte pour le titre de la vidéo et les sous-titres de la vidéo

Notre objectif est d'extraire les sous-titres intégrés de la région inférieure de l'image. Dans ce cas, nous devons spécifier la région texte dans laquelle le sous-titre est affiché.

Spécifier l'emplacement des sous-titres dans le cadre

Nous pouvons utiliser un System.Drawing.Rectangle pour spécifier une région dans laquelle nous lirons un sous-titre de l'image vidéo. L'unité de mesure est toujours pixels.

Nous utiliserons le code exemple suivant pour spécifier la région texte.

// Initialize IronTesseract object
var ocr = new IronTesseract();
// Create an OCR Input and specify the region of interest
using (var input = new OcrInput())
{
    // Define the area within the image where subtitles are located for a 41% improvement on speed
    var contentArea = new CropRectangle(x: 189, y: 272, height: 252, width: 77);
    // Add the specific region of the image to the OCR input
    input.AddImage(@"D:\subtitle\image.png", contentArea);
    // Perform OCR on the specified region
    var result = ocr.Read(input);
    // Output the extracted text to the console
    Console.WriteLine(result.Text);
}
// Initialize IronTesseract object
var ocr = new IronTesseract();
// Create an OCR Input and specify the region of interest
using (var input = new OcrInput())
{
    // Define the area within the image where subtitles are located for a 41% improvement on speed
    var contentArea = new CropRectangle(x: 189, y: 272, height: 252, width: 77);
    // Add the specific region of the image to the OCR input
    input.AddImage(@"D:\subtitle\image.png", contentArea);
    // Perform OCR on the specified region
    var result = ocr.Read(input);
    // Output the extracted text to the console
    Console.WriteLine(result.Text);
}
' Initialize IronTesseract object
Dim ocr = New IronTesseract()
' Create an OCR Input and specify the region of interest
Using input = New OcrInput()
	' Define the area within the image where subtitles are located for a 41% improvement on speed
	Dim contentArea = New CropRectangle(x:= 189, y:= 272, height:= 252, width:= 77)
	' Add the specific region of the image to the OCR input
	input.AddImage("D:\subtitle\image.png", contentArea)
	' Perform OCR on the specified region
	Dim result = ocr.Read(input)
	' Output the extracted text to the console
	Console.WriteLine(result.Text)
End Using
$vbLabelText   $csharpLabel

Cela entraîne une augmentation de 41% de la vitesse - et nous permet d'être précis. Dans contentArea, nous avons spécifié le point de départ en x et y, puis la hauteur et la largeur de la région de sous-titres requise.

Enregistrer le sous-titre dans un fichier texte de sous-titres

Enregistrons les sous-titres extraits dans un fichier texte.

// Initialize IronTesseract object
var ocr = new IronTesseract();
// Create an OCR Input with the specified image path
using (var input = new OcrInput(@"D:\subtitle\subtitle1.png"))
{
    // Perform OCR on the input image to extract text
    var result = ocr.Read(input);
    // Save the extracted text to a specified file path
    result.SaveAsTextFile(@"D:\subtitle\subtitlefile.txt");
}
// Initialize IronTesseract object
var ocr = new IronTesseract();
// Create an OCR Input with the specified image path
using (var input = new OcrInput(@"D:\subtitle\subtitle1.png"))
{
    // Perform OCR on the input image to extract text
    var result = ocr.Read(input);
    // Save the extracted text to a specified file path
    result.SaveAsTextFile(@"D:\subtitle\subtitlefile.txt");
}
' Initialize IronTesseract object
Dim ocr = New IronTesseract()
' Create an OCR Input with the specified image path
Using input = New OcrInput("D:\subtitle\subtitle1.png")
	' Perform OCR on the input image to extract text
	Dim result = ocr.Read(input)
	' Save the extracted text to a specified file path
	result.SaveAsTextFile("D:\subtitle\subtitlefile.txt")
End Using
$vbLabelText   $csharpLabel

result.SaveAsTextFile prendra le chemin de sortie en argument, et enregistrera le fichier dans le chemin donné.

Comment OCR des sous-titres en C# (Didacticiel), Figure 8 : Une seule image d'une vidéo plus longue contenant des régions de texte pour le titre de la vidéo et les sous-titres de la vidéo Une seule image d'une vidéo plus longue contenant des régions de texte pour le titre de la vidéo et les sous-titres de la vidéo

Résumé

Dans ce didacticiel, nous avons appris à utiliser IronOCR et développer un programme très simple pour lire des sous-titres à partir de la capture d'écran vidéo. Nous pouvons également spécifier la région pour laquelle nous voulons extraire le texte.

IronOCR offre les fonctionnalités de OpenCV pour la vision par ordinateur. Nous avons vu qu'IronOCR nous permet de lire du texte à partir d'images floues ou de faible résolution. Cette bibliothèque est efficace et offre de la précision. Elle prend en charge plus de 125 langues avec précision totale. Elle est gratuite pour le développement et sans restriction en production.

En résumé, IronOCR fournit :

  • La capacité de scanner et lire des images et documents numérisés
  • Support pour 150+ langues globales
  • Sortie sous forme de texte, données structurées ou PDF consultables Supporte .NET 6, 5, Core, Standard, Framework

IronOCR fait partie de la suite de bibliothèques d'Iron Software utiles pour lire et écrire des PDF, manipuler des fichiers Excel, lire du texte à partir d'images et extraire du contenu de sites web. Achetez l'Iron Suite complète pour le prix de deux bibliothèques individuelles.

Questions Fréquemment Posées

Comment puis-je extraire les sous-titres intégrés des fichiers vidéo en C#?

Vous pouvez extraire les sous-titres intégrés des fichiers vidéo en C# en utilisant IronOCR. Installez la bibliothèque via le gestionnaire de packages NuGet, puis utilisez-la pour traiter les trames vidéo et extraire du texte.

Quel est l'avantage d'utiliser IronOCR par rapport à Tesseract pour l'extraction de sous-titres?

IronOCR offre une alternative améliorée à Tesseract avec une précision accrue, une facilité d'utilisation et un support pour plus de 150 langues, le rendant particulièrement adapté à l'extraction de sous-titres à partir de vidéos.

Comment spécifiez-vous les emplacements des sous-titres dans IronOCR pour améliorer la vitesse de traitement?

Vous pouvez spécifier les emplacements des sous-titres dans IronOCR en utilisant un System.Drawing.Rectangle pour se concentrer sur la région d'intérêt, ce qui peut améliorer la vitesse de traitement jusqu'à 41%.

IronOCR peut-il être utilisé pour des langues autres que l'anglais lors de l'extraction de sous-titres?

Oui, IronOCR prend en charge plus de 150 langues, ce qui lui permet d'extraire des sous-titres avec précision à partir de vidéos dans plusieurs langues.

Quelles sont les conditions préalables pour suivre le tutoriel OCR de sous-titres en C#?

Le tutoriel nécessite des connaissances de base en programmation C# et la capacité d'utiliser Visual Studio pour installer la bibliothèque IronOCR via le gestionnaire de packages NuGet.

Comment IronOCR gère-t-il les trames vidéo de basse qualité?

IronOCR inclut des fonctionnalités pour corriger les scans de basse qualité, améliorant ainsi la précision de l'extraction de texte à partir de trames vidéo sous-optimales.

Quels formats de sortie sont disponibles après l'extraction des sous-titres avec IronOCR?

Les sous-titres extraits peuvent être enregistrés sous forme de fichiers texte, de données structurées ou de PDFs consultables à l'aide d'IronOCR.

Y a-t-il un coût associé à l'utilisation d'IronOCR pour des projets commerciaux?

IronOCR est gratuit pour le développement et offre un essai d'un mois pour les projets commerciaux. Une licence est requise pour une utilisation commerciale continue.

IronOCR peut-il s'intégrer à d'autres bibliothèques pour des fonctionnalités supplémentaires?

Oui, IronOCR peut s'intégrer à d'autres bibliothèques d'Iron Software pour des tâches telles que la manipulation de PDF et le web scraping, augmentant ainsi sa fonctionnalité.

Kannaopat Udonpant
Ingénieur logiciel
Avant de devenir ingénieur logiciel, Kannapat a obtenu un doctorat en ressources environnementales à l'université d'Hokkaido au Japon. Pendant qu'il poursuivait son diplôme, Kannapat est également devenu membre du laboratoire de robotique de véhicules, qui fait partie du département de bioproduction. En 2022, il a utilisé ses compé...
Lire la suite