共用方式為


關於擴充語言服務

擴充語言服務 (ELS) 會實作為動態連結程式庫 (DLL) ,為應用程式指定的文字提供各種不同的語言支援功能。 這項技術包含數種預先定義語言服務類型的 ELS 平臺和外掛程式,可透過平臺存取應用程式。

注意

ELS 模組會自動隨 Windows 7 和更新版本一起安裝。

 

ELS 平臺

ELS 平臺是您的應用程式與 ELS 服務之間的介面。 它提供透過相同 API 實作數種語言功能的簡單方式,這可讓應用程式存取和使用特定服務。 如需 API 的詳細資訊,請參閱 擴充語言服務參考。

注意

當應用程式呼叫任何 ELS API 函式時,平臺會視需要配置記憶體和資源,以便與服務通訊。 應用程式會負責再次呼叫平臺,以釋放這些資源。

 

平臺會在應用程式虛擬記憶體空間內執行,而且所有配置的記憶體都是此空間的一部分。 因此,您的應用程式只需要連結至 ELS 元件 DLL (Elscore.dll) ,方法是連結至 Elscore.lib 或動態載入Elscore.dll。

ELS 服務

針對 Windows 7 和更新版本,ELS 平臺僅支援下列預先定義的服務。

注意

未來的 ELS 版本將支援 Microsoft 或服務提供者所提供的其他服務。

 

每個服務都與描述服務用途的服務類別相關聯。 類別是以不可當地語系化的字串表示。 應用程式會使用它來列舉可用的服務。 目前的服務類別包括:

  • 「語言偵測」
  • 「腳本偵測」
  • 「Transliteration」

平臺會使用服務中繼資料來列舉應用程式所要求的服務。 服務全域唯一識別碼的屬性 (GUID) 、支援的輸入和輸出語言和腳本,以及應用程式可以使用服務類別來列舉所需的 ELS 服務。

每個 ELS 服務都會實作為 DLL 支援的外掛程式,可安裝在作業系統上,讓 ELS 平臺能夠偵測並使用它。 如有需要,服務可以公開自己的子服務。

主要 ELS 作業

本節說明 ELS 平臺支援的主要作業。 平臺同時支援同步和非同步呼叫模式。 非同步呼叫模式會使用應用程式執行緒集區來排程處理要求的執行緒。

注意

由於平臺支援非同步模式,ELS 服務不需要自行實作這種類型的功能。

 

服務列舉

ELS 平臺會載入和管理所有 ELS 服務,讓作業對應用程式而言是透明的。 應用程式會呼叫 MappingGetServices來列舉可用的服務。 如需程式設計指示,請參閱 列舉和釋放服務

注意

建議您基於效能考慮,讓應用程式只列舉一次可用的服務。 ELS 平臺會在下一個列舉上再次檢查服務,以確保其列舉結果一律為最新狀態。

 

文字辨識

服務列舉之後,應用程式會呼叫 MappingRecognizeText 函式,以使用特定的 ELS 服務,將輸入文字的任何文字範圍對應至輸出文字。 文字辨識的範例是使用語言偵測服務來接收文字區段,並偵測其最可能的語言。

服務辨識文字之後, MappingRecognizeText 會傳回 MAPPING_PROPERTY_BAG 結構,並填入服務所產生的輸出資料和屬性。 若要避免記憶體流失,應用程式必須在每次MappingRecognizeText傳回S_OK時呼叫MappingFreePropertyBag來釋放屬性包。 應用程式通常會在使用輸出資料完成時,或在輸出資料不再相關時執行這項作業,例如已修改文字的輸入區域,例如編輯或刪除。 釋放屬性包時, MappingFreePropertyBag 會傳回 。

要求 文字辨識中會提供文字辨識的程式設計指示。

服務終止

當您的應用程式不再需要 ELS 服務時,它會在終止之前呼叫 MappingFreeServices 。 如需詳細資訊,請參閱 列舉和釋放服務

版本控制

未來的 ELS 版本將允許更新 ELS 服務。 應用程式將能夠檢查 MAPPING_SERVICE_INFO 結構的版本號碼,以偵測服務中的任何變更。

注意

您的 ELS 應用程式不應該假設相同服務的不同版本可以擷取完全相同的結果。