> ## 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.

# コレクションの操作

> ABBYY FineReader Engine の 3 種類のコレクション（一時コレクション、子オブジェクトのコレクション、子オブジェクトの読み取り専用コレクション）と、それぞれの使用方法。

<Note>
  C# のサンプルと情報は、Windows 版 FRE にのみ適用されます。
</Note>

ABBYY FineReader Engine には、主に 3 種類のコレクションがあります。

* 一時コレクション (既存のオブジェクトへの参照のコレクション)
* 子オブジェクトのコレクション
* 子オブジェクトの読み取り専用コレクション

このページでは、次の内容を確認できます。

* 各種類のコレクションの操作方法

* 利用可能なすべてのコレクションの一覧を確認する方法

* Windows 版 FRE の .NET でコレクションを操作する方法

<div id="temporary-collections">
  ## 一時コレクション
</div>

この型のコレクションは、既存のオブジェクトへの参照をまとめたコレクションです。これらは一時的なコレクションで、通常は各種パラメーターのセットを必要とするメソッドに渡すために使用されます。このコレクションを作成し、要素を追加し (要素は既存のオブジェクトへの参照として追加されます) 、必要なメソッドに渡した後でコレクション自体は破棄しますが、追加されたオブジェクトはそのまま残ります。このようなコレクションの名前には `Collection` という接尾辞が付きます (例: `StringsCollection`、`IntsCollection`) 。

この型のコレクションを扱うには:

1. [Engine](/ja/fine-reader/engine/api-reference/engine-object-iengine-interface) オブジェクトの対応する作成メソッドを使用してコレクションを作成します。たとえば、`IntsCollection` オブジェクトの場合は [CreateIntsCollection](/ja/fine-reader/engine/api-reference/engine-object-iengine-interface/creation-methods/createlessobjectgreater-methods) メソッドを使用します。これらのコレクションは、一部のメソッドの戻り値となることもあります。
2. [Add](/ja/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/add-method) メソッドを使用して、既存のオブジェクトをコレクションに追加します。コレクションは、読み取り専用の `Count` プロパティ、読み書き可能な [Element](/ja/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/element-property) プロパティ、および [Item](/ja/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/item-method) メソッドを使って反復処理できます。1 つ目はコレクションに実際に含まれている要素数を取得し、2 つ目と 3 つ目は指定したインデックスの要素にアクセスするためのものです。`Element` プロパティを使用すると、C# では `[]` 演算子を使ってコレクションの要素にアクセスできます。
3. 必要に応じて、コレクションの他のメソッド [InsertAt](/ja/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/insertat-method)、[DeleteAt](/ja/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/deleteat-method)、[DeleteAll](/ja/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/deleteall-method) を使用してコレクションを変更します。
4. そのコレクションを、パラメーターとして必要とするメソッドに渡します。

C# で `IntsCollection` オブジェクトを使用する例:

<Accordion title="C# コード">
  ```csharp theme={null}
   
  for( int i = 0; i < Document.Pages.Count; i++ )
  {
   if( Document.Pages[i].PageStructureOutOfDate )
   {
    pageIndices.Add( i );
   }
  }
  // 作成したページ インデックスのコレクションを処理メソッドに渡す
  if( pageIndices.Count > 0 || Document.DocumentStructureOutOfDate )
  {
   Document.SynthesizePages( pageIndices, null );
  }
  ```
</Accordion>

<div id="collections-of-child-objects">
  ## 子オブジェクトのコレクション
</div>

別の型として、ある親オブジェクトに属する子オブジェクトのコレクションを表すものがあります。これらのコレクションは、親オブジェクトが存在する間だけ存在します。このようなコレクションを通じて、親オブジェクトの子オブジェクトを追加または削除できます。コレクションに要素を追加すると、新しいオブジェクトが内部で作成され、その後コレクションに追加されます。このようなコレクションの例としては、DictionaryDescriptions (dictionary description オブジェクトのコレクション) や BaseLanguages (基本言語のコレクション) があります。

このようなコレクションを使用するには:

