Wie man die Bildausrichtung für OCR in C# korrigiert | IronOCR

Bildausrichtung in OCR mit C#

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronOCR behebt Bildausrichtungsprobleme durch Rotation, Schräglagenkorrektur und Skalierungsmethoden. Verknüpfen Sie diese Transformationen, um gekippte Scans, auf dem Kopf stehende Dokumente und Bilder mit falscher Größe zu korrigieren, um eine genaue OCR-Textextraktion in Ihren .NET-Anwendungen zu ermöglichen.

als-Überschrift:2(Schnellstart: Drehen-Entzerren-Skalieren in einer Zeile)

Nutzen Sie die OcrInput-Methoden von IronOCR, um Ihr Bild in einem einzigen Aufruf zu drehen, zu entzerren und zu skalieren - bereiten Sie Bilder für eine präzise OCR vor, ohne Boilerplate.

Nuget IconLegen Sie jetzt mit NuGet los, um PDFs zu erstellen:

  1. Installieren Sie IronOCR mit dem NuGet-Paketmanager.

    PM > Install-Package IronOcr

  2. Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.

    var result = new IronOcr.OcrInput().LoadImage("skewed.png").Rotate(90).Deskew(45).Scale(150).Let(input => new IronOcr.IronTesseract().Read(input));
  3. Bereitstellen zum Testen in Ihrer Live-Umgebung

    Beginnen Sie noch heute mit der Nutzung von IronOCR in Ihrem Projekt – mit einer kostenlosen Testversion.
    arrow pointer


Wie drehe ich Bilder in IronOCR?

Durch Drehen wird die Bildausrichtung um einen bestimmten Winkel verändert, um sicherzustellen, dass der Text aufrecht und korrekt ausgerichtet ist. Dies korrigiert gescannte Dokumente, die falsch auf Scannern platziert wurden, oder Fotos, die aus ungünstigen Winkeln aufgenommen wurden.

Übergeben Sie einen Gradwert an die Methode Rotate. Positive Werte drehen sich im Uhrzeigersinn, negative Werte drehen sich gegen den Uhrzeigersinn. Die Drehung erfolgt um den Bildmittelpunkt, wobei die ursprünglichen Abmessungen beibehalten und die Ausrichtung des Inhalts angepasst wird.

Wann sollte ich die Bilddrehung verwenden?

Die Bilddrehung korrigiert Dokumente, die in falschen Ausrichtungen gescannt oder fotografiert wurden. Häufige Szenarien sind:

  • Auf dem Kopf oder seitwärts gescannte Dokumente
  • Mobile Fotos, die eine Änderung der Ausrichtung erfordern
  • Mehrseitige Dokumente mit inkonsistenter Seitenausrichtung
  • Historische Archive mit unterschiedlichen Scan-Standards
  • Pass-Scanning, wobei die Ausrichtung variiert
  • Kennzeichenerkennung aus verschiedenen Kamerawinkeln

Zur automatischen Erkennung von Drehungen verwenden Sie die Methode DetectPageOrientation von IronOCR, die die korrekte Ausrichtung durch Textanalyse ermittelt.

Welche Gradzahlen sind am besten geeignet?

Übliche Drehwerte sind Vielfache von 90 Grad (90, 180, 270) für Standardausrichtungen. IronOCR unterstützt jeden Gradwert für Feineinstellungen:

  • 90/-270 Grad: Umwandlung von Hoch- in Querformat
  • 180 Grad: Auf den Kopf gestellte Dokumente
  • 270/-90 Grad: Umwandlung von Hoch- in Querformat
  • Kleine Winkel (1-10 Grad): Geringfügige Anpassungen, wobei Deskewing bei leichten Neigungen oft besser funktioniert

Bei gescannten Dokumenten von älteren Geräten sollte die Rotation mit anderen Vorverarbeitungsschritten kombiniert werden.

Wie wirkt sich Rotation auf die OCR-Genauigkeit aus?

Eine korrekte Rotation ist für die OCR-Genauigkeit entscheidend. Die Tesseract 5-Engine von IronOCR erwartet einen Textfluss von links nach rechts und von oben nach unten. Falsch ausgerichteter Text verursacht:

:path=/static-assets/ocr/content-code-examples/how-to/image-orientation-correction-rotate-image.cs
using IronOcr;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Add image
using var imageInput = new OcrImageInput("paragraph_skewed.png");

// Rotate the image 180 degrees clockwise
imageInput.Rotate(180);

// Export the modified image
imageInput.SaveAsImages("rotate");
Imports IronOcr

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Add image
Private imageInput = New OcrImageInput("paragraph_skewed.png")

' Rotate the image 180 degrees clockwise
imageInput.Rotate(180)

' Export the modified image
imageInput.SaveAsImages("rotate")
$vbLabelText   $csharpLabel

