本主題適用於 Windows 版 FRE,但不需要 Windows Visual Components。
ABBYY FineReader Engine 幾乎可以讀取以任何字型排印的文字,而不受列印品質影響。因此,通常不需要在識別前事先進行訓練。不過,ABBYY FineReader Engine 仍提供多種使用者模式訓練工具,以因應特殊情況。
模式訓練的運作方式如下:系統會在訓練模式下識別一到兩個頁面,並由使用者輸入正確的字元值。這些資料會用來建立模式。模式是在模式訓練期間建立的一組「字元影像 — 字元本身」配對。模式會在識別時作為附加資訊來源。接著,ABBYY FineReader Engine 會使用此模式來識別其餘文字。
有時兩個甚至三個字元可能會「黏」在一起,而 ABBYY FineReader Engine 可能無法用個別 frame 圈住每個字元並將它們分開。如果確實發生這種情況 (也就是說,您無法移動 frame,使其只包含一個完整字元,且不含其他字元的任何部分) ,您可以訓練 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 );
...
另請參閱
訓練使用者字樣