LEADTOOLS OCR

フレームを表示

.NET OCRクラスライブラリ(Leadtools.Forms.Ocr)は、LEADTOOLSで使用可能な各種OCRランタイムエンジンへの共通の入口を提供します。IOcrEngineのインスタンスを得ることをランタイムエンジン型に要求して、OcrEngineManager.CreateEngineメソッドを使います:


             // Create an instance of the OCR engine of a given type
             IOcrEngine ocrEngineInstance = OcrEngineManager.CreateEngine(ocrEngineType, useThunkServer)
             // Start up the engine and use it ...
             

このインスタンスから、操作が必要としたすべてのOCRを実行するために、IOcrDocument(または、内部的にIOcrDocumentsを作成します、IOcrAutoRecognizeManager)の一つ以上のインスタンスをその後得ることができます:TIFとラスターPDFなどのソースイメージをロードすることから;ゾーニング;PDF、doc、DOCX (2007/2010)、HTMLまたはTXT決勝文書形式への認識とエクスポートに。そうして、以下の手順を実行すること:


             // Create an instance of an OCR document from the engine
             IOcrDocument ocrDocument= ocrEngineInstance.DocumentManager.CreateDocument();
             // Add pages, zone them, recognize them and save them
             // to the final document:
             ocrDocument.Pages.AddPages(imageFileName, null);
             ocrDocument.Recognize(null);
             ocrDocument.Save(documentFileName, DocumentFormat.Pdf, null);
             

または、


             // Use IOcrAutoRecognizeManager to automatically recognize a document
             IOcrAutoRecognizeJob ocrJob = ocrEngine.AutoRecognizeManager.CreateJob(
                new OcrAutoRecognizeJobData(imageFileName, DocumentFormat.Pdf, documentFileName));
             ocrEngine.AutoRecognizeManager.RunJob(ocrJob);
             

IOcrEngineIOcrAutoRecognizeManagerIOcrDocumentと必要とされるアクションを実行するために内部的にエンジン実行時と対話する他のインターフェースに電話をかけることによって、これらの操作の全ては、エンジン実行時から独立した方法で実行されます。

LEADTOOLSは、以下のエンジン実行時をサポートします:

詳細はhttps://www.leadtools.comでLEADTOOLSサポートに連絡します。

監査業務処理設計段階に従い、プラットホームとOCRエンジン実行時は、タイプします;「thunk」メカニズムは、LEADTOOLS OCRモジュール(AdvantageまたはProfessionalエンジンを使用するとき必要でない)を使用するとき、必要とされるかもしれません。LEADTOOLS OCR thunkサーバは、別々のプロセスの内部のOCRエンジン実行時のインスタンスをホストするのに用いられることができるcomponent object model+オブジェクトで、サポートを以下に提供します:

thunkサーバが使われるとき、OcrEngineManager.CreateEngineメソッドのuseThunkServerパラメーターは制御します。そして、以下のテーブルに基づきます:

注意:このテーブルでは、「プラットホーム」は、アプリケーションのネイティブプラットホーム(それがx86またはx64(オペレーティングシステムでない)であるかどうかにかかわらず)を意味します。

OCRエンジン型。 プラットホーム useThunkServer値 メモ
Advantage/Professional x86 False/True

無視されます。これらのOCRエンジン実行時は、スレッドセーフです。thunkサーバが、これらのエンジンで決して使われません。

Advantage/Professional x64 False/True

無視されます。これらのOCRエンジン実行時はスレッドセーフで、ネイティブにx64をサポートします。thunkサーバが、これらのエンジンで決して使われません。

アラビア語 x86 False

thunkサーバが使われません、そして、エンジン実行時は呼び出しているアプリケーションと同じプロセスにロードされます。IOcrEngineの1つのインスタンスが同時に作成されて、同じプロセスでありさえすれば、これを使います。

アラビア語 x86 True

thunkサーバが使われます、そして、エンジン実行時は呼び出しているアプリケーションから別々のプロセスにロードされます。IOcrEngineの複数のインスタンスが同時に作成されて、同じプロセスであるならば、これを使います。

アラビア語 x64 False

無視されます。このOCRランタイムはx64をネイティブにサポートしていないため、常にThunk Serverが使用されます。代わりに、エンジン実行時は、別々のプロセスにロードされます。このように、複数のIOcrEngineインスタンスは、呼出し側プロセスによって同時に作成されることができます。

