Guide C# : Utilisation des filtres d'image IronOCR pour une meilleure reconnaissance optique de caractères (OCR)

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

IronOCR fournit les outils nécessaires pour lire des images pouvant nécessiter un prétraitement sous forme de filtres. Vous pouvez choisir parmi une vaste gamme de filtres permettant de manipuler vos images pour les rendre exploitables.

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

En une seule et simple série d'appels, vous pouvez appliquer les filtres DeNoise, Binarize et Deskew pour améliorer la netteté de la numérisation avant la reconnaissance optique de caractères (OCR). Cet exemple montre à quel point il est facile d'améliorer des images grâce aux filtres intégrés d'IronOCR et de commencer immédiatement.

Nuget IconCommencez dès maintenant à créer des PDF avec NuGet :

  1. Installez IronOCR avec le gestionnaire de packages NuGet

    PM > Install-Package IronOcr

  2. Copiez et exécutez cet extrait de code.

    using var input = new IronOcr.OcrInput("scan.jpg"); input.DeNoise(true).Binarize().Deskew(45); var result = new IronOcr.IronTesseract().Read(input);
  3. Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronOCR dans votre projet dès aujourd'hui grâce à un essai gratuit.
    arrow pointer

Liste des filtres d'images OCR

Les filtres d'image suivants peuvent réellement améliorer les performances :

  • Filters to change the Image Orientation
    • Rotate - Fait pivoter les images d'un certain nombre de degrés dans le sens horaire. Pour une rotation dans le sens antihoraire, utilisez des nombres négatifs.
    • Deskew - Fait pivoter une image pour qu'elle soit à l'endroit et orthogonale. Ceci est très utile pour la reconnaissance optique de caractères (OCR) car la tolérance de Tesseract pour les numérisations inclinées peut être aussi faible que 5 degrés.
    • Scale - Met à l'échelle les pages d'entrée OCR proportionnellement.
  • Filters to manipulate Image Colors
    • Binarize - Ce filtre d'image transforme chaque pixel en noir ou blanc, sans nuance intermédiaire. Cela peut améliorer les performances de la reconnaissance optique de caractères (OCR) dans les cas de très faible contraste entre le texte et le fond.
    • ToGrayScale - Ce filtre d'image transforme chaque pixel en nuances de gris. Peu susceptible d'améliorer la précision de la reconnaissance optique de caractères, mais pourrait en améliorer la vitesse.
    • Invert - Inverse toutes les couleurs. Par exemple, le blanc devient noir et vice versa.
    • ReplaceColor - Remplace une couleur d'une image par une autre couleur, dans les limites d'un certain seuil.
  • Filters to improve Contrast in an Image
    • Contrast - Augmente automatiquement le contraste. Ce filtre améliore souvent la vitesse et la précision de la reconnaissance optique de caractères (OCR) dans les numérisations à faible contraste.
    • Dilate - Morphologie avancée. La dilatation ajoute des pixels aux contours des objets dans une image. Contraire d'Erode.
    • Erode - Morphologie avancée. L'érosion supprime des pixels des contours des objets. Contraire de dilater.
  • Filters to reduce Image Noise
    • Sharpen - Améliore la netteté des documents OCR flous et aplatit les canaux alpha en blanc.
    • DeNoise : supprime le bruit numérique. Ce filtre ne doit être utilisé que lorsque du bruit est attendu.
    • DeepCleanBackgroundNoise - Suppression des bruits de fond importants. N'utilisez ce filtre que si le bruit de fond du document est extrême, car il peut réduire la précision de la reconnaissance optique de caractères (OCR) des documents propres et sollicite fortement le processeur.
    • EnhanceResolution - Améliore la résolution des images de faible qualité. Ce filtre est rarement nécessaire car OcrInput.MinimumDPI et OcrInput.TargetDPI détecteront et résoudront automatiquement les entrées basse résolution.

