Wie man Async und Multithreading in C# | IronOCR verwendet

C# Async & Multithreading Unterstützung mit IronOCR

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

IronOCR beherrscht automatisch Multithreading auf allen CPU-Kernen und bietet asynchrone Methoden wie ReadAsync(), um OCR durchzuführen, ohne den Haupt-Thread zu blockieren, und gewährleistet so reaktionsschnelle Anwendungen bei der Verarbeitung großer Dokumente.

Einführung

Die effiziente Verarbeitung großer Mengen von Textdaten erfordert sowohl Genauigkeit als auch Geschwindigkeit für OCR-Operationen. Dieser Artikel behandelt die asynchrone Unterstützung und das Multithreading in IronOCR und Tesseract. Die asynchrone Programmierung ermöglicht eine nicht blockierende OCR-Ausführung, so dass die Anwendungen während der Texterkennungsaufgaben reaktionsfähig bleiben. Multithreading bietet Parallelität, um die OCR-Leistung erheblich zu steigern. Diese Techniken helfen Entwicklern, die Effizienz und Reaktionsfähigkeit von OCR-gestützten Anwendungen zu verbessern.

  • als-Überschrift:2(Schnellstart: Verwenden Sie ReadAsync für müheloses asynchrones OCR)*

Verwenden Sie die ReadAsync-Methode von IronTesseract, um OCR durchzuführen, ohne Ihren Hauptthread zu blockieren. Dadurch wird Ihrer Anwendung schnell eine reaktionsschnelle, nicht blockierende OCR hinzugefügt. Sie eignet sich besonders gut für die Verarbeitung von PDF-Dokumenten oder die gleichzeitige Bearbeitung mehrerer Bilddateien.

Nuget IconLegen Sie jetzt mit NuGet los, um PDFs zu erstellen:

  1. Installieren Sie IronOCR mit dem NuGet-Paketmanager.

    PM > Install-Package IronOcr

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

    var result = await new IronOcr.IronTesseract().ReadAsync("image.png");
  3. Bereitstellen zum Testen in Ihrer Live-Umgebung

    Beginnen Sie noch heute mit der Nutzung von IronOCR in Ihrem Projekt – mit einer kostenlosen Testversion.
    arrow pointer

Wie funktioniert Multithreading in IronOCR?

IronOCR verbessert die Effizienz der Bildverarbeitung und OCR-Lesung durch nahtloses Multithreading und erfordert keine spezielle API von den Entwicklern. IronTesseract nutzt automatisch alle verfügbaren Threads auf mehreren Kernen und optimiert die Systemressourcen für eine schnelle OCR-Ausführung. Dieses integrierte Multithreading vereinfacht die Entwicklung und steigert die Leistung erheblich, indem es die Parallelität direkt in den OCR-Workflow integriert.

Die multithreaded Tesseract-Implementierung der Bibliothek bietet diese entscheidenden Vorteile:

  • Automatische CPU-Kernauslastung: IronOCR erkennt und nutzt alle verfügbaren Kerne ohne manuelle Konfiguration
  • Thread-sichere Operationen: Alle OCR-Vorgänge sind standardmäßig thread-sicher ausgelegt
  • Optimierte Ressourcenverwaltung: Speicher- und Verarbeitungsressourcen werden effizient über Threads hinweg zugewiesen
  • Skalierbare Leistung: Die Verarbeitungszeit sinkt proportional mit der Anzahl der verfügbaren Kerne

Hier ist ein Beispiel für ein Multithreading-Leseprogramm in 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

Für fortgeschrittene Szenarien, die eine schnelle OCR-Konfiguration erfordern, können Entwickler das Multithreading-Verhalten feinabstimmen, um spezifische Leistungsanforderungen zu erfüllen und gleichzeitig die Genauigkeit zu erhalten.

Wie verwende ich die Async-Unterstützung in IronOCR?

Die asynchrone Programmierung optimiert die OCR-Leistung, indem sie es Entwicklern ermöglicht, OCR-Aufgaben auszuführen, ohne den Hauptthread zu blockieren. So bleiben die Anwendungen reaktionsschnell, während große Dokumente oder Bilder für die Texterkennung verarbeitet werden. Dank der asynchronen Unterstützung kann das System andere Aufgaben erledigen, während die OCR-Operationen im Hintergrund laufen. Diese Fähigkeit ist für die Implementierung der OCR-Fortschrittsanzeige in Benutzeroberflächen von entscheidender Bedeutung.