アラビア語 x64 True

無視されます。このOCRランタイムはx64をネイティブにサポートしていないため、常にThunk Serverが使用されます。代わりに、エンジン実行時は、別々のプロセスにロードされます。このように、複数のIOcrEngineインスタンスは、呼出し側プロセスによって同時に作成されることができます。

LEADTOOLS OCRインターフェースは、内部的にすべてのデータマーシャリングを処理するように設計されています。thunkサーバが使われるならば、アプリケーションプログラムは変更しません:thunkサーバを使用して、単にuseThunkServerの値を変更することによってそれを使わないことの間で変わります。

裏側で起きるすべてのマーシャリングによりパフォーマンスが低下します。このため、アプリケーションには可能な限りThunkサーバーを使わないことをお勧めします。これは、以下のメソッドの1つを用いて達成されることができます

p:

マルチスレッドのOCRアプリケーションは、2つの様々な方法で作成されることができます:

複数のエンジンを用いたマルチスレッドのOCRアプリケーション

このシナリオでは、各々のスレッドで専用のIOcrEngineインスタンスを作成して、使います。上のテーブルから、これらのインスタンスを作成するとき、useThunkServertrueでなければならないことがわかります。もちろん、AdvantageとProfessional OCRエンジン場合において、useThunkServerが決して使われません。

すべてのプラットホームのすべてのLEADTOOLS OCRエンジンは、このシナリオをサポートします。

LEADTOOLS付きで出荷しているOCRマルチスレッドのデモソースコードは、次の場合でこのシナリオのサンプルを示します:

x86とx64 C#とVBデモソースコードは、以下の場所で見つかります:


             [LEADTOOLS Installation Folder]\Examples\DotNet\CS\OcrMultiThreadingDemo
             

             [LEADTOOLS Installation Folder]\Examples\DotNet\VB\OcrMultiThreadingDemo
             

複数のドキュメントを用いたマルチスレッドのOCRアプリケーション

IOcrDocumentはTIFとラスターPDFなどのソースイメージをロードするのに用いられる完全に格納されたオブジェクトです、そして、PDF、doc、DOCX (2007/2010)、HTMLまたはTXT形式にゾーンに分けて、認めて、エクスポートします。このように、OCRアプリケーションでマルチスレッディングを達成するもう一つの方法は、メインスレッドでIOcrEngineの1つのインスタンスを作成することです。その後、中で列作業項目は、それ自身のIOcrDocumentインスタンスを用いて各々でスレッドを捧げました。IOcrAutoRecognizeManagerは、内部的にIOcrDocumentsを作成して、先に述べたように同様に使われることができるヘルパーインターフェースです。

IOcrEngineの1つのインスタンスだけがいつでも作成されるため、thunkサーバが必要でありません、そして、パフォーマンス罰は発生しません。

すべてのOCRエンジンタイプが、このシナリオをサポートするというわけではありません。下の表にリストされます:

OCRエンジン型。 プラットホーム 複数ドキュメントのサポート
Advantage x86/ x 64

同時に限られた数のドキュメントがサポートされます。

Professional x86

同時に64個までのドキュメントがサポートされます。

Professional x64 同時に64個までのドキュメントがサポートされます。
アラビア語 x86/ x 64 いいえ

LEADTOOLS付きで出荷しているOCRマルチスレッドのデモソースコードは、次の場合でこのシナリオのサンプルを示します:

サンプルアプリケーション

以下は、LEADTOOLS OCRエンジンを使用するとき、サンプルアプリケーションをリストして、それからスレッド-安全とプロセス完全性を達成する方法を推薦します。

OCR HTTPウェブサービスバージョン1

HTTPウェブサービスアプリケーションは、セッションのないモードで一般に動作します。複数の接続間でリソースを共有することはできません。

ウェブサービスアプリケーションを作成して、以下のメソッドを追加します:


             
             [WebMethod]
             public void Recognize(string imageFileName, DocumentFormat format, string documentFileName)
             {
                // Unlock support
                string MY_LICENSE_FILE = "d:\\temp\\TestLic.lic";
                string MY_DEVELOPER_KEY = "xyz123abc";
                RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DEVELOPER_KEY);
                using(IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.[EngineTypeHere], false))
                {
                   // Start it
                   ocrEngine.Startup(null, null, null, @"C:\LEADTOOLS 19\Bin\Common\OcrAdvantageRuntime");
                   // Recognize
                   IOcrAutoRecognizeJob ocrJob = ocrEngine.AutoRecognizeManager.CreateJob(
                      new OcrAutoRecognizeJobData(imageFileName, format, documentFileName));
                   ocrEngine.AutoRecognizeManager.RunJob(ocrJob);
                }
             }
             

