Schräglagenkorrektur in der Bildverarbeitung mit C#

Die Schräglagenkorrektur in der Bildverarbeitung ist eine Aufgabe der Bildoptimierung. In der Computer Vision müssen wir unsere Kameras und Sensoren richtig positionieren, aber das führt oft zu großen Verzerrungen. Auch beim Scannen mit Scannern ist eine Ausrichtung manchmal fast unmöglich. Aus diesem Grund weisen gescannte Bilder und Fotos eine leichte Schräglage (Neigung) auf. In diesem Artikel erfahren Sie, wie Sie eine Schräglagenkorrektur in der Bildverarbeitung mit C# durchführen.

Folgende Themen sollen in diesem Artikel behandelt werden:

  1. C#-Bildverarbeitungs-API für Schräglagenkorrektur
  2. Bildschrägwinkel erkennen
  3. Automatische Schräglagenkorrektur
  4. Automatische Schräglagenkorrektur mit Vorverarbeitungsfilter
  5. Bildtext mit automatischer Schräglagenkorrektur erkennen
  6. Manuelle Schräglagenkorrektur
  7. Manuelle Schräglagenkorrektur mit Vorverarbeitungsfilter

Bildverarbeitungs-API für C#-Skew-Korrektur

Für Schräglagenkorrekturen verwenden wir die API Aspose.OCR for .NET. Die API ermöglicht die Durchführung von OCR bei gescannten Bildern, Smartphone-Fotos, Screenshots, Bildbereichen und gescannten PDFs. Es ermöglicht das Speichern der erkannten Textergebnisse in gängigen Dokumentformaten.

Bitte laden Sie die DLL der API herunter oder installieren Sie sie mit NuGet.

PM> Install-Package Aspose.OCR

Bildneigungswinkel in C# erkennen

Die API stellt die Methode CalculateSkew(string) bereit, die den Neigungswinkel des bereitgestellten Quellbilds berechnet. Wir können den Schrägwinkel eines Textbildes leicht erkennen, indem wir die folgenden Schritte ausführen:

  1. Erstellen Sie zunächst eine Instanz der AsposeOCR-Klasse.
  2. Rufen Sie die CalculateSkew()-Methode auf. Es nimmt den Bildpfad als Argument.
  3. Zeigen Sie schließlich den berechneten Neigungswinkel an.

Der folgende Beispielcode zeigt, wie der Neigungswinkel eines Bilds in C# berechnet wird.

// Dieses Codebeispiel zeigt, wie der Neigungswinkel eines Bilds berechnet wird.
// Erstellen Sie eine Instanz von AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Schrägwinkel berechnen
float skew = recognitionEngine.CalculateSkew("C:\\Files\\OCR\\source.png");

// Winkel zeigen
Console.WriteLine($"Skew angle: {skew:N1}°");
Bildneigungswinkel in C# erkennen

Das Quellbild.

Skew angle: 5.8°

Automatische Skew-Korrektur in C#

Für die automatische Schräglagenkorrektur können wir die Eigenschaft RecognitionSettings.AutoSkew in den Erkennungseinstellungen aktivieren, indem wir die folgenden Schritte ausführen:

  1. Erstellen Sie zunächst eine Instanz der AsposeOCR-Klasse.
  2. Initialisieren Sie als Nächstes ein Objekt der RecognitionSettings-Klasse.
  3. Legen Sie dann die AutoSkew-Eigenschaft auf true fest.
  4. Rufen Sie danach die RecognizeImage()-Methode mit dem Quellbild und dem RecognitionSettings-Objekt auf.
  5. Zeigen Sie schließlich den erkannten Text an.

Der folgende Beispielcode zeigt, wie die automatische Schräglagenkorrektur in C# angewendet wird.

// Dieses Codebeispiel zeigt, wie die automatische Schräglagenkorrektur angewendet wird.
// Erstellen Sie eine Instanz von AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Aktivieren Sie die automatische Schräglagenkorrektur in den Erkennungseinstellungen
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.AutoSkew = true;

// Bild erkennen
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// Erkannten Text anzeigen
Console.WriteLine(result.RecognitionText);

Automatische Skew-Korrektur mit Vorverarbeitungsfilter in C#

Alternativ können wir den Vorverarbeitungsfilter AutoSkew für die automatische Schräglagenkorrektur anwenden und das korrigierte Bild speichern, indem wir die folgenden Schritte ausführen:

  1. Erstellen Sie zunächst eine Instanz der AsposeOCR-Klasse.
  2. Initialisieren Sie als Nächstes ein Objekt der PreprocessingFilter-Klasse.
  3. Fügen Sie dann den AutoSkew()-Filter hinzu.
  4. Rufen Sie danach die Methode PreprocessImage() auf, um den Filter auf das Quellbild anzuwenden.
  5. Speichern Sie abschließend das korrigierte Bild.

Der folgende Beispielcode zeigt, wie die automatische Schräglagenkorrektur mit dem Vorverarbeitungsfilter in C# angewendet wird.

// Dieses Codebeispiel zeigt, wie Sie die automatische Schräglagenkorrektur mit einem Vorverarbeitungsfilter anwenden und das korrigierte Bild speichern.
// Erstellen Sie eine Instanz von AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Entzerrungsfilter hinzufügen
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());

// Vorverarbeitetes Bild in Datei speichern
using (MemoryStream ms = recognitionEngine.PreprocessImage("C:\\Files\\OCR\\source.png", filters))
{
    using (FileStream fs = new FileStream("C:\\Files\\OCR\\result.png", FileMode.Create, FileAccess.Write))
    {
        ms.WriteTo(fs);
    }
}
Automatische Skew-Korrektur mit Filter in C#

