IRONSOFTWAREHOME

Fortschrittsverfolgung in C# mit IronOCR

Curtis Chau
Curtis Chau
Updated: 29. Juni 2026

IronOCR bietet ein ereignisbasiertes Fortschrittsüberwachungssystem für OCR-Operationen, das es Entwicklern ermöglicht, den Lesefortschritt über das OcrProgress-Ereignis zu überwachen, das den Abschlussprozentsatz, die verarbeiteten Seiten und die Zeitmetriken in Echtzeit meldet.

Schnellstart: OcrProgress abonnieren und PDF lesen

Dieses Beispiel zeigt, wie man den OCR-Fortschritt mit IronOCR überwacht: Abonnieren Sie das integrierte OcrProgress-Ereignis und erhalten Sie sofortiges Feedback, einschließlich Prozentsatz, abgeschlossene Seiten und Gesamtseiten während des Lesens eines PDFs. Für den Anfang werden nur ein paar Zeilen benötigt.

  1. 1Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr

  2. 2Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.

    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. 3Bereitstellen zum Testen in Ihrer Live-Umgebung

    Beginnen Sie noch heute, IronOCR in Ihrem Projekt zu verwenden, mit einer kostenlosen Testversion
    arrow pointer

Wie implementiere ich Fortschrittsverfolgung in meiner OCR-Anwendung?

Die Fortschrittsverfolgung ist bei der Verarbeitung großer Dokumente oder Dateistapel mit OCR unerlässlich. Das OcrProgress-Ereignis kann abonniert werden, um Fortschrittsupdates zum Leseprozess zu erhalten. Dies ist besonders nützlich für PDF OCR-Operationen und bei der Arbeit mit Multipage TIFF-Dateien.

Das Ereignis übergibt eine Instanz, die Informationen über den Fortschritt des OCR-Auftrags enthält, z. B. die Startzeit, die Gesamtzahl der Seiten, den Fortschritt in Prozent, die Dauer und die Endzeit. Diese Funktionalität arbeitet nahtlos mit asynchronen Operationen zusammen und kann zur Leistungssteigerung mit Multithreading kombiniert werden.

Das folgende Beispiel verwendet dieses Dokument als Vorlage: "Experiences in Biodiversity Research: Ein Feldkurs" von Thea B. Gessler, Iowa State University.

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);
Konsolenausgabe mit Fortschrittsverfolgung von 95 % bis 100 % Fertigstellung mit Zeitstempeln und Dauerdaten

Welche Fortschrittsinformationen kann ich über die Veranstaltung abrufen?

Das OcrProgress-Ereignis liefert umfassende Fortschrittsdaten, die helfen, die OCR-Leistung zu überwachen und zu optimieren. Jede Eigenschaft dient einem bestimmten Zweck bei der Nachverfolgung des Vorgangs:

  • ProgressPercent: Fortschritt des OCR-Jobs als Prozentsatz der abgeschlossenen Seiten, von 0 bis 100 reichend. Nützlich zum Aktualisieren von Fortschrittsbalken in GUI-Anwendungen.
  • TotalPages: Gesamte Anzahl der vom OCR-Engine verarbeiteten Seiten. Wesentlich zur Berechnung der geschätzten Fertigstellungszeiten.
  • PagesComplete: Anzahl der Seiten, bei denen die OCR-Lesung vollständig abgeschlossen ist. Die Anzahl der zu übersetzenden Seiten wird schrittweise erhöht.
  • Duration: Gesamtdauer des OCR-Jobs, die die für den gesamten Prozess benötigte Zeit angibt. Gemessen im TimeSpan-Format und aktualisiert jedes Mal, wenn das Ereignis ausgelöst wird.
  • StartTimeUTC: Datum und Uhrzeit, wann der OCR-Job gestartet wurde, dargestellt im Coordinated Universal Time (UTC) Format.
  • EndTimeUTC: Datum und Uhrzeit, wann der OCR-Job zu 100 % abgeschlossen war, im UTC-Format. Diese Eigenschaft ist während der OCR ungültig und wird nach Beendigung des Prozesses ausgefüllt.

Erweiterte Implementierung der Fortschrittsverfolgung

Für Produktionsanwendungen sollten Sie eine ausgefeiltere Fortschrittskontrolle implementieren. Dieses Beispiel beinhaltet Fehlerbehandlung und detaillierte Protokollierung:

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

Integration der Fortschrittsverfolgung in UI-Anwendungen

Bei der Entwicklung von Desktop-Anwendungen mit Windows Forms oder WPF ist die Fortschrittsverfolgung für die Benutzererfahrung von entscheidender Bedeutung. Das Fortschrittsereignis kann UI-Elemente sicher aktualisieren:

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

Arbeiten mit großen Dokumenten und Zeitüberschreitungen

Bei der Bearbeitung umfangreicher Dokumente wird die Fortschrittskontrolle noch wertvoller. Kombinieren Sie sie mit Timeout-Einstellungen und Abbruch-Tokens für eine bessere Kontrolle:

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

Best Practices für die Fortschrittsverfolgung

  1. Häufigkeit der Aktualisierungen: Das OcrProgress-Ereignis wird häufig während der Verarbeitung ausgelöst. Ziehen Sie in Erwägung, Aktualisierungen zu filtern, um Ihre Benutzeroberfläche oder Protokolle nicht zu überfrachten.

  2. Auswirkungen auf die Leistung: Die Fortschrittsverfolgung hat einen minimalen Leistungsaufwand, aber übermäßige Protokollierung oder UI-Aktualisierungen können den OCR-Prozess verlangsamen.

  3. Speichermanagement: Überwachen Sie bei großen TIFF-Dateien oder PDFs die Speichernutzung parallel zum Fortschritt, um eine optimale Leistung zu gewährleisten.

  4. Fehlerbehandlung: Nehmen Sie immer eine Fehlerbehandlung in Ihre Fortschrittsereignishandler auf, um zu verhindern, dass Ausnahmen den OCR-Prozess unterbrechen.

  5. Threadsicherheit: Stellen Sie beim Aktualisieren von UI-Elementen aus dem Fortschrittsereignis sicher, dass eine ordnungsgemäße Thread-Synchronisierung unter Verwendung der Invoke- oder BeginInvoke-Methoden gewährleistet ist.

