IRONSOFTWAREHOME

Como usar o rastreamento de progresso em C# com o IronOCR

Curtis Chau
Curtis Chau
Updated: 29 de junho de 2026

IronOCR fornece um sistema de rastreamento de progresso baseado em eventos para operações de OCR, permitindo que os desenvolvedores monitorem o progresso da leitura através do evento OcrProgress que relata a porcentagem de conclusão, páginas processadas e métricas de tempo em tempo real.

Início Rápido: Assine o OcrProgress e Leia o PDF

Este exemplo mostra como monitorar o progresso do OCR com IronOCR: inscreva-se no evento OcrProgress embutido e receba feedback instantâneo incluindo porcentagem, páginas concluídas e páginas totais enquanto lê um PDF. Bastam algumas linhas para começar.

  1. 1Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr

  2. 2Copie e execute este trecho de código.

    var ocr = new IronOcr.IronTesseract();
    ocr.OcrProgress += (s, e) => Console.WriteLine(e.ProgressPercent + "% (" + e.PagesComplete + "/" + e.TotalPages + ")");
    var result = ocr.Read(new IronOcr.OcrInput().LoadPdf("file.pdf"));
    C#
  3. 3Implante para testar em seu ambiente de produção.

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

Como implementar o acompanhamento do progresso no meu aplicativo de OCR?

O acompanhamento do progresso é essencial ao processar documentos grandes ou lotes de arquivos com OCR. O evento OcrProgress pode ser assinado para receber atualizações de progresso no processo de leitura. Isso é particularmente útil para operações de OCR em PDF e ao trabalhar com arquivos TIFF de várias páginas .

O evento passa uma instância contendo informações sobre o progresso da tarefa de OCR, como a hora de início, o número total de páginas, o progresso em porcentagem, a duração e a hora de término. Essa funcionalidade opera perfeitamente com operações assíncronas e pode ser combinada com multithreading para um desempenho aprimorado.

O exemplo a seguir utiliza este documento como amostra: " Experiências em Pesquisa de Biodiversidade: Um Curso de Campo " de Thea B. Gessler, Universidade Estadual de Iowa.

using IronOcr;
using System;

var ocrTesseract = new IronTesseract();

// Subscribe to OcrProgress event
ocrTesseract.OcrProgress += (_, ocrProgressEventsArgs) =>
{
    Console.WriteLine("Start time: " + ocrProgressEventsArgs.StartTimeUTC.ToString());
    Console.WriteLine("Total pages number: " + ocrProgressEventsArgs.TotalPages);
    Console.WriteLine("Progress(%) | Duration");
    Console.WriteLine("    " + ocrProgressEventsArgs.ProgressPercent + "%     | " + ocrProgressEventsArgs.Duration.TotalSeconds + "s");
    Console.WriteLine("End time: " + ocrProgressEventsArgs.EndTimeUTC.ToString());
    Console.WriteLine("----------------------------------------------");
};

using var input = new OcrInput();
input.LoadPdf("Experiences-in-Biodiversity-Research-A-Field-Course.pdf");

// Progress events will fire during the read operation
var result = ocrTesseract.Read(input);
Saída do console mostrando o progresso de 95% a 100% de conclusão, com registros de data e hora e dados de duração.

Que informações sobre o progresso posso acessar a partir do evento?

O evento OcrProgress fornece dados abrangentes de progresso que ajudam a monitorar e otimizar o desempenho do OCR. Cada propriedade serve a um propósito específico no acompanhamento da operação:

  • ProgressPercent: Progresso do trabalho de OCR como uma porcentagem de páginas concluídas, variando de 0 a 100. Útil para atualizar barras de progresso em aplicativos de GUI.
  • TotalPages: Número total de páginas sendo processadas pelo motor OCR. Essencial para calcular tempos estimados de conclusão.
  • PagesComplete: Número de páginas onde a leitura de OCR foi completamente concluída. Essa contagem aumenta gradualmente à medida que as páginas são processadas.
  • Duration: Duração total do trabalho de OCR, indicando o tempo levado para o processo inteiro ser concluído. Medido no formato TimeSpan e atualizado toda vez que o evento é gerado.
  • StartTimeUTC: Data e hora em que o trabalho de OCR começou, representado no formato Tempo Universal Coordenado (UTC).
  • EndTimeUTC: Data e hora em que o trabalho de OCR foi 100% concluído no formato UTC. Essa propriedade fica nula enquanto o OCR está em andamento e é preenchida assim que o processo termina.

Implementação avançada de acompanhamento do progresso

Para aplicações de produção, implemente um sistema de rastreamento de progresso mais sofisticado. Este exemplo inclui tratamento de erros e registro detalhado:

using IronOcr;
using System;
using System.Diagnostics;

public class OcrProgressTracker
{
    private readonly IronTesseract _tesseract;
    private Stopwatch _stopwatch;
    private int _lastReportedPercent = 0;

