IRONSOFTWAREHOME

Jak korzystać z funkcji śledzenia postępów w języku C# za pomocą IronOCR

Curtis Chau
Curtis Chau
Updated: 29 czerwca 2026

IronOCR zapewnia system śledzenia postępu oparty na zdarzeniach dla operacji OCR, umożliwiając programistom monitorowanie postępu odczytu poprzez zdarzenie OcrProgress, które zgłasza procent ukończenia, przetworzone strony i dane czasowe w czasie rzeczywistym.

Szybki start: Subskrybuj OcrProgress i czytaj pliki PDF

Ten przykład pokazuje, jak monitorować postęp OCR za pomocą IronOCR: subskrybuj jego wbudowane zdarzenie OcrProgress i otrzymuj natychmiastowe informacje zwrotne, w tym procent, ukończone strony i łączną liczbę stron podczas czytania PDF. Aby rozpocząć, wystarczy kilka wierszy.

  1. 1Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr

  2. 2Skopiuj i uruchom ten fragment kodu.

    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. 3Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronOCR w swoim projekcie już dziś z darmową wersją próbną
    arrow pointer

Jak wdrożyć śledzenie postępów w mojej aplikacji OCR?

Śledzenie postępów jest niezbędne podczas przetwarzania dużych dokumentów lub partii plików za pomocą OCR. Zdarzenie OcrProgress można subskrybować, aby otrzymywać aktualizacje postępów procesu czytania. Jest to szczególnie przydatne w przypadku operacji OCR plików PDF oraz podczas pracy z wielostronicowymi plikami TIFF.

Zdarzenie przekazuje instancję zawierającą informacje o postępie zadania OCR, takie jak czas rozpoczęcia, łączna liczba stron, postęp w procentach, czas trwania i czas zakończenia. Ta funkcjonalność działa płynnie z operacjami asynchronicznymi i może być połączona z wielowątkowością w celu zwiększenia wydajności.

W poniższym przykładzie wykorzystano ten dokument jako próbkę: "Doświadczenia w badaniach nad różnorodnością biologiczną: kurs terenowy" autorstwa Thei B. Gessler, Uniwersytet Stanowy w 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);
Wynik konsoli pokazujący śledzenie postępu od 95% do 100% ukończenia wraz z sygnaturami czasowymi i danymi dotyczącymi czasu trwania

Jakie informacje o postępach mogę uzyskać podczas wydarzenia?

Zdarzenie OcrProgress dostarcza kompleksowe dane postępów, które pomagają monitorować i optymalizować wydajność OCR. Każda właściwość służy konkretnemu celowi w śledzeniu operacji:

  • ProgressPercent: Postęp pracy OCR jako procent ukończonych stron, wahający się od 0 do 100. Przydatny do aktualizowania paska postępu w aplikacjach GUI.
  • TotalPages: Całkowita liczba stron przetwarzanych przez silnik OCR. Niezbędna do kalkulacji szacunkowego czasu ukończenia.
  • PagesComplete: Liczba stron, dla których czytanie OCR zostało całkowicie ukończone. Liczba ta rośnie stopniowo w miarę przetwarzania stron.
  • Duration: Łączny czas trwania pracy OCR, wskazujący czas potrzebny na ukończenie całego procesu. Mierzony w formacie TimeSpan i aktualizowany za każdym razem, gdy zdarzenie się uruchamia.
  • StartTimeUTC: Data i czas rozpoczęcia pracy OCR, przedstawiony w formacie Koordynowanego Czasu Uniwersalnego (UTC).
  • EndTimeUTC: Data i czas, kiedy praca OCR została w 100% ukończona w formacie UTC. Ta właściwość ma wartość null podczas trwania procesu OCR i zostaje wypełniona po zakończeniu procesu.

Zaawansowane wdrożenie śledzenia postępów

W przypadku aplikacji produkcyjnych należy wdrożyć bardziej zaawansowane śledzenie postępów. Ten przykład obejmuje obsługę błędów i szczegółowe logowanie:

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;
    }
}

Integracja śledzenia postępów z aplikacjami UI

Podczas tworzenia aplikacji desktopowych przy użyciu Windows Forms lub WPF śledzenie postępów ma kluczowe znaczenie dla komfortu użytkowania. Zdarzenie progress może bezpiecznie aktualizować elementy interfejsu użytkownika:

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");
        }
    }
}

Praca z dużymi dokumentami i limitami czasu

Podczas przetwarzania obszernych dokumentów śledzenie postępów staje się jeszcze bardziej cenne. Połącz to z ustawieniami limitu czasu i tokenami przerwania, aby uzyskać lepszą kontrolę:

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");
    }
}

