C# IronOCRによる非同期とマルチスレッドのサポート
IronOCRは、すべてのCPUコアでのマルチスレッド処理を自動的に処理し、非同期メソッドReadAsync()を提供して、メインのスレッドをブロックせずにOCRを実行し、大きなドキュメントを処理しても応答性の高いアプリケーションを保証します。
はじめに
大量のテキストデータを効率的に処理するには、OCR操作の精度と速度の両方が必要です。 この記事ではIronOCRとTesseractの非同期サポートとマルチスレッドについて説明します。 非同期プログラミングにより、OCRのノンブロッキング実行が可能になり、テキスト認識タスク中のアプリケーションの応答性が保たれます。 マルチスレッドにより並列処理が可能になり、OCRのパフォーマンスが大幅に向上します。 これらの技術は、開発者がOCR搭載アプリケーションの効率と応答性を向上させるのに役立ちます。
ReadAsync を使用して簡単な非同期OCRを実行する@@--AH2EG--@@
ReadAsyncメソッドを使用して、メインスレッドをブロックせずにOCRを実行します。 これは、アプリケーションに応答性の高いノンブロッキングOCRを迅速に追加します。 PDF文書を処理するときや、複数の画像ファイルを同時に処理するときに、特に効果的です。
-
1Install IronOCR with NuGet Package Manager
-
2このコード スニペットをコピーして実行します。
var result = await new IronOcr.IronTesseract().ReadAsync("image.png");C# -
3実際の環境でテストするためにデプロイする
今日プロジェクトで IronOCR を使い始めましょう無料トライアル
最小限のワークフロー(5ステップ)
- 非同期とマルチスレッドでTesseractをサポートするC#ライブラリをダウンロードする
- IronOCRによって管理されるマルチスレッドを活用する
- 読み取りのためのPDF文書や画像を準備します
OcrReadTaskオブジェクトを使用して、非同期並行処理を利用する。- 使いやすさのために
ReadAsyncメソッドを使用する
IronOCRでマルチスレッドはどのように動作しますか?
IronOCRはシームレスなマルチスレッドにより画像処理とOCR読み取り効率を向上させ、開発者に特別なAPIを必要としません。 IronTesseract は、自動的に複数のコア全体の利用可能なすべてのスレッドを活用し、システムリソースを最適化して迅速にOCRを実行します。 このビルトイン・マルチスレッディングは、OCRワークフローに直接並列処理を統合することで、開発を簡素化し、パフォーマンスを大幅に向上させます。
ライブラリのマルチスレッドTesseract実装は、以下のような重要な利点を提供します:
- CPUコアの自動利用: IronOCRは手動で設定することなく、利用可能なすべてのコアを検出し利用します。
- スレッドセーフな操作:すべてのOCR操作はデフォルトでスレッドセーフに設計されています。
- 最適化されたリソース管理:メモリと処理リソースは、スレッド間で効率的に割り当てられます。
- スケーラブルなパフォーマンス:処理時間は利用可能なコア数に比例して減少します。
以下は、C#によるマルチスレッド読み込みの例です:
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高速 OCR 設定を必要とする高度なシナリオでは、開発者は精度を維持しながら、特定のパフォーマンス要件に合わせてマルチスレッドの動作を微調整できます。
IronOCRで非同期サポートを使うには?
非同期プログラミングは、開発者がメインスレッドをブロックすることなくOCRタスクを実行できるようにすることで、OCRのパフォーマンスを最適化します。 これにより、テキスト認識のために大きな文書や画像を処理しながらも、アプリケーションの応答性を保つことができます。 非同期サポートにより、OCR操作がバックグラウンドで実行されている間、システムは他のタスクを処理することができます。 この能力は、OCR progress tracking をユーザーインターフェースに実装する際に非常に重要です。
このセクションでは、IronOCRの非同期サポート統合を取り上げ、OCRサービスをノンブロッキングにするさまざまな方法を示します。 IronOCRの非同期機能は、OCR操作中の応答性を必要とするデスクトップアプリケーションと、複数のOCRリクエストを同時に処理するウェブサービスの両方で最適なパフォーマンスを保証します。
OcrReadTaskオブジェクトはいつ使用すべきですか?
OcrReadTaskオブジェクトは、IronOCRでのOCRプロセスにおいてコントロールおよび柔軟性を向上させます。 これらのオブジェクトは、OCR操作をカプセル化し、テキスト認識タスクの効率的な管理を可能にします。 このセクションでは、IronOCRワークフローでOcrReadTaskオブジェクトを使用する方法を示し、OCRタスクを開始および最適化する様子を紹介します。 OcrReadTaskオブジェクトは、複雑なドキュメント処理を調整したり、アプリケーションの応答性を微調整したりする際に、IronOCRの機能を最大化するのに役立ちます。
OcrReadTaskオブジェクトは、次の場合に最適に機能します:
- タスクの実行をきめ細かく制御する必要があります。
- キャンセル可能な操作のためのアボート・トークン機能の実装
- 優先順位の異なる複数のOCR作業を同時に管理する
- カスタムタスクスケジューラやワークフローエンジンとの統合
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
'}ReadAsync メソッドをどのように使用しますか?
ReadAsync() は、OCR操作を非同期で開始するための直接的なメカニズムを提供します。 複雑なスレッド処理やタスク管理を行うことなく、開発者は非同期OCRをアプリケーションに統合することができます。 この方法は、OCRタスク中にメインスレッドがブロックされるのを防ぎ、アプリケーションの応答性を確保します。
ReadAsyncメソッドは以下の場合に適しています:
- UIの応答性を維持する必要があるデスクトップアプリケーション
- 複数の同時 OCR 要求を処理するウェブアプリケーション
- 進捗管理が不可欠なバッチ処理シナリオ
- .NETアプリケーションにおける最新のasync/awaitパターンとの統合
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
'}なぜIronOCRで非同期とマルチスレッドを使うべきなのでしょうか?
IronOCRの非同期サポートとマルチスレッドの組み合わせは、最新のアプリケーション開発に多くの利点をもたらします:
パフォーマンスの利点:
- スループットの向上:ブロックせずに複数のドキュメントを同時に処理
- より優れたリソース利用:利用可能なすべてのコアで CPU 使用率を最大化します。
- 待ち時間の短縮: 前の処理が完了するのを待たずに、すぐに処理を開始します。
- スケーラブルなアーキテクチャ: アーキテクチャを変更することなく、作業負荷の増加に対応します。
開発のメリット:
- シンプルなコード: スレッドを手動で管理する必要はありません - IronOCRが複雑さを処理します。
- モダン・パターン:Tesseract 5 .NET 向け で async/await パターンをフルサポート。
- 簡単な統合:既存 for .NET非同期インフラストラクチャとシームレスに動作します。
- 保守可能なソリューション:.NETのベストプラクティスに従った明確で読みやすいコード
IronOCRのマルチスレッドはOCRタスクを大幅に最適化します。 組み込みのマルチスレッド機能とReadAsync()のようなメソッドを組み合わせることで、大量のテキストデータの処理を簡略化します。 この組み合わせにより、アプリケーションの応答性と効率性が保たれ、IronOCRは合理化されたテキスト認識機能を持つ高性能ソフトウェアを作成するための効果的なツールとなります。 完全な機能セットを使い始めるには、NuGetパッケージインストールガイドをご覧ください。
よくある質問
C#でメインスレッドをブロックせずに非同期にOCRを実行するにはどうすればよいですか?
IronOCRはノンブロッキングOCR実行を可能にするReadAsyncメソッドを提供します。var result = await new IronOcr.IronTesseract().ReadAsync("image.png");`を使うだけで、OCRを非同期に実行することができます。
OCRは自動的に複数のCPUコアを使用してパフォーマンスを向上させますか?
はい、IronOCRは組み込みのマルチスレッディングにより、利用可能なすべてのCPUコアを自動的に活用します。IronTesseractの実装は、手動で設定することなくすべてのコアを検出し利用するため、最適化されたリソース管理とスケーラブルなパフォーマンスを提供します。
OCR処理におけるマルチスレッドの主な利点は何ですか?
IronOCRのマルチスレッド実装は、CPUコアの自動利用、デフォルトでのスレッドセーフ操作、メモリと処理の最適化されたリソース管理、利用可能なコアに比例して処理時間が減少するスケーラブルなパフォーマンスを提供します。
非同期OCRで複数のPDF文書を同時に処理できますか?
IronOCRのReadAsyncメソッドはPDFドキュメントの処理や複数の画像ファイルの同時処理に特に有効で、アプリケーションをブロックすることなく複数のドキュメントを同時に処理することができます。
OCRのマルチスレッドを有効にするには、特別なコードを書く必要がありますか?
IronOCRはマルチスレッド用に特別なAPIや手動設定を必要としません。このライブラリは並列処理をOCRワークフローに直接シームレスに統合し、最適なパフォーマンスのために複数のコアにまたがるスレッドを自動的に管理します。
OcrReadTaskオブジェクトとはどのようなもので、非同期処理にどのように役立ちますか?
IronOCRのOcrReadTaskオブジェクトは、ドキュメントを処理する際に非同期並行処理を利用することを可能にします。OCR処理を非同期で管理することができ、その間にライブラリはマルチスレッドの複雑さを処理します。
IronOCR は .NET 10 と完全に互換性がありますか?
.NET 10はIronOCRの最新リリース・バージョン2025.12でサポートされています。NuGet (Install-Package IronOcr)を使用してライブラリをインストールし、特別な設定なしに.NET 10でReadAsync()のような非同期メソッドを実行することができます。
Does setting MultiThreaded to false actually change anything?
Yes. MultiThreaded had no effect in earlier releases but is now a live setting. Setting it to false reads pages sequentially on a single thread, giving the lowest and most predictable memory footprint, and it overrides MaxDegreeOfParallelism. Code that set this property expecting it to be inert will read sequentially after upgrading.
Is IronOCR fully compatible with .NET 10?
.NET 10 is supported by IronOCR via its latest release version 2025.12. You can install the library using NuGet (Install-Package IronOcr) and run async methods like ReadAsync() under .NET 10 without special configuration.
