Cómo utilizar Async y Multithreading
En el panorama en constante evolución del desarrollo de software, el tratamiento eficaz de grandes volúmenes de datos textuales sigue siendo un reto fundamental. En este artículo, exploramos la sinergia dinámica de Async Support y Multithreading en el contexto de IronOCR y Tesseract. La programación asíncrona introduce un paradigma de no bloqueo, lo que garantiza que nuestras aplicaciones sigan siendo ágiles y reactivas durante la ejecución de las tareas de OCR. Al mismo tiempo, nos adentramos en el reino del multihilo, desentrañando el potencial del paralelismo para aumentar significativamente el rendimiento de las operaciones de reconocimiento de texto. Únase a nosotros para desmitificar la integración de estas técnicas y permitir a los desarrolladores aumentar la eficacia y la capacidad de respuesta de sus aplicaciones basadas en OCR.
Cómo utilizar Async y Multithreading con Tesseract
- Descargar una biblioteca C# compatible con Tesseract con async y multithreading
- Utilizar el multithreading gestionado por IronOCR
- Preparar el documento PDF y la imagen para su lectura
- Utilizar el objeto OcrReadTask para aprovechar la concurrencia asíncrona
- Utiliza el
ReadAsync
método para facilitar su uso
Instalar con NuGet
Install-Package IronOcr
Comprender el multihilo
En IronOCR, la eficacia del procesamiento de imágenes y la lectura OCR se ve reforzada por el multithreading sin fisuras, lo que elimina la necesidad de que los desarrolladores empleen una API especializada. IronTesseract aprovecha automáticamente todos los subprocesos disponibles en varios núcleos, optimizando los recursos del sistema para una ejecución rápida y ágil del OCR. Este multithreading intrínseco no sólo simplifica el desarrollo, sino que también aumenta significativamente el rendimiento, mostrando una sofisticada integración del paralelismo en el flujo de trabajo de OCR.
Así que una lectura multihilo sería tan simple como esto:
: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
Comprender la compatibilidad con Async
En el ámbito del reconocimiento óptico de caracteres (OCR)La programación asíncrona, o "async", desempeña un papel fundamental en la optimización del rendimiento. La compatibilidad asíncrona permite a los desarrolladores ejecutar tareas de OCR sin bloquear el subproceso principal, lo que garantiza la capacidad de respuesta de la aplicación. Imagina el procesamiento de documentos o imágenes de gran tamaño para el reconocimiento de texto: la compatibilidad asíncrona permite al sistema seguir gestionando otras tareas mientras se llevan a cabo las operaciones de OCR.
En esta sección, profundizaremos en la integración sin esfuerzo de Async Support en IronOCR, mostrando diferentes formas de hacer que sus servicios OCR no se bloqueen.
Uso de un objeto OcrReadTask
Cuando se trabaja con IronOCR, la utilización de objetos OcrReadTask
demuestra ser un activo valioso para mejorar el control y la flexibilidad dentro de sus procesos de OCR. Estos objetos encapsulan las operaciones de OCR, lo que permite a los desarrolladores gestionar eficazmente las tareas de reconocimiento de texto. Esta sección proporciona ejemplos del empleo de objetos OcrReadTask
en su flujo de trabajo IronOCR, demostrando cómo pueden ser aprovechados para iniciar y optimizar tareas OCR. Ya sea que esté orquestando el procesamiento de documentos complejos o ajustando la capacidad de respuesta de su aplicación potenciada por OCR, la utilización eficaz de los objetos OcrReadTask
ayuda a maximizar las capacidades de 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
'}
Utilizar métodos asíncronos
ReadAsync()
proporciona un mecanismo sencillo e intuitivo para iniciar operaciones de OCR de forma asíncrona. Sin necesidad de hilos intrincados ni de una compleja gestión de tareas, los desarrolladores pueden integrar sin esfuerzo el OCR asíncrono en sus aplicaciones. Este método libera al subproceso principal de la carga que supone el bloqueo de las tareas de OCR, lo que garantiza la capacidad de respuesta y la agilidad de la aplicación.
: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
'}
Conclusión
En resumen, el aprovechamiento del multithreading en IronOCR ha demostrado ser un gran cambio en la optimización de las tareas de OCR. Las capacidades multithreading innatas de IronOCR, combinadas con métodos fáciles de usar como ReadAsync()simplifican el tratamiento de grandes volúmenes de datos de texto. Esta sinergia garantiza la capacidad de respuesta y la eficacia de sus aplicaciones, lo que convierte a IronOCR en una herramienta formidable para crear soluciones de software de alto rendimiento con funciones de reconocimiento de texto optimizadas.