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) の分野では、非同期プログラミング (つまり"async") がパフォーマンスの最適化に重要な役割を果たします。 非同期サポートにより、開発者はメインスレッドをブロックすることなく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で非同期とマルチスレッドを使用し始めるには、これらの機能をサポートするC#ライブラリをダウンロードしてください。IronOCRはシームレスに統合され、ReadAsync()などのメソッドを使用して効率的にOCRタスクを管理できます。

OcrReadTaskオブジェクトは何に使われますか?

IronOCRのOcrReadTaskオブジェクトは、OCR操作をカプセル化し、開発者に高度な制御と柔軟性を提供してテキスト認識タスクを効率的に管理します。

非ブロッキングOCR操作をどのように実行できますか?

IronOCRで非ブロッキングOCR操作を行うにはReadAsync()メソッドを使用できます。このアプローチによりOCRタスクを非同期で実行し、メインスレッドを解放してアプリケーションの応答性を保つことができます。

IronOCRでPDFと画像の両方を処理することは可能ですか?

はい、IronOCRはPDFと画像の両方を処理してテキスト認識を行うことができます。マルチスレッド処理と非同期機能を利用して、さまざまなドキュメントタイプを効率的に処理します。

IronOCRでマルチスレッディングを実装するために特別なAPIが必要ですか?

いいえ、特別な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)を使用してライブラリをインストールし、特別な設定なしでReadAsync()などの非同期メソッドを.NET 10で実行できます。

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