Passer au contenu du pied de page
OUTILS OCR

Moteur OCR Windows vs Tesseract : Une comparaison détaillée

À l'ère du numérique, la technologie de reconnaissance optique de caractères (OCR) est devenue essentielle à de nombreux secteurs d'activité, permettant la conversion d'images et de documents numérisés en texte modifiable et consultable.

Parmi les nombreux logiciels OCR disponibles, tels que Google Cloud Vision (API Cloud Vision), Adobe Acrobat Pro DC, ABBYY Finereader, Windows OCR Engine, Tesseract et IronOCR se distinguent comme des concurrents de premier plan, chacun offrant des fonctionnalités et des capacités uniques pour faciliter l'analyse des documents.

Cet article vise à fournir une analyse comparative complète de ces trois moteurs OCR, en évaluant leur précision, leurs performances et leur facilité d'intégration.

1. Introduction aux moteurs OCR

Les moteurs OCR sont des logiciels conçus pour reconnaître et extraire le texte brut d'images, de fichiers PDF et d'autres documents numérisés. Ils utilisent des algorithmes sophistiqués et des techniques d'apprentissage automatique pour identifier avec précision les caractères et les convertir en un fichier texte lisible par machine. Windows OCR Engine, Tesseract et IronOCR sont trois solutions OCR largement utilisées, chacune présentant ses propres atouts et applications.

2. Moteur OCR Windows

Le moteur OCR de Windows , intégré au système d'exploitation Windows, offre une solution pratique et conviviale pour extraire du texte à partir d'images et de documents numérisés. Grâce à des techniques avancées de traitement d'images, il peut reconnaître avec précision le texte dans différentes langues et styles de police. Le moteur OCR de Windows est accessible via l'API Windows Runtime, permettant une intégration transparente dans les applications Windows avec les fonctionnalités d'un outil en ligne de commande.

2.1 Principales fonctionnalités du moteur OCR de Windows

  • Prise en charge des langues : Le moteur OCR de Windows prend en charge de nombreuses langues, ce qui le rend adapté aux documents multilingues.
  • Traitement d'images : Il utilise des algorithmes de traitement d'images sophistiqués pour améliorer la précision de la reconnaissance de texte imprimé, même dans des images de faible qualité.
  • Intégration avec les applications Windows : Le moteur OCR Windows s'intègre parfaitement aux applications Windows, permettant aux développeurs d'intégrer pleinement les fonctionnalités OCR dans leurs logiciels.

2.2 Exemple de code

using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using Windows.Graphics.Imaging;
using Windows.Media.Ocr;

class Program
{
    static async Task Main(string[] args)
    {
        // Provide the path to the image file
        string imagePath = "sample.png";
        try
        {
            // Call the ExtractText method to extract text from the image
            string extractedText = await ExtractText(imagePath);
            // Display the extracted text
            Console.WriteLine("Extracted Text:");
            Console.WriteLine(extractedText);
        }
        catch (Exception ex)
        {
            Console.WriteLine("An error occurred: " + ex.Message);
        }
    }