Exemple et utilisation du filtre

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

Filtre de débogage / Que fait le filtre ?

Si vous rencontrez des difficultés pour lire les images ou les codes-barres dans votre programme, il existe un moyen d'enregistrer une image du résultat filtré. Ainsi, vous pouvez déboguer et voir exactement ce que fait chaque filtre 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

Tourner

Référence API

Explication du filtre

Rotate est un filtre utilisé pour définir manuellement une rotation connue à une image afin de la rapprocher le plus possible de la rectitude. IronOCR possède une fonctionnalité permettant d'exécuter Deskew() , cependant, le degré de tolérance pour cela est plutôt étroit et est mieux utilisé pour les images qui sont presque parfaitement droites (à 15 degrés près). Pour les images d'entrée décalées de 90 degrés ou à l'envers, nous devons appeler Rotate() .

Exemple de code de cas d'utilisation

Ceci est 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)`` After Input.Rotate(180)``
Screenshot related to Exemple de code de cas d'utilisation Screenshot Rotated related to Exemple de code de cas d'utilisation

Bureau

Référence API

Explication du filtre

Utilise une transformée de Hough pour tenter de redresser une image dans certaines limites de tolérance. Ceci est important pour les images qui ne sont pas parfaitement droites, car un document incliné peut entraîner une mauvaise interprétation.

Veuillez noterCette 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 ne contient aucun élément permettant de définir l'orientation.

Exemple de code de cas d'utilisation

Voici un exemple d'utilisation de Deskew pour corriger une image déformée :

: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
Before de redresser()`` After le désalignement()``
Paragraph Skewed related to Exemple de code de cas d'utilisation Paragraph Deskewed related to Exemple de code de cas d'utilisation

Échelle

Référence API

Explication du filtre

L'outil Échelle est un filtre de manipulation d'images utile qui permet de redimensionner une image en utilisant les pixels qu'elle possède déjà. Cela peut être utilisé lorsqu'un code-barres n'est pas scanné parce que l'image ne fait que quelques dizaines de pixels de large, chaque barre correspondant à un pixel, ou si le texte est trop petit et sans anticrénelage.

Il existe une taille optimale de 1000px x 1000px pour les codes-barres, permettant une lecture optimale. Si votre code-barres n'est pas détecté, tenez-en compte.

Exemple de code de cas d'utilisation

This is an example of calling Scale to enlarge the gaps between bars in a barcode for scanning:

: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()`` After l'échelle()``
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 comme noirs ou blancs, selon un algorithme adaptatif. Cela supprime toutes les couleurs et sépare le fond en un blanc uni, tout ce qui est reconnu comme du texte étant coloré en noir pour une lecture facile.

Exemple de code de cas d'utilisation

Voici un exemple d'utilisation de la fonction 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
Before Binariser()`` After Binariser()``
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 fonctionne de manière optimale lorsque l'image présente black text on a white background . Le filtre Inverser permet d'obtenir ce résultat en inversant toutes les couleurs d'une image.

Exemple de code de cas d'utilisation

Voici un exemple d'appel à la fonction Invert pour transformer du blanc sur noir en noir sur 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
Before After
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, ToGrayScale et Binariser dans IronOCR ajustent les couleurs des images pour améliorer la lisibilité du texte. Inverser change les schémas de couleur, ToGrayScale 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 de Contraste et d'Aiguisement ?

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

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

Pour sauvegarder et déboguer des images filtrées dans IronOCR, utilisez la fonction SaveAsImages après avoir appliqué des 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és disponibles dans IronOCR ?

IronOCR propose des filtres de morphologie avancés tels que Dilater et Éroder. Dilater ajoute des pixels aux frontières des objets pour améliorer les caractéristiques, tandis qu'Éroder les supprime, les deux étant utilisés pour clarifier les détails de l'image afin d'améliorer la 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,167,857 | Version: 2025.11 vient de sortir