Test dans un environnement réel
Test en production sans filigrane.
Fonctionne partout où vous en avez besoin.
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.
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.
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.
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 :
<script src="_content/BlazorInputFile/inputfile.js"></script>
<script src="_content/BlazorInputFile/inputfile.js"></script>
**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
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
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.
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
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 fer
Lire
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.
Créez maintenant l'interface utilisateur de l'application. Ouvrez le fichier OCR.razor
et écrivez le code suivant :
@page "/IronOCR"
@inherits OCRModel
<h2>Optical Character Recognition (OCR) Using Blazor and IronOCR Software</h2>
<div class="row">
<div class="col-md-5">
<textarea disabled class="form-control" rows="10" cols="15">@imageText</textarea>
</div>
<div class="col-md-5">
<div class="image-container">
<img class="preview-image" width="800" height="500" src=@imagePreview>
</div>
<BlazorInputFile.InputFile OnChange="@ViewImage" />
<p>@status</p>
<hr />
<button class="btn btn-primary btn-lg" @onclick="GetText">
Extract Text
</button>
</div>
</div>
@page "/IronOCR"
@inherits OCRModel
<h2>Optical Character Recognition (OCR) Using Blazor and IronOCR Software</h2>
<div class="row">
<div class="col-md-5">
<textarea disabled class="form-control" rows="10" cols="15">@imageText</textarea>
</div>
<div class="col-md-5">
<div class="image-container">
<img class="preview-image" width="800" height="500" src=@imagePreview>
</div>
<BlazorInputFile.InputFile OnChange="@ViewImage" />
<p>@status</p>
<hr />
<button class="btn btn-primary btn-lg" @onclick="GetText">
Extract Text
</button>
</div>
</div>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'@page "/IronOCR" @inherits OCRModel <h2> Optical Character Recognition(OCR) @Using Blazor @and IronOCR Software</h2> <div class="row"> <div class="col-md-5"> <textarea disabled class="form-control" rows="10" cols="15"> @imageText</textarea> </div> <div class="col-md-5"> <div class="image-container"> <img class="preview-image" width="800" height="500" src=@imagePreview> </div> <BlazorInputFile.InputFile OnChange="@ViewImage" /> <p> @status</p> <hr /> <button class="btn btn-primary btn-lg" @onclick="GetText"> Extract Text </button> </div> </div>
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.
Enfin, ajoutez un lien vers la page OCR.razor dans le fichier NavMenu.razor
sous le dossier Shared.
<div class="nav-item px-3">
<NavLink class="nav-link" href="IronOCR">
<span class="oi oi-plus" aria-hidden="true"></span> Read Image Text
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="IronOCR">
<span class="oi oi-plus" aria-hidden="true"></span> Read Image Text
</NavLink>
</div>
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.
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.
9 produits de l'API .NET pour vos documents de bureau