Comment utiliser Async et Multithreading ?

This article was translated from English: Does it need improvement?
Translated
View the article in English

par Chipego Kalinda

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.

Première étape :
green arrow pointer



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
VB   C#

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
'}
VB   C#

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
'}
VB   C#

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.

Chipego related to Conclusion

Chipego

Ingénieur logiciel

Chipego a une capacité d'écoute naturelle qui l'aide à comprendre les problèmes des clients et à proposer des solutions intelligentes. Il a rejoint l'équipe d'Iron Software en 2023, après avoir obtenu une licence en technologie de l'information. IronPDF et IronOCR sont les deux produits sur lesquels Chipego s'est concentré, mais sa connaissance de tous les produits s'accroît chaque jour, au fur et à mesure qu'il trouve de nouvelles façons d'aider les clients. Il apprécie l'esprit de collaboration qui règne chez Iron Software, les membres de l'équipe venant de toute l'entreprise et apportant leur expérience variée pour contribuer à l'élaboration de solutions efficaces et innovantes. Lorsque Chipego n'est pas à son bureau, on le trouve souvent en train de lire un bon livre ou de jouer au football.