    public static async Task<string> ExtractText(string image)
    {
        // Initialize StringBuilder to store extracted text
        StringBuilder text = new StringBuilder();
        try
        {
            // Open the image file stream
            using (var fileStream = File.OpenRead(image))
            {
                // Create a BitmapDecoder from the image file stream
                var bmpDecoder = await BitmapDecoder.CreateAsync(fileStream.AsRandomAccessStream());
                // Get the software bitmap from the decoder
                var softwareBmp = await bmpDecoder.GetSoftwareBitmapAsync();
                // Create an OCR engine from user profile languages
                var ocrEngine = OcrEngine.TryCreateFromUserProfileLanguages();
                // Recognize text from the software bitmap
                var ocrResult = await ocrEngine.RecognizeAsync(softwareBmp);
                // Append each line of recognized text to the StringBuilder
                foreach (var line in ocrResult.Lines)
                {
                    text.AppendLine(line.Text);
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error during OCR process: " + ex.Message);
        }
        // Return the extracted text
        return text.ToString();
    }
}
using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using Windows.Graphics.Imaging;
using Windows.Media.Ocr;

class Program
{
    static async Task Main(string[] args)
    {
        // Provide the path to the image file
        string imagePath = "sample.png";
        try
        {
            // Call the ExtractText method to extract text from the image
            string extractedText = await ExtractText(imagePath);
            // Display the extracted text
            Console.WriteLine("Extracted Text:");
            Console.WriteLine(extractedText);
        }
        catch (Exception ex)
        {
            Console.WriteLine("An error occurred: " + ex.Message);
        }
    }

    public static async Task<string> ExtractText(string image)
    {
        // Initialize StringBuilder to store extracted text
        StringBuilder text = new StringBuilder();
        try
        {
            // Open the image file stream
            using (var fileStream = File.OpenRead(image))
            {
                // Create a BitmapDecoder from the image file stream
                var bmpDecoder = await BitmapDecoder.CreateAsync(fileStream.AsRandomAccessStream());
                // Get the software bitmap from the decoder
                var softwareBmp = await bmpDecoder.GetSoftwareBitmapAsync();
                // Create an OCR engine from user profile languages
                var ocrEngine = OcrEngine.TryCreateFromUserProfileLanguages();
                // Recognize text from the software bitmap
                var ocrResult = await ocrEngine.RecognizeAsync(softwareBmp);
                // Append each line of recognized text to the StringBuilder
                foreach (var line in ocrResult.Lines)
                {
                    text.AppendLine(line.Text);
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error during OCR process: " + ex.Message);
        }
        // Return the extracted text
        return text.ToString();
    }
}
Imports System
Imports System.IO
Imports System.Text
Imports System.Threading.Tasks
Imports Windows.Graphics.Imaging
Imports Windows.Media.Ocr

Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		' Provide the path to the image file
		Dim imagePath As String = "sample.png"
		Try
			' Call the ExtractText method to extract text from the image
			Dim extractedText As String = Await ExtractText(imagePath)
			' Display the extracted text
			Console.WriteLine("Extracted Text:")
			Console.WriteLine(extractedText)
		Catch ex As Exception
			Console.WriteLine("An error occurred: " & ex.Message)
		End Try
	End Function

	Public Shared Async Function ExtractText(ByVal image As String) As Task(Of String)
		' Initialize StringBuilder to store extracted text
		Dim text As New StringBuilder()
		Try
			' Open the image file stream
			Using fileStream = File.OpenRead(image)
				' Create a BitmapDecoder from the image file stream
				Dim bmpDecoder = Await BitmapDecoder.CreateAsync(fileStream.AsRandomAccessStream())
				' Get the software bitmap from the decoder
				Dim softwareBmp = Await bmpDecoder.GetSoftwareBitmapAsync()
				' Create an OCR engine from user profile languages
				Dim ocrEngine = OcrEngine.TryCreateFromUserProfileLanguages()
				' Recognize text from the software bitmap
				Dim ocrResult = Await ocrEngine.RecognizeAsync(softwareBmp)
				' Append each line of recognized text to the StringBuilder
				For Each line In ocrResult.Lines
					text.AppendLine(line.Text)
				Next line
			End Using
		Catch ex As Exception
			Console.WriteLine("Error during OCR process: " & ex.Message)
		End Try
		' Return the extracted text
		Return text.ToString()
	End Function
End Class
$vbLabelText   $csharpLabel

2.2.1 Sortie

Moteur OCR Windows vs Tesseract (Comparaison des fonctionnalités OCR) : Figure 1 - Sortie console du code du moteur OCR Windows

3. Tesseract

Tesseract , un moteur OCR open-source développé par Google, a acquis une grande popularité grâce à sa précision et sa polyvalence. Il prend en charge plus de 100 langues et peut traiter différents formats d'image, notamment TIFF, JPEG et PNG. Le moteur OCR Tesseract utilise des algorithmes d'apprentissage profond et des réseaux neuronaux pour atteindre des niveaux élevés de précision de reconnaissance de texte, ce qui le rend adapté à un large éventail d'applications.

3.1 Principales caractéristiques de Tesseract

  • Prise en charge des langues : Le moteur Tesseract prend en charge plus de 100 langues, y compris des systèmes d'écriture complexes comme l'arabe et le chinois.
  • Prétraitement d'images : Il offre des capacités étendues de prétraitement d'images, notamment la correction de la distorsion, la binarisation et la réduction du bruit, afin d'améliorer la précision de la reconnaissance de texte.
  • Options de personnalisation : Tesseract permet aux utilisateurs d'affiner les paramètres OCR et d'entraîner des modèles personnalisés pour des cas d'utilisation spécifiques, améliorant ainsi la précision et les performances.

3.2 Exemple de code

using Patagames.Ocr;

class TesseractExample
{
    static void Main(string[] args)
    {
        // Create an OCR API instance
        using (var api = OcrApi.Create())
        {
            // Initialize the OCR engine for the English language
            api.Init(Patagames.Ocr.Enums.Languages.English);
            // Extract text from the image
            string plainText = api.GetTextFromImage(@"C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png");
            // Display the extracted text
            Console.WriteLine(plainText);
        }
    }
}
using Patagames.Ocr;

class TesseractExample
{
    static void Main(string[] args)
    {
        // Create an OCR API instance
        using (var api = OcrApi.Create())
        {
            // Initialize the OCR engine for the English language
            api.Init(Patagames.Ocr.Enums.Languages.English);
            // Extract text from the image
            string plainText = api.GetTextFromImage(@"C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png");
            // Display the extracted text
            Console.WriteLine(plainText);
        }
    }
}
Imports Patagames.Ocr

Friend Class TesseractExample
	Shared Sub Main(ByVal args() As String)
		' Create an OCR API instance
		Using api = OcrApi.Create()
			' Initialize the OCR engine for the English language
			api.Init(Patagames.Ocr.Enums.Languages.English)
			' Extract text from the image
			Dim plainText As String = api.GetTextFromImage("C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png")
			' Display the extracted text
			Console.WriteLine(plainText)
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

3.2.1 Sortie

Moteur OCR Windows vs Tesseract (Comparaison des fonctionnalités OCR) : Figure 2 - Sortie console du code Tesseract

4. IronOCR

IronOCR , un puissant moteur OCR développé par Iron Software, se distingue par son exceptionnelle précision, sa facilité d'utilisation et sa prise en charge étendue des langues. Il offre une fonctionnalité OCR sur site et prend en charge plus de 125 langues, ce qui le rend adapté aux applications mondiales. IronOCR exploite des algorithmes d'apprentissage automatique avancés et la technologie de vision par nuage pour fournir des résultats de reconnaissance de texte précis, même dans des scénarios difficiles.

4.1 Principales caractéristiques d'IronOCR

  • Haute précision : IronOCR offre une précision inégalée dans le domaine de la reconnaissance de texte, garantissant des résultats fiables pour divers types de documents et de langues.
  • Prise en charge étendue des langues : Il prend en charge plus de 125 langues et fournit des packs de langues complets pour une reconnaissance de texte multilingue fluide.
  • Intégration simple : IronOCR offre une intégration simple avec les applications .NET, avec des API intuitives et une documentation complète pour rationaliser le processus de développement grâce au prétraitement et au post-traitement des images originales pour extraire les textes.

4.2 Installer IronOCR

Avant de passer à l'exemple de code, voyons comment installer IronOCR à l'aide du gestionnaire de packages NuGet.

  1. Dans Visual Studio, accédez au menu Outils et sélectionnez Gestionnaire de packages NuGet.
  2. Une nouvelle liste apparaîtra ; sélectionnez-y le Gestionnaire de packages NuGet pour les solutions.

Moteur OCR Windows vs Tesseract (Comparaison des fonctionnalités OCR) : Figure 3 - Où trouver le gestionnaire de packages NuGet de Visual Studio

  1. Une nouvelle fenêtre apparaîtra, allez dans l'onglet " Parcourir " et cliquez, puis tapez " IronOCR " dans la barre de recherche.
  2. Une liste de packages apparaîtra. Sélectionnez le dernier package IronOCR et cliquez sur Installer.

Moteur OCR Windows vs Tesseract (Comparaison des fonctionnalités OCR) : Figure 4 - Installation du package IronOCR

4.3 Exemple de code (C#)

using IronOcr;

class IronOCRExample
{
    static void Main(string[] args)
    {
        // Create an IronTesseract instance
        var ocr = new IronTesseract();
        // Set the language for OCR recognition
        ocr.Language = OcrLanguage.English;
        // Perform OCR on the specified image
        var result = ocr.Read(@"C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png");
        // Display the extracted text
        Console.WriteLine(result.Text);
    }
}
using IronOcr;

class IronOCRExample
{
    static void Main(string[] args)
    {
        // Create an IronTesseract instance
        var ocr = new IronTesseract();
        // Set the language for OCR recognition
        ocr.Language = OcrLanguage.English;
        // Perform OCR on the specified image
        var result = ocr.Read(@"C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png");
        // Display the extracted text
        Console.WriteLine(result.Text);
    }
}
Imports IronOcr

Friend Class IronOCRExample
	Shared Sub Main(ByVal args() As String)
		' Create an IronTesseract instance
		Dim ocr = New IronTesseract()
		' Set the language for OCR recognition
		ocr.Language = OcrLanguage.English
		' Perform OCR on the specified image
		Dim result = ocr.Read("C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png")
		' Display the extracted text
		Console.WriteLine(result.Text)
	End Sub
End Class
$vbLabelText   $csharpLabel

4.3.1 Sortie

Moteur OCR Windows vs Tesseract (Comparaison des fonctionnalités OCR) : Figure 5 - Sortie console du code IronOCR

5. Évaluation comparative

5.1 Précision et performances

  • Le moteur OCR de Windows et Tesseract offrent une précision acceptable, mais peuvent avoir des difficultés avec les mises en page complexes.
  • IronOCR : Excellente précision, offrant des résultats fiables sur divers types de documents et langues, y compris les images bruitées.

5.2 Facilité d'intégration

  • Moteur OCR Windows : S'intègre parfaitement aux applications Windows, mais manque d'options de personnalisation.
  • Tesseract : Nécessite une configuration et des dépendances supplémentaires pour l'intégration, mais offre de nombreuses options de personnalisation.
  • IronOCR : Offre une intégration simple avec les applications .NET, grâce à des API intuitives et une documentation complète.

5.3 Assistance linguistique

  • Le moteur OCR de Windows prend en charge un nombre limité de langues par rapport à Tesseract et IronOCR.
  • Tesseract : Prend en charge plus de 100 langues.
  • IronOCR : Prend en charge plus de 125 langues, ce qui le rend adapté aux applications internationales.

6. Conclusion

En conclusion, bien que Windows OCR Engine et Tesseract soient des solutions populaires pour la reconnaissance de texte, IronOCR s'impose comme le moteur OCR le plus précis et le plus polyvalent. Sa précision inégalée, sa prise en charge étendue des langues et sa simplicité d'intégration en font une solution de choix pour les entreprises et les développeurs à la recherche d'une fonctionnalité OCR fiable. En tirant parti d'IronOCR, les organisations peuvent rationaliser leurs flux de travail de traitement des documents, améliorer la précision de l'extraction des données et exploiter des informations précieuses à partir de documents et d'images numérisés.

IronOCR propose un essai gratuit . Pour en savoir plus sur IronOCR et ses fonctionnalités, cliquez ici .

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. Pendant qu'il poursuivait son diplôme, Kannapat est également devenu membre du laboratoire de robotique de véhicules, qui fait partie du département de bioproduction. En 2022, il a utilisé ses compé...
Lire la suite