Automatische Skew-Korrektur mit Filter in C#.

Bildtext mit automatischer Schräglagenkorrektur in C# erkennen

Wir können den AutoSkew-Vorverarbeitungsfilter anwenden und Bildtext erkennen, indem wir die folgenden Schritte ausführen:

  1. Erstellen Sie zunächst eine Instanz der AsposeOCR-Klasse.
  2. Initialisieren Sie als Nächstes ein Objekt der PreprocessingFilter-Klasse.
  3. Fügen Sie dann den AutoSkew()-Filter hinzu.
  4. Erstellen Sie in der Zwischenzeit eine Instanz der RecognitionSettings-Klasse.
  5. Weisen Sie als Nächstes der PreprocessingFilters-Eigenschaft Filter zu.
  6. Rufen Sie danach die RecognizeImage()-Methode mit dem Quellbild und dem RecognitionSettings-Objekt auf.
  7. Zeigen Sie schließlich den erkannten Text an.

Der folgende Beispielcode zeigt, wie die automatische Schräglagenkorrektur angewendet und der Text in C# erkannt wird.

// Dieses Codebeispiel zeigt, wie Sie die automatische Schräglagenkorrektur mit einem Vorverarbeitungsfilter anwenden und das Bild erkennen.
// Erstellen Sie eine Instanz von AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Entzerrungsfilter hinzufügen
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());

// Vorverarbeitungsfilter an Erkennungseinstellungen anhängen
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.PreprocessingFilters = filters;

// Bild erkennen
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// Zeige Ergebnisse
Console.WriteLine(result.RecognitionText);

Manuelle Schräglagenkorrektur in C#

Für die manuelle Schräglagenkorrektur können wir den Schräglagenwinkel manuell definieren, indem wir die Eigenschaft SkewAngle in den Erkennungseinstellungen angeben, indem wir die folgenden Schritte ausführen:

  1. Erstellen Sie zunächst eine Instanz der AsposeOCR-Klasse.
  2. Initialisieren Sie als Nächstes ein Objekt der RecognitionSettings-Klasse.
  3. Legen Sie dann die SkewAngle-Eigenschaft fest.
  4. Rufen Sie danach die RecognizeImage()-Methode mit dem Quellbild und dem RecognitionSettings-Objekt auf.
  5. Zeigen Sie schließlich den erkannten Text an.

Der folgende Beispielcode zeigt, wie die manuelle Schiefekorrektur in C# angewendet wird.

// Dieses Codebeispiel zeigt, wie die manuelle Schräglagenkorrektur angewendet wird.
// Erstellen Sie eine Instanz von AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Stellen Sie den Neigungswinkel manuell ein
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.SkewAngle = 6;

// Bild erkennen
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// Ergebnisse anzeigen
Console.WriteLine(result.RecognitionText);

Manuelle Skew-Korrektur mit Vorverarbeitungsfilter in C#

Wir können den Neigungswinkel auch manuell definieren, indem wir das Bild mit dem Vorverarbeitungsfilter Rotate um den angegebenen Grad drehen.

Bitte befolgen Sie die unten angegebenen Schritte, um die Schräglagenkorrektur manuell anzuwenden:

  1. Erstellen Sie zunächst eine Instanz der AsposeOCR-Klasse.
  2. Initialisieren Sie als Nächstes ein Objekt der PreprocessingFilter-Klasse.
  3. Fügen Sie dann den Rotate()-Filter hinzu.
  4. Erstellen Sie in der Zwischenzeit eine Instanz der RecognitionSettings-Klasse.
  5. Weisen Sie als Nächstes der PreprocessingFilters-Eigenschaft Filter zu.
  6. Rufen Sie danach die RecognizeImage()-Methode mit dem Quellbild und dem RecognitionSettings-Objekt auf.
  7. Zeigen Sie schließlich den erkannten Text an.

Der folgende Beispielcode zeigt, wie die manuelle Schiefekorrektur mit dem Vorverarbeitungsfilter in C# angewendet wird.

// Dieses Codebeispiel zeigt, wie Sie eine manuelle Schräglagenkorrektur anwenden und Bildtext erkennen.
// Erstellen Sie eine Instanz von AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Drehen Sie das Bild um 90 Grad gegen den Uhrzeigersinn
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.Rotate(-90));

// Speichern Sie das vorverarbeitete Bild zu Debugging-Zwecken in einer Datei
using (MemoryStream ms = recognitionEngine.PreprocessImage("C:\\Files\\OCR\\source.png", filters))
{
    using (FileStream fs = new FileStream("C:\\Files\\OCR\\result.png", FileMode.Create, FileAccess.Write))
    {
        ms.WriteTo(fs);
    }
}

// Vorverarbeitungsfilter an Erkennungseinstellungen anhängen
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.PreprocessingFilters = filters;

// Bild erkennen
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// Zeige Ergebnisse
Console.WriteLine(result.RecognitionText);

Holen Sie sich eine kostenlose Evaluierungslizenz

Sie können eine kostenlose temporäre Lizenz erhalten, um Aspose.OCR für .NET ohne Evaluierungseinschränkungen zu testen.

Fazit

In diesem Artikel haben wir gelernt, wie man:

  • OCR durchführen und Text auf Bildern erkennen;
  • Filter anwenden und Bilder verarbeiten;
  • Erkennungseinstellungen verwenden;
  • Speichern Sie die korrigierten Bilder mit C#.

Neben der Schräglagenkorrektur in der Bildverarbeitung mit C# können Sie in der Dokumentation mehr über Aspose.OCR für die .NET-API erfahren. Bei Unklarheiten können Sie sich gerne in unserem kostenlosen Support-Forum an uns wenden.

Siehe auch