跳轉到主要內容
本主題適用於 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 語言不支援模式訓練。如果選擇其中一種語言進行識別,則所有使用者模式 (包括其他語言的模式) 都會被忽略。
  • 在平行處理序中進行識別時,無法執行模式訓練。
  • 應在頁面方向正確的頁面上執行模式訓練,因為在這種情況下,自動頁面方向偵測不會生效。

如何透過訓練進行識別

  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 );
    ...
    

    另請參閱

    訓練使用者字樣