跳转到主要内容
本主题适用于 Windows 版 FRE,但不需要 Windows Visual Components。
ABBYY FineReader Engine 几乎可以识别采用任何字体排印的文本,而不受印刷质量影响。因此,通常无需在识别前进行预先训练。尽管如此,ABBYY FineReader Engine 仍提供了多种用户模式训练工具,用于处理特殊情况。 模式训练的工作方式如下:在训练模式下识别一页或两页,由用户输入正确的符号值。然后使用这些数据创建模式。模式是在模式训练期间创建的一组“字符图像 — 字符本身”配对。模式在识别过程中用作附加信息来源。随后,ABBYY FineReader Engine 会使用此模式识别其余文本。 有时,两个甚至三个字符可能会“粘”在一起,而 ABBYY FineReader Engine 可能无法为每个字符分别框出独立的边框,将它们分开。如果确实如此 (即,您无法移动边框,使其只包含一个完整字符,而不包含其他字符的任何部分) ,您可以训练 ABBYY FineReader Engine 将这种不可分割的字符组合作为整体进行识别。常见的粘连字符组合包括 ff、fi 和 fl。此类组合称为连字 您可以在训练用户模式中找到更多信息。

何时使用

在以下情况下,Train User Pattern 模式可能会很有帮助:
  • 识别使用装饰性字体的文本
  • 识别包含非常见字符 (例如数学符号) 的文本
  • 识别大量 (超过一百页) 印刷质量较差的文本
仅当符合上述某种情况时,才应使用 Train User Pattern 模式。在其他情况下,识别质量或许会略有提升,但投入的时间和精力很可能得不偿失。
  • 只有当文档与用于创建用户模式的文档具有相同的字体、字号和分辨率时,模式 才会有用。
  • CJK 语言 不支持模式训练。如果选择这些语言中的任意一种进行识别,则所有用户模式 (包括其他语言的用户模式) 都会被忽略。
  • 在并行进程中进行识别时,无法执行模式训练。
  • 应在页面方向正确的页面上执行模式训练,因为在这种情况下,自动页面方向检测不起作用。

如何通过训练进行识别

  1. 创建一个 RecognizerParams 对象。
  2. IRecognizerParams::TrainUserPatterns 属性设置为 TRUE。
  3. 使用 IEngine::CreateEmptyUserPattern 方法创建一个空的用户模式文件。
  4. IRecognizerParams::UserPatternsFile 属性中指定该用户模式文件的完整路径。
  5. 使用这些识别参数调用识别方法 (例如 IFRDocument::Process) 。每当遇到未知字符时,都会打开 Pattern Training 对话框,并在其中显示该字符的图像。
  6. 训练您的模式 — 在“Train User Pattern”模式下识别一个或多个页面。训练后的字符会保存到用户模式文件中。
  7. [可选] 如果要编辑此模式,请调用 Engine 对象的 EditUserPattern 方法。
  8. 使用此模式识别图像。
如果 IRecognizerParams::UseBuiltInPatterns 属性设置为 TRUE,则 ABBYY FineReader Engine 将使用其内置模式进行识别。当您不想使用标准的 ABBYY FineReader Engine 模式进行字符识别时,请将此属性设置为 FALSE。这在识别使用装饰性字体或非标准字体输入的文本时可能很有帮助,因为您可以使用专门针对这些字体训练的自定义模式。如果 UserPatternsFile 属性 (用于存储用户定义模式文件路径) 为空,则会忽略 UseBuiltInPatterns 属性。
在 ABBYY FineReader Engine 10 或更早版本中创建的用户模式文件无法在 FineReader Engine 12 Release 6 或更高版本中打开。要继续使用这些文件,请将旧版用户模式文件另存为新格式:
  • 使用 FineReader Engine 11,或 FineReader Engine 12 Release 5 及更早版本。
  • 调用 Engine 对象的 MergePatterns 方法,传入一个 string 集合,其中包含旧模式文件的名称以及新文件的完整路径。
    FREngine::IEnginePtr Engine;
    FREngine::IFRDocumentPtr frDocument;
    ...
    // 创建一个 DocumentProcessingParams 对象
    FREngine::IDocumentProcessingParamsPtr dpp = Engine->CreateDocumentProcessingParams();
    // 设置 TrainUserPatterns 属性
    dpp->PageProcessingParams->RecognizerParams->TrainUserPatterns = VARIANT_TRUE;
    // 创建一个空的用户模式文件
    Engine->CreateEmptyUserPattern( L"D:\\test.ptn" );
    // 设置用户模式文件的完整路径
    dpp->PageProcessingParams->RecognizerParams->UserPatternsFile = L"D:\\test.ptn";
    // 处理图像
    frDocument->Process( dpp );
    ...
    
    FREngine.IEngine engine;
    FREngine.IFRDocument frdoc;
    ...
    // 创建一个 DocumentProcessingParams 对象
    FREngine.IDocumentProcessingParams dpp = engine.CreateDocumentProcessingParams();
    // 设置 TrainUserPatterns 属性
    dpp.PageProcessingParams.RecognizerParams.TrainUserPatterns = true;
    // 创建一个空的用户模式文件
    string patternFile = "D:\\test.ptn";
    engine.CreateEmptyUserPattern( patternFile );
    // 设置用户模式文件的完整路径
    dpp.PageProcessingParams.RecognizerParams.UserPatternsFile = patternFile;
    // 处理图像
    frdoc.Process( dpp );
    ...
    

    另请参阅

    训练用户模式