    public OcrProgressTracker()
    {
        _tesseract = new IronTesseract();
        
        // Configure for optimal performance
        _tesseract.Language = OcrLanguage.EnglishBest;
        _tesseract.Configuration.ReadBarCodes = false;
        
        // Subscribe to progress event
        _tesseract.OcrProgress += OnOcrProgress;
    }

    private void OnOcrProgress(object sender, OcrProgressEventsArgs e)
    {
        // Only report significant progress changes (every 10%)
        if (e.ProgressPercent - _lastReportedPercent >= 10 || e.ProgressPercent == 100)
        {
            _lastReportedPercent = e.ProgressPercent;
            
            Console.WriteLine($"Progress: {e.ProgressPercent}%");
            Console.WriteLine($"Pages: {e.PagesComplete}/{e.TotalPages}");
            Console.WriteLine($"Elapsed: {e.Duration.TotalSeconds:F1}s");
            
            // Estimate remaining time
            if (e.ProgressPercent > 0 && e.ProgressPercent < 100)
            {
                var estimatedTotal = e.Duration.TotalSeconds / (e.ProgressPercent / 100.0);
                var remaining = estimatedTotal - e.Duration.TotalSeconds;
                Console.WriteLine($"Estimated remaining: {remaining:F1}s");
            }
            
            Console.WriteLine("---");
        }
    }

    public OcrResult ProcessDocument(string filePath)
    {
        _stopwatch = Stopwatch.StartNew();
        
        using var input = new OcrInput();
        input.LoadPdf(filePath);
        
        // Apply image filters for better accuracy
        input.Deskew();
        input.DeNoise();
        
        var result = _tesseract.Read(input);
        
        _stopwatch.Stop();
        Console.WriteLine($"Total processing time: {_stopwatch.Elapsed.TotalSeconds:F1}s");
        
        return result;
    }
}

Integração do acompanhamento do progresso com aplicativos de interface do usuário

Ao desenvolver aplicações desktop com Windows Forms ou WPF, o acompanhamento do progresso torna-se crucial para a experiência do usuário. O evento de progresso pode atualizar elementos da interface do usuário com segurança:

using System;
using System.Windows.Forms;
using IronOcr;

public partial class OcrForm : Form
{
    private IronTesseract _tesseract;
    private ProgressBar progressBar;
    private Label statusLabel;

    public OcrForm()
    {
        InitializeComponent();
        _tesseract = new IronTesseract();
        _tesseract.OcrProgress += UpdateProgress;
    }

    private void UpdateProgress(object sender, OcrProgressEventsArgs e)
    {
        // Ensure UI updates happen on the main thread
        if (InvokeRequired)
        {
            BeginInvoke(new Action(() => UpdateProgress(sender, e)));
            return;
        }

        progressBar.Value = e.ProgressPercent;
        statusLabel.Text = $"Processing page {e.PagesComplete} of {e.TotalPages}";
        
        // Show completion message
        if (e.ProgressPercent == 100)
        {
            MessageBox.Show($"OCR completed in {e.Duration.TotalSeconds:F1} seconds");
        }
    }
}

Trabalhando com documentos grandes e tempos limite

Ao processar documentos extensos, o acompanhamento do progresso torna-se ainda mais valioso. Combine isso com configurações de tempo limite e tokens de aborto para um melhor controle:

using IronOcr;
using System;
using System.Threading;

public async Task ProcessLargeDocumentWithTimeout()
{
    var cts = new CancellationTokenSource();
    var tesseract = new IronTesseract();
    
    // Set a timeout of 5 minutes
    cts.CancelAfter(TimeSpan.FromMinutes(5));
    
    tesseract.OcrProgress += (s, e) =>
    {
        Console.WriteLine($"Progress: {e.ProgressPercent}% - Page {e.PagesComplete}/{e.TotalPages}");
        
        // Check if we should cancel based on progress
        if (e.Duration.TotalMinutes > 4 && e.ProgressPercent < 50)
        {
            Console.WriteLine("Processing too slow, cancelling...");
            cts.Cancel();
        }
    };
    
    try
    {
        using var input = new OcrInput();
        input.LoadPdf("large-document.pdf");
        
        var result = await Task.Run(() => 
            tesseract.Read(input, cts.Token), cts.Token);
            
        Console.WriteLine("OCR completed successfully");
    }
    catch (OperationCanceledException)
    {
        Console.WriteLine("OCR operation was cancelled");
    }
}

Melhores práticas para acompanhamento do progresso

  1. Frequência das Atualizações: O evento OcrProgress dispara frequentemente durante o processamento. Considere filtrar as atualizações para evitar sobrecarregar sua interface de usuário ou seus registros.

  2. Impacto no desempenho : O acompanhamento do progresso tem uma sobrecarga mínima de desempenho, mas o registro excessivo de logs ou atualizações da interface do usuário podem tornar o processo de OCR mais lento.

  3. Gerenciamento de memória : Para arquivos TIFF ou PDFs grandes , monitore o uso de memória em conjunto com o progresso para garantir o desempenho ideal.

  4. Tratamento de erros : Inclua sempre o tratamento de erros nos seus manipuladores de eventos de progresso para evitar que exceções interrompam o processo de OCR.

  5. Segurança de Thread: Ao atualizar elementos da UI a partir do evento de progresso, garanta a devida sincronização de thread usando métodos Invoke ou BeginInvoke.

