How to use Async and Multithreading

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

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 de la prise en charge 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, en 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.

Quickstart : Use ReadAsync for Effortless Async OCR

Voici comment il est facile de commencer : utilisez la méthode ReadAsync d'IronTesseract pour effectuer l'OCR sans bloquer votre fil d'exécution principal. Parfait pour ajouter rapidement une capacité d'OCR réactive et non bloquante à votre application.

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr

  2. Copy and run this code snippet.

    var result = await new IronOcr.IronTesseract().ReadAsync("image.png");
  3. Deploy to test on your live environment

    Start using IronOCR in your project today with a free trial
    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 de manière significative les performances, mettant en évidence une intégration sophistiquée du parallélisme dans le flux de travail de l'OCR.

Voici à quoi pourrait ressembler une lecture multithread en C# :

: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
$vbLabelText   $csharpLabel

Compréhension de la prise en charge asynchrone

Dans le domaine de la reconnaissance optique de 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 des tâches d'OCR sans bloquer le fil d'exécution 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é au sein de vos processus 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 fournit des exemples d'emploi des objets OcrReadTask dans votre flux de travail IronOcr, en démontrant comment ils peuvent être exploités pour lancer et optimiser les tâches d'OCR. Que vous orchestriez le traitement de documents complexes ou que vous peaufiniez la réactivité de votre application alimentée par l'OCR, l'utilisation efficace des objets OcrReadTask permet de maximiser les capacités de l'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
'}
$vbLabelText   $csharpLabel

Utiliser les 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 threading complexe ou d'une gestion de tâches complexe, les développeurs peuvent intégrer sans effort l'OCR asynchrone dans leurs applications. Cette méthode libère le fil 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
'}
$vbLabelText   $csharpLabel

Conclusion

En résumé, l'exploitation du multithreading dans IronOcr s'avère changer la donne pour l'optimisation des tâches d'OCR. Les capacités innées de multithreading d'IronOCR, associées à des méthodes conviviales telles que ReadAsync(), simplifient le traitement de grands volumes de données textuelles. Cette synergie garantit que vos applications restent réactives et efficaces, ce qui fait d'IronOcr un outil formidable pour concevoir des solutions logicielles performantes avec des capacités de reconnaissance de texte rationalisées.

Questions Fréquemment Posées

Comment la programmation asynchrone améliore-t-elle les tâches OCR ?

La programmation asynchrone dans IronOCR permet aux tâches OCR de s'exécuter sans bloquer le thread principal de l'application. Cela assure que l'application reste réactive pendant que les opérations OCR sont traitées en arrière-plan.

Quel rôle joue le multithreading dans les processus OCR ?

Le multithreading dans IronOCR permet un traitement parallèle sur plusieurs cœurs, optimisant les ressources système et augmentant considérablement les performances des opérations de reconnaissance de texte.

Comment puis-je commencer à utiliser async et multithreading avec Tesseract ?

Pour commencer à utiliser async et multithreading avec Tesseract, téléchargez une bibliothèque C# qui prend en charge ces fonctionnalités. IronOCR s'intègre parfaitement, vous permettant de gérer efficacement les tâches OCR avec des méthodes comme ReadAsync().

À quoi sert un objet OcrReadTask ?

Un objet OcrReadTask dans IronOCR encapsule les opérations OCR, offrant aux développeurs un contrôle accru et une flexibilité pour gérer efficacement les tâches de reconnaissance de texte.

Comment puis-je effectuer des opérations OCR non bloquantes ?

Vous pouvez effectuer des opérations OCR non bloquantes dans IronOCR en utilisant la méthode ReadAsync(). Cette approche permet aux tâches OCR de s'exécuter de manière asynchrone, libérant le thread principal et gardant l'application réactive.

Est-il possible de traiter à la fois des PDFs et des images avec IronOCR ?

Oui, IronOCR peut traiter à la fois des PDFs et des images pour la reconnaissance de texte. Il utilise le multithreading et les fonctionnalités async pour gérer efficacement divers types de documents.

Ai-je besoin d'une API spécialisée pour implémenter le multithreading dans IronOCR ?

Non, vous n'avez pas besoin d'une API spécialisée. IronOCR gère automatiquement le multithreading, exploitant tous les cœurs disponibles pour optimiser les performances des tâches OCR.

Comment la méthode ReadAsync() profite-t-elle aux applications OCR ?

La méthode ReadAsync() dans IronOCR permet aux développeurs de lancer des opérations OCR de manière asynchrone, garantissant que les applications restent agiles et réactives même lors du traitement de grands volumes de données textuelles.

Quels sont les avantages d'utiliser async et le multithreading ensemble en OCR ?

Utiliser async et le multithreading ensemble dans IronOCR offre une combinaison puissante pour optimiser les tâches OCR. Async assure une exécution non bloquante, tandis que le multithreading exploite plusieurs cœurs pour un traitement plus rapide.

IronOCR peut-il gérer automatiquement les tâches OCR sur plusieurs cœurs ?

Oui, IronOCR utilise automatiquement tous les cœurs disponibles pour les tâches OCR, optimisant la vitesse de traitement et l'utilisation des ressources sans nécessiter une gestion explicite de la part du développeur.

IronOCR est-il entièrement compatible avec .NET 10 ?

.NET 10 est pris en charge par IronOCR via sa dernière version 2025.11. Vous pouvez installer la bibliothèque à l'aide de NuGet (Install-Package IronOcr) et exécuter des méthodes asynchrones comme ReadAsync() sous .NET 10 sans configuration particulière.

Chipego
Ingénieur logiciel
Chipego a une aptitude naturelle à l'écoute qui l'aide à comprendre les problèmes des clients et à proposer des solutions intelligentes. Il a rejoint l'équipe Iron Software en 2023, après avoir étudié un baccalauréat en sciences en technologie de l'information. IronPDF et IronOCR sont les deux produits sur lesquels ...
Lire la suite
Prêt à commencer?
Nuget Téléchargements 5,044,537 | Version : 2025.11 vient de sortir