このバージョンにおいて、入力画像ファイルを認めて、特定の形式で文書ファイルを出力するために、HTTPウェブサービスでウェブメソッドを作成しました。IOcrEngineは、useThunkServerをスレッド-安全を確実にするためにtrueに設定しておきます。上のcodeは、すべてのエンジンのために、そして、すべてのプラットホーム上で機能します。

エンジンとプラットホームは、以下をサポートしました:すべて。

長所:実装するのが簡単な。

短所:Thunkサーバーを使用したマーシャリングによるパフォーマンスへの打撃。プロセスメモリと資源は、すべての接続の間で共有されます。

OCR HTTPウェブサービスバージョン2

OCRを実行するx86コンソールアプリケーション(MyOcrRecognize.exe)を作成します:


             static void Main(string[] args)
             {
                // Get the parameters
                string imageFileName = args[0];
                DocumentFormat format = (DocumentFormat)Enum.Parse(typeof(DocumentFormat), args[1]);
                string documentFileName = args[2];
            
                // Unlock support
                string MY_LICENSE_FILE = "d:\\temp\\TestLic.lic";
                string MY_DEVELOPER_KEY = "xyz123abc";
                RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DEVELOPER_KEY);
                // Create the engine without Thunk Server
                using(IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.[EngineTypeHere], false))
                {
                   // Start it
                   ocrEngine.Startup(null, null, null, @"C:\LEADTOOLS 19\Bin\Common\OcrAdvantageRuntime");
                   // Recognize
                   IOcrAutoRecognizeJob ocrJob = ocrEngine.AutoRecognizeManager.CreateJob(
                      new OcrAutoRecognizeJobData(imageFileName, format, documentFileName));
                   ocrEngine.AutoRecognizeManager.RunJob(ocrJob);
                }
             }
             

ウェブサービスアプリケーションを作成して、以下のメソッドを追加します:


             [WebMethod]
             public void Recognize(string imageFileName, DocumentFormat format, string documentFileName)
             {
                // Call our OCR console app
                string arguments = "\"" + imageFileName + "\"" + format.ToString() + "\"" + documentFileName + "\"";
                Process.Start("MyOcrRecognize.exe", arguments);
             }
             

このバージョンにおいて、2つのアプリケーションを作成します:

IOcrEngineを作成して、このアプリケーションの各々のインスタンスからthunkサーバを使用することなくOCRを実行するx86コンソールアプリケーションは、それ自身のプロセスで動作します。オプションは、標準的なコマンド行で渡されます。

そして、要求ごとにOCRアプリケーションの新しいインスタンスを作成するHTTPウェブサービスのウェブメソッド。

エンジンとプラットホームは、以下をサポートしました:すべて。

長所:thunkサーバを用いてマーシャリングから押されるパフォーマンスでない。プロセスが完全に分離され、安全性が確保される。各々の接続は、OCRにそれ自身の献身的プロセスを使用します。

短所:処理の作成と破壊によるパフォーマンスへの打撃。実装する最初のバージョンより多くの複合体。

OCR Windowsサービスまたはサーババージョン1

Windowsサービスまたはサーバは、セッション使用可能モードで一般に動作します。複数の接続間でリソースを共有できます。サーバは、各々の接続を処理するために、通常スレッドを作成します。

通常、Windowsサービスまたはサーバは、以下のメソッドを持っています:StartServer、ProcessRequestとStopServer。

これは、サービス/サーバの最初のバージョン実装です:


             void StartServer()
             {
                // Unlock support once here
                string MY_LICENSE_FILE = "d:\\temp\\TestLic.lic";
                string MY_DEVELOPER_KEY = "xyz123abc";
                RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DEVELOPER_KEY);
             }
            
             void StopServer()
             {
             }
            
             void ProcessRequest(string imageFileName, DocumentFormat format, string documentFileName)
             {
                // Queue the work
                ThreadPool.QueueUserWorkItem(delegate(object o)
                {
                   using(IOcrEngine ocrEngine = OcrEngineManager.CreateEngine([EngineTypeHere], false))
                   {
                      // Start it
                      ocrEngine.Startup(null, null, null, @"C:\LEADTOOLS 19\Bin\Common\OcrAdvantageRuntime");
                      // Recognize
                      IOcrAutoRecognizeJob ocrJob = ocrEngine.AutoRecognizeManager.CreateJob(
                         new OcrAutoRecognizeJobData(imageFileName, format, documentFileName));
                      ocrEngine.AutoRecognizeManager.RunJob(ocrJob);
                   }
                });
             }
             

