Comment utiliser Async et Multithreading ?
Dans le paysage en constante évolution du développement de logiciels, le traitement efficace de grands volumes de données textuelles reste un défi majeur. Dans cet article, nous explorons la synergie dynamique du support asynchrone et du multithreading dans le contexte d'IronOCR et de Tesseract. La programmation asynchrone introduit un paradigme non bloquant, garantissant que nos applications restent souples et réactives pendant l'exécution des tâches OCR. Simultanément, nous nous plongeons dans le domaine du multithreading, dévoilant le potentiel du parallélisme pour augmenter de manière significative les performances des opérations de reconnaissance de texte. Rejoignez-nous pour démystifier l'intégration de ces techniques et permettre aux développeurs d'améliorer l'efficacité et la réactivité de leurs applications basées sur l'OCR.
Commencez avec IronOCR
Commencez à utiliser IronOCR dans votre projet dès aujourd'hui avec un essai gratuit.
Comment utiliser Async et Multithreading avec Tesseract
- Télécharger une bibliothèque C# qui supporte Tesseract avec async et multithreading
- Utiliser le multithreading géré par IronOCR
- Préparer le document PDF et l'image pour la lecture
- Utiliser l'objet OcrReadTask pour tirer parti de la concurrence asynchrone
- Utiliser le
ReadAsync
méthode pour faciliter l'utilisation
Comprendre le multithreading
Dans IronOCR, l'efficacité du traitement des images et de la lecture OCR est renforcée par un multithreading transparent, ce qui évite aux développeurs d'avoir recours à une API spécialisée. IronTesseract exploite automatiquement tous les threads disponibles sur plusieurs cœurs, optimisant ainsi les ressources du système pour une exécution rapide et réactive de l'OCR. Ce multithreading intrinsèque simplifie non seulement le développement, mais augmente également les performances de manière significative, démontrant une intégration sophistiquée du parallélisme dans le flux de travail de l'OCR.
Ainsi, une lecture multithread serait aussi simple que cela :
:path=/static-assets/ocr/content-code-examples/how-to/async-simple-multithreading.cs
using IronOcr;
using System;
var ocr = new IronTesseract();
using (var input = new OcrPdfInput(@"example.pdf"))
{
var result = ocr.Read(input);
Console.WriteLine(result.Text);
};
Imports IronOcr
Imports System
Private ocr = New IronTesseract()
Using input = New OcrPdfInput("example.pdf")
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
Comprendre le support asynchrone
Dans le domaine de la reconnaissance optique des caractères(OCR)la programmation asynchrone, ou "async", joue un rôle essentiel dans l'optimisation des performances. La prise en charge asynchrone permet aux développeurs d'exécuter les tâches d'OCR sans bloquer le thread principal, ce qui garantit la réactivité de l'application. Imaginez le traitement de documents ou d'images volumineux pour la reconnaissance de texte - la prise en charge asynchrone permet au système de continuer à traiter d'autres tâches pendant que les opérations d'OCR sont en cours.
Dans cette section, nous allons nous plonger dans l'intégration sans effort de la prise en charge asynchrone dans IronOCR, en présentant différentes façons de rendre vos services OCR non bloquants.
Utilisation d'un objet OcrReadTask
Lorsque vous travaillez avec IronOCR, l'utilisation des objets OcrReadTask
s'avère être un atout précieux pour améliorer le contrôle et la flexibilité de vos processus d'OCR. Ces objets encapsulent les opérations d'OCR, permettant aux développeurs de gérer efficacement les tâches de reconnaissance de texte. Cette section présente des exemples d'utilisation des objets OcrReadTask
dans votre flux de travail IronOCR, en montrant comment ils peuvent être utilisés pour lancer et optimiser les tâches d'OCR. Qu'il s'agisse d'orchestrer le traitement de documents complexes ou d'affiner la réactivité de votre application basée sur l'OCR, l'utilisation efficace des objets OcrReadTask
permet de maximiser les capacités d'IronOCR.
:path=/static-assets/ocr/content-code-examples/how-to/async-ocrtask.cs
using IronOcr;
IronTesseract ocr = new IronTesseract();
OcrPdfInput largePdf = new OcrPdfInput("chapter1.pdf");
Func<OcrResult> reader = () =>
{
return ocr.Read(largePdf);
};
OcrReadTask readTask = new OcrReadTask(reader.Invoke);
// Start the OCR task asynchronously
readTask.Start();
// Continue with other tasks while OCR is in progress
DoOtherTasks();
// Wait for the OCR task to complete and retrieve the result
OcrResult result = await Task.Run(() => readTask.Result);
Console.Write($"##### OCR RESULTS ###### \n {result.Text}");
largePdf.Dispose();
readTask.Dispose();
static void DoOtherTasks()
{
// Simulate other tasks being performed while OCR is in progress
Console.WriteLine("Performing other tasks...");
Thread.Sleep(2000); // Simulating work for 2000 milliseconds
}
Imports Microsoft.VisualBasic
Imports IronOcr
Private ocr As New IronTesseract()
Private largePdf As New OcrPdfInput("chapter1.pdf")
Private reader As Func(Of OcrResult) = Function()
Return ocr.Read(largePdf)
End Function
Private readTask As New OcrReadTask(AddressOf reader.Invoke)
' Start the OCR task asynchronously
readTask.Start()
' Continue with other tasks while OCR is in progress
DoOtherTasks()
' Wait for the OCR task to complete and retrieve the result
Dim result As OcrResult = Await Task.Run(Function() readTask.Result)
Console.Write($"##### OCR RESULTS ###### " & vbLf & " {result.Text}")
largePdf.Dispose()
readTask.Dispose()
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'static void DoOtherTasks()
'{
' ' Simulate other tasks being performed while OCR is in progress
' Console.WriteLine("Performing other tasks...");
' Thread.Sleep(2000); ' Simulating work for 2000 milliseconds
'}
Utiliser des méthodes asynchrones
ReadAsync()
fournit un mécanisme simple et intuitif pour lancer des opérations d'OCR de manière asynchrone. Sans avoir besoin d'un fil conducteur complexe ou d'une gestion complexe des tâches, les développeurs peuvent intégrer sans effort l'OCR asynchrone dans leurs applications. Cette méthode libère le fil d'exécution principal du fardeau que représente le blocage des tâches d'OCR, ce qui permet à l'application de rester réactive et agile.
:path=/static-assets/ocr/content-code-examples/how-to/async-read-async.cs
using IronOcr;
using System;
using System.Threading.Tasks;
IronTesseract ocr = new IronTesseract();
using (OcrPdfInput largePdf = new OcrPdfInput("PDFs/example.pdf"))
{
var result = await ocr.ReadAsync(largePdf);
DoOtherTasks();
Console.Write($"##### OCR RESULTS ###### " +
$"\n {result.Text}");
}
static void DoOtherTasks()
{
// Simulate other tasks being performed while OCR is in progress
Console.WriteLine("Performing other tasks...");
System.Threading.Thread.Sleep(2000); // Simulating work for 2000 milliseconds
}
Imports Microsoft.VisualBasic
Imports IronOcr
Imports System
Imports System.Threading.Tasks
Private ocr As New IronTesseract()
Using largePdf As New OcrPdfInput("PDFs/example.pdf")
Dim result = Await ocr.ReadAsync(largePdf)
DoOtherTasks()
Console.Write($"##### OCR RESULTS ###### " & $vbLf & " {result.Text}")
End Using
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'static void DoOtherTasks()
'{
' ' Simulate other tasks being performed while OCR is in progress
' Console.WriteLine("Performing other tasks...");
' System.Threading.Thread.Sleep(2000); ' Simulating work for 2000 milliseconds
'}
Conclusion
En résumé, l'exploitation du multithreading dans IronOCR change la donne pour l'optimisation des tâches d'OCR. Les capacités multithreading innées d'IronOCR, combinées à des méthodes conviviales telles que ReadAsync()simplifient le traitement de grands volumes de données textuelles. Cette synergie garantit la réactivité et l'efficacité de vos applications, ce qui fait d'IronOCR un outil formidable pour concevoir des solutions logicielles performantes dotées de capacités de reconnaissance de texte rationalisées.