Anleitung zur Verwendung von IronOCR-Filtern

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

IronOCR verfügt über 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 Vielzahl von Filtern wählen, mit denen Sie Ihre Bilder so manipulieren können, dass sie bearbeitbar werden.

C# NuGet-Bibliothek für OCR

Installieren mit NuGet

Install-Package IronOcr
oder
Java PDF JAR

Herunterladen DLL

DLL herunterladen

Manuelle Installation in Ihr Projekt

C# NuGet-Bibliothek für OCR

Installieren mit NuGet

Install-Package IronOcr
oder
Java PDF JAR

Herunterladen DLL

DLL herunterladen

Manuelle Installation in Ihr Projekt

Fangen Sie noch heute an, IronPDF in Ihrem Projekt mit einer kostenlosen Testversion zu verwenden.

Erster Schritt:
green arrow pointer

Schau dir an IronOCR an Nuget Für schnelle Installation und Bereitstellung. Mit über 8 Millionen Downloads verwandelt es OCR mit C#.

C# NuGet-Bibliothek für OCR nuget.org/packages/IronOcr/
Install-Package IronOcr

Erwägen Sie die Installation der IronOCR DLL direkt. Laden Sie es herunter und installieren Sie es manuell für Ihr Projekt oder die GAC-Form: IronOcr.zip

Manuelle Installation in Ihr Projekt

DLL herunterladen

Liste von OCR-Bildfiltern

Die folgenden Bildfilter können die Leistung deutlich verbessern:

  • Filter zur Änderung der Bildausrichtung
    • Drehen - 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 für OCR sehr nützlich, da die Toleranz von Tesseract für schiefe Scans bis zu 5 Grad betragen kann
    • Scale - Skaliert die Ocr-Eingabeseiten proportional.
  • Filter zur Bearbeitung von Bildfarben
    • Binarisieren - Dieser Bildfilter macht jedes Pixel schwarz oder weiß, ohne einen Mittelweg. Kann die OCR-Leistung in Fällen mit sehr geringem Kontrast zwischen Text und Hintergrund verbessern.
    • ToGrayScale - Dieser Bildfilter verwandelt jedes Pixel in einen Graustufenwert. Wird die OCR-Genauigkeit wahrscheinlich nicht verbessern, kann aber die Geschwindigkeit erhöhen
    • Invertieren - Invertiert jede Farbe. Z. B. Weiß wird schwarz: Schwarz wird weiß.
    • ReplaceColor - Ersetzt eine Farbe innerhalb eines Bildes durch eine andere Farbe mit einem bestimmten Schwellenwert.
  • Filter zur Verbesserung des Kontrasts in einem Bild
    • Kontrast - Erhöht den Kontrast automatisch. Dieser Filter verbessert häufig die OCR-Geschwindigkeit und -Genauigkeit bei Scans mit geringem Kontrast.
    • Dilate - Erweiterte Morphologie. mit Dilatation werden Pixel zu den Grenzen von Objekten in einem Bild hinzugefügt. Gegenüber von Erode
    • Erode - Morphologie für Fortgeschrittene. mit Erosion werden Pixel an Objektgrenzen entfernt. Gegenteil von Dilatieren
  • Filter zur Reduzierung von Bildrauschen
    • Schärfen - Schärft unscharfe OCR-Dokumente und reduziert die Alphakanäle auf Weiß.
    • DeNoise - Entfernt digitales Rauschen. Dieser Filter sollte nur verwendet werden, wenn Rauschen zu erwarten ist.
    • DeepCleanBackgroundNoise - Entfernung von starkem Hintergrundrauschen. Verwenden Sie diesen Filter nur, wenn ein extremes Hintergrundrauschen des Dokuments bekannt ist, da dieser Filter auch die OCR-Genauigkeit von sauberen Dokumenten beeinträchtigen kann und sehr rechenintensiv ist.
    • EnhanceResolution - Verbessert die Auflösung von Bildern niedriger Qualität. Dieser Filter wird nicht oft benötigt, da OcrInput.MinimumDPI und OcrInput.TargetDPI automatisch Eingaben mit niedriger Auflösung erfassen und auflösen.

Beispiel und Verwendung des Filters

Im folgenden Beispiel wird gezeigt, 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);
Imports IronOcr
Imports System

Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("my_image.png")
input.Deskew()

Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
VB   C#

Debug Filter / Was macht der Filter?

Wenn Sie Schwierigkeiten mit dem Lesen von Bildern oder Strichcodes in Ihrem Programm haben. Es gibt eine Möglichkeit, ein Bild eines gefilterten Ergebnisses in Ihrem Programm zu speichern. Auf diese Weise können Sie genau sehen, was die einzelnen Filter tun und wie sie Ihr Bild verändern.

: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);
Imports IronOcr
Imports System

