Anleitung zur Verwendung von IronOCR-Filtern
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.
Legen Sie los mit IronOCR
Beginnen Sie noch heute mit der Verwendung von IronOCR in Ihrem Projekt mit einer kostenlosen Testversion.
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)
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)
Anwendungsfälle filtern
Drehen Sie
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 wir
Rotate()`.
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)
Vor Input.Rotate(180)
nach Input.Rotate(180)
Deskew
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
Vor Deskew()
nach Deskew()
Skala
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)
Vor Scale()
nach Scale()
Binarisieren
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)
Vor Binarisieren()
nach Binarisieren()
Invertieren
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)
Vor Nach