Guide to using IronOCR Filters

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

IronOcr fournit les outils nécessaires à la lecture d'images pouvant nécessiter un prétraitement sous forme de filtres. Vous pouvez choisir parmi une large gamme de filtres qui peuvent manipuler vos images pour les rendre traitables.

Démarrage rapide : appliquer des filtres pour nettoyer les images OCR

En une simple chaîne d'appels, vous pouvez appliquer les filtres DeNoise, Binarize et Deskew pour améliorer la clarté du scan avant l'OCR. Cet exemple montre à quel point il est facile d'améliorer des images à l'aide des filtres intégrés d'IronOcr et de commencer tout de suite.

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr

  2. Copy and run this code snippet.

    using var input = new IronOcr.OcrInput("scan.jpg"); input.DeNoise(true).Binarize().Deskew(45); var result = new IronOcr.IronTesseract().Read(input);
  3. Deploy to test on your live environment

    Start using IronOCR in your project today with a free trial
    arrow pointer

Liste 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
    • Rotate - 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.
    • Deskew - 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 des images
    • Binarize - Ce filtre d'image transforme chaque pixel en noir ou en blanc, sans zone intermédiaire. Cela peut améliorer les performances de l'OCR dans les cas où le contraste entre le texte et l'arrière-plan est très faible.
    • ToGrayScale - Ce filtre d'image transforme chaque pixel en nuances de gris. Il est peu probable que la traduction améliore la précision de l'OCR, mais elle peut améliorer la vitesse.
    • Invert - Inverse toutes les couleurs. Par exemple, le blanc devient noir et vice versa.
    • ReplaceColor - Remplace une couleur dans une image par une autre couleur, dans les limites d'un certain seuil.
  • Filtres pour 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.
    • Dilate - Morphologie avancée. la dilatation consiste à ajouter des pixels aux limites des objets d'une image. Opposé à Erode.
    • Erode - Morphologie avancée. l'érosion supprime les pixels des limites d'un objet. Opposé de Dilater.
  • Filtres pour réduire le bruit des images
    • Sharpen - 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 dans des scénarios où l'on s'attend à ce qu'il y ait du bruit.
    • DeepCleanBackgroundNoise - Suppression des bruits de fond importants. N'utilisez ce filtre que si vous connaissez un bruit de fond extrême, car il peut réduire la précision de l'OCR des documents propres et il est très gourmand en ressources humaines.
    • 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)
$vbLabelText   $csharpLabel

Debug Filter / Que fait le filtre ?

Si vous rencontrez des difficultés avec la lecture d'images ou de BarCode dans votre programme, il existe un moyen d'enregistrer une image d'un résultat filtré. 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)
$vbLabelText   $csharpLabel

Cas d'utilisation des filtres

Rotate

Référence API

Explication du filtre

Rotation est un filtre utilisé pour définir manuellement une rotation connue sur une image afin de la rendre la plus proche possible de la ligne droite. IronOcr dispose d'une fonctionnalité permettant d'exécuter Deskew(), cependant, le degré de tolérance de cette opération est plutôt é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)
$vbLabelText   $csharpLabel
AvantInput.Rotate(180)`` AprèsInput.Rotate(180)``
Screenshot related to Exemple de code de cas d'utilisation Screenshot Rotated related to Exemple de code de cas d'utilisation

Deskew

Référence API

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 entraîner une mauvaise lecture.

