Bildverzerrungskorrektur in Java

In der Computergrafik und Bildverarbeitung ist die Bildschräge eine Winkelabweichung von rechteckigen Bildern. Es wird auch als Bildneigung oder -verzerrung bezeichnet. Der Begriff „Schiefe“ bezieht sich auf den Winkel eines Bildes. Bildverzerrung tritt auf, wenn die visuelle Position von Elementen in einem Bild nicht einheitlich ist. Das Schrägstellen kann dazu führen, dass Ecken schräg oder sogar verschoben sind, sodass eine Seite länger als die andere ist. Solche Fotos oder gescannte Bilder können verzerrt und unansehnlich aussehen. In diesem Artikel erfahren Sie, wie Sie Bildverzerrungen programmgesteuert erkennen. Wir werden auch lernen, wie man eine Bildschiefe-Korrektur in Java durchführt.

Folgende Themen sollen in diesem Artikel behandelt werden:

  1. Java-API für Bildschiefe-Korrektur
  2. Bildschrägwinkel erkennen
  3. Bildschrägwinkel des Live-Bildes erkennen
  4. Automatische Bildschrägkorrektur
  5. Bildtext mit automatischer Schräglagenkorrektur erkennen
  6. Manuelle Bildschrägkorrektur
  7. Bildtext mit manueller Bildschrägkorrektur erkennen

Java-API für die Bildschiefe-Korrektur

Für die Erkennung und Korrektur von Bildverzerrungen verwenden wir die API Aspose.OCR for Java. Es ermöglicht die Durchführung von OCR an gescannten Bildern, Smartphone-Fotos, Screenshots, Bildbereichen und gescannten PDFs. Die API ermöglicht auch das Speichern der erkannten Textergebnisse in gängigen Dokumentformaten.

Die Klasse AsposeOCR der API ist die Hauptklasse für die Texterkennung aus Bildern. Es bietet die Methode CalcSkewImage(string), die den Neigungswinkel des bereitgestellten Quellbilds berechnet. Es bietet auch eine weitere CalcSkewImageFromUri(String uri)-Methode, die den Neigungswinkel eines Bildes berechnet, das von einem URI-Link bereitgestellt wird. Die Klasse PreprocessingFilter ist die Basisklasse für Bildverarbeitungsbefehle. Die Klasse RecognitionSettings der API bietet Einstellungen für die Bilderkennung und enthält Elemente, mit denen der Erkennungsprozess angepasst werden kann.

Bitte laden Sie entweder die JAR-Datei der API herunter oder fügen Sie die folgende pom.xml-Konfiguration in einer Maven-basierten Java-Anwendung hinzu.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://releases.aspose.com/java/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-ocr</artifactId>
    <version>22.9</version>
</dependency>

Bildschrägwinkel in Java erkennen

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 CalcSkewImage()-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 Bildes in Java berechnet wird.

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

// Schrägwinkel berechnen
double skew = api.CalcSkewImage("C:\\Files\\source.png");

// Winkel zeigen
System.out.println("Skew angle: " + skew + "°.");

Bildneigungswinkel von Live-Bild-URL erkennen

Wir können auch den Neigungswinkel eines Bildes von einer Live-URL erkennen, indem wir die folgenden Schritte ausführen:

  1. Erstellen Sie zunächst eine Instanz der AsposeOCR-Klasse.
  2. Rufen Sie die CalcSkewImageFromUri()-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 Bildes in Java berechnet wird.

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

// Schrägwinkel berechnen
double skew = api.CalcSkewImageFromUri("https://www.aspose.com/sample-ocr-page.png");

// Winkel zeigen
System.out.println("Skew angle: " + skew + "°.");

Automatische Bildverzerrungskorrektur in Java

Wir können die Bildverzerrungskorrektur automatisch korrigieren, 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 der Vorverarbeitungsfilter für die automatische Schräglagenkorrektur in Java 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 api = new AsposeOCR();

// Entzerrungsfilter hinzufügen
PreprocessingFilter filters = new PreprocessingFilter();
filters.add(PreprocessingFilter.AutoSkew());

// Vorverarbeitetes Bild in Datei speichern
BufferedImage imageRes = api.PreprocessImage("C:\\Files\\source.png", filters);
File outputSource = new File("C:\\Files\\result.png");
ImageIO.write(imageRes, "png", outputSource);

Erkennen Sie Bildtext mit automatischer Schräglagenkorrektur in Java

Wir können die automatische Schrägkorrektur anwenden und den Text 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 RecognitionSettings-Klasse.
  3. Rufen Sie dann setAutoSkew mit true als Argument auf.
  4. Rufen Sie danach die RecognizePage()-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 angewendet und der Text in Java erkannt wird.

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

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

// Bild erkennen
RecognitionResult result = api.RecognizePage("C:\\Files\\source.png", recognitionSettings);

// Erkannten Text anzeigen
System.out.println(result.recognitionText);

Manuelle Bildschiefe-Korrektur in Java

Wir können den Neigungswinkel manuell definieren, indem wir das Bild um den angegebenen Grad drehen, 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 Rotationswinkel mit dem Rotate()-Methodenfilter hinzu.
  4. Erstellen Sie als Nächstes eine Instanz der RecognitionSettings-Klasse.
  5. Rufen Sie danach die Methode PreprocessImage() auf, um den Filter auf das Quellbild anzuwenden.
  6. Zeigen Sie schließlich den erkannten Text an.

Der folgende Beispielcode zeigt, wie die manuelle Schräglagenkorrektur mit dem Vorverarbeitungsfilter in Java angewendet wird.

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

// Entzerrungsfilter hinzufügen
PreprocessingFilter filters = new PreprocessingFilter();
filters.add(PreprocessingFilter.Rotate(-90));

// Vorverarbeitetes Bild in Datei speichern
BufferedImage imageRes = api.PreprocessImage("C:\\Files\\source.png", filters);
File outputSource = new File("C:\\Files\\result.png");
ImageIO.write(imageRes, "png", outputSource);

Erkennen Sie Bildtext mit manueller Bildschrägkorrektur in Java

Wir können den Neigungswinkel manuell definieren und den Text 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 RecognitionSettings-Klasse.
  3. Rufen Sie dann die Methode setSkew() auf.
  4. Rufen Sie danach die RecognizePage()-Methode mit dem Quellbild und dem RecognitionSettings-Objekt auf.
  5. Zeigen Sie schließlich den erkannten Text an.

Der folgende Beispielcode zeigt, wie Sie die manuelle Schräglagenkorrektur anwenden und den Bildtext in Java erkennen.

// 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.setSkew(6);

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

// Ergebnisse anzeigen
System.out.println(result.recognitionText);

Holen Sie sich eine kostenlose Evaluierungslizenz

Sie können eine kostenlose temporäre Lizenz erhalten, um Aspose.OCR für Java 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 Java.

Neben der Bildschrägkorrektur in Java können Sie mehr über Aspose.OCR für die Java-API erfahren, indem Sie die Dokumentation verwenden. Im Falle von Unklarheiten können Sie sich gerne in unserem kostenlosen Support-Forum an uns wenden.

Siehe auch