跳轉到主要內容
ABBYY FineReader Engine 目前尚不支援阿拉伯文 ICR。不過,仍可辨識阿拉伯數字,本文將說明所需的步驟。 除了 Recognizing Handwritten Texts 中所述的程序外,若要辨識阿拉伯數字,您還需要建立一個自訂語言,其字母表僅包含 10 個數字符號,並將其設為每個含有數字之區塊的辨識語言。 因此,若要辨識手寫阿拉伯數字,請執行下列步驟:
  1. 使用 LanguageDatabase 物件的 CreateTextLanguage 方法建立新的文字語言。
  2. 在 TextLanguage 物件中,使用 BaseLanguage 物件的 LetterSet 屬性,將語言字母表設為包含下列字元:٠١٢٣٤٥٦٧٨٩。
  3. 對每個包含手寫阿拉伯數字的區塊,透過 ITextBlock::RecognizerParams 屬性指定辨識參數:
    • RecognizerParams 物件的 TextLanguage 屬性設為您在前一步建立的語言。
    • 將 RecognizerParams 物件的 TextTypes 屬性設為 TT_Handwritten。
    • 如果數字周圍有框線、方框等標記,請在 RecognizerParams 物件的 FieldMarkingType 屬性中設定字元周圍的標記類型。如果每個數字都寫在獨立的儲存格中,還需使用 CellsCount 屬性設定該區塊中的字元儲存格數量。

Windows 範例

// 全域 ABBYY FineReader Engine 物件
FREngine::IEnginePtr Engine;
...
// 開啟影像檔案
...
// 建立自訂語言
FREngine::ILanguageDatabasePtr pLanguageDatabase = Engine->CreateLanguageDatabase();
FREngine::ITextLanguagePtr pTextLanguage = pLanguageDatabase->CreateTextLanguage();
FREngine::IBaseLanguagesPtr pBaseLanguages = pTextLanguage->BaseLanguages;
FREngine::IBaseLanguagePtr pBaseLanguage = pBaseLanguages->AddNew();
// 設定字母表
pBaseLanguage->put_LetterSet( FREngine::BLLS_Alphabet, L"٠١٢٣٤٥٦٧٨٩" );
// 從頁面取得 Layout 物件
FREngine::ILayoutPtr layout = frPage->get_Layout();
// 設定區塊區域
FREngine::IRegionPtr pRegion = Engine->CreateRegion();
pRegion->AddRect( 491, 314, 2268, 404 );
// 建立新的區塊
FREngine::IBlockPtr newBlock = layout->Blocks->AddNew( FREngine::BT_Text, pRegion, 0 );
FREngine::ITextBlockPtr textBlock = newBlock->GetAsTextBlock();
// 設定自訂語言
textBlock->RecognizerParams->TextLanguage = pTextLanguage;
// 指定文字類型
textBlock->RecognizerParams->TextTypes = FREngine::TT_Handwritten;
// 指定字元周圍標記的類型
textBlock->RecognizerParams->FieldMarkingType = FREngine::FMT_SimpleText;
// 辨識與匯出
...
// 全域 ABBYY FineReader Engine 物件
FREngine.IEngine engine;
...
// 開啟影像檔案
...
// 建立自訂語言
FREngine.ILanguageDatabase languageDatabase = engine.CreateLanguageDatabase();
FREngine.ITextLanguage textLanguage = languageDatabase.CreateTextLanguage();
FREngine.IBaseLanguages baseLanguages = textLanguage.BaseLanguages;
FREngine.IBaseLanguage baseLanguage = baseLanguages.AddNew();
// 設定字母表
baseLanguage.set_LetterSet( FREngine.BaseLanguageLetterSetEnum.BLLS_Alphabet, "٠١٢٣٤٥٦٧٨٩" );
// 從頁面取得 Layout 物件
FREngine.ILayout layout = frPage.Layout;
// 設定區塊區域
FREngine.IRegion region = engine.CreateRegion();
region.AddRect( 491, 314, 2268, 404 );
// 建立新的區塊
FREngine.IBlock newBlock = layout.Blocks.AddNew( FREngine.BlockTypeEnum.BT_Text, region, 0 );
FREngine.ITextBlock textBlock = newBlock.GetAsTextBlock();
// 設定自訂語言
textBlock.RecognizerParams.TextLanguage = textLanguage;
// 指定文字類型
textBlock.RecognizerParams.TextTypes = (int)FREngine.TextTypeEnum.TT_Handwritten;
// 指定字元周圍標記的類型
textBlock.RecognizerParams.FieldMarkingType = FREngine.FieldMarkingTypeEnum.FMT_SimpleText;
// 辨識與匯出
...

另請參閱

RecognizerParams 辨識手寫文字 處理語言