1. 親オブジェクトのプロパティを介してコレクションを取得します。たとえば、認識言語の基本言語のコレクションにアクセスするには、BaseLanguage オブジェクトの [DictionaryDescriptions](/ja/fine-reader/engine/api-reference/language-related-objects/baselanguage#dictionarydescriptions) プロパティを使用します。
2. 読み取り専用の Count および [Element](/ja/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/element-property) プロパティと、[Item](/ja/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/item-method) メソッドを使用してコレクションを反復処理します。1つ目はコレクションに実際に含まれている要素数を取得し、2つ目と3つ目は指定した インデックス の要素を取得します。Element プロパティを使用すると、C# で `\[\]` 演算子を使ってコレクションの要素にアクセスできます。
3. 必要に応じて、AddNew メソッドを使用して新しい要素をコレクションに追加します。コレクションごとに AddNew メソッドの構文は多少異なる場合がありますが、これらのメソッドはすべて同じ処理を行います。つまり、新しいコレクション要素を作成してコレクションに追加します。要素は [DeleteAt](/ja/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/deleteat-method)、[DeleteAll](/ja/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/deleteall-method) メソッドを使用して削除できます。

C# で DictionaryDescriptions オブジェクトを操作する例:

<Accordion title="C# コード">
  ```csharp theme={null}
  FREngine.IEngine Engine = null;
  FREngine.IBaseLanguage baseLanguage = null;
  // Engineを初期化し、テキスト言語の基本言語を取得する
  ...
  // 基本言語のdictionary descriptionのコレクションを取得し、すべての項目を削除する
  IDictionaryDescriptions dictionaryDescriptions = baseLanguage.DictionaryDescriptions;
  dictionaryDescriptions.DeleteAll();
  // ユーザーdictionary descriptionを作成し、コレクションに追加する
  IDictionaryDescription dictionaryDescription = dictionaryDescriptions.AddNew( DictionaryTypeEnum.DT_UserDictionary );
  ```
</Accordion>

<div id="read-only-collections">
  ## 読み取り専用のコレクション
</div>

子オブジェクトのコレクションの中には、読み取り専用のものがあります。つまり、これらには編集用のメソッドがなく、要素を反復処理して参照することしかできません。このようなコレクションの例としては、PredefinedLanguages (定義済み言語のコレクション) や Paragraphs (テキストの段落のコレクション) があります。

このようなコレクションの要素を参照するには:

1. 親オブジェクトのプロパティからコレクションを取得します。たとえば、テキストの段落のコレクションにアクセスするには、Text オブジェクトの [Paragraphs](/ja/fine-reader/engine/api-reference/text-related-objects/text#paragraphs) プロパティを使用します。
2. 読み取り専用の Count プロパティと [Element](/ja/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/element-property) プロパティ、および [Item](/ja/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/item-method) メソッドを使用してコレクションを反復処理します。1 つ目はコレクションに実際に含まれている要素数を取得し、2 つ目と 3 つ目は指定した インデックス の要素を取得します。Element プロパティを使用すると、C# では \[] 演算子を使ってコレクションの要素にアクセスできます。

C# で Paragraphs オブジェクトを扱う例:

<Accordion title="C# コード">
  ```csharp theme={null}
  FREngine.IEngine Engine = null;
  FREngine.IBlock block = null;
  // Engine を初期化し、ドキュメントを認識して、レイアウトのテキストブロックを取得する
  ...
  FREngine.ITextBlock textBlock = block.GetAsTextBlock();
  // ブロックのテキスト内の段落を反復処理する
  int paragraphsCount = textBlock.Text.Paragraphs.Count;
  for (int iPar = 0; iPar < paragraphsCount; iPar++)
  {
   FREngine.IParagraph par = textBlock.Text.Paragraphs[iPar];
   string text = par.Text;
  }
  ```
</Accordion>

<div id="all-available-collections">
  ## 利用可能なコレクションの一覧
</div>

以下は、FineReader Engine で利用可能なコレクションの一覧です。一部のコレクションでは、要素を操作するための追加のメソッドが用意されています。詳しくは、以下の表を参照してください。

<table>
  <thead>
    <tr>
      <th>
        <p>
          <strong>子オブジェクトのコレクション</strong>
        </p>
      </th>

      <th>
        <p>
          <strong>読み取り専用コレクション</strong>
        </p>
      </th>

      <th>
        <p>
          <strong>一時コレクション</strong>
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <ul>
          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/document-related-objects/authorslist">
                AuthorsList
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/language-related-objects/baselanguages">
                BaseLanguages
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/classification-related-objects/categories">
                Categories
              </a>
            </strong>

            {" "}

            – このコレクションには <strong>Find</strong> メソッドが追加されています。
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/layout-related-objects/checkmarkgroup">
                CheckmarkGroup
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/classification-related-objects/classificationobjects">
                ClassificationObjects
              </a>
            </strong>

            {" "}

            – このコレクションには <strong>Find</strong> メソッドが追加されており、
            <strong>AddNew</strong> メソッドは{" "}
            <strong>Add</strong> メソッドに置き換えられています。
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/language-related-objects/dictionarydescriptions">
                DictionaryDescriptions
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/document-related-objects/documentinformationdictionary">
                DocumentInformationDictionary
              </a>
            </strong>

            {" "}

            – このコレクションはディクショナリでもあるため、{" "}
            <strong>Element</strong> プロパティの代わりに{" "}
            <strong>Value</strong> プロパティが使用されます。
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/document-related-objects/frpages">
                FRPages
              </a>
            </strong>

            {" "}

            – この子オブジェクトのコレクションは同種の他のコレクションとは異なります。<strong>AddNew</strong> メソッドは存在せず、代わりに親オブジェクト{" "}
            <strong>FRDocument</strong> の <strong>AddPage</strong> メソッドを使用します。また、<strong>DeleteAll</strong> メソッドも存在せず、代わりに{" "}
            <strong>IndexOf</strong>、<strong>Remove</strong>、および{" "}
            <strong>Swap</strong> メソッドが追加されています。
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/layout-related-objects/layoutblocks">
                LayoutBlocks
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/text-related-objects/list">
                List
              </a>
            </strong>

            {" "}

            – このコレクションには <strong>DeleteAt </strong>メソッドがありません。
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/document-related-objects/pdfattachments">
                PDFAttachments
              </a>
            </strong>

            {" "}

            – このコレクションは <strong>AddNew</strong> メソッドの代わりに、<strong>AddFromFile </strong>メソッド
            <strong> </strong>および <strong>AddFromMemory</strong> (Windows)
            メソッドを持ちます。
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/parameter-objects/export-parameters/pdfpictures">
                PDFPictures
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/layout-related-objects/separatorgroup">
                SeparatorGroup
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/layout-related-objects/tableseparators">
                TableSeparators
              </a>
            </strong>

            {" "}

            – このコレクションには <strong>IndexOf</strong> メソッドが追加されています。
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/text-related-objects/tabpositions">
                TabPositions
              </a>
            </strong>
          </li>
        </ul>
      </td>

      <td>
        <ul>
          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/text-related-objects/barcodetext">
                BarcodeText
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/document-related-objects/businesscards">
                BusinessCards
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/document-comparison-objects/changes">
                Changes
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/text-related-objects/characterrecognitionvariants">
                CharacterRecognitionVariants
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/classification-related-objects/classificationresults">
                ClassificationResults
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/language-related-objects/detectedlanguages">
                DetectedLanguages
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/language-related-objects/fuzzystrings">
                FuzzyStrings
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/license-related-objects/licenses">
                Licenses
              </a>
            </strong>

            {" "}

            – このコレクションには <strong>Find</strong> メソッドが追加されています。
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/text-related-objects/paragraphlines">
                ParagraphLines
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/text-related-objects/paragraphs">
                Paragraphs
              </a>
            </strong>

            {" "}

            – このコレクションには <strong>IndexOf</strong> メソッドが追加されています。
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/language-related-objects/predefinedlanguages">
                PredefinedLanguages
              </a>
            </strong>

            {" "}

            – このコレクションには <strong>Find</strong> メソッドが追加されています。
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/mechanism-objects/scansources">
                ScanSources
              </a>

              {" "}

              (Windows)
            </strong>
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/supplementary-objects-and-methods/splitregions">
                SplitRegions
              </a>
            </strong>

            {" "}

            – このコレクションには{" "}
            <strong>GetSourcePageIndex</strong> メソッドが追加されています。
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/layout-related-objects/tablecells">
                TableCells
              </a>
            </strong>

            {" "}

            – このコレクションには <strong>IndexOf</strong>、{" "}
            <strong>Merge</strong>、<strong>Split</strong> メソッドが追加されています。
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/classification-related-objects/trainingresults">
                TrainingResults
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/text-related-objects/wordrecognitionvariants">
                WordRecognitionVariants
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/text-related-objects/words">
                Words
              </a>
            </strong>
          </li>
        </ul>
      </td>

      <td>
        <ul>
          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/supplementary-objects-and-methods/stringscollection">
                StringsCollection
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/supplementary-objects-and-methods/intscollection">
                IntsCollection
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/image-related-objects/officeconverters">
                OfficeConverters
              </a>
            </strong>

            {" "}

            (LinuxおよびWindowsのみ) – このコレクションは、オブジェクトではなく列挙定数を含む点で他のすべてのコレクションと異なります。また、追加の<strong>Find</strong>メソッドも備えています。
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/image-related-objects/trainingimagescollection">
                TrainingImagesCollection
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/ja/fine-reader/engine/api-reference/supplementary-objects-and-methods/regionscollection">
                RegionsCollection
              </a>
            </strong>
          </li>

          <li>
            <strong>ビジュアルコンポーネント：</strong>

            <ul>
              <li>
                <strong>
                  <a href="/ja/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection">
                    SpellWordCollection
                  </a>
                </strong>
              </li>

              <li>
                <strong>
                  <a href="/ja/fine-reader/engine/visual-components-reference/supplementary-objects/spellreplacementcollection">
                    SpellReplacementCollection
                  </a>
                </strong>
              </li>

              <li>
                <strong>
                  <a href="/ja/fine-reader/engine/visual-components-reference/supplementary-objects/toolbar">
                    Toolbar
                  </a>
                </strong>

                {" "}

                – このコレクションには、追加の<strong>Delete</strong>、{" "}
                <strong>Has</strong>メソッドがあります。
              </li>

              <li>
                <strong>
                  <a href="/ja/fine-reader/engine/visual-components-reference/supplementary-objects/popupmenu">
                    PopupMenu
                  </a>
                </strong>

                {" "}

                – このコレクションには、追加の<strong>Delete</strong>、{" "}
                <strong>Has</strong>メソッドと、<strong>CustomMenuEnabled</strong>
                、<strong>StandardMenuEnabled</strong>プロパティがあります。
              </li>
            </ul>
          </li>
        </ul>
      </td>
    </tr>
  </tbody>
</table>

<div id="working-with-collections-in-net">
  ## .NET でコレクションを扱う
</div>

すべてのコレクション インターフェイスは、IEnumerable インターフェイスから派生しています。つまり、C# では foreach ステートメント (Visual Basic では for each) を使用してコレクションを操作できます。ただし、foreach を使ってコレクションを扱う場合には、いくつか注意すべき点があります。たとえば、列挙子はコレクションを変更するためには使用できず、含まれているデータを読み取るためにのみ使用できます。詳細については、[msdn.microsoft.com](http://msdn.microsoft.com/en-us/library/system.collections.ienumerator.aspx) の注記を参照してください。

以下は、C# で FRPages コレクションに対して foreach を使用する例です。

<Accordion title="C# コード">
  ```csharp theme={null}
  FREngine.IFRDocument document;
  // この document にはいくつかのページが含まれているものとします
  ...
  foreach( FREngine.IFRPage page in document.Pages ) {
   // page に対して何らかの処理を行います
  }
  ```
</Accordion>
