Le framework Blazor est conçu par l'équipe ASP.NET et permet de développer des applications web à interface utilisateur interactive en utilisant HTML et C# au lieu de JavaScript. Blazor exécute le code C# directement dans le navigateur web à l'aide de WebAssembly. Il est ainsi facile de construire et de développer des composants logiques et de les réutiliser à l'infini. Il s'agit d'un cadre populaire parmi les développeurs pour la construction d'interfaces utilisateur en C#.
Dans cet article, nous allons créer une application Blazor Server pour lire du texte à partir de fichiers images en utilisant la reconnaissance optique de caractères(OCR) avec IronOCR.
Comment lire un texte à partir d'une image en utilisant la reconnaissance optique de caractères dans Blazor ?
Conditions préalables
Disposer de la dernière version de Visual Studio. Vous pouvez le télécharger à partir de ce lienlien.
ASP.NET et charge de travail pour le développement Web. Lors de l'installation de Visual Studio, sélectionnez ASP.NET et la charge de travail de développement Web pour l'installation car elle est nécessaire pour ce projet.
Bibliothèque IronOCR C#. Nous allons utiliser IronOCR pour convertir des données d'image en texte lisible par machine. Vous pouvez télécharger le fichier .DLL du paquet IronOCR directement à partir de la pageSite web d'Iron ou le télécharger à partir du siteSite web de NuGet. Un moyen plus pratique de télécharger et d'installer IronOCR consiste à utiliser le gestionnaire de paquets NuGet dans Visual Studio.
Créer une application serveur Blazor
Ouvrez Visual Studio et suivez les étapes pour créer une application Blazor Server :
Cliquez sur Créer un nouveau projet, puis sélectionnez "Blazor Server App " dans la liste des modèles de projet.
Créer une nouvelle application Blazor Server dans Visual Studio
Ensuite, nommez votre projet de manière appropriée. Ici, nous le nommons "BlazorReadText".
Configurer le projet Blazor
Enfin, définissez les informations complémentaires et cliquez sur Créer.
Sélection du support à long terme du Framework .NET et informations complémentaires pour le projet
L'application Blazor Server est maintenant créée. Nous devons maintenant installer les paquets nécessaires avant d'extraire des données d'image à l'aide d'IronOCR.
Ajout des paquets nécessaires
BlazorInputFile (fichier d'entrée)
La première étape consiste à installer le paquet BlazorInputFile. Il s'agit d'un composant pour les applications Blazor, utilisé pour télécharger un ou plusieurs fichiers vers le serveur. Ce composant sera utilisé pour télécharger un fichier image sur la page Razor de l'application Blazor. Ouvrez Manage NuGet Packages for Solutions et recherchez BlazorInputFile.
Installer le paquet BlazorInputFile
Cochez la case du projet et cliquez sur Installer.
Maintenant, ouvrez le fichier _Host.cshtml dans le dossier Pages et ajoutez le fichier JavaScript suivant :
**Naviguer vers le fichier _Host.cshtml à partir de l'explorateur de solutions
Enfin, ajoutez le code suivant dans le fichier _Imports.razor.
@using BlazorInputFile
@using BlazorInputFile
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'@using BlazorInputFile
$vbLabelText $csharpLabel
IronOCR
IronOCR est une bibliothèque C# permettant de scanner et de lire des images de différents formats. Il permet de travailler avec des images dans plus de 127 langues.
Pour installer IronOCR, ouvrez le gestionnaire de paquets NuGet et recherchez IronOCR. Sélectionnez le projet et cliquez sur le bouton Installer.
Installer le paquet IronOCR dans le gestionnaire de paquets NuGet
Ajouter l'espace de noms IronOCR dans le fichier _Imports.razor :
@using IronOCR
@using IronOCR
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'@using IronOCR
$vbLabelText $csharpLabel
Créer le composant Blazor UI
Un composant représente une interface utilisateur avec une logique d'entreprise pour présenter un comportement dynamique. Blazor utilise des composants Razor pour construire ses applications. Ces composants peuvent être imbriqués, réutilisés et partagés entre les projets. Par défaut, les pages Counter et FetchData sont fournies dans l'application.
Faites un clic droit sur le dossier pages de l'application BlazorReadText, puis sélectionnez Add > Razor Component. Si vous ne trouvez pas Razor Component, cliquez sur New Item, et à partir des composants C#, sélectionnez "Razor Component". Nommez le composant "OCR.razor" et cliquez sur Ajouter.
Ajouter un nouveau composant Razor
La meilleure pratique consiste à séparer le code de cette page de rasoir dans une autre classe. A nouveau, cliquez avec le bouton droit de la souris sur le dossier des pages et sélectionnez Add > Class. Donnez à la classe le même nom que celui de la page et cliquez sur Ajouter. Blazor est un cadre intelligent, et il marque cette classe avec la page qui partage le même nom.
Créer un fichier de code OCR.razor.cs pour le composant Razor OCR.razor
Passons maintenant à la mise en œuvre du code réel qui lira les données d'image à l'aide d'IronOCR.
Code source du composant Blazor OCR.razor UI pour lire les données d'une image
Pour reconnaître du texte dans une image, il faut télécharger l'image, la convertir en données binaires, puis appliquer la méthode IronOCR pour extraire le texte.
Ouvrez la classe OCR.razor.cs et écrivez l'exemple de code source suivant :
using BlazorInputFile;
using Microsoft.AspNetCore.Components;
using IronOcr;
namespace BlazorReadText.Pages
{
public class OCRModel : ComponentBase
{
protected string imageText;
protected string imagePreview;
byte [] imageFileBytes;
const string DefaultStatus = "Maximum size allowed for the image is 4 MB";
protected string status = DefaultStatus;
const int MaxFileSize = 4 * 1024 * 1024; // 4MB
protected async Task ViewImage(IFileListEntry [] files)
{
var file = files.FirstOrDefault();
if (file == null)
{
return;
}
else if (file.Size > MaxFileSize)
{
status = $"The file size is {file.Size} bytes, this is more than the allowed limit of {MaxFileSize} bytes.";
return;
}
else if (!file.Type.Contains("image"))
{
status = "Please uplaod a valid image file";
return;
}
else
{
var memoryStream = new MemoryStream();
await file.Data.CopyToAsync(memoryStream);
imageFileBytes = memoryStream.ToArray();
string base64String = Convert.ToBase64String(imageFileBytes, 0, imageFileBytes.Length);
imagePreview = string.Concat("data:image/png;base64,", base64String);
memoryStream.Flush();
status = DefaultStatus;
}
}
protected private async Task GetText()
{
if (imageFileBytes != null)
{
IronTesseract ocr = new IronTesseract();
using (OcrInput input = new OcrInput(imageFileBytes))
{
OcrResult result = ocr.Read(input);
imageText = result.Text;
}
}
}
}
}
using BlazorInputFile;
using Microsoft.AspNetCore.Components;
using IronOcr;
namespace BlazorReadText.Pages
{
public class OCRModel : ComponentBase
{
protected string imageText;
protected string imagePreview;
byte [] imageFileBytes;
const string DefaultStatus = "Maximum size allowed for the image is 4 MB";
protected string status = DefaultStatus;
const int MaxFileSize = 4 * 1024 * 1024; // 4MB
protected async Task ViewImage(IFileListEntry [] files)
{
var file = files.FirstOrDefault();
if (file == null)
{
return;
}
else if (file.Size > MaxFileSize)
{
status = $"The file size is {file.Size} bytes, this is more than the allowed limit of {MaxFileSize} bytes.";
return;
}
else if (!file.Type.Contains("image"))
{
status = "Please uplaod a valid image file";
return;
}
else
{
var memoryStream = new MemoryStream();
await file.Data.CopyToAsync(memoryStream);
imageFileBytes = memoryStream.ToArray();
string base64String = Convert.ToBase64String(imageFileBytes, 0, imageFileBytes.Length);
imagePreview = string.Concat("data:image/png;base64,", base64String);
memoryStream.Flush();
status = DefaultStatus;
}
}
protected private async Task GetText()
{
if (imageFileBytes != null)
{
IronTesseract ocr = new IronTesseract();
using (OcrInput input = new OcrInput(imageFileBytes))
{
OcrResult result = ocr.Read(input);
imageText = result.Text;
}
}
}
}
}
Imports BlazorInputFile
Imports Microsoft.AspNetCore.Components
Imports IronOcr
Namespace BlazorReadText.Pages
Public Class OCRModel
Inherits ComponentBase
Protected imageText As String
Protected imagePreview As String
Private imageFileBytes() As Byte
Private Const DefaultStatus As String = "Maximum size allowed for the image is 4 MB"
Protected status As String = DefaultStatus
Private Const MaxFileSize As Integer = 4 * 1024 * 1024 ' 4MB
Protected Async Function ViewImage(ByVal files() As IFileListEntry) As Task
Dim file = files.FirstOrDefault()
If file Is Nothing Then
Return
ElseIf file.Size > MaxFileSize Then
status = $"The file size is {file.Size} bytes, this is more than the allowed limit of {MaxFileSize} bytes."
Return
ElseIf Not file.Type.Contains("image") Then
status = "Please uplaod a valid image file"
Return
Else
Dim memoryStream As New MemoryStream()
Await file.Data.CopyToAsync(memoryStream)
imageFileBytes = memoryStream.ToArray()
Dim base64String As String = Convert.ToBase64String(imageFileBytes, 0, imageFileBytes.Length)
imagePreview = String.Concat("data:image/png;base64,", base64String)
memoryStream.Flush()
status = DefaultStatus
End If
End Function
Private Protected Async Function GetText() As Task
If imageFileBytes IsNot Nothing Then
Dim ocr As New IronTesseract()
Using input As New OcrInput(imageFileBytes)
Dim result As OcrResult = ocr.Read(input)
imageText = result.Text
End Using
End If
End Function
End Class
End Namespace
$vbLabelText $csharpLabel
Dans le code ci-dessus, la méthode ViewImage est utilisée pour prendre le fichier téléchargé depuis le fichier d'entrée et vérifier s'il s'agit d'une image et si sa taille est inférieure à celle spécifiée. Si une erreur survient dans la taille ou le type de fichier, le bloc if-else s'en charge. L'image est ensuite copiée dans un MemoryStream. Enfin, l'image est convertie en tableau d'octets car IronOcr.OcrInput peut accepter une image au format binaire.
La méthode GetText utilise IronOCR pourlire le texte à partir de l'image d'entrée. IronOCR utilise le dernier moteur Tesseract 5 et est disponible dans plus de 127 langues. L'image convertie en tableau d'octets est transmise en tant queOcrInput et le résultat est récupéré à l'aide de la fonctionTesseracte de ferLire méthode. IronTesseract développé par l'équipe IronOCR est la version étendue de Google Tesseract. Pour plus d'informations, consultez le siteExemple d'OCR Tesseract en C#.
Enfin, le texte extrait est enregistré dans la variable imageText pour être affiché. La bibliothèque prend en charge les images textuelles en anglais sans configuration supplémentaire. Vous pouvez voir comment utiliser les différentes langues sur ce sitepage d'exemple de code.
Blazor Frontend UI Component Source code
Créez maintenant l'interface utilisateur de l'application. Ouvrez le fichier OCR.razor et écrivez le code suivant :
Dans le code ci-dessus, l'interface utilisateur contient une balise input file pour choisir un fichier image et une balise image pour afficher l'image. Un bouton situé sous le champ de saisie déclenche la méthode GetText. Une zone de texte est utilisée pour afficher le texte extrait des données de l'image.
Ajouter un lien au menu de navigation
Enfin, ajoutez un lien vers la page OCR.razor dans le fichier NavMenu.razor sous le dossier Shared.
Supprimer les liens vers Counter et FetchData, car ils ne sont pas nécessaires.
Tout est maintenant terminé et prêt à être utilisé. Appuyez sur F5 pour lancer l'application.
La page d'accueil doit s'afficher comme indiqué ci-dessous :
L'interface utilisateur de l'application Blazor Server
Chargeons une image et extrayons du texte pour visualiser le résultat.
Images téléchargées et textes extraits
Le texte de sortie est propre et peut être copié à partir de la zone de texte.
Résumé
Cet article a montré comment créer un composant d'interface utilisateur Blazor avec du code dans l'application serveur Blazor pour lire des textes à partir d'images. L'IronOCR est une bibliothèque polyvalente permettant d'extraire du texte dans n'importe quelle application basée sur C#. Il prend en charge le dernier Framework .NET et peut être utilisé avec les applications Razor. IronOCR est une bibliothèque multiplateforme prise en charge sur Windows, Linux, macOS,Dockerazure, AWS etMAUI. En outre, IronOCR offre une grande précision en utilisant les meilleurs résultats de Tesseract, sans aucun réglage supplémentaire. Il prend en chargecadre multipage TIFF, Fichiers PDFet tous les formats d'image courants. Il est également possible delire les valeurs des codes-barres à partir d'images.
Vous pouvez également essayer IronOCR pourgratuit dans un essai gratuit. Télécharger la bibliothèque de logiciels à partir deici.
Regan est diplômé de l'université de Reading, où il a obtenu une licence en ingénierie électronique. Avant de rejoindre Iron Software, il s'était concentré sur une seule tâche. Ce qu'il apprécie le plus chez Iron Software, c'est la diversité des tâches qu'il peut accomplir, qu'il s'agisse d'apporter une valeur ajoutée aux ventes, à l'assistance technique, au développement de produits ou à la commercialisation. Il aime comprendre comment les développeurs utilisent la bibliothèque d'Iron Software et utiliser ces connaissances pour améliorer continuellement la documentation et développer les produits.
< PRÉCÉDENT API OCR pour les factures (Tutoriel du développeur)
SUIVANT > Extraction de données de reçus OCR (tutoriel étape par étape)
Des millions d'ingénieurs dans le monde entier lui font confiance
Réservez une démo en direct gratuite
Réservez une démonstration personnelle de 30 minutes.
Pas de contrat, pas de détails de carte, pas d'engagements.
Voici ce à quoi vous pouvez vous attendre :
Une démonstration en direct de notre produit et de ses principales fonctionnalités
Obtenez des recommandations de fonctionnalités spécifiques au projet
Toutes vos questions trouvent réponse pour vous assurer de disposer de toutes les informations dont vous avez besoin. (Aucune obligation de votre part.)
CHOISIR L'HEURE
VOS INFORMATIONS
Réservez votre gratuit Démonstration en direct
Fiable par plus de 2 millions d'ingénieurs dans le monde entier