Abschluss

Die Fortschrittsverfolgung in IronOCR bietet einen wesentlichen Einblick in OCR-Vorgänge und ermöglicht es Entwicklern, reaktionsschnelle Anwendungen zu erstellen, die die Benutzer über den Verarbeitungsstatus informieren. Indem Sie das OcrProgress-Ereignis effektiv nutzen, können Sie professionelle Anwendungen entwickeln, die alles von Einzelseitendokumenten bis hin zu umfangreichen PDF-Dateien sicher verarbeiten.

Weitere fortgeschrittene OCR-Techniken finden Sie in unseren Anleitungen zu Bildfiltern und Ergebnisobjekten, um Ihre OCR-Implementierungen weiter zu verbessern.

Häufig gestellte Fragen

Wie kann ich den OCR-Fortschritt in Echtzeit verfolgen?

IronOCR bietet mit dem Ereignis OcrProgress ein ereignisbasiertes System zur Fortschrittsverfolgung. Abonnieren Sie einfach dieses Ereignis auf Ihrer IronTesseract-Instanz, und Sie erhalten Echtzeit-Updates, einschließlich Fertigstellungsprozentsatz, verarbeitete Seiten und Zeitmetriken während der OCR-Vorgänge.

Welche Informationen bietet die Veranstaltung OcrProgress?

Das Ereignis OcrProgress in IronOCR liefert umfassende Daten, darunter ProgressPercent (0-100%), TotalPages count, PagesComplete count, Start- und Endzeiten sowie die Gesamtdauer. Diese Informationen sind besonders nützlich, um Fortschrittsbalken in GUI-Anwendungen zu aktualisieren und die OCR-Leistung zu überwachen.

Kann ich die Fortschrittsverfolgung mit asynchronen OCR-Vorgängen verwenden?

Ja, die Fortschrittsverfolgungsfunktion von IronOCR funktioniert nahtlos mit asynchronen Operationen. Sie können sie mit asynchroner Verarbeitung und sogar Multithreading kombinieren, um die Leistung zu verbessern, während Sie immer noch Fortschrittsaktualisierungen in Echtzeit über das Ereignis OcrProgress erhalten.

Wie implementiere ich einen einfachen Fortschrittsanzeiger für PDF OCR?

Um eine einfache Fortschrittsverfolgung mit IronOCR zu implementieren, erstellen Sie eine IronTesseract-Instanz, abonnieren Sie das OcrProgress-Ereignis mit einem Lambda-Ausdruck oder Event-Handler und rufen Sie dann die Read-Methode mit Ihrer PDF-Datei auf. Das Ereignis wird in regelmäßigen Abständen ausgelöst und liefert Informationen zur prozentualen Vollständigkeit und zu den verarbeiteten Seiten.

Ist die Fortschrittsverfolgung bei der Verarbeitung großer Dokumente sinnvoll?

Die Fortschrittsverfolgung ist bei der Verarbeitung großer Dokumente oder Dateistapel mit IronOCR unerlässlich. Sie ist besonders wertvoll für PDF-OCR-Vorgänge und mehrseitige TIFF-Dateien und ermöglicht es Ihnen, den Verarbeitungsstatus zu überwachen, Fertigstellungszeiten abzuschätzen und dem Benutzer während langwieriger Vorgänge Feedback zu geben.

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
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender Handbücher.

...
Weiterlesen

Bereit anzufangen?

Nuget Downloads 6,236,385Version:2026.9gerade veröffentlicht

Holen Sie sich Ihre KOSTENLOSE

30-Tage-Testlizenz sofort.

bullet_checkedKeine Kreditkarte oder Kontoerstellung erforderlich
bullet_testTesten Sie in der Produktion
ohne Wasserzeichen
bullet_calendar30 Tage voll
funktionsfähiges Produkt
bullet_support24/5 technischer
Support während der Testphase
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.
C# NuGet-Bibliothek für PDF
Installation mit NuGet

Version: 2026.9

PM > Install-Package IronOcr
nuget.org/packages/IronOcr/
  1. Rechtsklick auf Referenzen, NuGet-Pakete verwalten
  2. Wählen Sie Durchsuchen und suchen Sie nach "IronOCR"
  3. Paket auswählen und installieren
C# PDF DLL
Download DLL

Version: 2026.9

oder laden Sie den Windows Installer hier herunter.

  1. Laden Sie IronOCR herunter und entpacken Sie es in einem Ordner wie ~/Libs in Ihrem Lösungsverzeichnis.
  2. Klicken Sie im Visual Studio Solution Explorer mit der rechten Maustaste auf Referenzen. Wählen Sie Durchsuchen, "IronOCR.dll"

Lizenzen von $999

Key in blue circle

Holen Sie sich sofort Ihren kostenlosen 30-Tage-Testschlüssel.

Your trial license will be sent to your email address

Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.

bullet_checkedIhr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Erhalten Sie Ihre unverbindliche Beratung
Füllen Sie das Formular unten aus oder senden Sie eine E-Mail an sales@ironsoftware.com
Ihre Daten werden immer vertraulich behandelt.
Von Millionen von Ingenieur*innen weltweit vertraut
Kundenlogos von Iron Software
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.