UTILISATION DE L'IRONOCR

Comment créer une reconnaissance de caractères en C#

Kannaopat Udonpant
Kannapat Udonpant
avril 29, 2024
Partager:

Introduction

La technologie de la reconnaissance optique de caractères (OCR) permet la conversion de texte en formats numériques lisibles par machine. Lorsqu’un document est numérisé (comme une facture ou un reçu), il est enregistré par votre ordinateur sous forme de fichier image. Cependant, le texte à l’intérieur de l’image numérisée ne peut pas être modifié, cherché ou compté à l’aide d’un éditeur de texte ordinaire.

Cependant, l'OCR peut traiter l'image, extraire le texte et le transformer en un format de texte lisible par les ordinateurs. Il permet d'extraire du texte à partir de diverses sources, y compris des fichiers PDF et d'autres images numérisées. En outre, les capacités d'OCR vont au-delà de la simple extraction de texte pour inclure les principaux formats d'image et les documents PDF, en les convertissant en données OCR consultables.

En C#, les développeurs peuvent exploiter la puissance de l'OCR grâce à diverses bibliothèques, dont l'une est la puissante bibliothèque IronOCR de Iron Software. Dans ce tutoriel, nous explorerons les bases de la ROC et démontrerons comment utiliser IronOCR pour effectuer la reconnaissance de caractères efficacement en C#.

Comment créer une reconnaissance de caractères dans C# ;

  1. Créez un tout nouveau projet C# et donnez-lui un nom dans Visual Studio.

  2. Installez la bibliothèque .NET IronOCR et incluez-la dans le dossier du projet.

  3. Utilisez le IronOCR Tesseract pour lire le texte à partir des images.

  4. Utilisez les fonctionnalités avancées de IronOCR pour lire le texte dans les images

  5. Optimisation des performances de l'opération de lecture de IronOCR.

Premiers pas avec IronOCR

IronOCR, une bibliothèque C# développée par Iron Software, fournit des fonctionnalités OCR avancées. Il permet d'extraire avec précision du texte à partir d'images, de PDF et de documents numérisés. Avant de nous plonger dans le code, assurez-vous que vous avez installé IronOCR dans votre projet.

Caractéristiques clés de IronOCR de Iron Software

Moteur OCR Tesseract amélioré

IronOCR améliore les capacités du moteur Tesseract OCR largement utilisé en optimisant à la fois la précision et la rapidité. Il s'agit d'une solution robuste pour l'extraction de texte à partir de diverses sources, y compris les images, les PDF et d'autres formats de documents.

Large couverture linguistique

Prenant en charge plus de 127 langues, IronOCR est capable de répondre aux besoins multilingues, ce qui en fait un choix idéal pour les applications exigeant une polyvalence linguistique.

Choix de sorties polyvalentes

Le texte extrait peut être édité sous forme de texte simple ou de données structurées pour une intégration transparente dans les pipelines de traitement ultérieurs. En outre, IronOCR facilite la création de PDF consultables directement à partir d'images.

Adaptabilité multiplateforme

Conçu pour être compatible avec C#, F# et VB.NET, IronOCR fonctionne en toute transparence dans divers environnements .NET, notamment les versions 8, 7, 6, Core, Standard et Framework.

Tirer parti de Tesseract 5

IronOCR exploite la puissance de Tesseract 5, finement adapté pour une performance optimale au sein de l'écosystème .NET.

Capacité d'OCR par zone

Avec IronOCR, les utilisateurs peuvent définir avec précision des zones spécifiques dans les documents, ce qui permet un traitement OCR ciblé. Cette fonction améliore la précision et l'efficacité en concentrant la puissance de traitement là où elle est le plus nécessaire.

Outils de prétraitement d'images

La bibliothèque offre une suite de fonctionnalités de prétraitement d'images telles que le désalignement et la réduction du bruit. Ces outils garantissent des résultats de qualité supérieure, même lorsque les images sources sont imparfaites, ce qui améliore l'expérience globale de l'OCR.

