Test dans un environnement réel
Test en production sans filigrane.
Fonctionne partout où vous en avez besoin.
La procédure utilisée pour transformer une image de texte en un format de texte lisible par une machine est connue sous le nom de reconnaissance optique de caractères(OCR). Par exemple, si vous numérisez un formulaire, des factures ou un reçu, votre ordinateur enregistre la numérisation sous la forme d'un fichier image. Les données contenues dans le fichier image ne peuvent pas être modifiées, recherchées ou comptées à l'aide d'un éditeur de texte. Cependant, vous pouvez utiliser des solutions OCR pour convertir le fichier image en un document texte dont le contenu est stocké sous forme de données textuelles.
À l'ère moderne, la plupart des flux de travail des entreprises impliquent la réception d'informations provenant de médias imprimés. Différents documents tels que des formulaires papier, des factures, des documents juridiques scannés, des extractions de tableaux, des textes manuscrits et des textes imprimés ou des contrats font tous partie des processus d'entreprise. De plus, la numérisation de ce type de documentation permet de créer des images avec le texte caché à l'intérieur. Les textes contenus dans les images ne peuvent pas être traités par les outils de traitement de texte de la même manière que les documents textuels. La technologie OCR résout le problème en convertissant les images de texte en données textuelles qui peuvent être analysées par d'autres logiciels d'entreprise.
Le moteur OCR fonctionne selon les étapes suivantes :
Dans ce processus, un scanner lit les documents et les convertit en données binaires. Les logiciels d'OCR identifient l'image numérisée et classent les zones claires comme arrière-plan et les zones sombres comme texte.
Le logiciel d'OCR nettoie d'abord l'image et supprime les erreurs afin de préparer les données pour la lecture.
Les deux principaux types d'algorithmes d'OCR pour la reconnaissance de texte sont la correspondance des formes et l'extraction des caractéristiques.
Une image de caractère, ou glyphe, est isolée tout au long du processus de mise en correspondance et comparée à un glyphe précédemment enregistré.
Grâce au processus d'extraction des caractéristiques, les glyphes sont divisés en caractéristiques telles que les lignes, les boucles fermées, la direction des lignes et les jonctions de lignes.
La technologie transforme les données textuelles récupérées en un fichier numérique après analyse. Certains systèmes d'OCR peuvent créer des documents PDF annotés qui incluent les versions avant et après du document numérisé.
Cet article compare deux des applications et bibliothèques de documents les plus répandues pour l'OCR. Il s'agit de
IronOCR est une bibliothèque C# .NET qui offre des services de numérisation, de recherche et de lecture d'images et de PDF. Il est livré avec plus de 127 packs de langues. La sortie est réalisée sous forme de texte, de données structurées ou de PDF consultables. Prend en charge les versions de .NET telles que 6, 5, Core, Standard et Framework.
IronOCR est unique dans sa capacité à détecter et à extraire automatiquement des données à partir d'images et de documents scannés de manière imparfaite. La classe "IronTesseract" possède l'API la plus simple. Il fournit la version la plus avancée de Tesseract connue dans le monde entier, sur n'importe quelle plateforme, avec une vitesse et une précision accrues, ainsi qu'une DLL et une API natives.
IronOCR peut également scanner des codes-barres et des codes QR à partir de tous les formats d'image, et il lit du texte et effectue la numérisation de PDF à l'aide du dernier moteur Tesseract 5.
Il peut facilement effectuer l'OCR sur les fichiers PDF et exporter des documents PDF consultables à l'aide de l'OCR.
Voyons maintenant ce qu'est l'OCR d'AWS.
AWS Textract d'Amazon est un outil d'apprentissage automatique(ML) service qui extrait automatiquement le texte, l'écriture et les données des documents numérisés. Il va au-delà de la simple reconnaissance optique de caractères(OCR) pour identifier, comprendre et extraire des données de formulaires et de tableaux à l'aide d'une technologie d'apprentissage en profondeur.
AWS OCR Textract utilise l'apprentissage automatique pour lire et traiter tout type de document, en extrayant avec précision le texte, l'écriture, les données tabulaires et d'autres données, sans effort manuel. Au lieu de prendre des heures ou des jours pour extraire les données, Textract peut le faire rapidement. En outre, vous pouvez ajouter des commentaires humains grâce à l'intelligence artificielle augmentée d'Amazon(AI) pour superviser vos modèles et vérifier les données sensibles.
Analyse évolutive des documents qui peut accélérer la prise de décision.
Le reste de l'article se lit comme suit :
Création d'un projet Visual Studio
Installation de l'IronOCR
Installation de AWS OCR Textract
PDF vers texte
De l'image au texte
Code-barres et QR vers texte
Licences
Ce tutoriel utilisera la version 2022 de Visual Studio, je suppose donc que vous devez l'avoir installée.
La version la plus récente et la plus stable du Framework .NET est la 6.0. Nous allons l'utiliser.
Cliquez sur le bouton Créer et le projet sera créé.
Ensuite, nous allons installer une à une les bibliothèques nécessaires à notre utilisation.
La bibliothèque IronOCR peut être téléchargée et installée de quatre façons. Il s'agit des éléments suivants :
Utilisation du gestionnaire de paquets NuGet de Visual Studio.
Téléchargement direct via le site NuGet.
Téléchargement direct via la page web de l'IronOCR.
Le gestionnaire de paquets NuGet de Visual Studio peut être utilisé pour incorporer IronOCR dans un projet C#.
Développer les outils ou en cliquant avec le bouton droit de la souris sur l'explorateur de solutions.
Étendre le gestionnaire de paquets NuGet.
Une nouvelle fenêtre apparaît alors dans la barre de recherche : tapez IronOCR. Cochez la case du projet à droite et cliquez sur Installer.
En utilisant cette méthode, les développeurs peuvent installer la bibliothèque IronOCR et n'importe quel pack linguistique de leur choix.
IronOCR peut être téléchargé directement depuis le site web de NuGet en suivant ces instructions :
Naviguez vers le lien "https://www.nuget.org/packages/IronOCR/".
Sélectionnez l'option de téléchargement dans le menu de droite.
Double-cliquez sur le paquet de téléchargement. Il sera installé automatiquement.
Les développeurs peuvent télécharger la bibliothèque IronOCR directement à partir du site web en utilisant le lien suivantLien.
Cliquez avec le bouton droit de la souris sur le projet dans la fenêtre de la solution.
Ensuite, sélectionnez l'option Référence et recherchez l'emplacement de la référence téléchargée.
Dans Visual Studio, allez dans Outils-> Gestionnaire de paquets NuGet -> Console du gestionnaire de paquets
Install-Package IronOcr
Le paquet est maintenant téléchargé/installé dans le projet en cours et est prêt à être utilisé.
Après avoir saisi la commande, appuyez sur la touche Entrée et le logiciel sera installé.
Inclure cette ligne de code dans le programme pour utiliser IronOCR :
using IronOcr;
using IronOcr;
Imports IronOcr
Installons maintenant AWS Textract.
Avant d'utiliser Amazon Textract pour la première fois, effectuez les tâches suivantes :
S'inscrire aux services AWS.
Créer un utilisateur IAM.
Une fois que vous avez réussi à vous inscrire au compte et à créer l'utilisateur IAM, vous pouvez maintenant définir les clés d'accès dans la console AWS pour accéder à l'API de manière programmatique à l'aide de C#. Vous aurez besoin de :
Vous pouvez télécharger et installer le SDK AWS Textract à partir du gestionnaire de paquets NuGet.
Incluez les espaces de noms suivants pour utiliser AWS Textract :
using Amazon.Textract;
using Amazon.Textract.Model;
using Amazon.Textract;
using Amazon.Textract.Model;
Imports Amazon.Textract
Imports Amazon.Textract.Model
Ces deux bibliothèques permettent d'extraire du texte des fichiers PDF. Examinons le code un par un.
IronOCR permet de reconnaître et de lire du texte à partir de formats de documents PDF en utilisant la technologie avancée Tesseract. Le code simple suivant est utilisé pour extraire les informations :
var Ocr = new IronTesseract();
using (var input = new OcrInput())
{
input.AddPdf("example.pdf","password");
// We can also select specific PDF page numbers to OCR
var Result = Ocr.Read(input);
Console.WriteLine(Result.Text);
Console.WriteLine($"{Result.Pages.Count()} Pages");
// Read every page of the PDF
}
var Ocr = new IronTesseract();
using (var input = new OcrInput())
{
input.AddPdf("example.pdf","password");
// We can also select specific PDF page numbers to OCR
var Result = Ocr.Read(input);
Console.WriteLine(Result.Text);
Console.WriteLine($"{Result.Pages.Count()} Pages");
// Read every page of the PDF
}
Dim Ocr = New IronTesseract()
Using input = New OcrInput()
input.AddPdf("example.pdf","password")
' We can also select specific PDF page numbers to OCR
Dim Result = Ocr.Read(input)
Console.WriteLine(Result.Text)
Console.WriteLine($"{Result.Pages.Count()} Pages")
' Read every page of the PDF
End Using
Le code est simple, propre et très facile à comprendre et à utiliser.
Amazon Textract permet d'ajouter facilement à vos applications la détection et l'analyse de textes de documents. Le code suivant est utilisé pour lire le PDF et le même PDF est transmis :
public static async void ReturnResult()
{
AmazonTextractClient client = new AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1);
var request = new StartDocumentTextDetectionRequest();
request.DocumentLocation = new DocumentLocation
{
S3Object = new S3Object
{
Bucket = "your_bucket_name",
Name = "your_bucket_key"
}
};
var id = await client.StartDocumentTextDetectionAsync(request);
var jobId = id.JobId;
var response = client.GetDocumentTextDetectionAsync(new GetDocumentTextDetectionRequest{
JobId = jobId
});
response.Wait();
if (response.Result.JobStatus.Equals("SUCCEEDED"))
{
foreach (var block in response.Result.Blocks)
{
if (block.BlockType == "WORD")
{
Console.WriteLine(block.Text);
}
else if (block.BlockType == "PAGE")
{
Console.WriteLine(block.Text);
}
else if (block.BlockType == "Line")
{
Console.WriteLine(block.Text);
}
}
}
}
}
static void Main(String [] args)
{
ReturnResult();
}
public static async void ReturnResult()
{
AmazonTextractClient client = new AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1);
var request = new StartDocumentTextDetectionRequest();
request.DocumentLocation = new DocumentLocation
{
S3Object = new S3Object
{
Bucket = "your_bucket_name",
Name = "your_bucket_key"
}
};
var id = await client.StartDocumentTextDetectionAsync(request);
var jobId = id.JobId;
var response = client.GetDocumentTextDetectionAsync(new GetDocumentTextDetectionRequest{
JobId = jobId
});
response.Wait();
if (response.Result.JobStatus.Equals("SUCCEEDED"))
{
foreach (var block in response.Result.Blocks)
{
if (block.BlockType == "WORD")
{
Console.WriteLine(block.Text);
}
else if (block.BlockType == "PAGE")
{
Console.WriteLine(block.Text);
}
else if (block.BlockType == "Line")
{
Console.WriteLine(block.Text);
}
}
}
}
}
static void Main(String [] args)
{
ReturnResult();
}
Public Shared Async Sub ReturnResult()
Dim client As New AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1)
Dim request = New StartDocumentTextDetectionRequest()
request.DocumentLocation = New DocumentLocation With {
.S3Object = New S3Object With {
.Bucket = "your_bucket_name",
.Name = "your_bucket_key"
}
}
Dim id = Await client.StartDocumentTextDetectionAsync(request)
Dim jobId = id.JobId
Dim response = client.GetDocumentTextDetectionAsync(New GetDocumentTextDetectionRequest With {.JobId = jobId})
response.Wait()
If response.Result.JobStatus.Equals("SUCCEEDED") Then
For Each block In response.Result.Blocks
If block.BlockType = "WORD" Then
Console.WriteLine(block.Text)
ElseIf block.BlockType = "PAGE" Then
Console.WriteLine(block.Text)
ElseIf block.BlockType = "Line" Then
Console.WriteLine(block.Text)
End If
Next block
End If
End Sub
}
Shared Sub Main(ByVal args() As String)
ReturnResult()
End Sub
Le code est un peu délicat, long et nécessite de l'attention lors du passage et de la récupération des objets. Tout d'abord, nous devons créer un objet AmazonTextractClient avec 3 paramètres : AccessKeyId
, Clé d'accès secrète
et Région
. Nous devons ensuite lancer une demande en utilisant Demande de détection de texte de document (StartDocumentTextDetectionRequest)()
method. L'objet de la requête définit alors le Emplacement du document
en utilisant le nom et la clé du seau. Cette demande est ensuite transmise à StartDocumentTextDetectionAsync()
method. Comme il s'agit d'une méthode asynchrone, nous devons utiliser le mot-clé await devant elle et rendre le mot-clé Résultat du retour
fonction async. En cas de succès, le résultat est renvoyé et le jobid est sauvegardé. L'identifiant du travail est transmis à GetDocumentTextDetectionAsync()
et attendre que la méthode SUCCÈS
réponse. La boucle Foreach est utilisée pour parcourir chaque bloc et vérifier s'il s'agit d'un "MOT", d'une "PAGE" ou d'une "LIGNE", puis imprimer le texte reconnu. Enfin, appelez cette méthode dans la méthode Main pour le traitement des documents.
Le résultat est assez similaire à celui d'IronOCR.
La lecture de données à partir d'images est délicate, car la qualité de l'image joue un rôle essentiel dans l'extraction des informations. Les deux bibliothèques permettent d'extraire du texte. Nous utiliserons ici des fichiers png.
Le code est presque similaire au précédent. Ici, Ajouter un PDF
est remplacée par la méthode Ajouter une image
méthode.
var Ocr = new IronTesseract();
using (var Input = new OcrInput()){
Input.AddImage("test-files/redacted-employmentapp.png")
//... you can add any number of images
var Result = Ocr.Read(Input);
Console.WriteLine(Result.Text);
}
var Ocr = new IronTesseract();
using (var Input = new OcrInput()){
Input.AddImage("test-files/redacted-employmentapp.png")
//... you can add any number of images
var Result = Ocr.Read(Input);
Console.WriteLine(Result.Text);
}
Dim Ocr = New IronTesseract()
Using Input = New OcrInput()
Input.AddImage("test-files/redacted-employmentapp.png") var Result = Ocr.Read(Input)
Console.WriteLine(Result.Text)
End Using
Le résultat est propre et correspond à l'image originale en quelques lignes de code, sans aucune technicité et avec un résultat parfait.
Le code suivant permet de détecter du texte dans les images :
public static async void ReturnResult()
{
AmazonTextractClient client = new AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1);
var request = new DetectDocumentTextRequest();
request.Document = new Document {
Bytes = new MemoryStream(File.ReadAllBytes(@"test-files/redacted-employmentapp.png"))};
var result = await client.DetectDocumentTextAsync(request);
foreach (var block in result.Blocks)
{
if (block.BlockType == "WORD")
{
Console.WriteLine(block.Text);
}
}
}
static void Main(String [] args)
{
ReturnResult();
}
public static async void ReturnResult()
{
AmazonTextractClient client = new AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1);
var request = new DetectDocumentTextRequest();
request.Document = new Document {
Bytes = new MemoryStream(File.ReadAllBytes(@"test-files/redacted-employmentapp.png"))};
var result = await client.DetectDocumentTextAsync(request);
foreach (var block in result.Blocks)
{
if (block.BlockType == "WORD")
{
Console.WriteLine(block.Text);
}
}
}
static void Main(String [] args)
{
ReturnResult();
}
Public Shared Async Sub ReturnResult()
Dim client As New AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1)
Dim request = New DetectDocumentTextRequest()
request.Document = New Document With {.Bytes = New MemoryStream(File.ReadAllBytes("test-files/redacted-employmentapp.png"))}
Dim result = Await client.DetectDocumentTextAsync(request)
For Each block In result.Blocks
If block.BlockType = "WORD" Then
Console.WriteLine(block.Text)
End If
Next block
End Sub
Shared Sub Main(ByVal args() As String)
ReturnResult()
End Sub
Là encore, le code est presque similaire au précédent. Ici, nous devons initier une requête en utilisant DetectDocumentTextRequest()
method. L'objet de la requête établit ensuite le document en lisant tous les octets. Cette demande est ensuite transmise à DetectDocumentTextAsync() méthode. Comme il s'agit d'une méthode asynchrone, nous devons utiliser le mot-clé await devant elle et rendre le mot-clé Résultat du retour
fonction async. En cas de succès, le résultat est renvoyé sous forme de blocs. La boucle Foreach est utilisée pour parcourir chaque bloc et vérifier s'il s'agit d'un "MOT", puis imprimer la reconnaissance du texte. Enfin, appelez cette méthode dans la méthode Main pour le traitement des documents.
Le résultat est similaire à celui d'IronOCR, mais le fichier doit d'abord être téléchargé dans le seau AWS.
IronOCR a la particularité de pouvoir lire les codes-barres et les codes QR des documents pendant la numérisation du texte. Instances de la OcrResult.OcrBarcode
donne au développeur des informations détaillées sur chaque code-barres scanné. AWS Textract n'offre pas cette fonctionnalité.
Le code pour IronOCR est donné ci-dessous :
var Ocr = new IronTesseract();
Ocr.Configuration.ReadBarCodes = true;
using (var input = new OcrInput())
{
input.AddImage("test-files/Barcode.png");
var Result = Ocr.Read(input);
foreach (var Barcode in Result.Barcodes)
{
Console.WriteLine(Barcode.Value);
// type and location properties also exposed
}
}
var Ocr = new IronTesseract();
Ocr.Configuration.ReadBarCodes = true;
using (var input = new OcrInput())
{
input.AddImage("test-files/Barcode.png");
var Result = Ocr.Read(input);
foreach (var Barcode in Result.Barcodes)
{
Console.WriteLine(Barcode.Value);
// type and location properties also exposed
}
}
Dim Ocr = New IronTesseract()
Ocr.Configuration.ReadBarCodes = True
Using input = New OcrInput()
input.AddImage("test-files/Barcode.png")
Dim Result = Ocr.Read(input)
For Each Barcode In Result.Barcodes
Console.WriteLine(Barcode.Value)
' type and location properties also exposed
Next Barcode
End Using
Le code est explicite et facile à comprendre.
IronOCR est une bibliothèque qui fournit gratuitement une licence de développeur. Il dispose également d'une structure tarifaire distincte ; l'offre Lite commence à $749 sans frais cachés. La redistribution des produits SaaS et OEM est également possible. Toutes les licences sont assorties d'une garantie de remboursement de 30 jours, d'un an d'assistance et de mises à jour du logiciel, d'une validité de développement/staging/production et d'une licence perpétuelle(achat unique). Pour connaître la structure tarifaire complète d'IronOCR et les détails de la licence, rendez-vous à l'adresse suivanteici.
Vous pouvez obtenir le service de redistribution des produits SaaS et OEM sans droits d'auteur pour un achat unique de 1599 $ seulement.
L'API Textract d'AWS offre aux développeurs le service AWS Free Tier. Vous pouvez commencer à utiliser Amazon Textract gratuitement. Le niveau gratuit dure trois mois et les prix sont indiqués ci-dessous.
Vous pouvez consulter les détails de la tarification en cliquant sur le lien suivant lien. En outre, vous pouvez également ajuster les prix en fonction de vos besoins en utilisant le calculateur de prix.
IronOCR offre aux développeurs C# les outils les plus avancés pour la gestion de l'informationAPI Tesseract à notre connaissance, sur n'importe quelle plateforme. IronOCR peut être déployé sur Windows, Linux, Mac, Azure, AWS, Lambda et prend en charge les projets .NET Framework ainsi que .NET Standard et .NET Core. Nous pouvons également lire les codes-barres dans les scans OCR, et même exporter notre OCR sous forme de HTML et de PDF consultables.
Amazon Textract permet d'ajouter facilement à vos applications la détection et l'analyse de textes de documents. Amazon Textract est basé sur une technologie d'apprentissage profond éprouvée et hautement évolutive, développée par les scientifiques d'Amazon spécialisés dans la vision par ordinateur pour analyser des milliards d'images et de vidéos chaque jour. Vous n'avez besoin d'aucune compétence en matière d'apprentissage automatique pour l'utiliser. Amazon Textract comprend des API simples et faciles à utiliser qui permettent d'analyser des fichiers images et des fichiers PDF. Amazon Textract apprend toujours à partir de nouvelles données, et Amazon ajoute continuellement de nouvelles fonctionnalités au service.
Les licences IronOCR sont basées sur les développeurs, ce qui signifie que vous devez toujours acheter une licence en fonction du nombre de développeurs qui utiliseront le produit. Les licences AWS Textract sont basées sur le nombre de pages du document pour extraire les informations et analyser les données. Les licences sont mensuelles et les prix deviennent très élevés pour un grand nombre de pages par rapport à la licence IronOCR. De plus, la licence IronOCR est achetée une seule fois et peut être utilisée à vie. Elle prend en charge la distribution OME et SaaS.
En comparaison globale, IronOCR et AWS OCR disposent tous deux de capacités d'apprentissage automatique pour détecter du texte à partir d'un document ou d'une image. IronOCR présente un léger avantage par rapport à AWS OCR, car il est rapide et permet de gagner du temps. Le code est simple et permet de détecter facilement du texte dans les documents. La tâche est accomplie de plusieurs manières. En revanche, AWS Textract utilise de nombreuses méthodes pour accomplir la même tâche. Cela augmente la réponse du serveur et prend parfois beaucoup de temps. Nous pouvons constater que si nous introduisons un document imparfait dans IronOCR, il peut lire son contenu avec une précision statistique d'environ 99 %, même si le document était mal formaté, incliné et contenait du bruit numérique. IronOCR fonctionne d'emblée sans qu'il soit nécessaire d'ajuster les performances ou de modifier lourdement les images d'entrée. La vitesse est fulgurante : IronOCR.2020 + est jusqu'à 10 fois plus rapide et fait plus de 250% d'erreurs en moins que les versions précédentes.
En outre, Iron Software propose actuellement un ensemble de cinq outils pour le prix de deux seulement. Les outils inclus dans la Suite Iron sont :
IronWebscraper
Veuillez consulter ce lien pour découvrir lesIRONSUITE.
9 produits de l'API .NET pour vos documents de bureau