C# Guide: Using IronOCR Image Filters for Better OCR

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

IronOCR bietet die Werkzeuge, die Sie benötigen, um Bilder zu lesen, die möglicherweise eine Vorverarbeitung in Form von Filtern benötigen. Sie können aus einer großen Auswahl an Filtern wählen, die Ihre Bilder so manipulieren können, dass sie verarbeitet werden können.

Schnellstart: Filter anwenden, um OCR-Bilder zu bereinigen

Mit nur einer einzigen einfachen Aufrufkette können Sie die Filter DeNoise, Binarize und Deskew anwenden, um die Scanklarheit vor der OCR zu verbessern. Dieses Beispiel zeigt, wie einfach es ist, Bilder mit den eingebauten Filtern von IronOCR zu verbessern und sofort loszulegen.

  1. Installieren Sie IronOCR mit NuGet Package Manager

    PM > Install-Package IronOcr
  2. Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.

    using var input = new IronOcr.OcrInput("scan.jpg"); input.DeNoise(true).Binarize().Deskew(45); var result = new IronOcr.IronTesseract().Read(input);
  3. Bereitstellen zum Testen in Ihrer Live-Umgebung

    Beginnen Sie noch heute, IronOCR in Ihrem Projekt zu verwenden, mit einer kostenlosen Testversion

    arrow pointer

Liste der OCR-Bildfilter

Die folgenden Bildfilter können die Leistung wirklich verbessern:

  • Filters to change the Image Orientation
    • Rotate - Dreht Bilder um eine bestimmte Gradzahl im Uhrzeigersinn. Für eine Drehung gegen den Uhrzeigersinn verwenden Sie negative Zahlen.
    • Deskew - Dreht ein Bild so, dass es richtig herum und orthogonal ist. Dies ist sehr nützlich für OCR, da Tesseracts Toleranz für schräggestellte Scans bis 5 Grad recht niedrig ist.
    • Scale - Skaliert OCR-Eingabeseiten proportional.
  • Filters to manipulate Image Colors
    • Binarize - Dieser Bildfilter färbt jedes Pixel entweder schwarz oder weiß, ohne Zwischenstufen. Dies kann die OCR-Leistung bei sehr geringem Text-Hintergrund-Kontrast verbessern.
    • ToGrayScale - Dieser Bildfilter wandelt jedes Pixel in Graustufen um. Wahrscheinlich keine Verbesserung der OCR-Genauigkeit, aber möglicherweise schnellere Geschwindigkeit.
    • Invert - Kehrt alle Farben um. Z.B. Weiß wird schwarz und umgekehrt.
    • ReplaceColor - Ersetzt eine Farbe in einem Bild durch eine andere Farbe, innerhalb eines bestimmten Schwellenwerts.
  • Filters to improve Contrast in an Image
    • Contrast - Erhöht den Kontrast automatisch. Dieser Filter verbessert oft die OCR-Geschwindigkeit und -Genauigkeit bei niedrigen Kontrast-Scans.
    • Dilate - Erweiterte Morphologie. Dilatation fügt Pixel zu den Rändern von Objekten in einem Bild hinzu. Gegenteil von Erosion.
    • Erode - Erweiterte Morphologie. Erosion entfernt Pixel von Objektgrenzen. Gegenteil von Dilatation.
  • Filters to reduce Image Noise
    • Sharpen - Schärft unscharfe OCR-Dokumente und reduziert die Alphakanäle auf Weiß.
    • DeNoise - Entfernt digitales Rauschen. Dieser Filter sollte nur in Szenarien verwendet werden, in denen Rauschen zu erwarten ist.
    • EnhanceResolution - Verbessert die Auflösung von Bildern mit niedriger Qualität. Dieser Filter ist nicht oft nötig, da OcrInput.MinimumDPI und OcrInput.TargetDPI Eingaben mit niedriger Auflösung automatisch erkennen und verarbeiten.

Filter-Beispiel und -Anwendung

Im folgenden Beispiel zeigen wir, wie Sie Filter in Ihrem Code anwenden können.

:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-1.cs
using IronOcr;
using System;

var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("my_image.png");
input.Deskew();

var result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

Debug-Filter / Was macht der Filter?

Wenn Sie Schwierigkeiten haben, Bilder oder Barcodes in Ihrem Programm zu lesen, gibt es eine Möglichkeit, ein Bild eines gefilterten Ergebnisses zu speichern. Auf diese Weise können Sie debuggen und genau sehen, was jeder Filter macht und wie er Ihr Bild manipuliert.

:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-2.cs
using IronOcr;
using System;

var file = "skewed_image.tiff";
var ocr = new IronTesseract();
using var input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(file, pageindices);
// Here we apply the filter: Deskew
input.Deskew();

