// 创建 LanguageDatabase 对象
FREngine::ILanguageDatabasePtr pLanguageDatabase = Engine->CreateLanguageDatabase();
// 创建新的 TextLanguage 对象
FREngine::ITextLanguagePtr pTextLanguage = pLanguageDatabase->CreateTextLanguage();
// 复制预定义英语语言的所有属性
FREngine::ITextLanguagePtr pEnglishLanguage =
Engine->PredefinedLanguages->Find( "English" )->TextLanguage;
pTextLanguage->CopyFrom( pEnglishLanguage );
pTextLanguage->InternalName = L"SampleTL";
// 将新字典绑定到 TextLanguage 中的第一个(也是唯一一个)BaseLanguage 对象
FREngine::IBaseLanguagePtr pBaseLanguage = pTextLanguage->BaseLanguages->Item(0);
// 将内部字典名称改为用户定义的名称
pBaseLanguage->InternalName = L"SampleBL";
// 添加空格字符
_bstr_t alphabet = pBaseLanguage->GetLetterSet( FREngine::BLLS_Alphabet );
pBaseLanguage->put_LetterSet( FREngine::BLLS_Alphabet, alphabet + L" " );
// 创建新字典
_bstr_t dictionaryFile = L"D:\\sample.amd";
FREngine::IDictionaryPtr pDictionary =
pLanguageDatabase->CreateNewDictionary( dictionaryFile, FREngine::LI_EnglishUnitedStates );
pDictionary->Name = L"Sample";
// 向字典中添加带空格的词
pDictionary->AddWord( "New York", 100 );
// 获取字典描述集合并删除其中的所有项
FREngine::IDictionaryDescriptionsPtr pDictionaryDescriptions =
pBaseLanguage->DictionaryDescriptions;
pDictionaryDescriptions->DeleteAll();
// 创建用户字典描述并将其添加到集合中
FREngine::IDictionaryDescriptionPtr dic =
pDictionaryDescriptions->AddNew(FREngine::DT_UserDictionary);
// 指定包含带空格词条的字典路径
FREngine::IUserDictionaryDescriptionPtr userDic =
dic->GetAsUserDictionaryDescription();
userDic->FileName = dictionaryFile;
FREngine::ILayoutPtr pLayout;
...
// 指定所有文本块的 RecognizerParams 对象的属性
// 遍历块
for( int i = pLayout->Blocks->Count - 1; i >= 0; i-- ) {
FREngine::BlockTypeEnum blockType = pLayout->Blocks->Item( i )->Type;
// 查找文本块
if( blockType != FREngine::BT_Text ) {
pLayout->Blocks->DeleteAt(i);
} else {
pLayout->Blocks->Item(i)->GetAsTextBlock()->RecognizerParams->
TextLanguage = pTextLanguage;
pLayout->Blocks->Item(i)->GetAsTextBlock()->RecognizerParams->
OneWordPerLine = VARIANT_TRUE;
}
}
...