Dieser Abschnitt behandelt die Integration der asynchronen Unterstützung in IronOCR und zeigt verschiedene Methoden, um OCR-Dienste nicht zu blockieren. Die asynchronen Funktionen von IronOCR gewährleisten eine optimale Leistung sowohl für Desktop-Anwendungen, die während OCR-Vorgängen reaktionsschnell sein müssen, als auch für Webdienste, die mehrere gleichzeitige OCR-Anfragen verarbeiten.

Wann sollte ich OcrReadTask-Objekte verwenden?

OcrReadTask-Objekte verbessern die Kontrolle und Flexibilität bei OCR-Prozessen mit IronOcr. Diese Objekte kapseln OCR-Vorgänge und ermöglichen eine effiziente Verwaltung von Texterkennungsaufgaben. Dieser Abschnitt demonstriert die Verwendung von OcrReadTask-Objekten in Ihrem IronOCR-Workflow und zeigt, wie sie OCR-Aufgaben initiieren und optimieren. OcrReadTask-Objekte helfen dabei, die Fähigkeiten von IronOCR zu maximieren, wenn es um die Orchestrierung komplexer Dokumentenverarbeitung oder die Feinabstimmung der Reaktionsfähigkeit von Anwendungen geht.

OcrReadTask Objekte funktionieren am besten, wenn:

  • Sie benötigen eine fein abgestufte Kontrolle über die Ausführung von Aufgaben
  • Implementierung der Abbruch-Token-Funktionalität für stornierbare Operationen
  • Verwaltung mehrerer gleichzeitiger OCR-Vorgänge mit unterschiedlichen Prioritäten
  • Integration mit benutzerdefinierten Aufgabenplanern oder Workflow-Engines
: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

Wie verwende ich die ReadAsync-Methode?

ReadAsync() bietet einen direkten Mechanismus, um OCR-Operationen asynchron zu initiieren. Ohne komplexes Threading oder Task-Management können Entwickler asynchrone OCR in ihre Anwendungen integrieren. Mit dieser Methode wird verhindert, dass der Haupt-Thread während OCR-Aufgaben blockiert, sodass die Anwendungen reaktionsschnell bleiben.

Die ReadAsync-Methode funktioniert gut für:

  • Desktop-Anwendungen, bei denen die Reaktionsfähigkeit der Benutzeroberfläche erhalten bleiben muss
  • Webanwendungen, die mehrere gleichzeitige OCR-Anfragen verarbeiten
  • Stapelverarbeitungsszenarien, bei denen Fortschrittsverfolgung unerlässlich ist
  • Integration mit modernen async/await-Mustern in .NET-Anwendungen
: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

Warum sollte ich Async und Multithreading mit IronOCR verwenden?

Die Kombination von asynchroner Unterstützung und Multithreading in IronOCR bietet zahlreiche Vorteile für die moderne Anwendungsentwicklung:

Leistungsvorteile:

  • Verbesserter Durchsatz: Verarbeiten Sie mehrere Dokumente gleichzeitig, ohne zu blockieren
  • Bessere Ressourcenausnutzung: Maximierung der CPU-Nutzung über alle verfügbaren Kerne
  • Verkürzte Latenzzeit: Starten Sie die Verarbeitung sofort, ohne auf den Abschluss vorheriger Operationen zu warten
  • Skalierbare Architektur: Bewältigung steigender Arbeitslasten ohne Änderungen der Architektur

Entwicklungsvorteile:

  • Vereinfachter Code: Keine Notwendigkeit, Threads manuell zu verwalten - IronOCR übernimmt die Komplexität
  • Modern Patterns: Volle Unterstützung für async/await Patterns in Tesseract 5 für .NET
  • Einfache Integration: Arbeitet nahtlos mit der bestehenden .NET async Infrastruktur
  • Wartbare Lösungen: Klarer, lesbarer Code, der die besten Praktiken von .NET befolgt

