C#での非同期とマルチスレッドの使い方|IronOCR

C# IronOCRによる非同期とマルチスレッドのサポート

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文書を処理するときや、複数の画像ファイルを同時に処理するときに、特に効果的です。

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でマルチスレッドはどのように動作しますか?

. <! -- IronOCRでマルチスレッドがどのように機能するかを示すスクリーンショット? IronPDFで -->。 <!ステップバイステップのプロセスを示すスクリーンショット -->。

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);
};
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 設定を必要とする高度なシナリオでは、開発者は精度を維持しながら、特定のパフォーマンス要件に合わせてマルチスレッドの動作を微調整できます。

IronOCRで非同期サポートを使うには?

. <! -- Ironocr で非同期サポートを使用する方法を実演しているスクリーンショット? IronPDFで -->。 <!ステップバイステップのプロセスを示すスクリーンショット -->。

非同期プログラミングは、開発者がメインスレッドをブロックすることなくOCRタスクを実行できるようにすることで、OCRのパフォーマンスを最適化します。 これにより、テキスト認識のために大きな文書や画像を処理しながらも、アプリケーションの応答性を保つことができます。 非同期サポートにより、OCR操作がバックグラウンドで実行されている間、システムは他のタスクを処理することができます。 この能力は、OCR progress tracking をユーザーインターフェースに実装する際に非常に重要です。

このセクションでは、IronOCRの非同期サポート統合を取り上げ、OCRサービスをノンブロッキングにするさまざまな方法を示します。 IronOCRの非同期機能は、OCR操作中の応答性を必要とするデスクトップアプリケーションと、複数のOCRリクエストを同時に処理するウェブサービスの両方で最適なパフォーマンスを保証します。

いつ OcrReadTask オブジェクトを使用する必要がありますか?

OcrReadTaskオブジェクトはIronOCRでOCRプロセスのコントロールと柔軟性を強化します。 これらのオブジェクトは、OCR操作をカプセル化し、テキスト認識タスクの効率的な管理を可能にします。 このセクションでは、OcrReadTaskオブジェクトをOCRワークフローで使用し、OCRタスクをどのように開始し最適化するかを説明します。 OcrReadTaskオブジェクトは、複雑な文書処理のオーケストレーションやアプリケーションの応答性を微調整する際に、IronOCRの能力を最大限に引き出すのに役立ちます。

OcrReadTaskオブジェクトは、次のような場合に最適です:

: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 メソッドを使用しますか?

ReadAsync()は、OCR 操作を非同期に開始するための直接的なメカニズムを提供します。 複雑なスレッド処理やタスク管理を行うことなく、開発者は非同期OCRをアプリケーションに統合することができます。 この方法は、OCRタスク中にメインスレッドがブロックされるのを防ぎ、アプリケーションの応答性を確保します。

ReadAsyncメソッドは、次のような場合に有効です:

  • UIの応答性を維持する必要があるデスクトップアプリケーション
  • 複数の同時 OCR 要求を処理するウェブアプリケーション
  • 進捗管理が不可欠なバッチ処理シナリオ
  • .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
}
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で非同期とマルチスレッドを使うべきなのでしょうか?

IronOCRの非同期サポートとマルチスレッドの組み合わせは、最新のアプリケーション開発に多くの利点をもたらします:

パフォーマンスの利点:

  • スループットの向上:ブロックせずに複数のドキュメントを同時に処理
  • より優れたリソース利用:利用可能なすべてのコアで CPU 使用率を最大化します。
  • 待ち時間の短縮: 前の処理が完了するのを待たずに、すぐに処理を開始します。
  • スケーラブルなアーキテクチャ: アーキテクチャを変更することなく、作業負荷の増加に対応します。

開発のメリット:

  • シンプルなコード: スレッドを手動で管理する必要はありません - IronOCRが複雑さを処理します。
  • モダン・パターンTesseract 5 for .NET で async/await パターンをフルサポート。
  • 簡単な統合:既存の.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()のような非同期メソッドを実行することができます。

チペゴ
ソフトウェアエンジニア
Chipegoは、顧客の問題を理解し、知的な解決策を提供するのに役立つ、自然な聞くスキルを持っています。彼は2023年に情報技術の理学士を取得後、Iron Softwareチームに加わりました。IronPDFとIronOCRはChipegoが注力している2つの製品ですが、彼の全製品に対する知識は日々成長しています。彼は顧客をサポートする新しい方法を見つける中で、それを増やしています。Iron Softwareのコラボレーションの生活は、彼にとって非常に魅力的で、各部門のチームメンバーが多様な経験を持ち寄り、効果的で革新的なソリューションを提供しています。Chipegoは、デスクを離れると、良い本を読んだり、サッカーを楽しんだりすることがよくあります。
準備はできましたか?
Nuget ダウンロード 5,384,824 | バージョン: 2026.2 リリース