エンジンとプラットホームは、以下をサポートしました:すべて。

長所:実装するのが簡単な。

短所:Thunkサーバーを使用したマーシャリングによるパフォーマンスへの打撃。プロセスメモリと資源は、すべての接続の間で共有されます。

OCR Windowsサービスまたはサーババージョン2

バージョン2において、別々のプロセスにOCR操作を実行するそれ以前から、MyOcrRecognize.exeを再利用します:


             void StartServer()
             {
             }
            
             void StopServer()
             {
             }
            
             void ProcessRequest(string imageFileName, DocumentFormat format, string documentFileName)
             {
                // Queue the work
                ThreadPool.QueueUserWorkItem(delegate(object o)
                {
                   // Call our OCR console app
                   string arguments = "\"" + imageFileName + "\"" + format.ToString() + "\"" + documentFileName + "\"";
                   Process.Start("MyOcrRecognize.exe", arguments);
                });
             }
             

エンジンとプラットホームは、以下をサポートしました:すべて。

長所:thunkサーバを用いてマーシャリングから押されるパフォーマンスでない。プロセスが完全に分離され、安全性が確保される。各々の接続は、OCRにそれ自身の献身的プロセスを使用します。

短所:処理の作成と破壊によるパフォーマンスへの打撃。実装する最初のバージョンより多くの複合体。

OCR Windowsサービスまたはサーババージョン3

バージョン3において、マルチドキュメントエンジン(サポートされるならば)能力をtrueマルチスレッディングを実行するために使います:


             // Shared instance of IOcrEngine
             private IOcrEngine ocrEngine;
            
             void StartServer()
             {
                // Unlock support
                string MY_LICENSE_FILE = "d:\\temp\\TestLic.lic";
                string MY_DEVELOPER_KEY = "xyz123abc";
                RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DEVELOPER_KEY);
                // Start the OCR engine without using the Thunk Server
                ocrEngine = OcrEngineManager.CreateEngine([EngineTypeHere], false));
                // Start it
                ocrEngine.Startup(null, null, null, @"C:\LEADTOOLS 19\Bin\Common\OcrAdvantageRuntime");
             }
            
             void StopServer()
             {
                // Stop the OCR engine
                ocrEngine.Dispose();
             }
            
             void ProcessRequest(string imageFileName, DocumentFormat format, string documentFileName)
             {
                // Queue the work
                ThreadPool.QueueUserWorkItem(delegate(object o)
                {
                   // Recognize
                   IOcrAutoRecognizeJob ocrJob = ocrEngine.AutoRecognizeManager.CreateJob(
                      new OcrAutoRecognizeJobData(imageFileName, format, documentFileName));
                   ocrEngine.AutoRecognizeManager.RunJob(ocrJob);
                });
             }
             

エンジンとプラットホームは、以下をサポートしました:Advantage x86とx64(専門のx86)。

長所:thunkサーバを用いてマーシャリングから押されるパフォーマンスでない。真のマルチスレッド。

短所:すべてのOCRエンジンとプラットホームでサポートされるというわけではありません。若干のエンジン(Professionalの64)の多くの認識操作に対する規制。

参照

参照

概要
ご使用にあたって(サンプルプログラムへのガイド)
LEADTOOLSは、.NETアセンブリのOCR処理を行います
LEADTOOLS .NET OCRによるプログラミング
OCR認識モジュールの概要
OCRエンジンインスタンスの作成
OCRエンジンの開始と終了
OCRスペル言語辞書
OCR言語の操作
OCRページの操作
OCRゾーンの操作
OCRページを認めること
OCR信用度の報告
LEADTOOLS .NET OCRのOMRを使用して
OCR言語とスペルチェック
エンジンに特有の設定のOCR処理を行います
OCRチュートリアル - ページの操作
OCRチュートリアル - ページの認識
OCRチュートリアル - ゾーンの追加と描画
OCRチュートリアル - 認識結果の操作
OCRチュートリアル - 検索可能PDFのスキャン