非同期およびマルチスレッドの使用方法

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

によって チペゴ・カリンダ

ソフトウェア開発の絶えず進化する環境において、大量のテキストデータの効率的な処理は依然として重要な課題です。 この記事では、IronOCRおよびTesseractのコンテキストでAsync Supportとマルチスレッドの動的なシナジーについて探ります。 非同期プログラミングは非ブロッキングのパラダイムを導入し、OCRタスクの実行中でもアプリケーションが軽快で応答性の高いままでいることを保証します。 同時に、マルチスレッドの領域を深く探究し、テキスト認識操作のパフォーマンスを大幅に向上させる並列処理の潜在能力を解明します。 これらの技術の統合を明らかにし、開発者がOCR対応アプリケーションの効率と応答性を向上させる力を与える方法をご紹介します。

IronOCRを始めましょう

今日から無料トライアルでIronOCRをあなたのプロジェクトで使い始めましょう。

最初のステップ:
green arrow pointer



マルチスレッドの理解

IronOCRでは、シームレスなマルチスレッドによって画像処理とOCR読み取りの効率が向上し、開発者が特別なAPIを使用する必要がなくなります。 IronTesseractは、複数のコアにわたって利用可能なすべてのスレッドを自動的に活用し、システムリソースを最適化して迅速で応答性の高いOCR実行を実現します。 この内在的なマルチスレッド化は、開発を簡素化するだけでなく、パフォーマンスを大幅に向上させます。OCRワークフローへの並列性の洗練された統合を示しています。

マルチスレッド読み取りはこのように簡単に見えます:

: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
VB   C#

非同期サポートの理解

光学文字認識の分野では(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
'}
VB   C#

非同期メソッドを使用する

`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
'}
VB   C#

結論

要約すると、IronOCRでマルチスレッドを活用することは、OCRタスクを最適化するためのゲームチェンジャーとなります。 IronOCRの生得的なマルチスレッド機能は、ReadAsyncのようなユーザーフレンドリーなメソッドと組み合わされています。()大量のテキストデータの処理を簡素化します。 この相乗効果により、アプリケーションは応答性と効率性を保ち、IronOCRは高性能なソフトウェアソリューションを構築するために優れたテキスト認識機能を提供する強力なツールとなります。

Chipego related to 結論

チペゴ

ソフトウェアエンジニア

チペゴは優れた傾聴能力を持ち、それが顧客の問題を理解し、賢明な解決策を提供する助けとなっています。彼は情報技術の学士号を取得後、2023年にIron Softwareチームに加わりました。現在、彼はIronPDFとIronOCRの2つの製品に注力していますが、顧客をサポートする新しい方法を見つけるにつれて、他の製品に関する知識も日々成長しています。Iron Softwareでの協力的な生活を楽しんでおり、さまざまな経験を持つチームメンバーが集まり、効果的で革新的な解決策を提供することに貢献しています。チペゴがデスクを離れているときは、良い本を楽しんだり、サッカーをしていることが多いです。