[Cette méthode renvoie un booléen, qui est vrai si le filtre a été appliqué, et faux s'il n'a pas pu être 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 pour définir l'orientation.)}]

Exemple de code de cas d'utilisation

Voici un exemple d'appel à Deskew pour corriger une image de travers :

: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
$vbLabelText   $csharpLabel
AvantDeskew()`` AprèsDeskew()``
Paragraph Skewed related to Exemple de code de cas d'utilisation Paragraph Deskewed related to Exemple de code de cas d'utilisation

Echelle

Référence API

Explication du filtre

Scale est un filtre de manipulation d'image utile qui permet de redimensionner une image en utilisant les pixels qu'elle possède déjà. Cela peut être utilisé lorsqu'un BarCode n'est pas scanné parce que l'image ne fait que quelques dizaines de pixels de large, chaque barre représentant un pixel, ou si le texte est trop petit sans anticrénelage.

[{i :(Il existe un point faible pour les tailles de code-barres de 1000px x 1000px où les codes-barres peuvent être bien lus, ce 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 à BarCode pour agrandir les espaces entre les barres d'un code-barres en vue de sa numérisation :

: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)
$vbLabelText   $csharpLabel
AvantScale()`` AprèsScale()``
C Sharp Ocr Image Filters 1 related to Exemple de code de cas d'utilisation C Sharp Ocr Image Filters 2 related to Exemple de code de cas d'utilisation

Binariser

Référence API

Explication du filtre

Le filtre Binarize classe tous les pixels d'une image en noir ou en blanc, en fonction d'un algorithme adaptatif. Cette méthode supprime toutes les couleurs et sépare l'arrière-plan en un blanc plat, tout ce qui est reconnu comme du texte étant 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)
$vbLabelText   $csharpLabel
AvantBinarize()`` AprèsBinarize()``
No Binarize related to Exemple de code de cas d'utilisation After Binarize related to Exemple de code de cas d'utilisation

Inverser

Référence API

Explication du filtre

IronOcr se lit mieux lorsque l'image est texte noir sur fond blanc. Le filtre Invert permet d'inverser toutes les couleurs d'une image.

Exemple de code de cas d'utilisation

Il s'agit d'un exemple d'appel à l'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)
$vbLabelText   $csharpLabel
Avant Après
Before Invert related to Exemple de code de cas d'utilisation After Invert related to Exemple de code de cas d'utilisation

Questions Fréquemment Posées

Comment les filtres d'image peuvent-ils améliorer la précision de l'OCR en C#?

Les filtres d'image dans IronOCR peuvent prétraiter les images pour en améliorer la qualité, améliorant ainsi la précision de l'OCR. Les filtres comme Binariser et Contraste augmentent la lisibilité en ajustant les couleurs et le contraste, tandis que Rotation et Désinclinaison corrigent l'orientation de l'image.

Quels filtres sont disponibles pour corriger l'orientation de l'image?

IronOCR propose des filtres Rotation et Désinclinaison pour corriger les problèmes d'orientation de l'image. Rotation permet un ajustement manuel des angles de l'image, tandis que Désinclinaison redresse automatiquement les images légèrement inclinées.

Comment le filtre Binariser affecte-t-il le prétraitement de l'image?

Le filtre Binariser dans IronOCR convertit les pixels d'image en noir et blanc, ce qui supprime les couleurs de fond et améliore la visibilité du texte, améliorant particulièrement la précision de l'OCR dans des conditions de faible contraste.

Quand est-il approprié d'utiliser les filtres de réduction du bruit?

Les filtres de réduction du bruit comme Accentuer et Réduction du Bruit doivent être utilisés lorsqu'il y a du bruit numérique dans les images. Ces filtres nettoient l'image, rendant le texte plus clair pour de meilleurs résultats OCR dans IronOCR.

L'amélioration de la résolution d'une image peut-elle affecter la performance de l'OCR?

Oui, utiliser le filtre Améliorer la Résolution peut améliorer la performance de l'OCR en augmentant la résolution des images de faible qualité. Bien que les paramètres par défaut MinimumDPI et TargetDPI d'IronOCR suffisent souvent, le filtre peut fournir un rehaussement supplémentaire de la résolution si nécessaire.

Quel rôle jouent les filtres de manipulation des couleurs dans l'OCR?

Les filtres de manipulation des couleurs comme Inverser, en Niveaux de Gris, et Binariser dans IronOCR ajustent les couleurs de l'image pour améliorer la lisibilité du texte. Inverser change les schémas de couleurs, en Niveaux de Gris convertit les images en niveaux de gris, et Binariser réduit les images au noir et blanc.

Quelle est la différence entre les filtres Contraste et Accentuer?

Le filtre Contraste dans IronOCR augmente la différence entre les zones claires et sombres, améliorant la clarté du texte, tandis que le filtre Accentuer améliore les bords pour rendre le texte plus distinct, les deux aidant à une meilleure reconnaissance OCR.

Comment enregistrer et déboguer des images filtrées dans IronOCR?

Pour enregistrer et déboguer des images filtrées dans IronOCR, utilisez la fonction SaveAsImages après avoir appliqué les filtres. Cela aide à visualiser les effets des filtres et garantit que les étapes de prétraitement ont amélioré la qualité de l'image pour l'OCR.

Quels sont les filtres de morphologie avancée disponibles dans IronOCR?

IronOCR propose des filtres de morphologie avancés comme Dilater et Éroder. Dilater ajoute des pixels aux contours des objets pour améliorer les caractéristiques, tandis qu'Éroder les supprime, les deux utilisés pour clarifier les détails de l'image pour une meilleure précision de l'OCR.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Revu par
Jeff Fritz
Jeffrey T. Fritz
Responsable principal du programme - Équipe de la communauté .NET
Jeff est également responsable principal du programme pour les équipes .NET et Visual Studio. Il est le producteur exécutif de la série de conférences virtuelles .NET Conf et anime 'Fritz and Friends', une diffusion en direct pour développeurs qui est diffusée deux fois par semaine où il parle de technologie et écrit du code avec les téléspectateurs. Jeff écrit des ateliers, des présentations et prévoit du contenu pour les plus grands événements de développement Microsoft, y compris Microsoft Build, Microsoft Ignite, .NET Conf et le sommet Microsoft MVP
Prêt à commencer?
Nuget Téléchargements 5,044,537 | Version : 2025.11 vient de sortir