Exportieren Sie geänderte Bilder mit der Methode SaveAsImages. Unten sehen Sie das Bild vor und nach der Drehung.

Original skewed text document before rotation correction
Document with 180-degree rotated text showing upside-down content that requires IronOCR rotation correction

Wie kann ich gekippte Bilder entzerren?

Deskewing begradigt gekippte oder schiefe Bilder und korrigiert die Schräglage, um eine horizontale Textausrichtung zu gewährleisten. Damit werden Dokumente korrigiert, die schief auf Scannern liegen, oder Fotos, die in einem leichten Winkel aufgenommen wurden.

Wenden Sie die Schräglagenkorrektur mit der Methode Deskew an. Übergeben Sie eine ganze Zahl, die den maximalen zu korrigierenden Schrägstellungswinkel angibt. Höhere Werte ermöglichen mehr Korrekturen, verlangsamen aber die Verarbeitung und bergen das Risiko von Fehlern wie auf dem Kopf stehenden Seiten. Der Standardwert von maximal 15 Grad ist für die meisten Szenarien geeignet.

Welche Winkelwerte sollte ich für Deskewing verwenden?

Die optimalen Schräglagenwinkel hängen von der Qualität des Dokuments und den Anforderungen ab:

  • Standard (kein Parameter): Automatische Erkennung für die meisten Dokumente
  • 5-15 Grad: Leicht geneigte Scans, die ein Gleichgewicht zwischen Genauigkeit und Geschwindigkeit herstellen
  • 15-30 Grad: Stark verdrehte Dokumente; drehung bei Winkeln über 20 Grad berücksichtigen
  • 30+ Grad: Kann überkorrigiert werden; verwenden Sie stattdessen Bildfilter

Bei stark verzerrten Dokumenten kombinieren Sie die Entzerrung mit Bildoptimierungsfiltern. Der Filter-Assistent kann bei der Ermittlung der optimalen Vorverarbeitungsschritte helfen.

Wann ist Deskewing am effektivsten?

Deskewing funktioniert am besten bei:

  • Textlastige Dokumente mit klaren horizontalen Linien
  • Formulare und strukturierte Dokumente
  • Gescannte Seiten aus Büchern oder Zeitschriften
  • Mehrseitige TIFF-Dateien mit konsistenter Schräglage
  • Finanzdokumente, die ein präzises Alignment erfordern

Weniger effektiv für:

  • Handgeschriebener Text mit unregelmäßigen Grundlinien
  • Bilder mit verschiedenen Textausrichtungen
  • Dokumente mit umfangreichen Grafiken oder Tabellen
  • Screenshots, die bereits richtig ausgerichtet sind

Wie kann ich Probleme mit Überkorrekturen vermeiden?

Verhindern Sie Probleme mit dem Geraderücken durch:

  1. Beginnend mit konservativen Winkelgrenzen (10-15 Grad)
  2. Verwendung von OcrResult confidence scores zur Validierung von Korrekturen
  3. Geraderücken nach der Rotation für zusammengesetzte Ausgaben anwenden
  4. Testen von Beispieldokumenten vor der Stapelverarbeitung
  5. Verwendung der Fortschrittsverfolgung für große Stapel
  6. Implementierung von Abbruch-Tokens für langlaufende Operationen
:path=/static-assets/ocr/content-code-examples/how-to/image-orientation-correction-rotate-image.cs
using IronOcr;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Add image
using var imageInput = new OcrImageInput("paragraph_skewed.png");

// Rotate the image 180 degrees clockwise
imageInput.Rotate(180);

// Export the modified image
imageInput.SaveAsImages("rotate");
Imports IronOcr

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Add image
Private imageInput = New OcrImageInput("paragraph_skewed.png")

' Rotate the image 180 degrees clockwise
imageInput.Rotate(180)

' Export the modified image
imageInput.SaveAsImages("rotate")
$vbLabelText   $csharpLabel
Original document with noticeable tilt requiring deskew correction
Document after deskew correction showing properly aligned horizontal text

Wie skaliere ich Bilder für eine bessere OCR?

Die Skalierung ändert die Größe der Bilder, um die Abmessungen für eine einheitliche Texterkennung zu standardisieren. Die richtige Skalierung stellt sicher, dass der Text weder zu klein ist, um genau erkannt zu werden, noch zu groß, um effizient verarbeitet zu werden.

Wenden Sie die Skalierung mit der Methode Scale unter Verwendung eines Prozentwerts an (100 % bedeutet keine Wirkung). Der zweite Parameter, ScaleCropArea, legt fest, ob die Beschnittflächen proportional skaliert werden (empfohlen: "true"). Bei der Skalierung wird das Seitenverhältnis beibehalten, um Textverzerrungen zu vermeiden.

