Como usar Async e Multithreading em C# | IronOCR

Suporte a Async e Multithreading de C# com IronOCR

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

O IronOCR lida automaticamente com multithreading em todos os núcleos da CPU e fornece métodos assíncronos como ReadAsync() para executar OCR sem bloquear a thread principal, garantindo aplicativos responsivos mesmo durante o processamento de documentos grandes.

Introdução

Processar grandes volumes de dados de texto de forma eficiente requer tanto precisão quanto velocidade para operações OCR. Este artigo aborda o suporte assíncrono e multithreading no IronOCR e Tesseract. A programação assíncrona permite a execução de OCR não bloqueante, mantendo as aplicações responsivas durante as tarefas de reconhecimento de texto. O multithreading proporciona paralelismo para aumentar significativamente o desempenho do OCR. Essas técnicas ajudam os desenvolvedores a melhorar a eficiência e a capacidade de resposta de aplicativos alimentados por OCR.

Início rápido: Use ReadAsync para OCR assíncrono sem esforço

Use o método IronTesseract de ReadAsync para realizar OCR sem bloquear sua thread principal. Isso adiciona rapidamente OCR responsivo e não bloqueante ao seu aplicativo. Funciona particularmente bem ao processar documentos PDF ou lidar com vários arquivos de imagem simultaneamente.

  1. Instale IronOCR com o Gerenciador de Pacotes NuGet

    PM > Install-Package IronOcr
  2. Copie e execute este trecho de código.

    var result = await new IronOcr.IronTesseract().ReadAsync("image.png");
  3. Implante para testar em seu ambiente de produção.

    Comece a usar IronOCR em seu projeto hoje com uma avaliação gratuita

    arrow pointer

Como o Multithreading Funciona no IronOCR?

IronOCR melhora a eficiência do processamento de imagens e leitura de OCR através do multithreading contínuo, não exigindo API especializada dos desenvolvedores. IronTesseract aproveita automaticamente todos os threads disponíveis em vários núcleos, otimizando os recursos do sistema para uma execução rápida de OCR. Este multithreading embutido simplifica o desenvolvimento e aumenta significativamente o desempenho ao integrar o paralelismo diretamente no fluxo de trabalho do OCR.

A implementação multithread do Tesseract da biblioteca oferece essas vantagens principais:

  • Utilização automática dos núcleos da CPU: O IronOCR detecta e usa todos os núcleos disponíveis sem configuração manual
  • Operações seguras para threads: Todas as operações de OCR são projetadas para serem seguras para threads por padrão
  • Gerenciamento otimizado de recursos: Memória e recursos de processamento são eficientemente alocados entre os threads
  • Desempenho escalável: O tempo de processamento diminui proporcionalmente ao número de núcleos disponíveis

Aqui está um exemplo de leitura multithread em 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

Para cenários avançados que exigem configuração rápida de OCR, os desenvolvedores podem ajustar o comportamento do multithreading para atender requisitos específicos de desempenho mantendo a precisão.

Como Uso o Suporte Assíncrono no IronOCR?

A programação assíncrona otimiza o desempenho do OCR permitindo que os desenvolvedores executem tarefas de OCR sem bloquear o thread principal. Isso mantém os aplicativos responsivos enquanto processam documentos ou imagens grandes para reconhecimento de texto. O suporte assíncrono permite que o sistema lide com outras tarefas enquanto as operações de OCR ocorrem em segundo plano. Essa capacidade é crucial ao implementar o rastreamento de progresso do OCR em interfaces de usuário.

Esta seção abrange a integração do suporte assíncrono no IronOCR, demonstrando diferentes métodos para tornar os serviços de OCR não bloqueantes. As capacidades assíncronas do IronOCR garantem desempenho ideal tanto para aplicativos de desktop que requerem responsividade durante as operações de OCR quanto para serviços da web que lidam com múltiplos pedidos de OCR concorrentes.

Quando devo usar objetos OcrReadTask?

Os objetos OcrReadTask melhoram o controle e a flexibilidade nos processos de OCR com o IronOCR. Esses objetos encapsulam operações de OCR, permitindo gerenciamento eficiente das tarefas de reconhecimento de texto. Esta seção demonstra o uso de objetos OcrReadTask em seu fluxo de trabalho do IronOCR e mostra como eles iniciam e otimizam tarefas de OCR. Os objetos OcrReadTask ajudam a maximizar os recursos do IronOCR ao orquestrar o processamento complexo de documentos ou ajustar a capacidade de resposta do aplicativo.

Os objetos OcrReadTask funcionam melhor quando:

  • Você precisa de controle detalhado sobre a execução das tarefas
  • Implementando a funcionalidade de token de aborto para operações canceláveis
  • Gerenciando múltiplas operações concorrentes de OCR com diferentes prioridades
  • Integrando com agendadores de tarefas personalizados ou motores de fluxo de trabalho
: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

Como faço para usar o método ReadAsync?

ReadAsync() fornece um mecanismo direto para iniciar operações de OCR de forma assíncrona. Sem gerenciamento de threading ou tarefas complexo, os desenvolvedores podem integrar OCR assíncrono em seus aplicativos. Este método evita o bloqueio do thread principal durante as tarefas de OCR, garantindo que os aplicativos permaneçam responsivos.

O método ReadAsync funciona bem para:

  • Aplicativos de desktop que precisam manter a responsividade da UI
  • Aplicativos web que lidam com múltiplos pedidos simultâneos de OCR
  • Cenários de processamento em lotes onde o rastreamento de progresso é essencial
  • Integração com os padrões modernos async/await em aplicativos .NET
