メインコンテンツへスキップ
中国語、日本語、韓国語は、しばしば「CJK」という略称で総称されます。これらの言語には、漢字を使用することや、横書きだけでなく縦書きもあることなど、いくつかの共通する特徴があります。 このセクションでは、ABBYY FineReader Engine 12 で CJK 言語のテキストを認識し、エクスポートする際の特有の注意点について説明します。 まず、CJK 言語を認識するには、中国語日本語、および 韓国語 の各言語モジュールに対応した ABBYY FineReader Engine のライセンスが必要です。ライセンスおよびモジュールの詳細については、Licensing セクションを参照してください。

認識言語

ABBYY FineReader Engine は、CJK テキスト向けに次の定義済み認識言語をサポートしています。
  • “ChinesePRC”
  • “ChineseTaiwan”
  • “Japanese”
  • “JapaneseModern”
  • “Korean”
  • “KoreanHangul”
これらの定義済み言語のいずれかを選択するには、RecognizerParams オブジェクトの SetPredefinedTextLanguage メソッドを使用できます。
日本語 (Modern) 認識言語は、日本語と英語、およびギリシャ語の 4 文字で構成される複合言語です。この言語は、漢字、かな (カタカナまたはひらがな) 、一部のラテン文字やギリシャ文字を含む可能性がある現代日本語のテキスト (レポートや研究論文など) を認識するためのものです。主に日本語で書かれた文書で最適な認識結果を得るには、日本語 (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 オブジェクトのメソッドを使用する場合は、エクスポートの前に、設定済みの SynthesisParamsForDocument オブジェクトをパラメーターとして指定して、Engine オブジェクトの synthesis メソッドのいずれかを呼び出す必要があります。
  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 );
...

関連項目

言語の使用