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 zum Ändern der Bildausrichtung
Drehen - Dreht Bilder um eine bestimmte Anzahl von Grad im Uhrzeigersinn. Für gegen den Uhrzeigersinn verwenden Sie negative Zahlen.
- Deskew - Dreht ein Bild, sodass es richtig herum und rechtwinklig ist. Dies ist für OCR sehr nützlich, da die Toleranz von Tesseract für schiefe Scans bis zu 5 Grad betragen kann
- Skalierung - Skaliert OCR-Eingabeseiten proportional.
Filter zur Manipulation von Bildfarben
Binarisieren - Dieser Bildfilter macht jeden Pixel schwarz oder weiß ohne Zwischenstufen. Kann die OCR-Leistung in Fällen mit sehr geringem Kontrast zwischen Text und Hintergrund verbessern.
ToGrayScale - Dieser Bildfilter wandelt jedes Pixel in einen Graustufen-Ton um. Wird die OCR-Genauigkeit wahrscheinlich nicht verbessern, kann aber die Geschwindigkeit erhöhen
- Invertieren - Kehrt jede Farbe um. 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 automatisch den Kontrast. Dieser Filter verbessert häufig die OCR-Geschwindigkeit und -Genauigkeit bei Scans mit geringem Kontrast.
- Erodieren - Fortgeschrittene Morphologie. mit Dilatation werden Pixel zu den Grenzen von Objekten in einem Bild hinzugefügt. Gegenüber von Erode
- Erode - Fortgeschrittene Morphologie. mit Erosion werden Pixel an Objektgrenzen entfernt. Gegenteil von Dilatieren
Filter zum Reduzieren von Bildrauschen ausprobieren
Schärfen - Schärft verschwommene OCR-Dokumente und glättet Alphakanäle zu Weiß.
DeNoise - Entfernt digitales Rauschen. Dieser Filter sollte nur verwendet werden, wenn Rauschen erwartet wird.
DeepCleanBackgroundNoise - Starke Hintergrundgeräuschunterdrückung. 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 mit geringer 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 die Funktionalität, Deskew()
auszuführen. Allerdings ist der Toleranzbereich hierfür recht eng, und es wird am besten für Bilder verwendet, 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.
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 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.
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 Binarize()
Nach Binarize()
Invertieren
Filter Erläuterung
IronOCR liest am besten, wenn das gelesene 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)
Vorher Nach