Comment créer une reconnaissance de caractères en C#
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# ;
Créez un tout nouveau projet C# et donnez-lui un nom dans Visual Studio.
Installez la bibliothèque .NET IronOCR et incluez-la dans le dossier du projet.
Utilisez le IronOCR Tesseract pour lire le texte à partir des images.
Utilisez les fonctionnalités avancées de IronOCR pour lire le texte dans les images
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.
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
Visual Studio : Assurez-vous d'avoir installé Visual Studio ou tout autre environnement de développement C#.
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.
Indiquez ci-dessous le nom et l'emplacement du projet.
Sélectionnez la version .NET requise 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.
À l'aide du gestionnaire de paquets NuGet de Visual Studio, recherchez IronOCR et installez-le dans le dossier de votre projet.
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
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
Nous commençons par créer IronTesseract avec la configuration requise
Nous chargeons ensuite l'exemple d'image affiché dans l'objet OcrInput
Enfin, nous lisons le texte de l'image et l'affichons sur la console
Sortie
É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 :
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
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 :
Langue : Spécifie la langue pour l'OCR (dans ce cas, l'anglais).
Configuration : Un objet TesseractConfiguration qui permet une personnalisation plus poussée :
ReadBarCodes : Désactive la lecture des codes-barres.
BlackListCharacters : Spécifie les caractères à mettre sur liste noire (caractères à ne pas reconnaître).
WhiteListCharacters : Aucune liste blanche n'est spécifiée, tous les caractères sont autorisés.
PageSegmentationMode : Définit le mode de segmentation des pages sur "AutoOsd"
TesseractVariables : Aucune variable personnalisée n'a été utilisée.
MultiThreaded : Désactive le multithreading.
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.
Extraction de texte : La méthode Read est appelée sur ocrTesseract, en passant ocrInput.
Le résultat est stocké dans la variable ocrResult.
Sortie : Le texte extrait est affiché sur la console en utilisant Console.WriteLine(ocrResult.Text).
Sortie
É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.
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.
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.
Échelle :
Le filtre Échelle met à l'échelle proportionnellement les pages d'entrée de l'OCR.
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.
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.
Inverser :
Le filtre Invert inverse les couleurs : le blanc devient noir et le noir devient blanc.
ReplaceColor :
Le filtre ReplaceColor remplace une couleur spécifique dans une image par une autre couleur, en tenant compte d'un certain seuil.
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.
Dilate et Erode :
Ces filtres morphologiques avancés manipulent les limites des objets dans une image.
La dilatation ajoute des pixels aux limites de l'objet.
Erode supprime les pixels des limites de l'objet.
Aiguiser :
Le filtre Sharpen permet d'accentuer la netteté des documents OCR flous et d'aplatir les canaux alpha au blanc.
DeNoise :
Le filtre DeNoise supprime le bruit numérique. Utilisez-le lorsque du bruit est attendu.
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.
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
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é.
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.
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.
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.
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.
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é.
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.
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.
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
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) :
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 :
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 :
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#
Des millions d'ingénieurs dans le monde entier lui font confiance
Réservez une démo en direct gratuite
Réservez une démonstration personnelle de 30 minutes.
Pas de contrat, pas de détails de carte, pas d'engagements.
Voici ce à quoi vous pouvez vous attendre :
Une démonstration en direct de notre produit et de ses principales fonctionnalités
Obtenez des recommandations de fonctionnalités spécifiques au projet
Toutes vos questions trouvent réponse pour vous assurer de disposer de toutes les informations dont vous avez besoin. (Aucun engagement de votre part.)
CHOISIR L'HEURE
VOS INFORMATIONS
Réservez votre démo en direct gratuite
Fiable par plus de 2 millions d'ingénieurs dans le monde entier