Private file = "skewed_image.tiff"
Private ocr = New IronTesseract()
Private input = New OcrInput()
Private pageindices = New Integer() { 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
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
VB   C#

Anwendungsfälle filtern

Drehen Sie

API-Referenz

Filter Erläuterung

Drehen ist ein Filter, mit dem man manuell eine bekannte Drehung auf ein Bild anwenden kann, um es so gerade wie möglich zu machen. IronOCR verfügt über eine Funktion zur Ausführung von Deskew()der Toleranzbereich hierfür ist jedoch recht eng und wird am besten für Bilder verwendet, die nahezu perfekt gerade sind(innerhalb von 15 Grad oder so). Für Eingabebilder, die um 90 Grad versetzt sind oder auf dem Kopf stehen, sollten wirRotate()`.

Anwendungsfall 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);
Imports IronOcr
Imports System

Private image = "screenshot.png"
Private ocr = New IronTesseract()
Private 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
Dim result = ocr.Read(input)

' Example print to console
Console.WriteLine(result.Text)
VB   C#

Vor Input.Rotate(180) nach Input.Rotate(180)


Deskew

API-Referenz

Filter Erläuterung

Verwendet eine Hough-Transformation, um zu versuchen, ein Bild innerhalb eines bestimmten Toleranzgrades zu begradigen. Dies ist wichtig für Bilder, die nicht ganz gerade sind, da ein schiefes Dokument manchmal eine falsche Lesung verursachen kann.

*Hinweis: Diese Methode gibt einen booleschen Wert zurück, der true ist, wenn der Filter angewendet wurde, und false, wenn er nicht angewendet werden konnte, weil die Bildausrichtung nicht erkannt wurde. Dies schlägt fehl, wenn die Seite keinen Inhalt hat, an dem sie sich orientieren kann

Anwendungsfall Codebeispiel

Dies ist ein Beispiel für den Aufruf von Deskew, um ein schiefes Bild zu korrigieren:

: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.");
}
Imports IronOcr
Imports System

Private image = "paragraph_skewed.png"
Private ocr = New IronTesseract()
Private input = New OcrInput()
' Load at least one image
input.LoadImage(image)

' Apply deskew with 15 degree snap
Dim didDeskew As Boolean = input.Deskew(15)
If didDeskew Then
	' Read image into variable: result
	Dim result = ocr.Read(input)
	Console.WriteLine(result.Text)
Else
	Console.WriteLine("Deskew not applied because Image Orientation could not be determined.")
End If
VB   C#

Vor Deskew() nach Deskew()


Skala

API-Referenz

Filter Erläuterung

Skalieren ist ein nützlicher Bildbearbeitungsfilter, der dabei hilft, die Größe eines Bildes mit den bereits vorhandenen Pixeln zu ändern. Dies kann verwendet werden, wenn ein Strichcode nicht gescannt wird, weil das Bild nur einige zehn Pixel breit ist und jeder Strich ein Pixel darstellt, oder wenn der Text zu klein ist und kein Anti-Aliasing vorhanden ist.

*Hinweis: Es gibt einen Sweetspot für Barcodegrößen von "1000px x 1000px", in dem Barcodes gut gelesen werden können, der berücksichtigt werden sollte, wenn Ihr Barcode nicht gefunden wird

Anwendungsfall Codebeispiel

Dies ist ein Beispiel für den Aufruf von Scale, um die Lücken zwischen den Strichen in einem Barcode für das 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);
Imports IronOcr
Imports System

Private image = "small_barcode.png"
Private ocr = New IronTesseract()

' Optional: This example uses a barcode
ocr.Configuration.ReadBarCodes = True

Dim 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
Dim result = ocr.Read(input)

' Example print to console
Console.WriteLine(result.Text)
VB   C#

Vor Scale() nach Scale()


Binarisieren

API-Referenz

Filter Erläuterung

Der Binarisierungsfilter klassifiziert alle Pixel in einem Bild als schwarz oder weiß, abhängig von einem adaptiven Algorithmus, der das Bild und die Farben bewertet, die er als Hintergrund ansieht. Wenn Sie ein Bild mit vielen Farben haben, aber der Text sich abheben kann, entfernt ein Binarisierungsfilter alle Farben und trennt den Hintergrund in ein flaches Weiß, und alles, was er als Text erkennt, wird zur besseren Lesbarkeit in ein volles Schwarz gefärbt.

Anwendungsfall Codebeispiel

Dies ist ein Beispiel für den Aufruf von Binarize zum Ausrichten von farbigem Text und zum Entfernen von Hintergrundfarben und Rauschen:

: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);
Imports IronOcr
Imports System

Private image = "no-binarize.jpg"
Private ocr = New IronTesseract()

Private input = New OcrInput()
' Load at least one image
input.LoadImage(image)

' Apply Binarize
input.Binarize()

' Read image into variable: result
Dim result = ocr.Read(input)

' Example print to console
Console.WriteLine(result.Text)
VB   C#

Vor Binarisieren() nach Binarisieren()


Invertieren

API-Referenz

Filter Erläuterung

IronOCR liest sich am besten, wenn das Bild schwarzer Text auf weißem Hintergrund ist. Bei der Anwendung einer Reihe von Filtern ist es wichtig, dass Sie versuchen, dieses Ergebnis vor dem Lesen zu erreichen. Invertieren ist ein einfaches Filter, das alle Farben eines Bildes invertiert. Weiß wird schwarz, schwarz wird weiß, und alles dazwischen wird umgedreht.

Anwendungsfall Codebeispiel

Dies ist ein Beispiel für den Aufruf von Invertieren, um Weiß auf Schwarz in Schwarz auf Weiß zu verwandeln:

: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);
Imports IronOcr
Imports System

Private image = "before-invert.png"
Private ocr = New IronTesseract()

Private input = New OcrInput()
' Load at least one image
input.LoadImage(image)

' Apply Invert
input.Invert(True)

' Read image into variable: result
Dim result = ocr.Read(input)

' Example print to console
Console.WriteLine(result.Text)
VB   C#

Vor Nach