Guide d'utilisation des filtres IronOCR
IronOCR dispose des outils nécessaires pour lire des images qui peuvent nécessiter un prétraitement sous forme de filtres. Vous pouvez choisir parmi un large éventail de filtres qui peuvent manipuler vos images pour les rendre traitables.
Installer avec NuGet
Install-Package IronOcr
Télécharger DLL
Installation manuelle dans votre projet
Installer avec NuGet
Install-Package IronOcr
Télécharger DLL
Installation manuelle dans votre projet
Commencez à utiliser IronPDF dans votre projet dès aujourd'hui avec un essai gratuit.
Découvrez IronOCR sur NuGet pour une installation rapide et un déploiement facile. Avec plus de 8 millions de téléchargements, il transforme OCR avec C#.
Install-Package IronOcr
Envisagez d'installer le IronOCR DLL directement. Téléchargez et installez-le manuellement pour votre projet ou sous forme de GAC : {{lienDllAfficher}}
Installation manuelle dans votre projet
Télécharger la DLLListe des filtres d'images OCR
Les filtres d'image suivants peuvent réellement améliorer les performances :
Filtres pour changer l'orientation de l'image
Rotation - Fait pivoter les images d'un certain nombre de degrés dans le sens des aiguilles d'une montre. Pour une rotation dans le sens inverse des aiguilles d'une montre, utilisez des nombres négatifs.
- Désalignement - Fait pivoter une image de manière à ce qu'elle soit dans le bon sens et orthogonale. Ceci est très utile pour l'OCR car la tolérance de Tesseract pour les scans biaisés peut être aussi basse que 5 degrés
- Scale - Met à l'échelle les pages d'entrée de l'Ocr de manière proportionnelle.
Filtres pour manipuler les couleurs de l'image
Binariser - Ce filtre d'image transforme chaque pixel en noir ou en blanc, sans zone intermédiaire. Peut améliorer les performances de l'OCR en cas de contraste très faible entre le texte et l'arrière-plan.
ToGrayScale - Ce filtre d'image transforme chaque pixel en une nuance de gris. Il est peu probable qu'il améliore la précision de l'OCR, mais il peut en améliorer la vitesse
- Invert - Inverse toutes les couleurs. Par exemple, le blanc devient noir : le noir devient blanc.
- ReplaceColor - Remplace une couleur dans une image par une autre couleur avec un certain seuil.
Filtres pour essayer d'améliorer le contraste d'une image
Contraste - Augmente automatiquement le contraste. Ce filtre améliore souvent la vitesse et la précision de l'OCR dans les scans à faible contraste.
- Dilater - Morphologie avancée. la dilatation ajoute des pixels aux limites des objets d'une image. En face de Erode
- Erode - Morphologie avancée. l'érosion supprime les pixels sur les limites de l'objet. Opposé à Dilater
Filtres pour tenter de réduire le bruit de l'image
Affiner - Permet d'affiner les documents OCR flous et d'aplatir les canaux alpha au blanc.
DeNoise - Supprime le bruit numérique. Ce filtre ne doit être utilisé que lorsque l'on s'attend à ce qu'il y ait du bruit.
DeepCleanBackgroundNoise - Suppression des bruits de fond importants. Ce filtre n'est utilisé que si l'on sait que le bruit de fond du document est extrême, car il risque également de réduire la précision de l'OCR des documents propres, et il est très coûteux pour l'unité centrale.
- EnhanceResolution - Améliore la résolution des images de faible qualité. Ce filtre n'est pas souvent nécessaire car OcrInput.MinimumDPI et OcrInput.TargetDPI détectent et résolvent automatiquement les entrées à faible résolution.
Exemple de filtre et utilisation
Dans l'exemple suivant, nous montrons comment appliquer des filtres dans votre code
: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 / Que fait le filtre ?
Si vous avez des difficultés à lire des images ou des codes-barres dans votre programme. Il existe un moyen d'enregistrer une image d'un résultat filtré dans votre programme. De cette façon, vous pouvez déboguer et voir exactement ce que chaque filtre fait et comment il manipule votre image.
: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)
Cas d'utilisation des filtres
Rotation
Explication du filtre
Rotation est un filtre utilisé pour définir manuellement une rotation connue sur une image afin de la rendre la plus droite possible. IronOCR dispose d'une fonctionnalité permettant d'exécuter Deskew()
cependant, le degré de tolérance est assez étroit et il est préférable de l'utiliser pour des images qui sont presque parfaitement droites (à 15 degrés près). Pour les images d'entrée qui sont décalées de 90 degrés, ou à l'envers, nous devrions appeler Rotate()
.
Exemple de code de cas d'utilisation
Voici un exemple d'appel à Rotate pour corriger une image à l'envers :
: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)
Avant Input.Rotate(180)
After Input.Rotate(180)
Deskew
Explication du filtre
Utilise une transformation de Hough pour tenter de redresser une image avec un certain degré de tolérance. Ceci est important pour les images qui ne sont pas tout à fait droites, car un document incliné peut parfois entraîner une erreur de lecture.
*Remarque : cette méthode renvoie un booléen qui est vrai si le filtre a été appliqué, et faux s'il n'a pas été appliqué en raison de l'impossibilité de détecter l'orientation de l'image. Cette opération échouera si la page n'a pas de contenu sur lequel baser l'orientation
Exemple de code de cas d'utilisation
Voici un exemple d'appel à Deskew pour corriger une image oblique :
: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
Avant "Deskew()` Après "Deskew()`
Échelle
Explication du filtre
Scale est un filtre de manipulation d'image utile qui permet de redimensionner une image avec les pixels qu'elle possède déjà. Cette fonction peut être utilisée lorsqu'un code-barres n'est pas scanné parce que l'image ne fait que quelques dizaines de pixels de large et que chaque barre représente un pixel, ou si le texte est trop petit et qu'il n'y a pas d'anticrénelage.
*Note : Il y a un point faible pour les tailles de code-barres de 1000px x 1000px
dans lequel les codes-barres peuvent être bien lus et qui devrait être pris en compte si votre code-barres n'est pas trouvé
Exemple de code de cas d'utilisation
Voici un exemple d'appel à Scale pour agrandir les espaces entre les barres d'un code-barres en vue de sa lecture :
: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)
Avant Scale()
Après Scale()
Binariser
Explication du filtre
Le filtre Binarize classe tous les pixels d'une image en noir ou en blanc en fonction d'un algorithme adaptatif qui évalue l'image et les couleurs qu'il considère comme étant l'arrière-plan. Lorsque vous avez une image avec de nombreuses couleurs mais que le texte peut ressortir, un filtre de binarisation supprimera toutes les couleurs et séparera l'arrière-plan en un blanc plat, et tout ce qu'il reconnaîtra comme étant du texte sera coloré en noir intégral pour faciliter la lecture.
Exemple de code de cas d'utilisation
Voici un exemple d'appel à Binarize pour aligner du texte coloré et supprimer les couleurs d'arrière-plan et le bruit :
: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)
Avant Binarize()
Après Binarize()
Inverser
Explication du filtre
IronOCR se lit mieux lorsque l'image lue est texte noir sur fond blanc. Lors de l'application d'une série de filtres, il est important d'essayer d'obtenir ce résultat avant une lecture. Invert est un filtre simple qui inverse toutes les couleurs d'une image. Le blanc devient noir, le noir devient blanc, et tout ce qui se trouve entre les deux se retourne.
Exemple de code de cas d'utilisation
Il s'agit d'un exemple d'inversion pour transformer le blanc sur le noir en noir sur le blanc :
: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)
Avant Après