Nous allons maintenant développer une application de démonstration qui utilise IronOCR pour lire du texte à partir d'images.

Conditions préalables

  1. Visual Studio : Assurez-vous d'avoir installé Visual Studio ou tout autre environnement de développement C#.

  2. Gestionnaire de packages NuGet : Assurez-vous que NuGet est présent afin de gérer les packages dans votre projet.

Étape 1 : Créer un nouveau projet C# dans Visual Studio

Pour commencer, créons une nouvelle application console à l'aide de Visual Studio, comme indiqué ci-dessous.

Comment créer la reconnaissance de caractères en C#: Figure 1 - Création d'un nouveau projet C# dans Visual Studio

Indiquez ci-dessous le nom et l'emplacement du projet.

Comment créer une reconnaissance de caractères en C#: Figure 2 - Fournir un nom de projet et l'emplacement où vous souhaitez l'enregistrer

Sélectionnez la version .NET requise pour le projet.

Comment créer une reconnaissance de caractères en C# : Figure 3 - Sélectionnez la version .NET appropriée pour le projet

Cliquez sur le bouton Créer pour créer le nouveau projet.

Étape 2 : Installez la bibliothèque IronOCR et intégrez-la à votre projet.

IronOCR est disponible dans la console du gestionnaire de packages NuGet comme illustré ci-dessous. Utilisez la commande fournie pour installer le paquet.

Comment créer une reconnaissance de caractères en C#: Figure 4 - Page de téléchargement du gestionnaire de packages NuGet d'IronOCR

À l'aide du gestionnaire de paquets NuGet de Visual Studio, recherchez IronOCR et installez-le dans le dossier de votre projet.

Comment créer une reconnaissance de caractères en C#: Figure 5 - Recherche d'IronOCR via l'onglet de navigation en utilisant NuGet Package Manager

Une fois installée, l'application est prête à utiliser IronOCR pour lire le texte à partir d'images.

Étape 3 : Utilisez le Tesseract IronOCR pour lire le texte à partir des images.

IronOCR se distingue en tant que bibliothèque .NET exclusive offrant les capacités OCR de Tesseract 5. À l'heure actuelle, elle a la particularité d'être la bibliothèque Tesseract 5 la plus sophistiquée, tous langages de programmation confondus. IronOCR intègre de manière transparente Tesseract 5 dans divers environnements .NET, notamment Framework, Standard, Core, Xamarin et Mono, garantissant ainsi une prise en charge complète dans l'ensemble de l'écosystème.

Considérons le fichier image ci-dessous comme entrée. Voyons maintenant comment lire le texte dans ce fichier image

Comment créer une reconnaissance de caractères en C# : Figure 6 - Exemple d'entrée

using IronOcr;
public class Program
{
    public static void Main(String [] args)
    {
        var ocrTesseract = new IronTesseract(); 
    using var ocrInput = new OcrInput();
    ocrInput.LoadImage(@"sample1.png");
    var ocrResult = ocrTesseract.Read(ocrInput);
    Console.WriteLine(ocrResult.Text);
    }
}
using IronOcr;
public class Program
{
    public static void Main(String [] args)
    {
        var ocrTesseract = new IronTesseract(); 
    using var ocrInput = new OcrInput();
    ocrInput.LoadImage(@"sample1.png");
    var ocrResult = ocrTesseract.Read(ocrInput);
    Console.WriteLine(ocrResult.Text);
    }
}
Imports IronOcr
Public Class Program
	Public Shared Sub Main(ByVal args() As String)
		Dim ocrTesseract = New IronTesseract()
	Dim ocrInput As New OcrInput()
	ocrInput.LoadImage("sample1.png")
	Dim ocrResult = ocrTesseract.Read(ocrInput)
	Console.WriteLine(ocrResult.Text)
	End Sub
End Class
$vbLabelText   $csharpLabel

Explication du code

  1. Nous commençons par créer IronTesseract avec la configuration requise

  2. Nous chargeons ensuite l'exemple d'image affiché dans l'objet OcrInput

  3. Enfin, nous lisons le texte de l'image et l'affichons sur la console

