本主题适用于 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 语言 不支持模式训练。如果选择这些语言中的任意一种进行识别,则所有用户模式 (包括其他语言的用户模式) 都会被忽略。
- 在并行进程中进行识别时,无法执行模式训练。
- 应在页面方向正确的页面上执行模式训练,因为在这种情况下,自动页面方向检测不起作用。
- 创建一个 RecognizerParams 对象。
- 将 IRecognizerParams::TrainUserPatterns 属性设置为 TRUE。
- 使用 IEngine::CreateEmptyUserPattern 方法创建一个空的用户模式文件。
- 在 IRecognizerParams::UserPatternsFile 属性中指定该用户模式文件的完整路径。
- 使用这些识别参数调用识别方法 (例如 IFRDocument::Process) 。每当遇到未知字符时,都会打开 Pattern Training 对话框,并在其中显示该字符的图像。
- 训练您的模式 — 在“Train User Pattern”模式下识别一个或多个页面。训练后的字符会保存到用户模式文件中。
- [可选] 如果要编辑此模式,请调用 Engine 对象的 EditUserPattern 方法。
- 使用此模式识别图像。
如果 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 );
...
另请参阅
训练用户模式