IronOCR 对 C# 异步和多线程的支持

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

在不断发展的软件开发领域,高效处理大量文本数据仍然是一个关键挑战。 在本文中,我们将探讨 IronOCR 和 Tesseract 中异步支持和多线程的动态协同作用。 异步编程引入了一种非阻塞范式,确保我们的应用程序在执行 OCR 任务期间保持灵活和响应迅速。 与此同时,我们深入研究了多线程领域,揭示了并行处理在显著提高文本识别操作性能方面的潜力。 加入我们,我们将揭开这些技术集成的神秘面纱,帮助开发人员提高其 OCR 应用程序的效率和响应速度。

快速入门:使用 ReadAsync 轻松实现异步 OCR

入门非常简单:使用 IronTesseract 的 ReadAsync 方法执行 OCR,而不会阻塞主线程。 非常适合快速为您的应用程序添加响应迅速、无阻塞的 OCR 功能。

Nuget Icon立即开始使用 NuGet 创建 PDF 文件:

  1. 使用 NuGet 包管理器安装 IronOCR

    PM > Install-Package IronOcr

  2. 复制并运行这段代码。

    var result = await new IronOcr.IronTesseract().ReadAsync("image.png");
  3. 部署到您的生产环境中进行测试

    立即开始在您的项目中使用 IronOCR,免费试用!
    arrow pointer

理解多线程

IronOCR 通过无缝多线程增强了图像处理和 OCR 读取的效率,从而无需开发人员使用专门的 API。 IronTesseract 会自动利用多个核心上的所有可用线程,优化系统资源,从而实现快速响应的 OCR 执行。 这种固有的多线程不仅简化了开发,而且显著提高了性能,展现了并行性与 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);
};
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

了解异步支持

在光学字符识别 (OCR) 领域,异步编程或"异步"在优化性能方面起着至关重要的作用。 异步支持允许开发者在不阻塞主线程的情况下执行 OCR 任务,从而确保应用程序保持响应。想象一下,当需要处理大型文档或图像进行文本识别时,异步支持可以让系统在 OCR 操作进行的同时继续处理其他任务。

在本节中,我们将深入探讨 IronOCR 中异步支持的轻松集成,展示使您的 OCR 服务不阻塞的不同方法。

使用 OcrReadTask 对象

在使用 IronOCR 时, OcrReadTask对象的使用被证明是增强 OCR 流程控制和灵活性的宝贵资产。 这些对象封装了 OCR 操作,使开发人员能够高效地管理文本识别任务。 本节提供在 IronOCR 工作流程中使用OcrReadTask对象的示例,演示如何利用它们来启动和优化 OCR 任务。 无论您是在协调复杂的文档处理,还是在微调 OCR 应用程序的响应速度,有效利用OcrReadTask对象都能帮助您最大限度地发挥 IronOCR 的功能。

: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

使用异步方法

ReadAsync()提供了一种简单直观的机制,用于异步启动 OCR 操作。 无需复杂的线程或任务管理,开发人员即可轻松地将异步 OCR 集成到他们的应用程序中。 这种方法使主线程摆脱了阻塞式 OCR 任务的负担,确保应用程序保持响应迅速和灵活敏捷。

: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

结论

总而言之,在 IronOCR 中利用多线程技术,对于优化 OCR 任务而言具有颠覆性的意义。 IronOCR 固有的多线程功能,加上ReadAsync()等用户友好方法,简化了对大量文本数据的处理。 这种协同作用确保您的应用程序保持响应迅速且高效,使 IronOCR 成为打造具有精简文本识别功能的高性能软件解决方案的强大工具。

常见问题解答

异步编程如何增强OCR任务?

IronOCR中的异步编程允许OCR任务在不阻塞主应用程序线程的情况下运行。这确保应用程序在处理OCR操作时仍然响应。

多线程在OCR过程中起什么作用?

IronOCR中的多线程在多个内核上实现并行处理,优化系统资源,并显著提升文本识别操作的性能。

如何开始使用带有Tesseract的异步和多线程?

要开始使用 Tesseract 的 async 和多线程,请下载一个支持这些功能的 C# 库。IronOCR 无缝集成,使您能够高效管理 OCR 任务,使用 ReadAsync() 方法。

OcrReadTask对象用于什么?

IronOCR 中的 OcrReadTask 对象封装了 OCR 操作,为开发人员提供增强的控制和灵活性,以高效地管理文本识别任务。

我如何执行非阻塞OCR操作?

您可以通过使用 IronOCR 中的 ReadAsync() 方法执行非阻塞的 OCR 操作。这种方法允许 OCR 任务异步运行,释放主线程并保持应用程序响应。

IronOCR能够处理PDF和图像吗?

是的,IronOCR可以处理PDF和图像以进行文本识别。它利用多线程和异步功能来高效处理各种文档类型。

我需要专门的API来在IronOCR中实现多线程吗?

不,您不需要专门的API。IronOCR会自动管理多线程,利用所有可用核心来优化OCR任务性能。

ReadAsync()方法如何为OCR应用程序带来好处?

IronOCR 中的 ReadAsync() 方法允许开发人员异步启动 OCR 操作,确保应用程序在处理大量文本数据时保持灵活和响应。

在OCR中使用异步和多线程的优点是什么?

在IronOCR中共同使用异步和多线程为优化OCR任务提供了强大的组合。异步确保非阻塞执行,而多线程利用多个核心以更快的速度处理。

IronOCR能够自动处理多核上的OCR任务吗?

是的,IronOCR会自动利用所有可用内核进行OCR任务的处理,优化处理速度和资源利用,而不需要开发人员的显式管理。

IronOCR 是否完全兼容 .NET 10?

IronOCR 最新版本 2025.11 支持 .NET 10。您可以使用 NuGet (Install-Package IronOcr) 安装该库,并在 .NET 10 下运行ReadAsync()等异步方法,无需特殊配置。

Chipego
软件工程师
Chipego 拥有倾听的天赋,帮助他理解客户问题,并提供智能解决方案。他于 2023 年加入 Iron Software 团队,学习了信息技术学士学位。IronPDF 和 IronOCR 是 Chipego 关注的两个产品,但由于他发现了支持客户的新方法,因此他的所有产品知识每天都在增长。他喜欢 Iron Software 的协作生活,公司各个成员利用他们的多样经验来贡献有效的创新解决方案。当 Chipego 离开办公桌时,他常常读书或踢足球。
准备开始了吗?
Nuget 下载 5,167,857 | Version: 2025.11 刚刚发布