处理语言
主要识别参数之一是识别过程中使用的语言。在分析和识别前设置合适的语言很重要。借助 IRecognizerParams::SetPredefinedTextLanguage 方法,可以轻松指定识别语言。该方法会影响 IRecognizerParams::TextLanguage 属性。默认情况下,该参数用英语识别语言进行初始化。您也可以使用语言自动检测 (请参见 IRecognizerParams::LanguageDetectionMode 属性了解详情)。
重要事项! 语言自动检测仅处理预定义语言(完整列表请参见 ABBYY FineReader Engine 中的预定义语言)。
下文介绍了关于ABBYY FineReader Engine 默认支持的语言信息以及提供识别语言高级功能对象的有用信息。
预定义语言
ABBYY FineReader Engine 提供一套默认支持的语言。这些语言被称为“预定义语言”。PredefinedLanguages 对象表示的预定义语言集合可通过 Engine 对象的 PredefinedLanguages 属性进行访问。它是 PredefinedLanguage 对象的集合。
预定义语言由其内部名称标识。您可以通过 IRecognizerParams::SetPredefinedTextLanguage 方法按照相应预定义语言的名称直接指定识别语言。预定义语言的内部名称列表请见 ABBYY FineReader Engine 中的预定义语言。
文本的识别语言
识别期间使用的语言由 TextLanguage 对象表示。指定识别参数的 RecognizerParams 对象存储对 TextLanguage 对象的引用。识别函数要么将该对象为作为输入参数传递给它们的 PageProcessingParams 对象的子对象,要么从 Layout 对象中的块采用该对象。
TextLanguage 对象具有以下主要属性:
- 内部名称。我们建议为内部语言选择唯一名称;内部语言对于 ABBYY FineReader Engine 分发包中提供的语言来说是唯一的。要确保新语言的名称是唯一的。
- 字母集。TextLanguage 对象包含以下字母集:在词汇之间可能遇到的标点符号、禁止字符、紧邻在词汇前后的其它标点符号。
- 禁止字典。您可以使用 ProhibitingDictionaries 对象的 TextLanguage 属性创建一个禁止字典集合。来自这些字典的词汇不能被用作已识别词汇的变体。但是如果没有变体剩下,而使用禁止词汇是唯一的选项,则来自这些字典的词汇仍然可能会出现在识别文本中。请参见 借助字典进行处理。
字符的识别语言
识别期间,文本被分为词汇,每个词汇对应一种或多种识别语言。单词中的每个字符都有一种识别语言。该识别语言由 BaseLanguage 对象表示,可通过 ITextLanguage::BaseLanguages 属性进行访问。
BaseLanguage 对象有以下属性:
- 内部名称。我们建议为内部语言选择唯一的名称;内部语言对于 ABBYY FineReader Engine 分发包中提供的语言来说是唯一的。要确保新语言的名称是唯一的。
如果一种基本识别语言对应一个已识别词汇,则该词汇中每个字符的 ICharParams::LanguageName 属性将在识别后被设为基本语言的内部名称。如果多种基本识别语言对应一个词汇(例如,对于双语复合词汇),则该词汇中的字符的 ICharParams::LanguageName 属性为空。ICharParams::LanguageId 属性包含基本语言的标识符,与已识别词汇无关。
- 字母集。字母集包含构成语言字母表的字母、构成其扩展字母表的字母(用于借用词汇中)、紧邻词汇前后的标点符号、词汇内允许但是被内部拼写检查系统忽略的字符,以及在下标和上标中允许的符号。
- 字典。一个单词的识别语言可附带一个字典。请参见 借助字典进行处理。
创建复合识别语言
ABBYY FineReader Engine 可让您轻松创建由多种预定义识别语言组成的复合识别语言。这可通过 LanguageDatabase 对象来完成创建。例如,您可以创建一个包含英语和德语词汇的识别语言。
- 调用 IEngine::CreateLanguageDatabase 方法创建 LanguageDatabase 对象。
- 使用参数“英语,德语”调用 ILanguageDatabase::CreateCompoundTextLanguage 方法。
- 使用收到的 TextLanguage 对象进行文本识别。
LanguageDatabase 对象也可让您导入在 ABBYY FineReader Engine for Windows 中创建的用户自定义语言。使用这些语言, 请执行以下操作:
- 调用 IEngine::CreateLanguageDatabase 方法创建 LanguageDatabase 对象。
- 使用 ILanguageDatabase::LoadFrom 方法将语言载入 LanguageDatabase 对象中。
- 按语言名称将其作为 LanguageDatabase 对象的 TextLanguage 对象来获取所需语言。
- 使用收到的 TextLanguage 对象进行文本识别。
另请参阅
03.07.2024 8:50:25