Was sind die optimalen Skalierungsprozentsätze?

Die optimale Skalierung hängt von der Quellauflösung und den OCR-Anforderungen ab:

  • 50-80%: Hochauflösende Scans (600+ DPI) für schnellere Verarbeitung
  • 100%: Keine Skalierung, Originalabmessungen
  • 120-150%: Niedrig aufgelöste Bilder zur Verbesserung der Zeichenerkennung
  • 200%+: Sehr kleiner Text, obwohl DPI-Einstellungen möglicherweise besser funktionieren

Eine Texthöhe von 20-30 Pixeln ist für ein optimales Ergebnis anzustreben. Eine ausführliche Anleitung zur Auflösungsoptimierung finden Sie unter Optimierung der Bild-DPI für Tesseract.

Wie wirkt sich die Skalierung auf die OCR-Leistung aus?

Die Skalierung wirkt sich auf Genauigkeit und Geschwindigkeit aus:

  • Abwärtsskalierung (unter 100 %): Schnellere Verarbeitung, aber möglicherweise gehen feine Details verloren
  • Hochskalierung (über 100%): Bessere Genauigkeit bei kleinen Texten, aber langsamere Verarbeitung
  • Speicherverbrauch: Skaliert quadratisch mit der Bildgröße
  • Bearbeitungszeit: Erhöht sich mit größeren Dimensionen

Zur Leistungsoptimierung siehe schnelle OCR-Konfiguration und Multithreading für Geschwindigkeit.

Wann sollte ich ScaleCropArea verwenden?

Verwenden Sie ScaleCropArea wenn:

Setzen Sie auf true, es sei denn, Sie benötigen die originalen Schnittkoordinaten.

:path=/static-assets/ocr/content-code-examples/how-to/image-orientation-correction-rotate-image.cs
using IronOcr;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Add image
using var imageInput = new OcrImageInput("paragraph_skewed.png");

// Rotate the image 180 degrees clockwise
imageInput.Rotate(180);

// Export the modified image
imageInput.SaveAsImages("rotate");
Imports IronOcr

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Add image
Private imageInput = New OcrImageInput("paragraph_skewed.png")

' Rotate the image 180 degrees clockwise
imageInput.Rotate(180)

' Export the modified image
imageInput.SaveAsImages("rotate")
$vbLabelText   $csharpLabel

Wie lassen sich verschiedene Skalenwerte vergleichen?

Der folgende Vergleich zeigt, wie sich die Skalierung auf die Dimensionen und die Klarheit des Textes auswirkt. Eine moderate Skalierung erhält die Lesbarkeit bei gleichzeitiger Anpassung der Verarbeitungsanforderungen:

Vergleich, der ein Textdokument im Maßstab 50%, 100% und 150% zeigt und die Größenunterschiede verdeutlicht
Seite-an-Seite-Vergleich von in verschiedenen Maßstäben gerendertem Text, der die OCR-Qualitätserhaltung in 3D-Perspektive zeigt

Was sind die besten Praktiken für kombinierte Korrekturen?

Wenden Sie die Korrekturen in dieser Reihenfolge an, um optimale Ergebnisse zu erzielen:

  1. Rotation zuerst für größere Orientierungsprobleme
  2. Deskewing zur Feinabstimmung des Alignments
  3. Skalierung zur Optimierung der OCR-Verarbeitung

Diese Reihenfolge stellt sicher, dass jede Korrektur auf der vorhergehenden aufbaut, ohne dass sich Fehler häufen. Für komplexe Verarbeitungsanforderungen können Sie IronOCRs umfassende Bildfilter und Bildqualitätskorrekturwerkzeuge nutzen.

Wie kombiniere ich alle Ausrichtungskorrekturen?

Verketten Sie mehrere Korrekturen für eine umfassende Bildvorbereitung:

/* :path=/static-assets/ocr/content-code-examples/how-to/image-orientation-correction-combined.cs */
using IronOcr;

// Create OCR engine with optimized configuration
IronTesseract ocrTesseract = new IronTesseract();

// Load and process image with all corrections
using var imageInput = new OcrImageInput("skewed_document.png");

// Apply corrections in optimal sequence
imageInput
    .Rotate(90)           // Fix major orientation
    .Deskew(15)          // Correct minor tilts
    .Scale(150, true);   // Enhance for OCR

// Perform OCR on corrected image
OcrResult result = ocrTesseract.Read(imageInput);

// Access extracted text
string extractedText = result.Text;
/* :path=/static-assets/ocr/content-code-examples/how-to/image-orientation-correction-combined.cs */
using IronOcr;

// Create OCR engine with optimized configuration
IronTesseract ocrTesseract = new IronTesseract();

// Load and process image with all corrections
using var imageInput = new OcrImageInput("skewed_document.png");