// Save the input with filter(s) applied
input.SaveAsImages("my_deskewed");

// We read, then print the text to the console
var result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

Filter-Einsatzmöglichkeiten

Drehen

API-Referenz

Filter-Erklärung

Drehen ist ein Filter, der verwendet wird, um eine bekannte Drehung manuell zu einem Bild hinzuzufügen, um es am besten gerade auszurichten. IronOCR verfügt über die Funktionalität, Deskew() auszuführen. Allerdings ist die Toleranz hierfür recht gering, und es eignet sich am besten für Bilder, die nahezu perfekt gerade sind (innerhalb von etwa 15 Grad). Für Eingabebilder, die um 90 Grad gedreht oder auf dem Kopf stehen, sollten wir Rotate() aufrufen.

Use-Case-Codebeispiel

Dies ist ein Beispiel für den Aufruf von Rotate(), um ein auf dem Kopf stehendes Bild zu korrigieren:

:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-3.cs
using IronOcr;
using System;

var image = "screenshot.png";
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);

// Rotate 180 degrees because image is upside-down
input.Rotate(180);

// Read image into variable: result
var result = ocr.Read(input);

// Example print to console
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel
`` ``
Screenshot related to Use-Case-Codebeispiel Screenshot Rotated related to Use-Case-Codebeispiel

Entzerren

API-Referenz

Filter-Erklärung

Verwendet eine Hough-Transformation, um ein Bild innerhalb eines bestimmten Toleranzbereichs gerade zu richten. Dies ist wichtig für Bilder, die nicht vollständig gerade sind, da ein schiefes Dokument zu einem Fehllesung führen kann.

Hinweis:Diese Methode gibt einen Booleschen Wert zurück, der wahr ist, wenn der Filter angewendet wurde, und falsch, wenn er aufgrund der Unfähigkeit, die Bildausrichtung zu erkennen, nicht angewendet werden konnte. Dies schlägt fehl, wenn die Seite keinen Inhalt hat, um die Orientierung zu definieren.

Use-Case-Codebeispiel

Dies ist ein Beispiel für den Aufruf von Deskew() zur Korrektur eines verzerrten Bildes:

:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-4.cs
using IronOcr;
using System;

var image = @"paragraph_skewed.png";
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);

// Apply deskew with 15 degree snap
bool didDeskew = input.Deskew(15);
if (didDeskew)
{
    // Read image into variable: result
    var result = ocr.Read(input);
    Console.WriteLine(result.Text);
}
else
{
    Console.WriteLine("Deskew not applied because Image Orientation could not be determined.");
}
$vbLabelText   $csharpLabel

Skalieren

API-Referenz

Filter-Erklärung

Skalieren ist ein nützlicher Bildmanipulationsfilter, der dabei hilft, ein Bild mit den bereits vorhandenen Pixeln zu skalieren. Dies kann verwendet werden, wenn ein Barcode nicht gescannt wird, weil das Bild nur wenige Pixel breit ist, wobei jeder Balken ein Pixel ist, oder wenn der Text zu klein ist, ohne Kantenglättung.

Hinweis:Es gibt einen optimalen Bereich für Barcode-Größen von 1000px x 1000px, in dem Barcodes gut gelesen werden können. Dies sollte berücksichtigt werden, wenn Ihr Barcode nicht gefunden wird.

Use-Case-Codebeispiel

Dies ist ein Beispiel für den Aufruf von Scale(), um die Abstände zwischen den Balken in einem Barcode zum Scannen zu vergrößern:

:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-5.cs
using IronOcr;
using System;

var image = @"small_barcode.png";
var ocr = new IronTesseract();

// Optional: This example uses a barcode
ocr.Configuration.ReadBarCodes = true;

using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);

// Apply scale
input.Scale(400); // 400% is 4 times larger

// Read image into variable: result
var result = ocr.Read(input);

// Example print to console
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

Binärisierung

API-Referenz

Filter-Erklärung

Der Binärisierungsfilter klassifiziert alle Pixel in einem Bild als entweder schwarz oder weiß, basierend auf einem adaptiven Algorithmus. Dies entfernt alle Farben und trennt den Hintergrund in ein flaches Weiß, wobei alles, was als Text erkannt wird, in ein vollständiges Schwarz eingefärbt wird, um das Lesen zu erleichtern.

Use-Case-Codebeispiel

Dies ist ein Beispiel für den Aufruf von Binarize(), um farbigen Text auszurichten und Hintergrundfarben und Rauschen zu entfernen:

:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-6.cs
using IronOcr;
using System;

var image = @"no-binarize.jpg";
var ocr = new IronTesseract();

using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);

// Apply Binarize
input.Binarize();

// Read image into variable: result
var result = ocr.Read(input);

