Test dans un environnement réel
Test en production sans filigrane.
Fonctionne partout où vous en avez besoin.
Dans ce tutoriel, nous allons apprendre à extraire les sous-titres codés en dur des fichiers vidéo. Nous prendrons un exemple de fichier vidéo et extrairons les sous-titres codés en dur dans un fichier txt. Nous développerons un programme C# .NET qui extraira les sous-titres codés en dur à l'aide d'un processus OCR. Je vais faire en sorte que ce tutoriel soit simple et facile à comprendre, de sorte que même un programmeur C# débutant puisse le comprendre.
Nous avons besoin d'une reconnaissance optique de caractères efficace(OCR) qui peut traiter la vidéo et obtenir des fichiers de sous-titres quelle que soit la langue des sous-titres.
Il existe de nombreuses bibliothèques qui fournissent des résultats d'OCR. Certaines sont payantes, d'autres sont difficiles à utiliser et d'autres encore 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 qui fournisse des résultats précis.
IronOCR, qui est gratuit pour le développement, offre une période d'essai gratuite d'un mois à des fins commerciales. Elle prend en charge plus de 150 langues et offre une meilleure précision que la plupart des autres bibliothèques d'OCR disponibles. Il est également efficace et facile à utiliser. Nous utiliserons cette bibliothèque pour notre démonstration.
OcrInput
instanceIronOCR est une bibliothèque développée et maintenue par Iron Software qui aide les ingénieurs logiciels C# à effectuer l'OCR, la lecture de codes-barres et l'extraction de texte dans les projets .NET.
Les caractéristiques de l'IronOCR sont les suivantes :
Exportation de PDF consultables, exportation hOCR / HTML, et texte du contenu de l'image.
Développons une application de démonstration pour lire les numéros de plaques d'immatriculation.
La première étape consiste à créer un nouveau projet.
Ouvrez Visual Studio. Cliquez sur Créer un nouveau projet, et sélectionnez le modèle de projet Application console.
Cliquez sur le bouton Suivant, et nommez le projet(Je l'ai nommé "OCR Subtitles", vous pouvez le nommer comme vous le souhaitez).
Cliquez sur le bouton Suivant, et sélectionnez votre cadre de travail cible. Enfin, cliquez sur le bouton Créer pour créer le projet.
Le projet sera créé comme indiqué ci-dessous.
Création d'un nouveau projet dans Visual Studio
Nous devons maintenant installer la bibliothèque IronOCR pour l'utiliser dans notre projet. Le plus simple est de l'installer via NuGet Package Manager for Solution.
Cliquez sur Outils dans la barre de menu supérieure et sélectionnez NuGet Package Manager > Gestion des paquets NuGet pour la solution, comme indiqué ci-dessous.
Installation d'IronOCR dans Visual Studio
La fenêtre suivante apparaît.
Visual Studio NuGet Package Manager UI
Cliquez sur parcourir et recherchez IronOCR. Sélectionnez le paquet IronOCR et cliquez sur le bouton Installer, comme indiqué ci-dessous.
Recherche d'IronOCR dans l'interface utilisateur du gestionnaire de paquets NuGet
La bibliothèque IronOCR sera installée et prête à être utilisée.
Écrivons un programme pour extraire les sous-titres codés en dur.
Nous allons utiliser la capture d'écran suivante pour extraire les sous-titres.
Exemple de capture d'écran vidéo à partir de laquelle le texte sera extrait
Ajouter l'espace de noms suivant :
using IronOcr;
using IronOcr;
Imports IronOcr
Ecrivez le code suivant sous la déclaration de l'espace de noms.
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
Le code ci-dessus fonctionne comme suit :
Initialisertesseracte de fer objet. Il créera une instance par défaut de IronTessearct
.
Créer un nouveauOcrInput
alimenté par un fichier image ou un document PDF. OcrInput
est le type d'entrée préféré car il permet l'OCR de documents multi-pages, et permet d'améliorer les images avant l'OCR afin d'obtenir des résultats plus rapides et plus précis.
Lire un texte à partir d'un objet d'entrée d'OCR et renvoyer un objet de résultat d'OCR. ocr.Read
extrait les sous-titres de la capture d'écran donnée en entrée.
result.Text
renverra le contenu entier extrait de l'entrée donnée.
L'exemple de programme produit la sortie de console ci-dessous :
Sortie de console générée par l'extraction de texte sur l'image de l'échantillon à l'aide d'IronOCR
Supposons que vous ayez une image vidéo qui contienne à la fois le titre de la vidéo et les sous-titres :
**Une seule image d'une vidéo plus longue contenant des zones de texte pour le titre et les sous-titres de la vidéo
Notre objectif est d'extraire les sous-titres codés en dur dans la partie inférieure de l'image. Dans ce cas, nous devons spécifier la zone de texte dans laquelle le sous-titre est affiché.
Nous pouvons utiliser un System.Drawing.Rectangle
pour spécifier une région dans laquelle nous lirons un sous-titre à partir de l'image vidéo. L'unité de mesure est toujours le pixel.
Nous utiliserons l'exemple de code suivant pour spécifier la région de texte.
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
// a 41% improvement on speed
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())
{
// a 41% improvement on speed
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()
' a 41% improvement on speed
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
Cela permet une augmentation de la vitesse de 41% - et nous permet d'être spécifiques. 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.
Sauvegardons les sous-titres extraits dans un fichier 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
résultat.SaveAsTextFile
prend le chemin de sortie comme argument et enregistre le fichier dans le chemin donné.
**Une seule image d'une vidéo plus longue contenant des zones de texte pour le titre et les sous-titres de la vidéo
Dans ce tutoriel, nous avons appris à utiliser IronOCR et à développer un programme très simple pour lire les sous-titres à partir de la capture d'écran d'une vidéo. Nous pouvons égalementspécifier la région dont on veut extraire le texte.
IronOCR offre les caractéristiques suivantesOpenCV pourVision par ordinateur. Nous avons vu qu'IronOCR permet de lire du texte à partir d'images floues ou à faible résolution. Cette bibliothèque est efficace et précise. Il prend en charge plus de 127 langues avec une précision totale. Il est gratuit pour le développement et ne comporte aucune restriction pour la production.
En résumé, IronOCR fournit :
Prise en charge de .NET 6, 5, Core, Standard, Framework
IronOCR fait partie de la suite de bibliothèques d'Iron Software utiles pourlire et écrire des PDF, la manipulation de fichiers Excel, lecture de textes à partir d'imagesetla récupération de contenu de sites web. Acheter la version complèteIron Suite pour lesprix de deux bibliothèques individuelles.
9 produits de l'API .NET pour vos documents de bureau