How to Build an Azure OCR Service using IronOCR

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

Iron Software a créé une bibliothèque OCR (reconnaissance optique de caractères) qui élimine les problèmes d'interopérabilité liés à l'intégration de l'OCR Azure. Travailler avec des bibliothèques OCR sur Azure a toujours été un peu pénible pour les développeurs. La solution à ce problème et à bien d'autres maux de tête liés à l'OCR est IronOCR.

Fonctionnalités d'IronOCR pour Microsoft Azure

IronOCR comprend les fonctionnalités suivantes pour construire un service d'OCR sur Microsoft Azure :

  • Transforme les PDF en documents consultables afin d'en extraire facilement le texte
  • Transforme les images en documents consultables en extrayant le texte des images
  • Lit les codes-barres ainsi que les codes QR
  • Précision exceptionnelle
  • SaaS (Software as a Service) est un modèle de distribution de logiciels dans lequel un fournisseur de services en nuage, tel que Microsoft Azure, héberge diverses applications et les met à la disposition des utilisateurs finaux.
  • Une vitesse fulgurante

Voyons comment le meilleur moteur d'OCR, Iron Software's IronOCR, permet aux développeurs d'extraire plus facilement du texte à partir de n'importe quel document d'entrée.

Démarrons avec notre service Azure OCR

Pour commencer à utiliser l'exemple, nous devons d'abord installer IronOCR.

  1. Créez une nouvelle application Console avec C#.
  2. Installez IronOCR via NuGet soit en entrant : Install-Package IronOcr ou en sélectionnant Gérer les packages NuGet et en recherchant IronOCR. La traduction est illustrée ci-dessous.
  3. Modifiez votre fichier Program.cs pour qu'il ressemble à ce qui suit :

    • Nous importons l'espace de noms IronOcr afin d'utiliser ses capacités de reconnaissance optique de caractères pour lire et extraire le contenu du fichier PDF.
    • Nous créons un nouvel objet IronTesseract afin de pouvoir extraire du texte d'une image.
using IronOcr;
using System;

namespace IronOCR_Ex
{
    class Program
    {
        static void Main(string[] args)
        {
            var ocr = new IronTesseract();
            using (var Input = new OcrInput("..\\Images\\Purgatory.PNG"))
            {
                var result = ocr.Read(Input); // Read PNG image File
                Console.WriteLine(result.Text); // Output extracted text to console
                Console.ReadLine();
            }
        }
    }
}
using IronOcr;
using System;

namespace IronOCR_Ex
{
    class Program
    {
        static void Main(string[] args)
        {
            var ocr = new IronTesseract();
            using (var Input = new OcrInput("..\\Images\\Purgatory.PNG"))
            {
                var result = ocr.Read(Input); // Read PNG image File
                Console.WriteLine(result.Text); // Output extracted text to console
                Console.ReadLine();
            }
        }
    }
}
Imports IronOcr
Imports System

Namespace IronOCR_Ex
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			Dim ocr = New IronTesseract()
			Using Input = New OcrInput("..\Images\Purgatory.PNG")
				Dim result = ocr.Read(Input) ' Read PNG image File
				Console.WriteLine(result.Text) ' Output extracted text to console
				Console.ReadLine()
			End Using
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel
  1. Ensuite, nous ouvrons une image nommée Purgatory.PNG. Cette image fait partie de la Divine Comédie de Dante, l'un de mes livres préférés. L'image ressemble à l'image suivante.

Le texte à extraire avec les capacités de lecture optique de caractères d'IronOCR

Figure 2 - Le texte à extraire avec les capacités de lecture optique de caractères d'IronOcr

  1. Le résultat après le texte ci-dessus a été extrait du texte de l'image d'entrée ci-dessus.

Texte extrait

Figure 3 - Texte extrait

  1. Faisons de même avec un document PDF. Le document PDF contient le même texte à extraire que la figure 2.

La seule différence est que nous utiliserons un document PDF au lieu d'une image. Entrez le code suivant :

var OCR = new IronTesseract();
using (var input = new OcrInput())
{
    input.Title = "Divine Comedy - Purgatory"; // Give title to input document 
    // Supply optional password and name of document
    input.AddPdf("..\\Documents\\Purgatorio.pdf", "dante");
    var result = OCR.Read(input); // Read the input file

    result.SaveAsSearchablePdf("SearchablePDFDocument.pdf"); 
}
var OCR = new IronTesseract();
using (var input = new OcrInput())
{
    input.Title = "Divine Comedy - Purgatory"; // Give title to input document 
    // Supply optional password and name of document
    input.AddPdf("..\\Documents\\Purgatorio.pdf", "dante");
    var result = OCR.Read(input); // Read the input file

    result.SaveAsSearchablePdf("SearchablePDFDocument.pdf"); 
}
Dim OCR = New IronTesseract()
Using input = New OcrInput()
	input.Title = "Divine Comedy - Purgatory" ' Give title to input document
	' Supply optional password and name of document
	input.AddPdf("..\Documents\Purgatorio.pdf", "dante")
	Dim result = OCR.Read(input) ' Read the input file

	result.SaveAsSearchablePdf("SearchablePDFDocument.pdf")