Multithreading in IronOCR optimiert OCR-Aufgaben erheblich. Die eingebauten Multithreading-Fähigkeiten, kombiniert mit Methoden wie ReadAsync(), vereinfachen den Umgang mit großen Mengen an Textdaten. Diese Kombination stellt sicher, dass die Anwendungen reaktionsschnell und effizient bleiben, was IronOCR zu einem effektiven Werkzeug für die Erstellung von Hochleistungssoftware mit optimierten Texterkennungsfunktionen macht. Um den kompletten Funktionsumfang kennenzulernen, lesen Sie unsere NuGet-Paketinstallationsanleitung.

Häufig gestellte Fragen

Wie kann ich OCR asynchron in C# durchführen, ohne meinen Hauptthread zu blockieren?

IronOCR bietet die ReadAsync-Methode, die eine nicht blockierende OCR-Ausführung ermöglicht. Sie können einfach `var result = await new IronOcr.IronTesseract().ReadAsync("image.png");` verwenden, um OCR asynchron auszuführen, so dass Ihre Anwendung bei der Verarbeitung von Dokumenten reaktionsfähig bleibt.

Verwendet OCR automatisch mehrere CPU-Kerne für eine bessere Leistung?

Ja, IronOCR nutzt durch das eingebaute Multithreading automatisch alle verfügbaren CPU-Kerne. Die IronTesseract-Implementierung erkennt und nutzt alle Kerne, ohne dass eine manuelle Konfiguration erforderlich ist, und bietet so eine optimierte Ressourcenverwaltung und skalierbare Leistung.

Was sind die Hauptvorteile von Multithreading bei der OCR-Verarbeitung?

Die Multithreading-Implementierung von IronOCR bietet automatische CPU-Kernauslastung, standardmäßig thread-sichere Operationen, optimierte Ressourcenverwaltung für Speicher und Verarbeitung und skalierbare Leistung, bei der die Verarbeitungszeit proportional zu den verfügbaren Kernen abnimmt.

Kann ich mehrere PDF-Dokumente gleichzeitig mit asynchroner OCR verarbeiten?

Ja, die ReadAsync-Methode von IronOCR funktioniert besonders gut bei der Verarbeitung von PDF-Dokumenten oder bei der gleichzeitigen Verarbeitung mehrerer Bilddateien, so dass Sie mehrere Dokumente gleichzeitig verarbeiten können, ohne Ihre Anwendung zu blockieren.

Muss ich speziellen Code schreiben, um Multithreading für OCR zu ermöglichen?

Nein, IronOCR erfordert keine spezielle API oder manuelle Konfiguration für Multithreading. Die Bibliothek integriert die Parallelität nahtlos direkt in den OCR-Workflow und verwaltet automatisch Threads über mehrere Kerne für eine optimale Leistung.

Was ist das OcrReadTask-Objekt und wie hilft es bei der asynchronen Verarbeitung?

Das OcrReadTask-Objekt in IronOCR ermöglicht es Ihnen, die Vorteile der asynchronen Gleichzeitigkeit bei der Verarbeitung von Dokumenten zu nutzen. Es ermöglicht Ihnen, OCR-Vorgänge asynchron zu verwalten, während die Bibliothek die zugrunde liegende Multithreading-Komplexität handhabt.

Ist IronOCR vollständig mit .NET 10 kompatibel?

.NET 10 wird von IronOCR in der neuesten Version 2025.12 unterstützt. Sie können die Bibliothek mit NuGet (Install-Package IronOcr) installieren und asynchrone Methoden wie ReadAsync() unter .NET 10 ohne spezielle Konfiguration ausführen.

Chipego
Software Ingenieur
Chipego hat eine natürliche Begabung fürs Zuhören, die ihm hilft, Kundenprobleme zu verstehen und intelligente Lösungen anzubieten. Er kam 2023 zum Iron Software-Team, nachdem er einen Bachelor of Science in Informationstechnologie studiert hatte. IronPDF und IronOCR sind die beiden Produkte, auf die sich Chipego konzentriert hat, aber ...
Weiterlesen
Bereit anzufangen?
Nuget Downloads 5,246,844 | Version: 2025.12 gerade veröffentlicht