Zum Fußzeileninhalt springen
VERWENDUNG VON IRONOCR

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 extrahieren wird. 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. Außerdem soll sie effizient und einfach zu verwenden sein. Wir werden diese Bibliothek für unsere Demonstration verwenden.

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:

  • Reading text from many formats such as images (JPEG, PNG, BMP), GIF, TIF/TIFF, Streams, and 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 besteht darin, 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.

How to OCR Subtitles in C# (Tutorial), Abbildung 1: Erstellen eines neuen Projekts in Visual Studio 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.

How to OCR Subtitles in C# (Tutorial), Abbildung 2: Installieren von IronOCR in Visual Studio Installation von IronOCR in Visual Studio

Das folgende Fenster wird angezeigt.

How to OCR Subtitles in C# (Tutorial), Abbildung 3: Visual Studio NuGet Package Manager UI 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.

How to OCR Subtitles in C# (Tutorial), Abbildung 4: Suche nach IronOCR in der NuGet Package Manager UI 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.

How to OCR Subtitles in C# (Tutorial), Abbildung 5: Beispielvideo-Screenshot, aus dem der Text extrahiert wird Beispielvideo-Screenshot, aus dem der Text extrahiert werden soll

Fügen Sie den folgenden Namensraum hinzu:

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

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
$vbLabelText   $csharpLabel

Der obige Code funktioniert wie folgt:

  1. Initialisieren Sie das IronTesseract Objekt. Es wird eine Standardinstanz von IronTesseract erstellt.
  2. Erstellen Sie ein neues OcrInput Objekt, das mit einer Bilddatei 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.
  3. Lesen eines Textes aus einem OCR-Eingabeobjekt und Rückgabe eines OCR-Ergebnisobjekts. ocr.Read extrahiert Untertitel aus dem angegebenen Eingabe-Screenshot.
  4. result.Text gibt den gesamten Inhalt zurück, der aus der gegebenen Eingabe extrahiert wurde.

Das Beispielprogramm erzeugt die unten stehende Konsolenausgabe:

How to OCR Subtitles in C# (Tutorial), Abbildung 7: Konsolenausgabe, die bei der Durchführung der Textextraktion auf dem Beispielbild mit IronOCR erzeugt wurde 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:

How to OCR Subtitles in C# (Tutorial), Abbildung 6: Ein Einzelbild eines längeren Videos mit Textbereichen für den Videotitel und die Videountertitel 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 ein System.Drawing.Rectangle verwenden, um einen Bereich festzulegen, in dem wir einen Untertitel aus dem Videobild lesen. 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
$vbLabelText   $csharpLabel

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 angegeben und dann die Höhe und Breite des gewünschten Untertitelbereichs.

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
$vbLabelText   $csharpLabel

result.SaveAsTextFile nimmt den Ausgabepfad als Argument und speichert die Datei unter dem angegebenen Pfad.

How to OCR Subtitles in C# (Tutorial), Abbildung 8: Ein Einzelbild eines längeren Videos mit Textbereichen für den Videotitel und die Videountertitel 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 provides the features of OpenCV for 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. Der Auftrag ist für die Entwicklung kostenlos und hat keine Einschränkungen für die 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 is part of Iron Software's suite of libraries useful for reading and writing PDFs, manipulating Excel files, reading text from images, and Scraping von Inhalten aus Webseiten. Purchase the complete Iron Suite for the price of two individual libraries.

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.

Kannaopat Udonpant
Software Ingenieur
Bevor er Software-Ingenieur wurde, absolvierte Kannapat ein PhD in Umweltressourcen an der Hokkaido University in Japan. Während seines Studiums wurde Kannapat auch Mitglied des Vehicle Robotics Laboratory, das Teil der Fakultät für Bioproduktionstechnik ist. Im Jahr 2022 nutzte er seine C#-Kenntnisse, um dem Engineering-Team von Iron Software ...
Weiterlesen