> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Text の操作

> ABBYY FineReader Engine で認識されたテキストを操作します。Unicode のプレーンテキスト、特殊文字（改行、段落区切り、ソフトハイフン、オブジェクト置換文字）、およびページレイアウトを介したテキスト属性について説明します。

ABBYY FineReader Engine が扱うテキストはプレーンテキストです。つまり、フレームや表などは含まれません。すべての文字は Unicode です。プレーンテキストには、次の特殊文字が含まれる場合があります。

* 0x2028 — 改行記号
* 0x2029 — 段落区切り記号
* 0xFFFC — オブジェクト置換文字 (テキスト内に埋め込まれた画像を示します)
* 0x0009 — タブ
* 0x005E — サーカムフレックスアクセント (^) 。ABBYY FineReader Engine では、認識できなかった文字の代用として使用されます
* 0x00AC — ソフトハイフン

テキストの属性や書式は、対応するオブジェクトとプロパティを通じて利用できます。文書内で認識されたテキストには、そのページのレイアウト ([IFRPage::Layout](/ja/fine-reader/engine/api-reference/document-related-objects/frpage#layout) プロパティ) を介してアクセスできます。

<div id="recognized-text-in-the-layout">
  ## レイアウト内の認識されたテキスト
</div>

認識後にテキストを含むのは、テキスト、テーブル、バーコードの各ブロックだけです。その他のブロックにはテキストはありません。[Text](/ja/fine-reader/engine/api-reference/text-related-objects/text) オブジェクトでは、テキストブロックおよびテーブルブロックの認識されたテキストにアクセスできます。一方、[BarcodeText](/ja/fine-reader/engine/api-reference/text-related-objects/barcodetext) オブジェクトでは、バーコードブロックのテキストにアクセスできます。

ブロックの認識されたテキストにアクセスするには、次の手順を実行します。

* テキストブロックの場合

[ITextBlock::Text](/ja/fine-reader/engine/api-reference/layout-related-objects/textblock#text) プロパティを使用します。

* テーブルブロックの場合
  1. [ITableBlock::Cells](/ja/fine-reader/engine/api-reference/layout-related-objects/tableblock) プロパティを使用して、テーブルセルのコレクションを取得します。
  2. 必要なセルを選択します。[TableCells](/ja/fine-reader/engine/api-reference/layout-related-objects/tablecells) オブジェクトのメソッドを使用します。
  3. セルのブロック オブジェクト ([ITableCell::Block](/ja/fine-reader/engine/api-reference/layout-related-objects/tablecell) プロパティ) を取得します。
  4. そのブロックのタイプが [BT\_Text](/ja/fine-reader/engine/api-reference/enumerations/blocktypeenum) であること ([IBlock::Type](/ja/fine-reader/engine/api-reference/layout-related-objects/block#type) プロパティ) を確認し、[IBlock::GetAsTextBlock](/ja/fine-reader/engine/api-reference/layout-related-objects/block/getastextblock-method) メソッドを使用して [TextBlock](/ja/fine-reader/engine/api-reference/layout-related-objects/textblock) オブジェクトを取得します。
  5. [ITextBlock::Text](/ja/fine-reader/engine/api-reference/layout-related-objects/textblock#text) プロパティを使用します。
* バーコードブロックの場合

[IBarcodeBlock::BarcodeText](/ja/fine-reader/engine/api-reference/layout-related-objects/barcodeblock#barcodetext) または [IBarcodeBlock::Text](/ja/fine-reader/engine/api-reference/layout-related-objects/barcodeblock#text) プロパティを使用して、バーコードのテキストを取得します。前者は、認識されたバーコードの文字 ([BarcodeSymbol](/ja/fine-reader/engine/api-reference/text-related-objects/barcodesymbol) オブジェクト) のコレクションである [BarcodeText](/ja/fine-reader/engine/api-reference/text-related-objects/barcodetext) オブジェクトを返します。後者は、バーコードのテキストを単一の string として返します。

<div id="text-and-paragraphs">
  ## Text と段落
</div>

[Text](/ja/fine-reader/engine/api-reference/text-related-objects/text) オブジェクトには、段落のコレクションが含まれています。このコレクションは [Paragraphs](/ja/fine-reader/engine/api-reference/text-related-objects/paragraphs) オブジェクトで、Text オブジェクトの Paragraphs プロパティからアクセスできます。Paragraphs オブジェクトは、[Paragraph](/ja/fine-reader/engine/api-reference/text-related-objects/paragraph) オブジェクトのコレクションです。認識されたテキストには、[IParagraph::Text](/ja/fine-reader/engine/api-reference/text-related-objects/paragraph#text) プロパティからアクセスできます。このプロパティ内のテキストは Unicode `string` です。

また、段落全体に固有の属性 (配置やインデントに関する情報など) を含む [ParagraphParams](/ja/fine-reader/engine/api-reference/text-related-objects/paragraphparams) オブジェクトもあります。このオブジェクトには、[IParagraph::ExtendedParams](/ja/fine-reader/engine/api-reference/text-related-objects/paragraph#extendedparams) プロパティからアクセスできます。

[IParagraph::Lines](/ja/fine-reader/engine/api-reference/text-related-objects/paragraph#lines) プロパティを使用すると、[ParagraphLines](/ja/fine-reader/engine/api-reference/text-related-objects/paragraphlines) オブジェクトで表される段落行のコレクションにアクセスできます。さらに、このオブジェクトは [ParagraphLine](/ja/fine-reader/engine/api-reference/text-related-objects/paragraphline) オブジェクトのコレクションでもあります。後者には、単一の段落行の幾何学的位置に関する情報が含まれており、テキストの行分割を表します。

[IParagraph::Words](/ja/fine-reader/engine/api-reference/text-related-objects/paragraph#words) プロパティを使用すると、[Words](/ja/fine-reader/engine/api-reference/text-related-objects/words) オブジェクトで表される段落内の単語のコレクションにアクセスできます。このオブジェクトは [Word](/ja/fine-reader/engine/api-reference/text-related-objects/word) オブジェクトのコレクションです。Word オブジェクトを使用すると、段落内の単一の単語にアクセスできます。

<div id="character-attributes">
  ## 文字属性
</div>

テキスト内の各文字には、それぞれ固有のパラメーターがあります。これらには [CharParams](/ja/fine-reader/engine/api-reference/text-related-objects/charparams) オブジェクトを介してアクセスできます。CharParams オブジェクトには、文字の幾何学的パラメーター、フォント、言語など、多数の文字属性が含まれます。また、CharParams オブジェクトには、文字自体が SelectedCharacterRecognitionVariant プロパティに格納されています。文書内のすべての文字に関する情報を取得する推奨方法については、以下の [プレーンテキスト](/ja/fine-reader/engine/guided-tour/advanced-techniques/working-with-text#plaintext) も参照してください。

テキスト内での文字の位置は、その文字が属する段落のインデックスと、その段落内での文字自身のインデックスによって定義されます。テキスト内には、いわゆる「特別な位置」もあります。これは、段落のインデックスが段落の総数に等しく、文字のインデックスが 0 である位置です。つまり、テキスト末尾の挿入位置を表します。[Text](/ja/fine-reader/engine/api-reference/text-related-objects/text) オブジェクトの一部のメソッドは、この特別な位置に対して操作を実行します。たとえば、そこに別のテキストフラグメントや画像を挿入できます。

CharParams オブジェクトの SelectedCharacterRecognitionVariant プロパティを使用すると、単一の文字に固有の拡張属性セットにアクセスできます。これらの属性は [CharacterRecognitionVariant](/ja/fine-reader/engine/api-reference/text-related-objects/characterrecognitionvariant) オブジェクトで表されます。これらの属性は認識時に設定され、その文字に固有の内部的な認識情報を提供します。特に、このオブジェクトでは、文字認識の確実性や、その文字がセリフ体フォントである確率などについて、より正確な情報を取得できます。

<div id="text-editing">
  ## Text の編集
</div>

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

<div id="plain-text">
  ## プレーンテキスト
</div>

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

<div id="see-also">
  ## 関連項目
</div>

[Layout とブロックの操作](/ja/fine-reader/engine/guided-tour/advanced-techniques/working-with-layout-and-blocks)

[言語の操作](/ja/fine-reader/engine/guided-tour/advanced-techniques/working-with-languages)

[投票アルゴリズムの利用](/ja/fine-reader/engine/guided-tour/advanced-techniques/using-voting-api)
