Comment créer un service OCR Azure avec 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é de l'intégration d'Azure OCR. L'utilisation des bibliothèques OCR sur Azure a toujours été un peu fastidieuse pour les développeurs. La solution à ce problème et à bien d'autres en matière d'OCR est IronOCR.

Fonctionnalités IronOCR pour Microsoft Azure

IronOCR inclut les fonctionnalités suivantes pour la création d'un service OCR sur Microsoft Azure :

  • Transforme les PDF en documents consultables pour faciliter l'extraction de 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
  • Fonctionne localement et ne nécessite aucun SaaS (Software as a Service), qui est un modèle de distribution de logiciels où un fournisseur de cloud, tel que Microsoft Azure, héberge diverses applications et les met à la disposition des utilisateurs finaux.
  • Vitesse fulgurante

Voyons comment le meilleur moteur OCR, IronOCR d'Iron Software, facilite l'extraction de texte à partir de n'importe quel document d'entrée pour les développeurs.

Commençons par notre service Azure OCR

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

  1. Créez une nouvelle application console avec C#.
  2. Installez IronOCR via NuGet soit en saisissant : Install-Package IronOcr soit en sélectionnant Gérer les packages NuGet et en recherchant IronOCR. Ceci est illustré ci-dessous.
  3. Modifiez votre fichier Program.cs pour qu'il ressemble à ceci :

    • Nous importons l'espace de noms IronOcr pour utiliser ses capacités OCR afin de lire et d'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, un de mes livres préférés. L'image ressemble à l'image suivante.

! Le texte à extraire grâce aux capacités de lecture optique de caractères d'IronOCR

Figure 2 - Texte à extraire grâce aux capacités de lecture optique de caractères d'IronOCR

  1. Le résultat obtenu après extraction du texte de l'image d'entrée ci-dessus.

! Texte extrait

Figure 3 - Texte extrait

  1. Faisons la même chose 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. Saisissez 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 quasiment identique au code précédent qui extrayait du texte d'une image.

Nous utilisons ici la méthode OcrInput pour lire le document PDF actuel, en l'occurrence : 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 enregistré sous forme de 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 parlé des applications Windows ; Voyons comment utiliser la reconnaissance optique de caractères (OCR) avec Microsoft Azure.

L'avantage d'IronOCR est qu'il fonctionne très bien avec Microsoft Azure en tant que fonction Azure dans une architecture de microservices. Voici un exemple rapide de ce à quoi ressemblerait une fonction Microsoft Azure utilisant IronOCR. Cette fonction extrait le texte des 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

Cela transmet directement l'image reçue par la fonction au moteur OCR pour générer le texte extrait.

Petit récapitulatif de Microsoft Azure selon Microsoft :

Les microservices Microsoft Azure constituent une approche architecturale de création d'applications où chaque fonction principale, ou service, est conçue et déployée indépendamment. L'architecture microservices 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 fonctionnent ensemble et communiquent via des contrats d'API bien définis. Développez des applications de microservices pour répondre aux besoins métiers en constante évolution et commercialisez plus rapidement de nouvelles fonctionnalités.

Voici quelques autres fonctionnalités d'IronOCR avec .NET ou Microsoft Azure :

  • La possibilité d'effectuer une reconnaissance optique de caractères (OCR) sur presque tous les fichiers, images ou PDF.
  • Vitesse de traitement ultra-rapide des données OCR
  • Précision exceptionnelle
  • Lit les codes-barres et les codes QR
  • Fonctionne en local, sans aucun SaaS requis
  • Peut convertir les PDF et les images en documents consultables
  • Excellente alternative à Azure OCR de Microsoft Cognitive Services

Filtres d'image pour améliorer les performances de la reconnaissance optique de caractères (OCR)

  • OcrInput.Rotate - Fait pivoter les images de quelques degrés dans le sens horaire. Pour une rotation dans le sens antihoraire, utilisez des nombres négatifs.
  • OcrInput.Binarize() - Ce filtre d'image transforme chaque pixel en noir ou blanc, sans nuance intermédiaire. Cela améliore les performances de la reconnaissance optique de caractères (OCR).
  • OcrInput.ToGrayScale() - Ce filtre d'image transforme chaque pixel en une nuance de gris. Cela améliore la vitesse de la reconnaissance optique de caractères (OCR).
  • OcrInput.Contrast() - Augmente le contraste automatiquement. Ce filtre améliore la vitesse et la précision de la reconnaissance optique de caractères (OCR) dans les numérisations à 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 contours de tout objet dans une image.
  • OcrInput.Erode() - L'érosion supprime les pixels sur les contours des objets.
  • OcrInput.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.
  • OcrInput.DeepCleanBackgroundNoise() - Suppression des bruits de fond importants.
  • OcrInput.EnhanceResolution - Améliore la résolution d'une image de faible qualité.

performances de vitesse

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

Options de tarification et de licence

Il existe essentiellement trois niveaux de licences payantes , fonctionnant toutes sur le principe d'un achat unique et d'une licence à vie.

Et oui, ces ressources sont gratuites à des fins de développement.

Informations complémentaires

Des ressources supplémentaires sont disponibles via le lien suivant : Ressources

IronOCR propose des fonctionnalités pour les applications .NET exécutant la reconnaissance optique de caractères (OCR) sur Azure et d'autres systèmes.

  • IronOCR prend en charge 125 langues internationales. Chaque langue est disponible en qualité Rapide, Standard et Optimale. Voici quelques exemples de packs de langues disponibles :
    • Bulgare
    • Arménien
    • Croate
    • Afrikaans
    • Danois
    • Tchèque
    • Philippin
    • Finlandais
    • Français
    • Allemand
    • De nombreux autres packs de langue sont disponibles ; pour les découvrir, veuillez suivre le lien suivant. Packs de langue IronOCR
  • Fonctionne immédiatement sous .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
    • Prend en charge les documents PDF
    • Prend en charge les TIFF multiframes
    • Prise en charge de tous les principaux formats d'image Les frameworks .NET suivants sont pris en charge :
    • .NET Framework 4.5 et versions ultérieures
    • .NET Standard 2
    • .NET Core 2
    • .NET Core 3
    • .NET Core 5
  • Vous n'avez pas besoin d'avoir Tesseract (un moteur OCR open-source qui prend en charge Unicode et plus de 100 langues) installé pour qu'IronOCR fonctionne.
    • Précision améliorée par rapport au Tesseract.
    • Sa vitesse est supérieure à celle du Tesseract.
  • Corrige les numérisations de mauvaise qualité de documents ou de fichiers.
  • Corrige les numérisations de mauvaise qualité et déformées 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 (OCR) est la conversion électronique ou mécanique d'images de texte dactylographié ou imprimé en texte encodé par machine, que ce soit à partir d'un document numérisé, d'une photo de document, d'une photo de scène ou d'un texte de sous-titre superposé à une image. OCR signifie Reconnaissance Optique de Caractères. Il existe essentiellement quatre types de reconnaissance optique de caractères :

  • OCR - Reconnaissance optique de caractères, cible le texte dactylographié 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) à la fois.
  • OWR - Reconnaissance optique de mots, cible le texte dactylographié d'un document d'entrée, un mot à la fois.
  • ICR - Reconnaissance intelligente de caractères, cible le texte imprimé tel que l'écriture manuscrite (caractères sans liaison à d'autres lettres) et le texte cursif, un caractère ou glyphe à la fois.
  • IWR - Reconnaissance intelligente des mots, cible le texte cursif.

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,246,844 | Version : 2025.12 vient de sortir