End Using
$vbLabelText   $csharpLabel

Ce code est presque identique au code précédent qui extrait le texte d'une image.

Ici, nous utilisons la méthode OcrInput pour lire le document PDF actuel, dans ce cas : Purgatorio.pdf. Si le fichier PDF contient des métadonnées, telles qu'un titre ou un mot de passe, nous pouvons également les intégrer.

Le résultat est sauvegardé sous la forme d'un document PDF consultable dans lequel nous pouvons rechercher le texte.

Remarque : si le fichier PDF est trop volumineux, une exception peut être levée.

  1. Assez sur les applications Windows ; voyons comment nous pouvons utiliser l'OCR avec Microsoft Azure.

La beauté d'IronOcr est qu'il fonctionne très bien avec Microsoft Azure en tant que fonction Azure dans une architecture microservice. Voici un exemple très rapide de ce à quoi ressemblerait une fonction Microsoft Azure qui fonctionne avec IronOcr. Cette fonction Microsoft Azure extrait du texte à partir d'images.

public static class OCRFunction
{
    public static HttpClient hcClient = new HttpClient();

    [FunctionName("IronOCRFunction_EX")]
    public static async Task<IActionResult> Run([HttpTrigger] HttpRequest hrRequest, ExecutionContext ecContext)
    {
        var URI = hrRequest.Query["image"];
        var saStream = await hcClient.GetStreamAsync(URI);

        var ocr = new IronTesseract();
        using (var inputOCR = new OcrInput(saStream))
        {
            var outputOCR = ocr.Read(inputOCR);
            return new OkObjectResult(outputOCR.Text);
        }
    }
} 
public static class OCRFunction
{
    public static HttpClient hcClient = new HttpClient();

    [FunctionName("IronOCRFunction_EX")]
    public static async Task<IActionResult> Run([HttpTrigger] HttpRequest hrRequest, ExecutionContext ecContext)
    {
        var URI = hrRequest.Query["image"];
        var saStream = await hcClient.GetStreamAsync(URI);

        var ocr = new IronTesseract();
        using (var inputOCR = new OcrInput(saStream))
        {
            var outputOCR = ocr.Read(inputOCR);
            return new OkObjectResult(outputOCR.Text);
        }
    }
} 
Public Module OCRFunction
	Public hcClient As New HttpClient()

	<FunctionName("IronOCRFunction_EX")>
	Public Async Function Run(<HttpTrigger> ByVal hrRequest As HttpRequest, ByVal ecContext As ExecutionContext) As Task(Of IActionResult)
		Dim URI = hrRequest.Query("image")
		Dim saStream = Await hcClient.GetStreamAsync(URI)

		Dim ocr = New IronTesseract()
		Using inputOCR = New OcrInput(saStream)
			Dim outputOCR = ocr.Read(inputOCR)
			Return New OkObjectResult(outputOCR.Text)
		End Using
	End Function
End Module
$vbLabelText   $csharpLabel

L'image reçue par la fonction est directement transmise au moteur de reconnaissance optique de caractères (OCR) pour produire le texte extrait.

Un bref rappel sur Microsoft Azure selon Microsoft :

Les microservices de Microsoft Azure sont une approche architecturale de la construction d'applications où chaque fonction centrale, ou service, est construite et déployée de manière indépendante. L'architecture microservice est distribuée et faiblement couplée, de sorte que la défaillance d'un composant n'affecte pas l'ensemble de l'application. Les composants indépendants travaillent ensemble et communiquent à l'aide de contrats d'API bien définis. Créez des applications microservices pour répondre à l'évolution rapide des besoins de l'entreprise et mettez plus rapidement de nouvelles fonctionnalités sur le marché.

Quelques autres caractéristiques d'IronOCR for .NET ou Microsoft Azure sont notamment les suivantes:

  • La capacité d'effectuer une reconnaissance optique de caractères (OCR) sur presque tous les fichiers, images ou PDF.
  • Une vitesse fulgurante in processing OCR input
  • Précision exceptionnelle
  • Lecture des codes-barres et des codes QR
  • Exécution locale, sans SaaS
  • Peut transformer des PDF et des images en documents consultables
  • Une excellente alternative à Azure OCR de Microsoft Cognitive Services

