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

IronOCR lida automaticamente com multithreading em todos os núcleos da CPU e fornece métodos assíncronos como ReadAsync() para realizar OCR sem bloquear seu thread principal, garantindo aplicativos responsivos enquanto processa 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 ReadAsync do IronTesseract para realizar OCR sem bloquear seu 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 múltiplos núcleos, otimizando os recursos do sistema para uma rápida execução 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);
};
$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?

Objetos OcrReadTask aumentam 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 no seu fluxo de trabalho do IronOCR e mostra como eles iniciam e otimizam tarefas de OCR. Objetos OcrReadTask ajudam a maximizar as capacidades do IronOCR ao orquestrar o processamento complexo de documentos ou ajustar a responsividade do aplicativo.

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

Como Uso 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
}
$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. As capacidades integradas de multithreading, combinadas com métodos como ReadAsync(), simplificam o manuseio 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.

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 Downloads 5,525,971 | Versão: 2026.3 acaba de ser lançado
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.