OUTILS OCR

Comparaison détaillée entre Windows OCR Engine et Tesseract

Publié avril 3, 2024
Partager:

A l'ère du numérique, la reconnaissance optique des caractères(OCR) est devenue partie intégrante de diverses industries, permettant la conversion d'images et de documents scannés en texte éditable et consultable.

Parmi les nombreux logiciels d'OCR disponibles, tels que Google Cloud Vision(API Vision dans les nuages)le moteur OCR de Windows vs Tesseract, Adobe Acrobat Pro DC, ABBYY Finereader et bien d'autres encoreIronOCR se distinguent comme des concurrents de premier plan, chacun offrant des caractéristiques et des capacités uniques pour faciliter l'analyse des documents.

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

1. Introduction aux moteurs OCR

Les moteurs OCR sont des outils logiciels conçus pour reconnaître et extraire du texte brut à partir d'images, de PDF et d'autres documents numérisés. Elles 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 une machine. Windows OCR Engine, Tesseract et IronOCR représentent trois solutions d'OCR largement utilisées, chacune ayant ses points forts et ses applications.

2. Moteur OCR Windows

Les**Moteur OCR Windowsintégré au système d'exploitation Windows, offre une solution pratique et conviviale pour l'extraction de texte à partir d'images d'entrée et de documents numérisés. S'appuyant sur des techniques avancées de traitement de l'image, il peut reconnaître avec précision du texte dans différentes langues et différents styles de polices. Le moteur Windows OCR est accessible via l'API Windows Runtime, ce qui permet une intégration transparente dans les applications Windows avec les capacités d'un outil de ligne de commande.

2.1 Caractéristiques principales du moteur Windows OCR

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

2.2 Exemple de code

using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
class Program
{
    static async Task Main(string [] args)
    {
        // Provide the path to the image file
        string imagePath = "sample.png";
        try
        {
            // Instantiate the program class
            Program program = new Program();
            // Call the ExtractText method to extract text from the image
            string extractedText = await program.ExtractText(imagePath);
            // Display the extracted text
            Console.WriteLine("Extracted Text:");
            Console.WriteLine(extractedText);
        }
        catch (Exception ex)
        {
            Console.WriteLine("An error occurred: " + ex.Message);
        }
    }
    public 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 = System.IO.File.OpenRead(image))
            {
                Console.WriteLine("Extracted Text:");
                // Create a BitmapDecoder from the image file stream
                var bmpDecoder = await Windows.Graphics.Imaging.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 = Windows.Media.Ocr.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)
        {
            throw ex; // Propagate the exception
        }
        // Return the extracted text
        return text.ToString();
    }
}
using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
class Program
{
    static async Task Main(string [] args)
    {
        // Provide the path to the image file
        string imagePath = "sample.png";
        try
        {
            // Instantiate the program class
            Program program = new Program();
            // Call the ExtractText method to extract text from the image
            string extractedText = await program.ExtractText(imagePath);
            // Display the extracted text
            Console.WriteLine("Extracted Text:");
            Console.WriteLine(extractedText);
        }
        catch (Exception ex)
        {
            Console.WriteLine("An error occurred: " + ex.Message);
        }
    }
    public 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 = System.IO.File.OpenRead(image))
            {
                Console.WriteLine("Extracted Text:");
                // Create a BitmapDecoder from the image file stream
                var bmpDecoder = await Windows.Graphics.Imaging.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 = Windows.Media.Ocr.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)
        {
            throw ex; // Propagate the exception
        }
        // Return the extracted text
        return text.ToString();
    }
}
Imports System
Imports System.IO
Imports System.Text
Imports System.Threading.Tasks
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
			' Instantiate the program class
			Dim program As New Program()
			' Call the ExtractText method to extract text from the image
			Dim extractedText As String = Await program.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 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 = System.IO.File.OpenRead(image)
				Console.WriteLine("Extracted Text:")
				' Create a BitmapDecoder from the image file stream
				Dim bmpDecoder = Await Windows.Graphics.Imaging.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 = Windows.Media.Ocr.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
			Throw ex ' Propagate the exception
		End Try
		' Return the extracted text
		Return text.ToString()
	End Function
End Class
VB   C#

2.2.1 Production

Windows OCR Engine vs Tesseract(Comparaison des fonctionnalités d'OCR) : Figure 1 - Sortie de la console pour le code de Windows OCR Engine

3. Tesseract

Tesseractun moteur d'OCR open-source développé par Google, a gagné en 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. Tesseract OCR Engine 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 Caractéristiques principales de Tesseract

  • Prise en charge des langues : Le moteur Tesseract prend en charge plus de 100 langues, y compris des écritures complexes telles que l'arabe et le chinois.
  • Prétraitement des images : Il offre des capacités étendues de prétraitement d'images, y compris le désalignement, 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 d'OCR et de former des modèles personnalisés pour des cas d'utilisation spécifiques, améliorant ainsi la précision et la performance.

3.2 Exemple de code

using Patagames.Ocr;
using (var api = OcrApi.Create())
{
    api.Init(Patagames.Ocr.Enums.Languages.English);
    string plainText = api.GetTextFromImage(@"C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png");
    Console.WriteLine(plainText);
}
using Patagames.Ocr;
using (var api = OcrApi.Create())
{
    api.Init(Patagames.Ocr.Enums.Languages.English);
    string plainText = api.GetTextFromImage(@"C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png");
    Console.WriteLine(plainText);
}
Imports Patagames.Ocr
Using api = OcrApi.Create()
	api.Init(Patagames.Ocr.Enums.Languages.English)
	Dim plainText As String = api.GetTextFromImage("C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png")
	Console.WriteLine(plainText)
End Using
VB   C#

3.2.1 Production

Moteur d'OCR Windows vs Tesseract (Comparaison des fonctionnalités d'OCR) : Figure 2 - Sortie de la console pour le code Tesserat

