IRONOCR VERWENDEN

OCR von Untertiteln in C# (Anleitung)

Aktualisiert 17. Dezember 2023
Teilen Sie:

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.

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.

IronOCR zeichnet sich durch folgende Merkmale aus:

  • Lesen von Text aus vielen Formaten wie z. B. Bildern (JPEG, PNG, BMP), GIF, TIF/TIFFstreams, und PDFs
  • Berichtigung von scans und Fotos von schlechter 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-Unterstützung
  • Verwendung der neuesten Version von Tesseract OCR, deren Leistung über die anderer Bibliotheken dieser Art hinausgeht
  • Export von durchsuchbaren PDFs, hOCR/HTML-Export und Bildinhaltstext.

    Entwickeln wir eine Demo-Anwendung zum Lesen von Nummernschildern.

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 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.

OCR von Untertiteln 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. Der einfachste Weg ist die Installation über den 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.

OCR von Untertiteln in C# (Tutorial), Abbildung 2: Installieren von IronOCR in Visual Studio

Installation von IronOCR in Visual Studio

Das folgende Fenster wird angezeigt.

OCR von Untertiteln 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 aus und klicken Sie auf die Schaltfläche Installieren, wie unten dargestellt.

OCR von Untertiteln 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 ist nun installiert und einsatzbereit.

Extrahieren von hartkodierten Untertiteln

Schreiben wir ein Programm zum Extrahieren von hartkodierten Untertiteln.

Wir werden den folgenden Screenshot zum Extrahieren von Untertiteln verwenden.

OCR von Untertiteln in C# (Tutorial), Abbildung 5: Beispielvideo-Screenshot, aus dem der Text extrahiert wird

Beispielvideo-Screenshot, aus dem der Text extrahiert wird

Fügen Sie den folgenden Namespace hinzu:

using IronOcr;
using IronOcr;
Imports IronOcr
VB   C#

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
VB   C#

Der obige Code funktioniert wie folgt:

  1. Initialisieren eisen-Tesserakt objekt. Es wird eine Standardinstanz von IronTessearct erstellt.

  2. 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.

  3. Lesen eines Textes aus einem OCR-Eingabeobjekt und Rückgabe eines OCR-Ergebnisobjekts. ocr.Read extrahiert Untertitel aus dem gegebenen Eingabebildschirmfoto.

  4. result.Text" gibt den gesamten Inhalt zurück, der aus der angegebenen Eingabe extrahiert wurde.

    Das Beispielprogramm erzeugt die unten stehende Konsolenausgabe:

    OCR von Untertiteln in C# (Tutorial), Abbildung 7: Konsolenausgabe, die bei der Textextraktion aus 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:

    OCR von Untertiteln 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.

Festlegen der Position des Untertitels im Rahmen

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
VB   C#

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.

Untertitel in einer Untertitel-Textdatei speichern

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
VB   C#

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

OCR von Untertiteln 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 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:

< PREVIOUS
Wie OCR Text aus einem Screenshot in C# abrufen kann

Sind Sie bereit, loszulegen? Version: 2024.10 gerade veröffentlicht

Gratis NuGet-Download Downloads insgesamt: 2,561,036 Lizenzen anzeigen >