// Apply corrections in optimal sequence
imageInput
    .Rotate(90)           // Fix major orientation
    .Deskew(15)          // Correct minor tilts
    .Scale(150, true);   // Enhance for OCR

// Perform OCR on corrected image
OcrResult result = ocrTesseract.Read(imageInput);

// Access extracted text
string extractedText = result.Text;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Welche zusätzlichen Vorverarbeitungen verbessern die Ergebnisse?

Neben der Orientierungskorrektur sind auch diese Verbesserungen zu berücksichtigen:

Implementieren Sie für die Stapelverarbeitung async-Unterstützung, um mehrere Dokumente effizient zu verarbeiten. Überwachen Sie die Verarbeitung mit Timeouts für große Operationen.

Wie kann ich korrigierte Bilder exportieren?

Exportieren Sie die verarbeiteten Bilder zur Überprüfung oder weiteren Verwendung:

Testen Sie Korrekturen mit einfacher einzeiliger OCR, bevor Sie komplexe Arbeitsabläufe implementieren.

Häufig gestellte Fragen

Wie kann ich gekippte oder schiefe Bilder vor der OCR-Verarbeitung korrigieren?

IronOCR bietet eine leistungsstarke Bildorientierungskorrektur durch seine OcrInput-Klasse. Sie können Methoden wie Rotate(), Deskew() und Scale() verketten, um gekippte Scans, auf dem Kopf stehende Dokumente und Bilder mit falscher Größe zu korrigieren. Verwenden Sie zum Beispiel input.Rotate(90).Deskew(45).Scale(150), um mehrere Korrekturen in einer Zeile vor der Textextraktion anzuwenden.

Welche Drehwinkel sollte ich für verschiedene Dokumentausrichtungen verwenden?

IronOCR unterstützt jeden beliebigen Rotationswinkel, zu den gängigen Werten gehören jedoch: 90 Grad für die Umwandlung von Quer- in Hochformat, 180 Grad für auf dem Kopf stehende Dokumente und 270 Grad für die Umwandlung von Hoch- in Querformat. Für kleinere Anpassungen (1-10 Grad) sollten Sie stattdessen IronOCRs Deskew()-Methode verwenden, um bessere Ergebnisse bei leicht geneigten Dokumenten zu erzielen.

Kann ich die richtige Ausrichtung meiner Dokumente automatisch erkennen?

Ja, IronOCR enthält eine DetectPageOrientation-Methode, die automatisch die richtige Ausrichtung durch Textanalyse bestimmt. Diese Funktion ist besonders nützlich bei der Verarbeitung von Stapeln von Dokumenten mit uneinheitlichen Ausrichtungen, z. B. bei historischen Archiven oder mehrseitigen Dokumenten aus verschiedenen Quellen.

Wann sollte ich für die Bildkorrektur eine Entzerrung und wann eine Drehung verwenden?

Verwenden Sie die Rotate()-Methode von IronOCR bei größeren Ausrichtungsproblemen (90, 180, 270 Grad), wenn die Dokumente komplett auf der Seite oder auf dem Kopf stehen. Verwenden Sie die Deskew()-Methode für leichte Neigungen und Schrägstellungen, die typischerweise bei gescannten Dokumenten auftreten. Sie können beide Methoden miteinander verknüpfen, um eine umfassende Korrektur schlecht gescannter Bilder zu erreichen.

Wie skaliere ich Bilder für eine bessere OCR-Genauigkeit?

Mit der Scale()-Methode von IronOCR können Sie die Größe von Bildern prozentual ändern. Mit Scale(150) wird die Bildgröße beispielsweise um 50 % erhöht, was die OCR-Genauigkeit bei Scans mit niedriger Auflösung verbessern kann. Dies ist besonders nützlich, wenn es mit Rotation und Schräglagenkorrektur für eine umfassende Bildvorverarbeitung kombiniert wird.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Rezensiert von
Jeff Fritz
Jeffrey T. Fritz
Principal Program Manager - .NET Community Team
Jeff ist außerdem Principal Program Manager für das .NET- und Visual Studio-Team. Er ist der ausführende Produzent der .NET Conf Virtual Conference Series und moderiert ‚Fritz and Friends‘, einen Livestream für Entwickler, der zweimal wöchentlich ausgestrahlt wird. Dort spricht er über Technik und schreibt gemeinsam mit den Zuschauern Code. Jeff schreibt Workshops, Präsentationen und plant Inhalte für die größten Microsoft-Entwicklerveranstaltungen, einschließlich Microsoft Build, Microsoft Ignite, .NET Conf und dem Microsoft MVP Summit.
Bereit anzufangen?
Nuget Downloads 5,246,844 | Version: 2025.12 gerade veröffentlicht