: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

Por Que Devo Usar Async e Multithreading com o IronOCR?

Combinar suporte assíncrono e multithreading no IronOCR proporciona numerosos benefícios para o desenvolvimento moderno de aplicações:

Benefícios de Desempenho:

  • Produtividade Aprimorada: Processe vários documentos simultaneamente sem bloqueio
  • Melhor Utilização dos Recursos: Maximize o uso da CPU em todos os núcleos disponíveis
  • Latência Reduzida: Inicie o processamento imediatamente sem esperar a conclusão das operações anteriores
  • Arquitetura Escalável: Lide com cargas de trabalho crescentes sem alterações na arquitetura

Benefícios do Desenvolvimento:

  • Código Simplificado: Não há necessidade de gerenciar threads manualmente - IronOCR lida com a complexidade
  • Padrões Modernos: Suporte total para padrões async/await em Tesseract 5 for .NET
  • Integração Fácil: Funciona perfeitamente com a infraestrutura async existente do .NET
  • Soluções Manuteníveis: Código claro e legível que segue as melhores práticas do .NET

A multithread em IronOCR otimiza significativamente as tarefas de OCR. Os recursos integrados de multithreading, combinados com métodos como ReadAsync(), simplificam o processamento de grandes volumes de dados de texto. Esta combinação garante que os aplicativos permaneçam responsivos e eficientes, tornando o IronOCR uma ferramenta eficaz para criar software de alto desempenho com capacidades de reconhecimento de texto simplificadas. Para começar com o conjunto completo de funcionalidades, confira nosso guia de instalação do pacote NuGet.

Perguntas frequentes

Como posso realizar OCR de forma assíncrona em C# sem bloquear minha thread principal?

O IronOCR fornece o método ReadAsync que permite a execução de OCR sem bloqueio. Você pode simplesmente usar `var result = await new IronOcr.IronTesseract().ReadAsync("image.png");` para realizar o OCR de forma assíncrona, mantendo seu aplicativo responsivo enquanto processa os documentos.

O OCR utiliza automaticamente vários núcleos de CPU para melhor desempenho?

Sim, o IronOCR aproveita automaticamente todos os núcleos de CPU disponíveis por meio de multithreading integrado. A implementação do IronTesseract detecta e utiliza todos os núcleos sem necessidade de configuração manual, proporcionando gerenciamento de recursos otimizado e desempenho escalável.

Quais são os principais benefícios do multithreading no processamento de OCR?

A implementação multithread do IronOCR oferece utilização automática dos núcleos da CPU, operações thread-safe por padrão, gerenciamento otimizado de recursos para memória e processamento, e desempenho escalável, onde o tempo de processamento diminui proporcionalmente aos núcleos disponíveis.

Posso processar vários documentos PDF simultaneamente com OCR assíncrono?

Sim, o método ReadAsync do IronOCR funciona particularmente bem ao processar documentos PDF ou lidar com vários arquivos de imagem simultaneamente, permitindo processar vários documentos ao mesmo tempo sem bloquear a aplicação.

Preciso escrever algum código especial para habilitar multithreading para OCR?

Não, o IronOCR não requer nenhuma API especializada ou configuração manual para multithreading. A biblioteca integra o paralelismo diretamente no fluxo de trabalho de OCR, gerenciando automaticamente as threads em vários núcleos para um desempenho ideal.

O que é o objeto OcrReadTask e como ele auxilia no processamento assíncrono?

O objeto OcrReadTask no IronOCR permite que você aproveite a concorrência assíncrona ao processar documentos. Ele permite gerenciar operações de OCR de forma assíncrona, enquanto a biblioteca lida com a complexidade subjacente de multithreading.

O IronOCR é totalmente compatível com o .NET 10?

O IronOCR é compatível com o .NET 10 a partir da sua versão mais recente, 2025.12. Você pode instalar a biblioteca usando o NuGet (Install-Package IronOcr) e executar métodos assíncronos como ReadAsync() no .NET 10 sem nenhuma configuração especial.

Quais são os benefícios de usar o IronOCR para gestão de documentos?

Usar o IronOCR para gestão de documentos simplifica o fluxo de trabalho convertendo documentos escaneados em texto pesquisável e editável, reduzindo a necessidade de inserção manual de dados e melhorando a acessibilidade dos documentos.

Como o IronOCR pode melhorar a precisão dos dados?

O IronOCR melhora a precisão dos dados através de seus algoritmos avançados de reconhecimento e recursos de correção de imagem, assegurando que o processo de extração de texto seja tanto confiável quanto preciso.

Há uma avaliação gratuita disponível para o IronOCR?

Sim, o Iron Software oferece uma avaliação gratuita do IronOCR, permitindo que os usuários testem seus recursos e capacidades antes de tomar uma decisão de compra.

Chipego
Engenheiro de Software
Chipego tem uma habilidade natural para ouvir, o que o ajuda a compreender os problemas dos clientes e a oferecer soluções inteligentes. Ele se juntou à equipe da Iron Software em 2023, após concluir o bacharelado em Tecnologia da Informação. IronPDF e IronOCR são os dois produtos nos ...
Leia mais
Pronto para começar?
Nuget Baixar 5,896,332 | Versão: 2026.5 just released
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronOcr
executar um exemplo Veja sua imagem se transformar em texto pesquisável.