// Example print to console
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel
`` ``
No Binarize related to Use-Case-Codebeispiel After Binarize related to Use-Case-Codebeispiel

Invertieren

API-Referenz

Filter-Erklärung

IronOCR liest am besten, wenn das Bild die Form black text on a white background hat. Der Invert Filter wird verwendet, um dies durch Invertierung aller Farben in einem Bild zu erreichen.

Use-Case-Codebeispiel

Dies ist ein Beispiel für den Aufruf von Invert(), um Weiß auf Schwarz in Schwarz auf Weiß umzuwandeln:

:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-7.cs
using IronOcr;
using System;

var image = @"before-invert.png";
var ocr = new IronTesseract();

using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);

// Apply Invert
input.Invert(true);

// Read image into variable: result
var result = ocr.Read(input);

// Example print to console
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel
Before After
Before Invert related to Use-Case-Codebeispiel After Invert related to Use-Case-Codebeispiel

Häufig gestellte Fragen

Wie können Bildfilter die OCR-Genauigkeit in C# verbessern?

Bildfilter in IronOCR können Bilder vorverarbeiten, um deren Qualität zu verbessern und damit die OCR-Genauigkeit zu erhöhen. Filter wie Binarisieren und Kontrast verbessern die Lesbarkeit, indem sie Farben und Kontraste anpassen, während Drehen und Entschrägen die Bildorientierung korrigieren.

Welche Filter gibt es zur Korrektur der Bildorientierung?

IronOCR bietet Drehen und Entschrägen Filter zur Korrektur von Bildorientierungsproblemen. Drehen ermöglicht manuelle Anpassungen von Bildwinkeln, während Entschrägen automatisch leicht geneigte Bilder begradigt.

Wie wirkt sich der Binarisierungsfilter auf die Bildvorverarbeitung aus?

Der Binarisierungsfilter in IronOCR wandelt Bildpixel in Schwarzweiß um, wodurch Hintergrundfarben entfernt werden und die Textsichtbarkeit erhöht wird, insbesondere die OCR-Genauigkeit bei niedrigen Kontrastbedingungen verbessert wird.

Wann sollten Rauschreduktionsfilter verwendet werden?

Rauschreduktionsfilter wie Schärfen und Rauschunterdrückung sollten verwendet werden, wenn digitales Rauschen in Bildern vorhanden ist. Diese Filter reinigen das Bild und machen den Text klarer, um bessere OCR-Ergebnisse in IronOCR zu erzielen.

Kann die Verbesserung der Bildauflösung die OCR-Leistung beeinflussen?

Ja, der Einsatz des Auflösung verbessern Filters kann die OCR-Leistung verbessern, indem die Auflösung von Bildern niedriger Qualität erhöht wird. Obwohl die Standardeinstellungen für die Mindest-DPI und Ziel-DPI von IronOCR oft ausreichen, kann der Filter bei Bedarf zusätzliche Auflösungsverstärkung bieten.

Welche Rolle spielen Farbmanipulationsfilter in der OCR?

Farbmanipulationsfilter wie Invertieren, In Graustufen konvertieren und Binarisieren in IronOCR passen Bildfarben an, um die Lesbarkeit des Textes zu erhöhen. Invertieren ändert Farbschemata, In Graustufen konvertieren wandelt Bilder in Graustufen um, und Binarisieren reduziert Bilder auf Schwarzweiß.

Was ist der Unterschied zwischen Kontrast- und Schärfefiltern?

Der Kontrastfilter in IronOCR erhöht den Unterschied zwischen hellen und dunklen Bereichen und verbessert die Textklarheit, während der Schärfefilter Kanten hervorhebt, um den Text deutlicher zu machen, was beide die OCR-Erkennung verbessern.

Wie speichert und debuggt man gefilterte Bilder in IronOCR?

Um gefilterte Bilder in IronOCR zu speichern und zu debuggen, verwenden Sie die Funktion SaveAsImages nach dem Anwenden von Filtern. Dies hilft, die Filtereffekte zu visualisieren und sicherzustellen, dass die Vorverarbeitungsschritte die Bildqualität für OCR verbessert haben.

Welche fortgeschrittenen Morphologiefilter sind in IronOCR verfügbar?

IronOCR bietet fortgeschrittene Morphologiefilter wie Verdicken und Erodieren. Verdicken fügt Pixel zu Objektgrenzen hinzu, um Merkmale zu stärken, während Erodieren sie entfernt, beide werden verwendet, um Bilddetails für eine verbesserte OCR-Genauigkeit zu klären.

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,525,971 | Version: 2026.3 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package IronOcr
Führen Sie ein Beispiel aus und beobachten Sie, wie Ihr Bild zu durchsuchbarem Text wird.