跳轉到主要內容
中文、日文與韓文通常統稱為「CJK」。這些語言有幾項共同特徵,例如使用漢字,以及同時採用直排和橫排的書寫方向。 本節將說明使用 ABBYY FineReader Engine 12 辨識及匯出 CJK 語言文字時的一些特殊之處。 首先,若要辨識 CJK 語言,您必須擁有支援 中文日文韓文 語言模組的 ABBYY FineReader Engine 授權。如需更多有關授權與模組的資訊,請參閱 授權 一節。

辨識語言

ABBYY FineReader Engine 支援下列用於 CJK 文字的預先定義辨識語言:
  • “ChinesePRC”
  • “ChineseTaiwan”
  • “Japanese”
  • “JapaneseModern”
  • “Korean”
  • “KoreanHangul”
若要選取其中一種預先定義語言,您可以使用 RecognizerParams 物件的 SetPredefinedTextLanguage 方法。
Japanese (Modern) 辨識語言是一種複合語言,由日文、英文以及四個希臘字母所組成。此語言用於辨識現代日文文本,其中可能包含部分漢字、假名 (片假名或平假名) 符號,以及部分拉丁字母和/或希臘字母 (例如報告、研究論文等) 。為了讓所有主要以日文撰寫的文件獲得最佳辨識結果,我們強烈建議將 Japanese (Modern) 辨識語言作為獨立語言使用,不要與英文組合使用。
ABBYY FineReader Engine 支援由上述數種語言所組成的辨識語言組合,以及 CJK 與其他語言的組合。

字型

為避免亞洲字元出現亂碼,您必須為文件合成指定包含所需字元集的字型,例如 Arial Unicode MS、SimSun。您可以使用 ISynthesisParamsForDocument::FontSet 屬性設定字型。FontSet 物件的 SystemFontSet 屬性預設會設為選取系統字型中與文件辨識語言相符的字型。

匯出

您可以將 CJK 語言以「影像下方文字」模式匯出為 PDF/A (IPDFExportParams::TextExportMode = PEM_ImageOnText) ,以確保文件外觀一致。

辨識與匯出的流程

若要處理以 CJK 語言撰寫的文件,請執行下列步驟:
  1. 使用 Engine 物件的 CreateDocumentProcessingParams 方法,建立 DocumentProcessingParams 物件。
  2. 指定辨識語言。使用 PageProcessingParams 子物件中 RecognizerParams 子物件的 SetPredefinedTextLanguage 方法。
  3. 選取適用於 CJK 語言的字型集。使用 SynthesisParamsForDocument 子物件的 ISynthesisParamsForDocument::FontSet 屬性。
  4. 將已設定的 DocumentProcessingParams 物件傳遞給 FRDocument 物件的 Process 方法。若您使用 Engine 物件的方法,則在匯出前,應先呼叫 Engine 物件的其中一個合成方法,並將已設定的 SynthesisParamsForDocument 物件作為參數傳入。
  5. 使用 FRDocument 物件的 Export 方法匯出已辨識的文字。如果您要匯出為 PDF 或 PDF/A 格式,請指定所需的匯出模式。
對於以 CJK 語言撰寫的文字,請勿使用 Word 物件及其屬性,也不要使用 CharParams 物件的 IsWordFirstIsWordLeftmost 屬性。此處理技術僅基於內部用途,才會將文字行劃分為「words」;這些符號群組並不等同於實際的單字。
// 假設 Engine 已建立
// 且文件已載入
IEngine* Engine;
IFRDocument* frDocument;
HRESULT res; // 使用此變數檢查方法呼叫是否成功
...
// 建立 DocumentProcessingParams 物件
IDocumentProcessingParams* params = 0;
IPageProcessingParams* pageParams = 0;
IRecognizerParams* recParams = 0;
res = Engine->CreateDocumentProcessingParams( ¶ms );
res = params->get_PageProcessingParams( &pageParams );
res = pageParams->get_RecognizerParams( &recParams );
 
// 指定辨識語言
res = recParams->SetPredefinedTextLanguage( L"Japanese" );
 
ISynthesisParamsForDocument* synthesisParams = 0;
IFontSet* set = 0;
ISystemFontSet* systemSet = 0;
res = params->get_SynthesisParamsForDocument( &synthesisParams );
res = synthesisParams->get_FontSet( &set );
res = set->get_SystemFontSet( &systemSet );
 
// 選取字型集
res = systemSet->put_FontNamesFilter( FNF_Japanese );
// 辨識並匯出文件
frDocument->Process( params );
frDocument->Export( L"/opt/Demo.rtf", FEF_RTF, 0 );
...
FREngine::IEnginePtr Engine;
FREngine::IFRDocumentPtr frDocument;
...
// 建立 DocumentProcessingParams 物件
FREngine::IDocumentProcessingParamsPtr pDocumentProcessingParams = Engine->CreateDocumentProcessingParams();
// 指定辨識語言
pDocumentProcessingParams->PageProcessingParams->RecognizerParams->SetPredefinedTextLanguage( "Japanese" );
// 選擇字型集
pDocumentProcessingParams->SynthesisParamsForDocument->FontSet->SystemFontSet->FontNamesFilter = FREngine::FNF_Japanese;
// 辨識並匯出文件
frDocument->Process( pDocumentProcessingParams );
frDocument->Export( L"D:\\Demo.rtf", FREngine::FEF_RTF, 0 );
...
FREngine.IEngine engine;
FREngine.IFRDocument frdoc;
...
// 建立 DocumentProcessingParams 物件
FREngine.IDocumentProcessingParams dpp = engine.CreateDocumentProcessingParams();
// 指定辨識語言
dpp.PageProcessingParams.RecognizerParams.SetPredefinedTextLanguage( "Japanese" );
// 選擇字型集
dpp.SynthesisParamsForDocument.FontSet.SystemFontSet.FontNamesFilter = (int)FREngine.FontNamesFiltersEnum.FNF_Japanese;
// 辨識並匯出文件
frdoc.Process( dpp );
frdoc.Export( "D:\\Demo.rtf", FREngine.FileExportFormatEnum.FEF_RTF, null );
...

另請參閱

使用語言