Sortie

Comment créer une reconnaissance de caractères en C#: Figure 7 - Texte extrait à l'aide de IronOCR

Étape 4 : Utilisez les fonctionnalités avancées de IronOCR pour lire le texte dans les images

L'objet IronTesseract.Configuration permet aux utilisateurs avancés d'accéder à l'API Tesseract sous-jacente au sein de C#/.NET, ce qui permet une configuration détaillée de l'installation en vue d'un réglage fin et d'une optimisation. Voici quelques-unes des configurations avancées possibles

Sélection de la langue

Vous pouvez spécifier la langue de l'OCR à l'aide de la propriété Language. Par exemple, pour régler la langue sur l'anglais, utilisez :

IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.English
$vbLabelText   $csharpLabel

Mode de segmentation de page

Le PageSegmentationMode détermine la manière dont Tesseract segmente l'image d'entrée. Les options comprennent AutoOsd, SingleBlock, SingleLine, etc. Par exemple :

ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd
$vbLabelText   $csharpLabel

Variables Tesseract personnalisées

Vous pouvez affiner Tesseract en définissant des variables spécifiques. Par exemple, pour désactiver la parallélisation :

ocr.Configuration.TesseractVariables ["tessedit_parallelize"] = false;
ocr.Configuration.TesseractVariables ["tessedit_parallelize"] = false;
ocr.Configuration.TesseractVariables ("tessedit_parallelize") = False
$vbLabelText   $csharpLabel

Liste blanche et liste noire de caractères

Utilisez WhiteListCharacters et BlackListCharacters pour contrôler les caractères reconnus par Tesseract. Par exemple :

ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ocr.Configuration.BlackListCharacters = "`ë
^";
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ocr.Configuration.BlackListCharacters = "`ë
^";
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
ocr.Configuration.BlackListCharacters = "`ë ^"
$vbLabelText   $csharpLabel

Variables de configuration supplémentaires

Explorez d'autres variables de configuration de Tesseract pour personnaliser le comportement en fonction de vos besoins. Par exemple :

ocr.Configuration.TesseractVariables ["classify_num_cp_levels"] = 3;
ocr.Configuration.TesseractVariables ["textord_debug_tabfind"] = 0;
// ... (more variables)
ocr.Configuration.TesseractVariables ["classify_num_cp_levels"] = 3;
ocr.Configuration.TesseractVariables ["textord_debug_tabfind"] = 0;
// ... (more variables)
ocr.Configuration.TesseractVariables ("classify_num_cp_levels") = 3
ocr.Configuration.TesseractVariables ("textord_debug_tabfind") = 0
' ... (more variables)
$vbLabelText   $csharpLabel

Essayons maintenant de décoder la même image en utilisant les paramètres avancés