Najlepsze praktyki w zakresie śledzenia postępów

  1. Częstotliwość aktualizacji: Zdarzenie OcrProgress uruchamia się często w trakcie przetwarzania. Rozważ filtrowanie aktualizacji, aby uniknąć przeładowania interfejsu użytkownika lub logów.

  2. Wpływ na wydajność: Śledzenie postępów powoduje minimalne obciążenie wydajnościowe, ale nadmierne logowanie lub aktualizacje interfejsu użytkownika mogą spowolnić proces OCR.

  3. Zarządzanie pamięcią: W przypadku dużych plików TIFF lub PDF należy monitorować wykorzystanie pamięci wraz z postępem przetwarzania, aby zapewnić optymalną wydajność.

  4. Obsługa błędów: Zawsze uwzględniaj obsługę błędów w procedurach obsługi zdarzeń postępu, aby zapobiec zakłóceniom procesu OCR przez wyjątki.

  5. Bezpieczeństwo wątków: Aktualizując elementy UI z poziomu zdarzenia postępu, zapewnij poprawną synchronizację wątków za pomocą metod Invoke lub BeginInvoke.

Wnioski

Śledzenie postępów w IronOCR zapewnia niezbędny wgląd w operacje OCR, umożliwiając programistom tworzenie responsywnych aplikacji, które na bieżąco informują użytkowników o statusie przetwarzania. Wykorzystując zdarzenie OcrProgress skutecznie, możesz tworzyć profesjonalne aplikacje, które radzą sobie z wszystkim, od dokumentów jednorazowych po obszerne pliki PDF z pewnością.

Aby poznać bardziej zaawansowane techniki OCR, zapoznaj się z naszymi przewodnikami dotyczącymi filtrów obrazu i obiektów wynikowych, które pozwolą Ci jeszcze bardziej ulepszyć Twoje implementacje OCR.

Często Zadawane Pytania

Jak śledzić postępy OCR w czasie rzeczywistym?

IronOCR zapewnia system śledzenia postępów oparty na zdarzeniach przez zdarzenie OcrProgress. Wystarczy zasubskrybować to zdarzenie na swojej instancji IronTesseract, a otrzymasz aktualizacje w czasie rzeczywistym, w tym procent ukończenia, strony przetworzone i metryki czasowe podczas operacji OCR.

Jakie informacje dostarcza zdarzenie OcrProgress?

Zdarzenie OcrProgress w IronOCR dostarcza pełnych danych, w tym ProgressPercent (0-100%), liczby TotalPages, liczby PagesComplete, czasu rozpoczęcia i zakończenia oraz całkowitego czasu trwania. Te informacje są szczególnie przydatne do aktualizacji pasków postępu w aplikacjach GUI i monitorowania wydajności OCR.

Czy mogę używać śledzenia postępów z asynchronicznymi operacjami OCR?

Tak, funkcjonalność śledzenia postępów IronOCR działa bezproblemowo z operacjami asynchronicznymi. Możesz ją łączyć z asynchronicznym przetwarzaniem a nawet wielowątkowością, aby zwiększyć wydajność, otrzymując jednocześnie aktualizacje postępów w czasie rzeczywistym przez zdarzenie OcrProgress.

Jak zaimplementować prosty śledzący postępów dla OCR PDF?

Aby zaimplementować podstawowe śledzenie postępów z IronOCR, utwórz instancję IronTesseract, zasubskrybuj zdarzenie OcrProgress za pomocą wyrażenia lambda lub obsługi zdarzeń, następnie wywołaj metodę Read z twoim PDF. Zdarzenie będzie wywoływane okresowo, dostarczając informacje o procencie ukończenia i przetworzonych stronach.

Czy śledzenie postępów jest przydatne przy przetwarzaniu dużych dokumentów?

Śledzenie postępów jest niezbędne przy przetwarzaniu dużych dokumentów lub partii plików z IronOCR. Jest szczególnie cenne dla operacji OCR PDF i wielostronicowych plików TIFF, pozwalając na monitorowanie statusu przetwarzania, oszacowanie czasu ukończenia i dostarczanie feedbacku dla użytkownika podczas długich operacji.

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
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.

...
Czytaj więcej

Gotowy, aby rozpocząć?

Nuget Downloads 6,236,385Wersja:2026.9właśnie wydany

Odbierz swój BEZPŁATNY

30-dniowy klucz próbny natychmiast.

bullet_checkedNie wymaga karty kredytowej ani tworzenia konta
test_punktorówTestuj w produkcji
bez znaków wodnych
kalendarz_punktorów30 dni w pełni
funkcjonalny produkt
wsparcie_punktorów24/5 wsparcie techniczne
w trakcie okresu próbnego
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta
Biblioteka C# NuGet dla plików PDF
Zainstaluj za pomocą NuGet

Wersja: 2026.9

PM > Install-Package IronOcr
nuget.org/packages/IronOcr/
  1. W Eksploratorze Rozwiązań, kliknij prawym przyciskiem Myszy na Odwołania, Zarządzaj pakietami NuGet
  2. Wybierz Przeglądaj i szukaj „IronOCR”
  3. Wybierz pakiet i zainstaluj
DLL PDF dla C#
Pobierz DLL

Wersja: 2026.9

lub pobierz Instalator Windows tutaj.

  1. Pobierz i rozpakuj IronOCR do lokalizacji, takiej jak ~/Libs w katalogu Solution
  2. W Eksploratorze rozwiązań Visual Studio kliknij prawym przyciskiem myszy Odwołania. Wybierz Przeglądaj, „IronOCR.dll”

Licencje od 749 USD

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Otrzymaj swoją Konsultację Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta