中文、日文與韓文通常統稱為「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 語言撰寫的文件,請執行下列步驟:
使用 Engine 物件的 CreateDocumentProcessingParams 方法,建立 DocumentProcessingParams 物件。
指定辨識語言。使用 PageProcessingParams 子物件中 RecognizerParams 子物件的 SetPredefinedTextLanguage 方法。
選取適用於 CJK 語言的字型集。使用 SynthesisParamsForDocument 子物件的 ISynthesisParamsForDocument::FontSet 屬性。
將已設定的 DocumentProcessingParams 物件傳遞給 FRDocument 物件的 Process 方法。若您使用 Engine 物件的方法,則在匯出前,應先呼叫 Engine 物件的其中一個合成方法,並將已設定的 SynthesisParamsForDocument 物件作為參數傳入。
使用 FRDocument 物件的 Export 方法匯出已辨識的文字。如果您要匯出為 PDF 或 PDF/A 格式,請指定所需的匯出模式。
// 假設 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 );
.. .
使用語言