Conclusão

O acompanhamento do progresso no IronOCR oferece visibilidade essencial das operações de OCR, permitindo que os desenvolvedores criem aplicativos responsivos que mantêm os usuários informados sobre o status do processamento. Aproveitando eficazmente o evento OcrProgress, você pode criar aplicativos profissionais que tratam de tudo, desde documentos de uma única página até extensos arquivos PDF com confiança.

Para técnicas de OCR mais avançadas, explore nossos guias sobre filtros de imagem e objetos de resultado para aprimorar ainda mais suas implementações de OCR.

Perguntas frequentes

Como posso acompanhar o progresso do OCR em tempo real?

O IronOCR oferece um sistema de acompanhamento de progresso baseado em eventos por meio do evento OcrProgress. Basta se inscrever nesse evento em sua instância do IronTesseract e você receberá atualizações em tempo real, incluindo a porcentagem de conclusão, as páginas processadas e as métricas de tempo durante as operações de OCR.

Que informações o evento OcrProgress fornece?

O evento OcrProgress no IronOCR fornece dados abrangentes, incluindo ProgressPercent (0-100%), contagem de TotalPages, contagem de PagesComplete, horários de início e término e duração total. Essas informações são particularmente úteis para atualizar barras de progresso em aplicativos com interface gráfica e monitorar o desempenho do OCR.

Posso usar o rastreamento de progresso com operações OCR assíncronas?

Sim, a funcionalidade de rastreamento de progresso do IronOCR funciona perfeitamente com operações assíncronas. Você pode combiná-la com processamento assíncrono e até mesmo com multithreading para melhorar o desempenho, enquanto ainda recebe atualizações de progresso em tempo real por meio do evento OcrProgress.

Como posso implementar um rastreador de progresso simples para OCR de PDF?

Para implementar o rastreamento básico de progresso com o IronOCR, crie uma instância do IronTesseract, inscreva-se no evento OcrProgress com uma expressão lambda ou um manipulador de eventos e, em seguida, chame o método Read com seu PDF. O evento será disparado periodicamente, fornecendo informações sobre a porcentagem concluída e as páginas processadas.

O acompanhamento do progresso é útil para o processamento de grandes volumes de documentos?

O acompanhamento do progresso é essencial ao processar documentos grandes ou lotes de arquivos com o IronOCR. É particularmente útil para operações de OCR em PDF e arquivos TIFF com várias páginas, permitindo monitorar o status do processamento, estimar os tempos de conclusão e fornecer feedback ao usuário durante operações demoradas.

Is there a recommended frequency for OcrProgress updates?

While the OcrProgress event fires frequently, it's recommended to filter updates to avoid overwhelming your UI or logs, which can impact performance.

How can IronOCR's progress tracking improve the processing of large documents?

When dealing with large documents, IronOCR's progress tracking allows for better control with timeout settings and abort tokens, providing a mechanism to handle slow processing efficiently.

Does progress tracking in IronOCR affect performance?

Progress tracking in IronOCR has minimal performance overhead, although excessive logging or UI updates based on progress events may slow down the overall OCR process.

What best practices should I follow for using progress tracking in IronOCR?

Best practices include managing update frequencies, ensuring thread safety when updating UI elements, and incorporating error handling to maintain smooth OCR operations.

Can IronOCR be used for tracking progress in multi-threaded environments?

Yes, IronOCR's progress tracking can be combined with multi-threading to enhance OCR performance, handling multiple documents or large files more efficiently.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Pronto para começar?

Nuget Downloads 6,236,385Versão:2026.9recém-lançado

Obtenha o seu GRÁTIS

Obtenha uma chave de avaliação de 30 dias instantaneamente.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.
bullet_testTeste em produção
sem marcas d'água
bullet_calendar30 dias completos
produto funcional
bullet_supportSuporte técnico 24 horas por dia,
5 dias por semana, durante o teste
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.
Biblioteca NuGet C# para PDF
Instalar com NuGet

Versão: 2026.9

PM > Install-Package IronOcr
nuget.org/packages/IronOcr/
  1. No Solution Explorer, clique com o botão direito do mouse em Referências e selecione Gerenciar Pacotes NuGet.
  2. Selecione Procurar e pesquise "IronOCR".
  3. Selecione o pacote e instale.
DLL de PDF em C#
Baixar DLL

Versão: 2026.9

ou faça o download do Windows Installer aqui .

  1. Baixe e descompacte o IronOCR em um local como ~/Libs dentro do diretório da sua solução.
  2. No Solution Explorer do Visual Studio, clique com o botão direito do mouse em Referências. Selecione Procurar e digite "IronOCR.dll".

Licenças a partir de US$ 749

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.