Wie man Untertitel in C# mit OCR extrahiert (Tutorial)
In diesem Lernprogramm lernen wir, wie man hartkodierte Untertitel aus Videodateien extrahiert. Wir nehmen eine Beispiel-Videodatei und extrahieren die hartcodierten Untertitel in eine Textdatei. Wir werden ein C# .NET-Programm entwickeln, das die hartkodierten Untertitel mit Hilfe des OCR-Prozesses extrahiert. Ich werde dieses Tutorial einfach und leicht halten, so dass auch ein Anfänger C# Programmierer es verstehen kann.
Wir benötigen eine effiziente OCR-Engine (Optical Character Recognition), 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 schwierig 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 Entwickler 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. Sie soll effizient und einfach zu verwenden sein. Wir werden diese Bibliothek für unsere Demonstration verwenden.
OCR von Untertiteln in C#
- Installation einer C#-Bibliothek zur OCR von Untertiteln
- Importieren Sie das Bild mit Untertitel in eine neue `OcrInput`-Instanz
- Vorverarbeitung der Bilder durch Anwendung ausgewählter Filter
- Geben Sie die Position des Untertitels im Bild an, um die OCR-Leistung und Genauigkeit zu verbessern
- Exportieren Sie den abgerufenen Text als Textdatei
IronOCR
IronOCR ist eine von Iron Software entwickelte und gepflegte Bibliothek, die C#-Softwareentwicklern hilft, OCR, BarCode-Scanning und Textextraktion in .NET-Projekten durchzuführen.
Die Funktionen von IronOCR umfassen:
- Lesen von Text aus vielen Formaten wie Bildern (JPEG, PNG, BMP), GIF, TIF/TIFF, Streams, und PDFs
- Korrektur von Scans und Fotos geringer Qualität mit einer Fülle von Filtern wie Deskew, Denoise, Binarize, Enhance Resolution, Dilate und vielen mehr
- Lesen von BarCodes aus über 20 verschiedenen Formaten, zusammen mit QR Code Support
- Verwendung der neuesten Version von Tesseract OCR, deren Leistung über die anderer Bibliotheken dieser Art hinaus optimiert wurde
- Export von durchsuchbaren PDFs, hOCR/HTML-Export und Text für Bildinhalte.
Lassen Sie uns eine Demo-Anwendung zum Lesen von Nummernschildern entwickeln.
Erstellen eines Visual Studio-Projekts
Der erste Schritt ist, ein neues Projekt zu erstellen.
Öffnen Sie Visual Studio. Klicken Sie auf Neues Projekt erstellen und wählen Sie die Projektvorlage Console Application.
Klicken Sie auf die Schaltfläche Weiter und geben Sie dem Projekt einen Namen (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. Die einfachste Möglichkeit ist die Installation über NuGet Package Manager for Solution.
IronOCR NuGet-Paket installieren
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 und klicken Sie auf die Schaltfläche Installieren, wie unten gezeigt.
Suchen nach IronOCR in der NuGet Package Manager UI
Die IronOCR-Bibliothek wird installiert und ist sofort einsatzbereit.
Hartcodierte Untertitel extrahieren
Schreiben wir ein Programm zum Extrahieren von hartcodierten Untertiteln.
Wir werden den folgenden Screenshot für die Extraktion von Untertiteln verwenden.
Beispielvideo-Screenshot, aus dem der Text extrahiert werden soll
Fügen Sie den folgenden Namensraum hinzu:
using IronOcr;
using IronOcr;
Imports IronOcr
Schreiben Sie den folgenden Code unterhalb der Namespace-Deklaration.
// 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
Der obige Code funktioniert wie folgt:
- Initialisiere das Objekt
IronTesseract. Es wird eine Standardinstanz vonIronTesseracterstellt. - Erstellen Sie ein neues
OcrInput- Objekt, das mit einer Eingabebilddatei oder einem PDF-Dokument gefüllt ist.OcrInputist der bevorzugte Eingabetyp, da er die OCR von mehrseitigen Dokumenten ermöglicht und es erlaubt, Bilder vor der OCR zu verbessern, um schnellere und genauere Ergebnisse zu erzielen. - Lesen eines Textes aus einem OCR-Eingabeobjekt und Rückgabe eines OCR-Ergebnisobjekts.
ocr.Readextrahiert Untertitel aus dem angegebenen Eingabe-Screenshot. result.Textgibt den gesamten aus der gegebenen Eingabe extrahierten Inhalt zurück.
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.
Bestimmen Sie die Position des Untertitels im Frame
Wir können System.Drawing.Rectangle verwenden, um einen Bereich anzugeben, 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.
// 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
Dies führt zu einem Geschwindigkeitszuwachs von 41 % - und ermöglicht es uns, präzise zu sein. In contentArea haben wir den Startpunkt in x und y sowie die Höhe und Breite des benötigten Untertitelbereichs angegeben.
Untertitel in eine Untertitel-Textdatei speichern
Speichern wir die extrahierten Untertitel in einer Textdatei.
// 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
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
Zusammenfassung
In diesem Tutorial haben wir gelernt, IronOCR zu verwenden 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 Funktionen von OpenCV für Computer Vision. Wir haben gesehen, dass IronOCR es uns ermöglicht, Text aus unscharfen oder niedrig aufgelösten Bildern zu lesen. Diese Bibliothek ist effizient und bietet Genauigkeit. Es werden über 125 Sprachen mit voller Genauigkeit unterstützt. Es ist kostenlos für die Entwicklung und hat keine Einschränkungen in der Produktion.
Zusammengefasst bietet IronOCR:
- Die Fähigkeit, Bilder und gescannte Dokumente zu scannen und zu lesen
- Unterstützung für 150+ globale Sprachen
- Ausgabe als Text, strukturierte Daten oder durchsuchbare PDFs
- Unterstützt .NET 6, 5, Core, Standard, Framework
IronOCR ist Teil der Iron Suite von Iron Software mit Bibliotheken zum Lesen und Schreiben von PDFs, Manipulieren von Excel-Dateien, Lesen von Text aus Bildern und Scraping von Inhalten aus Webseiten. Erwerben Sie die komplette Iron Suite für den Preis von zwei Einzelbibliotheken.
Häufig gestellte Fragen
Wie kann ich harte Untertitel aus Videodateien in C# extrahieren?
Sie können harte Untertitel aus Videodateien in C# mit IronOCR extrahieren. Installieren Sie die Bibliothek über den NuGet-Paket-Manager und verwenden Sie sie dann, um Video-Frames zu verarbeiten und Text zu extrahieren.
Welcher Vorteil hat die Verwendung von IronOCR gegenüber Tesseract für die Untertitel-Extraktion?
IronOCR bietet eine verbesserte Alternative zu Tesseract mit erhöhter Genauigkeit, einfacher Handhabung und Unterstützung für über 150 Sprachen, was es gut für das Extrahieren von Untertiteln aus Videos geeignet macht.
Wie spezifiziert man in IronOCR Untertitellokationen zur Verbesserung der Verarbeitungsgeschwindigkeit?
Sie können in IronOCR Untertitellokationen mit einem System.Drawing.Rectangle angeben, um sich auf den interessanten Bereich zu konzentrieren, was die Verarbeitungsgeschwindigkeit um bis zu 41% verbessern kann.
Kann IronOCR bei der Extraktion von Untertiteln für andere Sprachen als Englisch verwendet werden?
Ja, IronOCR unterstützt über 150 Sprachen, was es ermöglicht, Untertitel aus Videos in mehreren Sprachen genau zu extrahieren.
Welche Voraussetzungen gibt es für das C#-Untertitel-OCR-Tutorial?
Das Tutorial erfordert grundlegende Kenntnisse der C#-Programmierung und die Fähigkeit, Visual Studio zu verwenden, um die IronOCR-Bibliothek über den NuGet-Paket-Manager zu installieren.
Wie geht IronOCR mit niedrigqualitativen Video-Frames um?
IronOCR enthält Funktionen zur Korrektur von niedrigqualitativen Scans, um die Genauigkeit der Textextraktion aus suboptimalen Video-Frames zu verbessern.
Welche Ausgabeformate stehen nach der Untertitel-Extraktion mit IronOCR zur Verfügung?
Extrahierte Untertitel können als Textdateien, strukturierte Daten oder durchsuchbare PDFs mit IronOCR gespeichert werden.
Gibt es Kosten bei der Verwendung von IronOCR für kommerzielle Projekte?
IronOCR ist kostenlos für Entwicklungszwecke und bietet eine einmonatige kostenlose Testversion für kommerzielle Projekte. Für die laufende kommerzielle Nutzung ist eine Lizenz erforderlich.
Kann IronOCR mit anderen Bibliotheken für zusätzliche Funktionen integriert werden?
Ja, IronOCR kann mit anderen Iron Software-Bibliotheken für Aufgaben wie PDF-Manipulation und Web-Scraping integriert werden und erweitert so seine Funktionalität.



