训练识别
无论打印质量如何,ABBYY FineReader Engine 可以读取几乎任何字体的文本。因此,识别前通常不需要训练。但 ABBYY FineReader Engine 仍带有许多针对特殊情况的用户模式训练工具。
模式训练原理如下。在训练模式下识别一个或两个页面,用户输入正确的符号值。这些数据用于创建模式。模式是一个在模式训练过程中创建的成对“字符图像 — 字符本身”集。模式在识别过程中用作补充信息的来源。然后,ABBYY FineReader Engine 使用该模式来识别剩余文本。
有时,两个甚至三个字符会"粘在"一起,ABBYY FineReader Engine 可能无法将每个字符包括在单个框架中来分开它们。如果是这种情况(即您无法移动框架,以便它只包含一个完整字符,没有其它字符的部分),您可以训练 ABBYY FineReader Engine 将不可分割的字符组合作为一个整体来识别。常见的粘在一起的字符组合示例包括 ff、fi 和 fl。此类组合称为 连字。
您可以在训练用户模式获取更多信息。
使用场景
以下情况可使用“训练用户模式”:
- 识别用装饰字体设置的文本
- 识别包含特殊字符(例如数学符号)的文本
- 识别大量(超过一百页)打印质量低的文本
请在上述情况使用训练用户模式模式。如在其他情况下使用,识别质量可能会略微提高,但是投入的时间和精力会远大于获益。
注:
- 仅当文档具有与创建用户模式的文档相同的字体、字号和分辨率时,该模式才有用。
- CJK 语言不支持模式训练。如果选择这些语言之一进行识别,所有用户模式(包括针对其它语言的模式)将被忽视。
- 在以并行进程识别时无法执行模式训练。
- 模式训练应该在页面方向正确的页面上执行,因为页面方向自动检测在这种情况下无效。
如何用训练进行识别
- 创建一个 RecognizerParams 对象。
- 设置 IRecognizerParams::TrainUserPatterns 属性为 TRUE。
- 使用IEngine::CreateEmptyUserPattern 方法创建一个空的用户模式文件。
- 在 IRecognizerParams::UserPatternsFile 属性中指定用户模式文件的完整路径。
- 用这些识别参数调用识别方法(例如,IFRDocument::Process)。遇到未知字符时,模式训练 对话框就会打开,显示字符图像。
- 训练您的模式 -- 以 训练用户模式模式识别一个或多个页面。已训练的字符保存在用户模式文件中。
- [Optional]如果您想要编辑该模式,请调用 Engine 对象的 EditUserPattern 方法。
- 使用该模式识别图像。
注: 如果 IRecognizerParams::UseBuiltInPatterns 属性被设为 TRUE,则 ABBYY FineReader Engine 将使用自己的内置模式进行识别。如果不想使用标准 ABBYY FineReader Engine 模式进行字符识别,设置该属性为 FALSE。这可能对于识别用装饰性或者非标准字体键入的文本有用,在这种情况下您可以使用专为这些字体训练的自己的用户定义模式。如果 UserPatternsFile 属性(其中存储用户定义模式文件的路径)为空,则 UseBuiltInPatterns 属性将被忽略。
C++ (COM) 代码
C# 代码
另请参阅
17.09.2024 15:14:41