拡張言語サービスについて
拡張言語サービス (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 アプリケーションでは、同じサービスの異なるバージョンでまったく同じ結果を取得できることを前提にしないでください。