拡張言語サービスについて

拡張言語サービス (ELS) は、アプリケーションが指定するテキストにさまざまな言語サポート機能を提供するダイナミック リンク ライブラリ (DLL) として実装されています。 このテクノロジには、ELS プラットフォームと、プラットフォームを介してアプリケーションからアクセスできるいくつかの定義済みの言語サービスの種類のプラグインが含まれています。

注意

ELS モジュールは、Windows 7 以降で自動的にインストールされます。

 

ELS プラットフォーム

ELS プラットフォームは、アプリケーションと ELS サービスの間のインターフェイスです。 同じ API を使用して複数の種類の言語機能を実装する簡単な方法を提供します。これにより、アプリケーションは特定のサービスにアクセスして使用できます。 API の詳細については、「 拡張言語サービス リファレンス」を参照してください。

注意

アプリケーションが ELS API 関数のいずれかを呼び出すと、サービスとの通信に必要なメモリとリソースがプラットフォームによって割り当てられます。 アプリケーションは、これらのリソースを解放するためにプラットフォームを再度呼び出す役割を担います。

 

プラットフォームは、アプリケーションの仮想メモリ領域内で実行され、割り当てられたすべてのメモリがこの領域の一部です。 したがって、アプリケーションは Elscore.lib にリンクするか、Elscore.dllを動的に読み込むことで、ELS コンポーネント DLL (Elscore.dll) にリンクする必要があります。

ELS サービス

Windows 7 以降の場合、ELS プラットフォームでは、次の定義済みサービスのみがサポートされます。

注意

今後のバージョンの ELS では、Microsoft またはサービス プロバイダーによって提供される追加のサービスがサポートされます。

 

各サービスは、サービスの動作を説明するサービス カテゴリに関連付けられます。 カテゴリは、割り当て不可能な文字列で表されます。 これは、使用可能なサービスを列挙するためにアプリケーションによって使用されます。 現在のサービス カテゴリは次のとおりです。

  • "言語検出"
  • "スクリプト検出"
  • "音訳"

プラットフォームでは、サービス メタデータを使用して、アプリケーションによって要求されたサービスを列挙します。 サービスグローバル一意識別子 (GUID)、サポートされている入力と出力の言語とスクリプト、サービス カテゴリなどのプロパティをアプリケーションで使用して、目的の ELS サービスを列挙できます。

各 ELS サービスは、オペレーティング システムにインストールできる DLL でサポートされるプラグインとして実装され、ELS プラットフォームがそれを検出して使用できるようにします。 サービスは、必要に応じて独自のサブサービスを公開できます。

主な ELS 操作

このセクションでは、ELS プラットフォームでサポートされるメイン操作について説明します。 このプラットフォームでは、同期呼び出しモードと非同期呼び出しモードの両方がサポートされています。 非同期呼び出しモードでは、アプリケーション スレッド プールを使用して、要求を処理するためのスレッドをスケジュールします。

注意

プラットフォームでは非同期モードがサポートされているため、ELS サービスは、この種類の機能を独自に実装する必要はありません。

 

サービス列挙

ELS プラットフォームは、すべての ELS サービスを読み込んで管理し、アプリケーションに対して操作を透過的にします。 アプリケーションは MappingGetServices を呼び出して、使用可能なサービスを列挙します。 プログラミング手順については、「 サービスの列挙と解放」を参照してください。

注意

パフォーマンス上の理由から、アプリケーションで使用可能なサービスを 1 回だけ列挙することをお勧めします。 ELS プラットフォームは、次の列挙でサービスをもう一度チェックして、その列挙結果が常に最新であることを確認します。

 

テキスト認識

サービスの列挙後、アプリケーションは MappingRecognizeText 関数を呼び出して、特定の ELS サービスを使用して、入力テキストの任意のテキスト範囲を出力テキストにマップします。 テキスト認識の例として、テキスト セグメントを受け取り、最も可能性の高い言語を検出する言語検出サービスの使用があります。

サービスがテキストを認識すると、 MappingRecognizeText は、サービスによって生成された出力データとプロパティが設定された MAPPING_PROPERTY_BAG 構造体を返します。 メモリ リークを回避するには、MappingRecognizeText がS_OKを返すたびに MappingFreePropertyBag を呼び出して、プロパティ バッグを解放する必要があります。 通常、アプリケーションは、出力データの使用が完了したとき、またはテキストの入力領域が変更された (編集や削除など) ため、出力データが関連しなくなった場合にこれを行います。 プロパティ バッグが解放されると、 MappingFreePropertyBag が返されます。

テキスト認識のプログラミング手順については、「テキスト 認識の要求」を参照してください。

サービス終了

アプリケーションで ELS サービスが不要になった場合、アプリケーションは終了する前に MappingFreeServices を 呼び出します。 詳細については、「 サービスの列挙と解放」を参照してください。

バージョン管理

ELS の将来のバージョンでは、ELS サービスを更新できるようになります。 アプリケーションは、MAPPING_SERVICE_INFO構造のバージョン番号をチェックして、サービスの変更を検出できます。

注意

ELS アプリケーションでは、同じサービスの異なるバージョンでまったく同じ結果を取得できると想定しないでください。