Filtres d'images pour améliorer les performances de l'OCR

  • OcrInput.Rotate - Fait pivoter les images de plusieurs 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.
  • OcrInput.Binarize() - Ce filtre d'image transforme chaque pixel en noir ou en blanc, sans zone intermédiaire. Cela permet d'améliorer les performances de l'OCR.
  • OcrInput.ToGrayScale() - Ce filtre d'image transforme chaque pixel en une nuance de gris. Cela permet d'améliorer la vitesse de l'OCR.
  • OcrInput.Contrast() - Augmente le contraste automatiquement. Ce filtre améliore la vitesse et la précision de l'OCR dans les scans à faible contraste.
  • OcrInput.DeNoise() - Supprime le bruit numérique. Ce filtre ne doit être utilisé que lorsque du bruit est attendu dans les documents d'entrée.
  • OcrInput.Invert() - Inverse toutes les couleurs.
  • OcrInput.Dilate() - La dilatation ajoute des pixels aux limites de tout objet dans une image.
  • OcrInput.Erode() - L'érosion supprime les pixels sur les limites de l'objet.
  • OcrInput.Deskew() - Fait pivoter une image pour 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 obliques peut être aussi basse que 5 degrés.
  • OcrInput.DeepCleanBackgroundNoise() - Suppression des bruits de fond importants.
  • OcrInput.EnhanceResolution - Améliore la résolution d'une image de faible qualité.

Vitesse des performances

Voici un exemple :

var OCR = new IronTesseract();
OCR.Configuration.BlackListCharacters = "~`$#^*_}{][|\\";
OCR.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto;
OCR.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
OCR.Configuration.EngineMode = TesseractEngineMode.LstmOnly;
OCR.Language = OcrLanguage.EnglishFast;
using (var Input = new OcrInput("..\\Images\\Purgatory.PNG"))
{
    var Result = OCR.Read(Input);
    Console.WriteLine(Result.Text);
}
var OCR = new IronTesseract();
OCR.Configuration.BlackListCharacters = "~`$#^*_}{][|\\";
OCR.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto;
OCR.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
OCR.Configuration.EngineMode = TesseractEngineMode.LstmOnly;
OCR.Language = OcrLanguage.EnglishFast;
using (var Input = new OcrInput("..\\Images\\Purgatory.PNG"))
{
    var Result = OCR.Read(Input);
    Console.WriteLine(Result.Text);
}
Dim OCR = New IronTesseract()
OCR.Configuration.BlackListCharacters = "~`$#^*_}{][|\"
OCR.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto
OCR.Configuration.TesseractVersion = TesseractVersion.Tesseract5
OCR.Configuration.EngineMode = TesseractEngineMode.LstmOnly
OCR.Language = OcrLanguage.EnglishFast
Using Input = New OcrInput("..\Images\Purgatory.PNG")
	Dim Result = OCR.Read(Input)
	Console.WriteLine(Result.Text)
End Using
$vbLabelText   $csharpLabel

Prix et options de licence

Il existe essentiellement trois niveaux de licence payante qui fonctionnent tous selon le principe de l'achat unique et de la licence à vie.

Et oui, ces outils sont gratuits à des fins de développement.

Plus d'informations

Fonctionnalités d'IronOCR pour les applications .NET exécutant l'OCR sur Azure et d'autres systèmes

  • IronOCR prend en charge 125 langues internationales. Chaque langue est disponible en qualité Rapide, Standard et Meilleure. Voici quelques-uns des packs linguistiques disponibles :
    • Bulgare
    • Arménien
    • Croate
    • Afrikaans
    • Danois
    • Tchèque
    • Philippin
    • Le finnois
    • Le français
    • Allemand
    • De nombreux autres packs linguistiques sont disponibles. Pour les consulter, veuillez cliquer sur le lien suivant. Packs de langues IronOCR
  • Il fonctionne dès le départ avec .NET
    • Prise en charge de Xamarin
    • Prise en charge de Mono
    • Prise en charge de Microsoft Azure
    • Prise en charge de Docker sur Microsoft Azure
    • Prise en charge des documents PDF
    • Prise en charge des Tiffs multiframes
    • Prise en charge des principaux formats d'image
  • Les .NET Frameworks suivants sont pris en charge :
    • .NET Framework 4.5 et supérieur
    • .NET Standard 2
    • .NET Core 2
    • .NET Core 3
    • .NET Core 5
  • Il n'est pas nécessaire d'avoir installé Tesseract (un moteur OCR open-source qui prend en charge l'Unicode et plus de 100 langues) pour qu'IronOCR fonctionne.
    • La précision a été améliorée par rapport à Tesseract.
    • La vitesse a été améliorée par rapport à Tesseract.
  • Corrige les numérisations de mauvaise qualité de documents ou de fichiers.
  • Corrige les scans biaisés de mauvaise qualité de documents ou de fichiers.

Qu'est-ce que la reconnaissance optique de caractères (OCR) ? Selon Wikipédia : La reconnaissance optique de caractères est la conversion électronique ou mécanique d'images de textes dactylographiés ou imprimés en textes codés par une machine, que ce soit à partir d'un document scanné, d'une photo d'un document, d'une photo de scène ou d'un texte de sous-titres superposé à une image. OCR signifie Optical Character Recognition (reconnaissance optique de caractères). Il existe essentiellement quatre types de reconnaissance optique de caractères : * OCR - Optical Character Recognition (reconnaissance optique de caractères), cible le texte dactylographié à partir d'un document d'entrée, un caractère ou un glyphe (symbole élémentaire au sein d'un ensemble convenu de symboles, par exemple "a" dans différentes polices de caractères) à la fois. * OWR - Optical Word Recognition (reconnaissance optique de mots), cible le texte dactylographié à partir d'un document d'entrée, un mot à la fois. * ICR - Intelligent Character Recognition (reconnaissance intelligente de caractères), cible les textes imprimés tels que les caractères d'imprimerie (caractères non reliés à d'autres lettres) et les textes cursifs, un caractère ou un glyphe à la fois. * IWR - Intelligent Word Recognition (reconnaissance intelligente des mots), cible les textes en cursive.

