メインコンテンツへスキップ
ABBYY FineReader Engine が扱うテキストはプレーンテキストです。つまり、フレームや表などは含まれません。すべての文字は Unicode です。プレーンテキストには、次の特殊文字が含まれる場合があります。
  • 0x2028 — 改行記号
  • 0x2029 — 段落区切り記号
  • 0xFFFC — オブジェクト置換文字 (テキスト内に埋め込まれた画像を示します)
  • 0x0009 — タブ
  • 0x005E — サーカムフレックスアクセント (^) 。ABBYY FineReader Engine では、認識できなかった文字の代用として使用されます
  • 0x00AC — ソフトハイフン
テキストの属性や書式は、対応するオブジェクトとプロパティを通じて利用できます。文書内で認識されたテキストには、そのページのレイアウト (IFRPage::Layout プロパティ) を介してアクセスできます。

レイアウト内の認識されたテキスト

認識後にテキストを含むのは、テキスト、テーブル、バーコードの各ブロックだけです。その他のブロックにはテキストはありません。Text オブジェクトでは、テキストブロックおよびテーブルブロックの認識されたテキストにアクセスできます。一方、BarcodeText オブジェクトでは、バーコードブロックのテキストにアクセスできます。 ブロックの認識されたテキストにアクセスするには、次の手順を実行します。
  • テキストブロックの場合
ITextBlock::Text プロパティを使用します。
  • テーブルブロックの場合
    1. ITableBlock::Cells プロパティを使用して、テーブルセルのコレクションを取得します。
    2. 必要なセルを選択します。TableCells オブジェクトのメソッドを使用します。
    3. セルのブロック オブジェクト (ITableCell::Block プロパティ) を取得します。
    4. そのブロックのタイプが BT_Text であること (IBlock::Type プロパティ) を確認し、IBlock::GetAsTextBlock メソッドを使用して TextBlock オブジェクトを取得します。
    5. ITextBlock::Text プロパティを使用します。
  • バーコードブロックの場合
IBarcodeBlock::BarcodeText または IBarcodeBlock::Text プロパティを使用して、バーコードのテキストを取得します。前者は、認識されたバーコードの文字 (BarcodeSymbol オブジェクト) のコレクションである BarcodeText オブジェクトを返します。後者は、バーコードのテキストを単一の string として返します。

Text と段落

Text オブジェクトには、段落のコレクションが含まれています。このコレクションは Paragraphs オブジェクトで、Text オブジェクトの Paragraphs プロパティからアクセスできます。Paragraphs オブジェクトは、Paragraph オブジェクトのコレクションです。認識されたテキストには、IParagraph::Text プロパティからアクセスできます。このプロパティ内のテキストは Unicode string です。 また、段落全体に固有の属性 (配置やインデントに関する情報など) を含む ParagraphParams オブジェクトもあります。このオブジェクトには、IParagraph::ExtendedParams プロパティからアクセスできます。 IParagraph::Lines プロパティを使用すると、ParagraphLines オブジェクトで表される段落行のコレクションにアクセスできます。さらに、このオブジェクトは ParagraphLine オブジェクトのコレクションでもあります。後者には、単一の段落行の幾何学的位置に関する情報が含まれており、テキストの行分割を表します。 IParagraph::Words プロパティを使用すると、Words オブジェクトで表される段落内の単語のコレクションにアクセスできます。このオブジェクトは Word オブジェクトのコレクションです。Word オブジェクトを使用すると、段落内の単一の単語にアクセスできます。

文字属性

テキスト内の各文字には、それぞれ固有のパラメーターがあります。これらには CharParams オブジェクトを介してアクセスできます。CharParams オブジェクトには、文字の幾何学的パラメーター、フォント、言語など、多数の文字属性が含まれます。また、CharParams オブジェクトには、文字自体が SelectedCharacterRecognitionVariant プロパティに格納されています。文書内のすべての文字に関する情報を取得する推奨方法については、以下の プレーンテキスト も参照してください。 テキスト内での文字の位置は、その文字が属する段落のインデックスと、その段落内での文字自身のインデックスによって定義されます。テキスト内には、いわゆる「特別な位置」もあります。これは、段落のインデックスが段落の総数に等しく、文字のインデックスが 0 である位置です。つまり、テキスト末尾の挿入位置を表します。Text オブジェクトの一部のメソッドは、この特別な位置に対して操作を実行します。たとえば、そこに別のテキストフラグメントや画像を挿入できます。 CharParams オブジェクトの SelectedCharacterRecognitionVariant プロパティを使用すると、単一の文字に固有の拡張属性セットにアクセスできます。これらの属性は CharacterRecognitionVariant オブジェクトで表されます。これらの属性は認識時に設定され、その文字に固有の内部的な認識情報を提供します。特に、このオブジェクトでは、文字認識の確実性や、その文字がセリフ体フォントである確率などについて、より正確な情報を取得できます。

Text の編集

Text オブジェクトの属性を変更することはできますが、テキストを外部形式にエクスポートする場合は、細心の注意が必要です。ABBYY FineReader Engine のエクスポート メソッドは、認識されたテキストが認識処理の結果であり、ユーザーは認識エラーを修正しただけで、それ以外の変更は加えていないことを前提としています。Text グループのオブジェクトには、相互に依存するプロパティが多数あり、そのうちの 1 つを変更すると、他のプロパティも変更しなければならないことがよくあります。そのため、認識されたテキストの属性を変更すると、エクスポート結果が予測できないものになる場合があります。

プレーンテキスト

ドキュメントまたはページの認識されたテキスト全体には、PlainText object で表される特別な「プレーンテキスト」形式でもアクセスできます。ここで得られるのは、認識されたテキストの文字、それぞれの認識信頼度、および元画像に対する相対位置に関する情報のみです。ただし、大きなドキュメント内のすべての文字についてこれらの属性を参照する必要がある場合には便利です。Windows 版の FRE では、GetCharacterData メソッドを使用します。これにより、すべての文字のデータを一度に取得し、アプリケーション側で反復処理できます。すべてのテキストブロックを順に処理するよりも大幅に時間を節約でき、特にアプリケーションが DCOM 経由で動作している場合に効果的です。

関連項目

Layout とブロックの操作 言語の操作 投票アルゴリズムの利用