如何在 C# | IronOCR 中使用異步和多執行緒

IronOCR對 C# 非同步和多執行緒的支持

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

IronOCR可自動處理所有 CPU 核心上的多線程,並提供非同步方法,例如 ReadAsync(),以在不阻塞主線程的情況下執行 OCR,從而確保在處理大型文件時應用程式的回應速度。

介紹

有效率地處理大量文字資料需要OCR 操作兼具準確性和速度。 本文介紹了IronOCR和 Tesseract 中的非同步支援和多執行緒。 非同步程式設計能夠實現非阻塞式 OCR 執行,從而在文字辨識任務期間保持應用程式的回應能力。 多執行緒技術提供平行處理能力,可顯著提升OCR效能。 這些技術有助於開發人員提高 OCR 應用的效率和反應速度。

快速入門:使用 ReadAsync 輕鬆實現非同步 OCR

使用 IronTesseract 的 ReadAsync 方法執行 OCR 而不會阻塞主執行緒。 這可以快速地為您的應用程式添加響應迅速、不阻塞的 OCR 功能。 在處理 PDF 文件或同時處理多個影像檔案時,它的效果尤其好。

  1. 使用NuGet套件管理器安裝https://www.nuget.org/packages/IronOcr

    PM > Install-Package IronOcr
  2. 複製並運行這段程式碼。

    var result = await new IronOcr.IronTesseract().ReadAsync("image.png");
  3. 部署到您的生產環境進行測試

    今天就在您的專案中開始使用免費試用IronOCR

    arrow pointer

IronOCR中的多執行緒是如何運作的?

IronOCR透過無縫多執行緒增強影像處理和 OCR 讀取效率,無需開發人員提供專門的 API。 IronTesseract會自動利用多個核心上的所有可用線程,最佳化系統資源以實現快速的 OCR 執行。 這種內建的多執行緒功能簡化了開發,並透過將並行性直接整合到 OCR 工作流程中,顯著提高了效能。

該函式庫的 多執行緒 Tesseract 實作具有以下主要優勢: -自動 CPU 核心使用率: IronOCR可偵測並使用所有可用核心,無需手動配置 -線程安全操作:所有 OCR 操作預設都設計為線程安全。 -優化的資源管理:記憶體和處理資源在執行緒間有效率地分配 -可擴展的效能:處理時間與可用核心數成正比減少

以下是一個 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

對於需要快速 OCR 配置的進階場景,開發人員可以微調多執行緒行為,以符合特定的效能要求,同時保持準確性。

如何在IronOCR中使用非同步支援?

非同步編程允許開發人員在不阻塞主執行緒的情況下執行 OCR 任務,從而優化 OCR 效能。 這樣可以確保應用程式在處理大型文件或圖像進行文字辨識時保持響應速度。 非同步支援使系統能夠在背景執行 OCR 操作的同時處理其他任務。 在使用者介面中實現OCR 進度追蹤時,此功能至關重要。

本節介紹IronOCR中的非同步支援集成,演示使 OCR 服務非阻塞的不同方法。 IronOCR 的非同步功能可確保桌面應用程式在 OCR 操作期間的回應速度以及 Web 服務處理多個並發 OCR 要求時的最佳效能。

何時應該使用 OcrReadTask 物件?

OcrReadTask 物件增強了IronOCR在 OCR 過程中的控制和靈活性。 這些物件封裝了 OCR 操作,從而可以有效地管理文字辨識任務。 本節示範如何在IronOCR工作流程中使用 OcrReadTask 對象,並展示它們如何啟動和最佳化 OCR 任務。 OcrReadTask 物件有助於在協調複雜的文檔處理或微調應用程式回應能力時最大限度地發揮IronOCR 的功能。

OcrReadTask 物件在下列情況下效果最佳: 你需要對任務執行進行細粒度的控制。

  • 為可取消的操作實現中止令牌功能
  • 管理多個優先權不同的並發 OCR 操作
  • 與自訂任務調度程序或工作流程引擎集成
: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

如何使用 ReadAsync 方法?

ReadAsync() 提供了一種非同步啟動 OCR 操作的直接機制。 無需複雜的執行緒或任務管理,開發人員即可將非同步 OCR 整合到他們的應用程式中。 這種方法可以防止主執行緒在執行 OCR 任務時阻塞,從而確保應用程式保持回應。

