语言是主要的识别参数之一,它决定了识别过程中所使用的语言。在分析和识别之前设置正确的语言非常重要。您可以借助 IRecognizerParams::SetPredefinedTextLanguage 方法轻松指定识别语言。此方法会影响 IRecognizerParams::TextLanguage 属性。默认情况下,此参数会初始化为英语识别语言。您还可以使用语言自动检测 (详见 IRecognizerParams::LanguageDetectionMode 属性) 。
下面将介绍 ABBYY FineReader Engine 默认支持的语言,以及可为识别语言处理提供高级功能的对象的实用信息。
ABBYY FineReader Engine 提供一组默认支持的语言。这些语言称为“预定义语言”。PredefinedLanguages object 表示可用预定义语言的集合,可通过 Engine object 的 PredefinedLanguages 属性访问。它是由 PredefinedLanguage object 组成的集合。
预定义语言通过其内部名称进行标识。您可以通过 IRecognizerParams::SetPredefinedTextLanguage method,直接使用相应预定义语言的名称指定识别语言。有关预定义语言内部名称的列表,请参见 ABBYY FineReader Engine 中的预定义语言。
识别过程中使用的语言由 TextLanguage 对象表示。用于指定识别参数的 RecognizerParams 对象存储了对 TextLanguage 对象的引用。识别函数通过以下两种方式获取此对象:作为输入参数传入的 PageProcessingParams 对象的子对象,或从 Layout 对象中的某个块获取。
TextLanguage 对象公开以下主要属性:
- 内部名称。我们建议为内部语言选择一个唯一的名称;对于 ABBYY FineReader Engine 发行包中提供的语言,该名称已经是唯一的。请务必确保新语言的名称也是唯一的。
- 字母集。TextLanguage 对象包含以下字母集:单词之间可能出现的标点符号、禁用字符,以及紧邻单词前后出现的附加标点符号。
- 禁用词典。您可以使用 TextLanguage 对象的 ProhibitingDictionaries 属性创建禁用词典集合。这些词典中的单词不能作为已识别单词的候选变体。但如果没有其他候选变体可用,而使用禁用词是唯一的选择,这些词典中的单词仍可能出现在识别出的文本中。请参阅 使用词典。
在识别过程中,文本会被拆分为单词,每个单词对应一种或多种识别语言。单词中的每个字符都会被分配一种识别语言。该识别语言由 BaseLanguage 对象表示,可通过 ITextLanguage::BaseLanguages 属性访问。
BaseLanguage 对象具有以下属性:
- 内部名称。我们建议为内部语言选择唯一的名称;对于 ABBYY FineReader Engine 发行包中提供的语言,该名称已是唯一的。请务必确保新语言的名称也具有唯一性。
如果一个基础识别语言对应一个已识别的单词,则识别完成后,该单词中每个字符的 ICharParams::LanguageName 属性都会被设置为该基础语言的内部名称。如果一个单词对应多个基础识别语言 (例如双语复合词) ,则该单词中字符的 ICharParams::LanguageName 属性为空。无论识别出的单词是什么,ICharParams::LanguageId 属性都包含该基础语言的标识符。
- 字母集。字母集包括构成该语言字母表的字母、构成其扩展字母表的字母 (用于外来词) 、紧邻单词前后的标点符号、允许出现在单词内部但会被内部拼写检查系统忽略的字符,以及允许用于上标和下标的符号。
- 词典。单词的识别语言可以附加词典。请参见 使用词典。
ABBYY FineReader Engine 提供了一种简便方法,用于创建由多个预定义识别语言组成的复合识别语言。这可通过 LanguageDatabase 对象来完成。例如,您可以创建一种同时包含英语和德语单词的识别语言:
- 调用 IEngine::CreateLanguageDatabase 方法,创建一个 LanguageDatabase 对象。
- 使用参数 “English,German” 调用 ILanguageDatabase::CreateCompoundTextLanguage 方法。
- 使用返回的 TextLanguage 对象进行文本识别。
Visual Components 当前仅支持 Windows。
LanguageDatabase 对象还允许您导入使用 Visual Components 在 ABBYY FineReader Engine for Windows 中创建的自定义用户定义语言。Visual Components 可用于创建自定义识别语言,用户可指定字符集、词典和其他参数。以这种方式创建的识别语言存储在一组文件中,并且可通过 LanguageDatabase 对象访问。如果您希望使用在 Visual Components 中创建的语言,请执行以下操作:
- 调用 IEngine::CreateLanguageDatabase 方法,创建一个 LanguageDatabase 对象。
- 使用 ILanguageDatabase::LoadFrom 方法将这些语言加载到 LanguageDatabase 对象中。
- 从 LanguageDatabase 对象中按名称获取所需语言,并将其作为 TextLanguage 对象返回。
- 使用返回的 TextLanguage 对象进行文本识别。
使用词典
识别带空格的单词
识别中文、日语和韩语