Questions Fréquemment Posées

Comment puis-je intégrer des capacités OCR dans une application C# sur Azure ?

Vous pouvez intégrer des capacités OCR dans une application C# sur Azure en créant une nouvelle application Console et en installant IronOCR via NuGet. Utilisez la commande Install-Package IronOcr ou recherchez IronOCR dans le gestionnaire de paquets NuGet.

Quels sont les avantages d'utiliser IronOCR par rapport au service OCR natif d'Azure ?

IronOCR offre plusieurs avantages par rapport au service OCR natif d'Azure, y compris une précision améliorée, des vitesses de traitement plus rapides et la capacité à fonctionner localement sans nécessiter de SaaS. Il prend également en charge un large éventail de langues et offre des filtres d'image pour améliorer les performances OCR.

Comment configurer une fonction Microsoft Azure pour l'extraction de texte OCR ?

Pour configurer une fonction Microsoft Azure pour l'extraction de texte OCR, vous pouvez utiliser IronOCR pour créer une fonction qui extrait du texte des images. Cela fait partie d'une architecture de microservice, vous permettant d'intégrer des capacités OCR de manière transparente dans vos applications Azure.

IronOCR peut-il gérer plusieurs langues lors du traitement OCR ?

Oui, IronOCR prend en charge 125 langues internationales, chacune disponible en qualité Rapide, Standard et Meilleure, ce qui le rend polyvalent pour les applications mondiales.

Quelles options de traitement d'image IronOCR offre-t-il pour améliorer la précision OCR ?

IronOCR propose une variété d'options de traitement d'image telles que Rotation, Binarisation, en Niveaux de Gris, Contraste, Suppression de Bruit, Inversion, Dilatation, Érosion, Désinclinaison, Nettoyage de Bruit de Fond, et Amélioration de Résolution pour améliorer la précision et la fiabilité des résultats OCR.

IronOCR est-il compatible avec divers frameworks .NET pour le déploiement sur Azure ?

Oui, IronOCR est compatible avec .NET Framework 4.5 et supérieur, .NET Standard 2, .NET Core 2, .NET Core 3, et .NET Core 5. Il prend également en charge Xamarin, Mono, et peut être déployé avec Docker sur Microsoft Azure.

Ai-je besoin de logiciels supplémentaires pour exécuter IronOCR sur Azure ?

Aucun logiciel supplémentaire n'est requis pour exécuter IronOCR sur Azure. Il fonctionne indépendamment et fournit une précision et une vitesse améliorées par rapport à Tesseract sans nécessiter son installation.

Quelles options de licences sont disponibles pour IronOCR ?

IronOCR offre trois niveaux de licence payante basés sur un modèle d'achat unique, de licence à vie. Ces licences sont gratuites à des fins de développement, offrant une flexibilité pour la mise à l'échelle des projets.

Comment puis-je convertir des images et des PDF en documents consultables en utilisant IronOCR ?

IronOCR vous permet de convertir des images et des PDF en documents consultables en utilisant ses capacités OCR pour extraire et reconnaître du texte, les rendant facilement consultables et indexables.

Quel est le processus d'utilisation d'IronOCR pour lire les codes-barres et les codes QR ?

IronOCR peut lire les codes-barres et les codes QR en utilisant ses fonctionnalités intégrées pour scanner et extraire les données de ces codes, facilitant leur intégration dans les applications C# sur Azure.

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
Prêt à commencer?
Nuget Téléchargements 5,044,537 | Version : 2025.11 vient de sortir