Test in einer Live-Umgebung
Test in der Produktion ohne Wasserzeichen.
Funktioniert überall, wo Sie es brauchen.
In diesem Tutorial werden wir lernen, wie man hartkodierte Untertitel aus Videodateien extrahiert. Wir werden eine Beispiel-Videodatei nehmen und die hartkodierten Untertitel in eine txt-Datei extrahieren. Wir werden ein C# .NET-Programm entwickeln, das die hartkodierten Untertitel mithilfe des OCR-Prozesses extrahiert. Ich werde dieses Tutorial einfach und leicht halten, so dass auch ein Anfänger C# Programmierer es verstehen kann.
Wir brauchen eine effiziente optische Zeichenerkennung (OCR) engine, die das Video verarbeiten und Untertiteldateien unabhängig von der Untertitelsprache erstellen kann.
Es gibt viele Bibliotheken, die OCR-Ergebnisse liefern. Einige von ihnen sind kostenpflichtig, einige sind schwer zu benutzen, und einige sind nicht effizient oder genau, so dass es sehr schwierig ist, eine Bibliothek zu finden, die kostenlos, effizient und einfach zu benutzen ist und genaue Ergebnisse liefert.
IronOCR, das für die Entwicklung kostenlos ist, bietet eine einmonatige kostenlose Testversion für kommerzielle Zwecke. Sie unterstützt über 150 Sprachen und bietet eine bessere Genauigkeit als die meisten anderen verfügbaren OCR-Bibliotheken. Außerdem ist es effizient und einfach zu bedienen. Wir werden diese Bibliothek für unsere Demonstration verwenden.
OcrInput
instanzIronOCR ist eine von Iron Software entwickelte und gepflegte Bibliothek, die C#-Softwareentwicklern hilft, OCR, Barcode-Scanning und Textextraktion in .NET-Projekten durchzuführen.
IronOCR zeichnet sich durch folgende Merkmale aus:
Export von durchsuchbaren PDFs, hOCR/HTML-Export und Bildinhaltstext.
Entwickeln wir eine Demo-Anwendung zum Lesen von Nummernschildern.
Der erste Schritt besteht darin, ein neues Projekt zu erstellen.
Öffnen Sie Visual Studio. Klicken Sie auf Neues Projekt erstellen, und wählen Sie die Projektvorlage Konsolenanwendung.
Klicken Sie auf die Schaltfläche Weiter, und benennen Sie das Projekt (Ich habe es "OCR Subtitles" genannt, Sie können es nach Ihrer Wahl benennen).
Klicken Sie auf die Schaltfläche Weiter, und wählen Sie Ihr Ziel-Framework aus. Klicken Sie abschließend auf die Schaltfläche Erstellen, um das Projekt zu erstellen.
Das Projekt wird wie unten dargestellt erstellt.
Erstellen eines neuen Projekts in Visual Studio
Nun müssen wir die IronOCR-Bibliothek installieren, um sie in unserem Projekt zu verwenden. Der einfachste Weg ist die Installation über den NuGet Package Manager for Solution.
Klicken Sie in der oberen Menüleiste auf Tools, und wählen Sie NuGet Package Manager > Manage NuGet Packages for Solution, wie unten dargestellt.
Installation von IronOCR in Visual Studio
Das folgende Fenster wird angezeigt.
Visual Studio NuGet Package Manager UI
Klicken Sie auf Durchsuchen, und suchen Sie nach IronOCR. Wählen Sie das IronOCR-Paket aus und klicken Sie auf die Schaltfläche Installieren, wie unten dargestellt.
Suchen nach IronOCR in der NuGet Package Manager UI
Die IronOCR-Bibliothek ist nun installiert und einsatzbereit.
Schreiben wir ein Programm zum Extrahieren von hartkodierten Untertiteln.
Wir werden den folgenden Screenshot zum Extrahieren von Untertiteln verwenden.
Beispielvideo-Screenshot, aus dem der Text extrahiert wird
Fügen Sie den folgenden Namespace hinzu:
using IronOcr;
using IronOcr;
Imports IronOcr
Schreiben Sie den folgenden Code unterhalb der Namespace-Deklaration.
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
Der obige Code funktioniert wie folgt:
Initialisieren eisen-Tesserakt objekt. Es wird eine Standardinstanz von IronTessearct
erstellt.
Erstellen Sie eine neue ocrInput objekt, das mit einer Eingabebilddatei oder einem PDF-Dokument gefüllt wird. ocrInput" ist der bevorzugte Eingabetyp, da er die OCR von mehrseitigen Dokumenten ermöglicht und die Bilder vor der OCR verbessert werden können, um schnellere und genauere Ergebnisse zu erzielen.
Lesen eines Textes aus einem OCR-Eingabeobjekt und Rückgabe eines OCR-Ergebnisobjekts. ocr.Read extrahiert Untertitel aus dem gegebenen Eingabebildschirmfoto.
result.Text" gibt den gesamten Inhalt zurück, der aus der angegebenen Eingabe extrahiert wurde.
Das Beispielprogramm erzeugt die unten stehende Konsolenausgabe:
Konsolenausgabe, die bei der Textextraktion aus dem Beispielbild mit IronOCR erzeugt wurde
Nehmen wir an, Sie haben ein Videobild, das sowohl den Titel des Videos als auch die Untertitel enthält:
Ein Einzelbild eines längeren Videos mit Textbereichen für den Videotitel und die Videountertitel
Unser Ziel ist es, die fest kodierten Untertitel aus dem unteren Bereich des Bildes zu extrahieren. In diesem Fall müssen wir den Textbereich angeben, in dem der Untertitel angezeigt wird.
Wir können ein System.Drawing.Rectangle
verwenden, um einen Bereich festzulegen, in dem wir einen Untertitel aus dem Videobild lesen werden. Die Maßeinheit ist immer Pixel.
Wir werden den folgenden Beispielcode verwenden, um den Textbereich festzulegen.
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
Dies führt zu einem Geschwindigkeitszuwachs von 41% - und ermöglicht es uns, genau zu sein. In contentArea
haben wir den Startpunkt in x und y angegeben, und dann die Höhe und Breite des gewünschten Untertitelbereichs.
Speichern wir die extrahierten Untertitel in einer TXT-Datei.
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
result.SaveAsTextFile nimmt den Ausgabepfad als Argument und speichert die Datei unter dem angegebenen Pfad.
Ein Einzelbild eines längeren Videos mit Textbereichen für den Videotitel und die Videountertitel
In diesem Tutorial haben wir gelernt, IronOCR zu benutzen und ein sehr einfaches Programm zu entwickeln, um Untertitel aus einem Video-Screenshot zu lesen. Wir können auch die Region angeben für die wir den Text extrahieren wollen.
IronOCR bietet die folgenden Funktionen OpenCV für Computer Vision. Wir haben gesehen, dass IronOCR uns in die Lage versetzt, Text aus unscharfen oder niedrig aufgelösten Bildern zu lesen. Diese Bibliothek ist effizient und bietet Genauigkeit. Es unterstützt 127+ Sprachen mit voller Genauigkeit. Es ist kostenlos für die Entwicklung und hat keine Einschränkungen für die Produktion.
Zusammenfassend lässt sich sagen, dass IronOCR Folgendes bietet:
Unterstützt .NET 6, 5, Core, Standard, Framework
IronOCR ist Teil der Iron Software Suite von Bibliotheken, die nützlich sind für lesen und Schreiben von PDFs, manipulation von Excel-Dateien, lesen von Text aus Bildernund ausschneiden von Inhalten aus Websites. Kaufen Sie die vollständige Iron Suite für die preis von zwei einzelnen Bibliotheken.
9 .NET API-Produkte für Ihre Bürodokumente