using IronOcr;
public class Program
{
    public static void Main()
    {
        Console.WriteLine("Decoding using advanced features");
        var ocrTesseract = new IronTesseract() // create instance
        {
            Language = OcrLanguage.EnglishBest, // configure best english language
            Configuration = new TesseractConfiguration()
            {
                ReadBarCodes = false, // read bar codes false
                BlackListCharacters = "`ë
^", // black listed characters
                WhiteListCharacters = null, // no white list, allow all
                PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd,
                TesseractVariables = null, // no custom variable used
            },
            MultiThreaded = false,
        };
        using var ocrInput = new OcrInput(); // create a disposible ocr input object
        ocrInput.AddImage(@"sample1.png"); // load the sample image 
        var ocrResult = ocrTesseract.Read(ocrInput); // read the text from the image
        Console.WriteLine(ocrResult.Text);// output the image
    }
}
using IronOcr;
public class Program
{
    public static void Main()
    {
        Console.WriteLine("Decoding using advanced features");
        var ocrTesseract = new IronTesseract() // create instance
        {
            Language = OcrLanguage.EnglishBest, // configure best english language
            Configuration = new TesseractConfiguration()
            {
                ReadBarCodes = false, // read bar codes false
                BlackListCharacters = "`ë
^", // black listed characters
                WhiteListCharacters = null, // no white list, allow all
                PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd,
                TesseractVariables = null, // no custom variable used
            },
            MultiThreaded = false,
        };
        using var ocrInput = new OcrInput(); // create a disposible ocr input object
        ocrInput.AddImage(@"sample1.png"); // load the sample image 
        var ocrResult = ocrTesseract.Read(ocrInput); // read the text from the image
        Console.WriteLine(ocrResult.Text);// output the image
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Explication du code

  1. Configuration d'IronOCR : Une instance d'IronTesseract (la classe principale d'IronOCR) est créée et assignée à la variable ocrTesseract.

    Les paramètres de configuration sont appliqués à ocrTesseract :

    1. Langue : Spécifie la langue pour l'OCR (dans ce cas, l'anglais).

    2. Configuration : Un objet TesseractConfiguration qui permet une personnalisation plus poussée :

    3. ReadBarCodes : Désactive la lecture des codes-barres.

    4. BlackListCharacters : Spécifie les caractères à mettre sur liste noire (caractères à ne pas reconnaître).

    5. WhiteListCharacters : Aucune liste blanche n'est spécifiée, tous les caractères sont autorisés.

    6. PageSegmentationMode : Définit le mode de segmentation des pages sur "AutoOsd"

    7. TesseractVariables : Aucune variable personnalisée n'a été utilisée.
    1. MultiThreaded : Désactive le multithreading.
  1. Entrée OCR et Chargement d'Image : Un bloc using crée un objet ocrInput jetable de type OcrInput. Le fichier image "sample1.png" est ajouté à ocrInput.

  2. Extraction de texte : La méthode Read est appelée sur ocrTesseract, en passant ocrInput.

  3. Le résultat est stocké dans la variable ocrResult.

  4. Sortie : Le texte extrait est affiché sur la console en utilisant Console.WriteLine(ocrResult.Text).

Sortie

Comment créer la reconnaissance de caractères en C# : Figure 8 - Texte extrait à l'aide de IronOCR

Étape 5 : Optimisation des performances de l'opération de lecture d'IronOCR.

Lorsque vous travaillez avec IronOCR, vous avez accès à divers filtres d'image qui peuvent aider à prétraiter les images avant d'effectuer l'OCR. Ces filtres optimisent la qualité de l'image, améliorent la visibilité et réduisent le bruit ou les artefacts. Ils permettent d'améliorer les performances de l'opération d'OCR.

  1. Pivoter :

    Le filtre Rotation permet de faire 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.

  2. Correction de biais :

    Le filtre Deskew corrige l'obliquité de l'image, en veillant à ce que le texte soit droit et orthogonal. Ceci est particulièrement utile pour l'OCR, car Tesseract fonctionne mieux avec des scans correctement orientés.

  3. Échelle :

    Le filtre Échelle met à l'échelle proportionnellement les pages d'entrée de l'OCR.

  4. Binariser :

    Le filtre Binarize convertit chaque pixel en noir ou en blanc, sans zone intermédiaire. Il permet d'améliorer les performances de l'OCR en cas de très faible contraste entre le texte et l'arrière-plan.

  5. ToGrayScale :

    Le filtre ToGrayScale convertit chaque pixel en une nuance de gris. Bien qu'il soit peu probable qu'elle améliore de manière significative la précision de l'OCR, elle peut en améliorer la vitesse.

  6. Inverser :

    Le filtre Invert inverse les couleurs : le blanc devient noir et le noir devient blanc.

  7. ReplaceColor :

    Le filtre ReplaceColor remplace une couleur spécifique dans une image par une autre couleur, en tenant compte d'un certain seuil.

  8. Contraste :

    Le filtre Contraste augmente automatiquement le contraste. Il améliore souvent la vitesse et la précision de l'OCR dans les numérisations à faible contraste.

  9. Dilate et Erode :

    Ces filtres morphologiques avancés manipulent les limites des objets dans une image.

    1. La dilatation ajoute des pixels aux limites de l'objet.
    1. Erode supprime les pixels des limites de l'objet.

    2. Aiguiser :

      Le filtre Sharpen permet d'accentuer la netteté des documents OCR flous et d'aplatir les canaux alpha au blanc.

    3. DeNoise :

      Le filtre DeNoise supprime le bruit numérique. Utilisez-le lorsque du bruit est attendu.

    4. DeepCleanBackgroundNoise :

      Ce filtre de suppression du bruit de fond important ne doit être utilisé que lorsque le bruit de fond extrême du document est connu. Elle peut réduire la précision de l'OCR pour les documents propres et est gourmande en ressources humaines.

    5. EnhanceResolution :

      Le filtre EnhanceResolution améliore la résolution des images de faible qualité. Elle n'est pas souvent nécessaire en raison de la gestion automatique de la résolution.

    Voici un exemple d'application de filtres à l'aide d'IronOCR en C# :

var ocr = new IronTesseract();
var input = new OcrInput();
input.LoadImage("sample.png");
input.Deskew();
var result = ocr.Read(input);
Console.WriteLine(result.Text);
var ocr = new IronTesseract();
var input = new OcrInput();
input.LoadImage("sample.png");
input.Deskew();
var result = ocr.Read(input);
Console.WriteLine(result.Text);
Dim ocr = New IronTesseract()
Dim input = New OcrInput()
input.LoadImage("sample.png")
input.Deskew()
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
$vbLabelText   $csharpLabel

Applications courantes de l'OCR

  1. Numérisation de documents : L'OCR est largement utilisé pour convertir des documents papier scannés, tels que des factures, reçus, formulaires et contrats, en formats numériques. Ce processus de numérisation rationalise le stockage, la récupération et la gestion des documents, réduisant ainsi l'encombrement du papier et améliorant l'efficacité.

  2. Extraction de données : l'OCR permet l'extraction de texte et de données à partir de documents numérisés, d'images et de PDFs. Ces données extraites peuvent être utilisées pour la saisie automatisée de données, l'analyse de contenu, l'indexation et l'intégration dans des bases de données ou des systèmes d'entreprise.

  3. Reconnaissance de texte dans les images : La technologie OCR permet d'extraire du texte à partir de documents imprimés et d'images à des fins d'indexation et de recherche. Cette capacité est utilisée dans diverses applications, notamment la réalité augmentée, les moteurs de recherche basés sur l'image et les services de traduction.

  4. Reconnaissance automatique des plaques d'immatriculation (ALPR) : Les systèmes ALPR utilisent l'OCR pour lire les numéros de plaques d'immatriculation à partir d'images ou de flux vidéo capturés par des caméras installées dans des applications de surveillance du trafic, de gestion de stationnement, de perception de péage et d'application de la loi.

  5. Solutions d'accessibilité : L'OCR joue un rôle crucial dans la création de contenus accessibles pour les personnes malvoyantes. En convertissant le texte des images ou des documents en parole ou en braille, l'OCR contribue à rendre l'information accessible aux personnes handicapées.

  6. Vérification d'identité : La technologie OCR est utilisée dans les processus de vérification d'identité, tels que la numérisation et le traitement de documents d'identité comme les passeports, les permis de conduire et les cartes d'identité. Il permet de vérifier l'authenticité des documents et d'extraire des informations pertinentes à des fins de vérification de l'identité.

  7. Bancaire et Finance : L'OCR est utilisé dans le secteur bancaire et financier pour des tâches telles que la lecture des chèques, le traitement des factures, la conversion d'un document PDF existant, l'extraction de données à partir d'états financiers et l'automatisation des flux de travail basés sur des documents pour améliorer la précision et l'efficacité des opérations financières.

  8. Traduction automatisée : La technologie OCR est intégrée dans les outils de traduction et les applications d'apprentissage des langues pour convertir le texte imprimé d'une langue à une autre. Les utilisateurs peuvent saisir du texte à l'aide de leur appareil et l'OCR les aide à le traduire dans la langue souhaitée en temps réel.

  9. Préservation des documents archivistiques et historiques : L'OCR est utilisé pour numériser les matériaux d'archives et les documents historiques, les préservant dans des formats numériques pour un accès, une recherche et une analyse futurs tout en assurant la préservation du précieux patrimoine culturel.

Conditions d'obtention de la licence

IronOCR. Fournissez les détails ci-dessous pour recevoir la clé à votre adresse électronique

Comment créer la reconnaissance de caractères en C# : Figure 9 - Page de licence d'essai de IronPDF

Une fois la clé obtenue, soit par achat, soit par essai gratuit, suivez les étapes suivantes pour utiliser la clé

Définir votre clé de licence : Définissez votre clé de licence IronOCR à l'aide du code. Ajoutez la ligne suivante au démarrage de votre application (avant d'utiliser IronOCR) :

IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01";
IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01";
IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01"
$vbLabelText   $csharpLabel

Clé d'Application Globale (Web.Config ou App.Config) : Pour appliquer une clé globalement à travers votre application, utilisez le fichier de configuration (Web.Config ou App.Config). Ajoutez la clé suivante à votre appSettings :

<configuration>
    <!-- Other settings -->
    <appSettings>
        <add key="IronOcr.LicenseKey" value="IRONOCR-MYLICENSE-KEY-1EF01"/>
    </appSettings>
</configuration>
XML

Utilisation de .NET Core appsettings.json : Pour les applications .NET Core, créez un fichier appsettings.json dans le répertoire racine de votre projet. Remplacez la clé "IronOcr.LicenseKey" par la valeur de votre licence :

{
    "IronOcr.LicenseKey": "IRONOCR-MYLICENSE-KEY-1EF01"
}
{
    "IronOcr.LicenseKey": "IRONOCR-MYLICENSE-KEY-1EF01"
}
If True Then
	"IronOcr.LicenseKey": "IRONOCR-MYLICENSE-KEY-1EF01"
End If
$vbLabelText   $csharpLabel

Tester votre clé de licence : Vérifiez que votre clé a été installée correctement en la testant :

bool result = IronOcr.License.IsValidLicense("IRONOCR-MYLICENSE-KEY-1EF01");
bool result = IronOcr.License.IsValidLicense("IRONOCR-MYLICENSE-KEY-1EF01");
Dim result As Boolean = IronOcr.License.IsValidLicense("IRONOCR-MYLICENSE-KEY-1EF01")
$vbLabelText   $csharpLabel

Conclusion

En conclusion, IronOCR, qui commence à $749. Adoptez la puissance de l'OCR avec IronOCR et libérez un monde de possibilités dans vos projets C#.

Kannaopat Udonpant
Ingénieur logiciel
Avant de devenir ingénieur logiciel, Kannapat a obtenu un doctorat en ressources environnementales à l'université d'Hokkaido au Japon. Tout en poursuivant ses études, Kannapat est également devenu membre du Vehicle Robotics Laboratory, qui fait partie du Department of Bioproduction Engineering (département d'ingénierie de la bioproduction). En 2022, il a mis à profit ses compétences en C# pour rejoindre l'équipe d'ingénieurs d'Iron Software, où il se concentre sur IronPDF. Kannapat apprécie son travail car il apprend directement auprès du développeur qui écrit la majeure partie du code utilisé dans IronPDF. Outre l'apprentissage par les pairs, Kannapat apprécie l'aspect social du travail chez Iron Software. Lorsqu'il n'écrit pas de code ou de documentation, Kannapat peut généralement être trouvé en train de jouer sur sa PS5 ou de revoir The Last of Us.
< PRÉCÉDENT
Comment réaliser l'OCR de l'immatriculation d'un véhicule en C#
SUIVANT >
Comment lire des documents d'identité à l'aide de l'OCR en C#