4. IronOCR

IronOCRun puissant moteur d'OCR développé par Iron Software, se distingue par sa précision exceptionnelle, sa facilité d'utilisation et la prise en charge de nombreuses langues. Il offre des fonctionnalités d'OCR sur site et prend en charge plus de 127 langues, ce qui le rend adapté aux applications internationales. IronOCR s'appuie sur des algorithmes avancés d'apprentissage automatique et sur la technologie de vision dans le cloud pour fournir des résultats précis en matière de reconnaissance de texte, même dans des scénarios difficiles.

4.1 Caractéristiques principales de l'IronOCR

  • Précision élevée : l'IronOCR offre une précision inégalée dans le secteur de la reconnaissance de texte, garantissant des résultats fiables pour divers types de documents et de langues.
  • Prise en charge polyvalente des langues : Il prend en charge plus de 127 langues et fournit des packs linguistiques complets pour une reconnaissance de texte multilingue transparente.
  • Intégration simple : IronOCR offre une intégration directe avec les applications .NET, avec des API intuitives et une documentation complète pour rationaliser le processus de développement avec le prétraitement et le post-traitement des images originales pour en extraire les textes.

4.2 Installer IronOCR

Avant de passer au codage, voyons comment installer IronOCR à l'aide du gestionnaire de paquets NuGet.

  1. Dans Visual Studio, allez dans le menu Outils et sélectionnez NuGet Package Manager.

    1. Une nouvelle liste apparaît, sélectionnez ici le gestionnaire de paquets NuGet pour les solutions.

    Windows OCR Engine vs Tesseract(Comparaison des fonctionnalités d'OCR) : Figure 3 - Où trouver le gestionnaire de paquets NuGet de Visual Studio ?

  2. Une nouvelle fenêtre apparaît, allez dans l'onglet "Parcourir" et cliquez sur "IronOCR" dans la barre de recherche.

    1. Une liste de paquets apparaît Sélectionnez le dernier paquet IronOCR et cliquez sur installer.

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

4.3 Exemple de code (C&num ;)

using IronOcr;
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
var result = ocr.Read("C:\\Users\\buttw\\source\\repos\\ironqr\\ironqr\\bin\\Debug\\net5.0\\Iron.png");
Console.WriteLine(result.Text);
using IronOcr;
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
var result = ocr.Read("C:\\Users\\buttw\\source\\repos\\ironqr\\ironqr\\bin\\Debug\\net5.0\\Iron.png");
Console.WriteLine(result.Text);
Imports IronOcr
Private ocr = New IronTesseract()
ocr.Language = OcrLanguage.English
Dim result = ocr.Read("C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png")
Console.WriteLine(result.Text)
VB   C#

4.3.1 Production

Moteur d'OCR Windows vs Tesseract (Comparaison des fonctionnalités d'OCR) : Figure 5 - Sortie de la console pour le code IronOCR

5. Évaluation comparative

5.1 Précision et performance

  • Windows OCR Engine et Tesseract Offrent une précision décente, mais peuvent avoir des difficultés avec les mises en page complexes et le texte manuscrit.
  • IronOCR : Excellente précision, fournissant des résultats fiables pour divers types de documents et de langues, y compris les textes manuscrits et les images bruitées.

5.2 Facilité d'intégration

  • Moteur d'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 des options de personnalisation étendues.
  • IronOCR : permet une intégration simple aux applications .NET, avec des API intuitives et une documentation complète.

5.3 Soutien linguistique

  • Windows OCR Engine et Tesseract Prend en charge un nombre limité de langues par rapport à Tesseract et IronOCR.
  • IronOCR : prend en charge plus de 127 langues, ce qui le rend adapté aux applications mondiales.

    6. Conclusion

    En conclusion, bien que Windows OCR Engine et Tesseract soient des choix populaires pour la reconnaissance de texte,IronOCR s'impose comme le moteur d'OCR le plus précis et le plus polyvalent. Sa précision de pointe, 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é d'OCR fiable. En tirant parti d'IronOCR, les entreprises peuvent rationaliser les flux de traitement des documents, améliorer la précision de l'extraction des données et dégager des informations précieuses à partir des documents et des images numérisés.

    IronOCR offre uneessai gratuit. Pour en savoir plus sur IronOCR et ses caractéristiques, consultez le site suivantici.

< PRÉCÉDENT
OCR dans le nuage (comparaison des caractéristiques de l'OCR)
SUIVANT >
Azure OCR vs Google OCR (Comparaison des fonctionnalités d'OCR)