このトピックは Windows 版 FRE に適用されますが、Windows Visual Components は必要ありません。
ABBYY FineReader Engine は、印刷品質にかかわらず、ほぼあらゆるフォントで印刷されたテキストを読み取ることができます。そのため、通常は認識の前に事前の学習は必要ありません。それでも、ABBYY FineReader Engine には、特殊なケースに対応するためのユーザーパターン学習ツールがいくつか用意されています。
パターン学習は次のように機能します。1 ~ 2 ページを学習モードで認識し、その際にユーザーが正しい文字を入力します。これらのデータを使用してパターンが作成されます。パターンとは、パターン学習 中に作成される「文字画像 — 文字そのもの」の組の集合です。パターンは、認識時の追加情報源として使用されます。その後、ABBYY FineReader Engine はこのパターンを使って残りのテキストを認識します。
場合によっては、2 文字、あるいは 3 文字が「くっついた」状態になり、ABBYY FineReader Engine がそれぞれの文字を分離するために各文字を個別のフレームで囲めないことがあります。このような場合 (つまり、フレームを移動して、1 つの完全な文字だけを含み、他の文字の一部を含まないようにできない場合) 、ABBYY FineReader Engine に、その分離できない文字の組み合わせ全体を 1 文字として認識するよう学習させることができます。くっついて現れることが多い文字の組み合わせの例としては、ff、fi、fl があります。このような組み合わせは 合字 と呼ばれます。
詳細については、ユーザーパターンのトレーニング を参照してください。
次のような場合に、Train User Pattern モードが役立つことがあります。
- 装飾フォントで組まれたテキストを認識する場合
- 特殊な文字 (例: 数学記号) を含むテキストを認識する場合
- 印字品質の低いテキストを大量に (100ページ超) 認識する場合
Train User Pattern モードは、上記のいずれかに該当する場合にのみ使用してください。それ以外の場合、認識品質がわずかに向上することはありますが、そのためにかかる時間と労力は、得られる効果を上回る可能性があります。
- パターンが有効なのは、ユーザーパターンの作成に使用したドキュメントと同じフォント、フォントサイズ、解像度のドキュメントに対してのみです。
- CJK languages ではパターン学習はサポートされていません。これらの言語のいずれかが認識用に選択されている場合、すべてのユーザーパターン (他の言語用のものを含む) は無視されます。
- 並列プロセスで認識を行う場合、パターン学習は実行できません。
- この場合、自動的なページの向きの検出は機能しないため、パターン学習はページの向きが正しいページで実行する必要があります。
- RecognizerParams オブジェクトを作成します。
- IRecognizerParams::TrainUserPatterns プロパティを TRUE に設定します。
- IEngine::CreateEmptyUserPattern メソッドを使用して、空のユーザーパターンファイルを作成します。
- このユーザーパターンファイルへのフルパスを IRecognizerParams::UserPatternsFile プロパティに指定します。
- これらの認識パラメーターを指定して認識メソッド (例: IFRDocument::Process) を呼び出します。不明な文字が検出されるたびに、文字画像が表示された パターン学習 ダイアログボックスが開きます。
- パターンを学習する — Train User Pattern モードで 1 ページ以上を認識します。学習済みの文字はユーザーパターンファイルに保存されます。
- [任意] このパターンを編集する場合は、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 );
...
関連項目
ユーザーパターンのトレーニング