ReadAsync 方法適用於:

  • 需要保持用戶介面響應速度的桌面應用程式
  • 處理多個同時發生的 OCR 請求的 Web 應用程式
  • 需要追蹤進度的批次處理場景
  • 與.NET應用程式中的現代 async/await 模式集成
: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

為什麼我應該在使用IronOCR時採用非同步和多執行緒?

IronOCR結合了非同步支援和多執行緒技術,為現代應用程式開發帶來了許多好處:

性能優勢: -提升吞吐量:可同時處理多個文檔,不會出現阻塞 -更有效率的資源利用:最大限度地利用所有可用核心的 CPU 資源 -降低延遲:無需等待先前的操作完成即可立即開始處理 -可擴展架構:無需架構變更即可應對不斷增長的工作負載

發展效益: -程式碼簡化:無需手動管理執行緒 - IronOCR會自動處理複雜性 -現代模式Tesseract 5 for .NET完全支援 async/await 模式 -易於整合:可與現有的.NET非同步基礎架構無縫協作 -可維護的解決方案:清晰易讀的程式碼,遵循.NET最佳實踐

IronOCR中的多執行緒技術顯著優化了 OCR 任務。 內建的多執行緒功能,結合 ReadAsync() 等方法,簡化了處理大量文字資料的過程。 這種組合確保應用程式保持反應迅速和高效,使IronOCR成為創建具有精簡文字辨識功能的高效能軟體的有效工具。 若要開始使用全部功能,請查看我們的NuGet套件安裝指南

常見問題解答

如何在 C# 中異步執行 OCR 而不阻塞主線程?

IronOCR 提供了 ReadAsync 方法,可以實現無阻塞的 OCR 執行。您只需使用 `var result = await new IronOcr.IronTesseract().ReadAsync("image.png");` 即可異步執行 OCR,在處理文件的同時保持應用程式的反應速度。

OCR 是否會自動使用多個 CPU 核心以獲得更佳效能?

是的,IronOCR 透過內建的多執行緒自動利用所有可用的 CPU 核心。IronTesseract 實作可偵測並利用所有核心,無須手動設定,提供最佳化的資源管理和可擴充的效能。

OCR 處理中的多執行緒有哪些主要優點?

IronOCR 的多執行緒實作提供 CPU 核心自動利用、預設的線程安全操作、記憶體和處理的最佳化資源管理,以及可擴充的效能(處理時間會隨可用核心成比例地減少)。

我可以使用 async OCR 同時處理多個 PDF 文件嗎?

是的,IronOCR 的 ReadAsync 方法在處理 PDF 文件或同時處理多個影像檔案時效果特別好,讓您可以同時處理多個文件而不會阻塞您的應用程式。

我是否需要編寫特殊程式碼來啟用 OCR 的多執行緒?

不,IronOCR 不需要專門的 API 或手動配置多執行緒。該函式庫直接將平行性無縫整合到 OCR 工作流程中,自動管理多核心的線程,以獲得最佳效能。

什麼是 OcrReadTask 物件,它對異步處理有何幫助?

IronOCR 中的 OcrReadTask 物件可讓您在處理文件時利用異步並發的優勢。它可讓您以非同步的方式管理 OCR 作業,同時由函式庫處理底層的多執行緒複雜性。

IronOCR 是否與 .NET 10 完全相容?

IronOCR 透過其最新發行版本 2025.12 支援 .NET 10。您可以使用 NuGet(Install-Package IronOcr)安裝該函式庫,並在 .NET 10 下執行類似 ReadAsync() 的動態方法,而無需特殊設定。

Chipego
軟體工程師
Chipego 擁有自然的傾聽技巧,這有助於他理解客戶問題並提供智能解決方案。他於 2023 年加入 Iron Software 團隊,擁有信息技術學士學位。IronPDF 和 IronOCR 是 Chipego 專注的兩個產品,但他對所有產品的知識日漸增長,因為他發現新的方法來支持客戶。他喜歡 Iron Software 的合作生活,來自公司的成員將他們的各種經驗帶來貢獻於有效及創新解決方案。當 Chipego 離開書桌時,他經常被発現正享受一本好書或者在踢足球。
準備好開始了嗎?
Nuget 下載 5,556,263 | 版本: 2026.3 剛剛發布
Still Scrolling Icon

還在捲動嗎?

想要快速證明? PM > Install-Package IronOcr
執行範例 觀看您的圖片變成可搜尋的文字。