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

# サンプル 2. Step 11: RecipeNumber 要素の作成

> RecipeNumber Character String 要素を記述します。アルファベット、文字数範囲、およびそれを Recipe field 名に関連付ける Relations を定義します。

Recipe # field には常に 1 行しかないものとします。field 名とは異なり、この field のデータは fixed ではないため、型 [Character String](/ja/flexi-capture/fls/template/character-chain) の要素として記述する必要があります。

RecipeNumber 要素を作成するには、次の手順に従います。

1. 型 Character String の要素を作成し、名前を **RecipeNumber** にします。

   <Frame>
     <img src="https://mintcdn.com/abbyy/r-nfa7jujx5b9gKX/images/flexi-capture/fls/tutorial2_10.png?fit=max&auto=format&n=r-nfa7jujx5b9gKX&q=85&s=f0925f2bec8922c606fdbbec5ac37383" alt="ABBYY FlexiLayout Studio の SearchElements.RecipeNumber ダイアログの Properties にある General tab のスクリーンショット。RecipeNumber という名前の要素が表示され、オプション要素としてマークされています。" width="431" height="455" data-path="images/flexi-capture/fls/tutorial2_10.png" />
   </Frame>

2. Character String タブをクリックします。

   <Frame>
     <img src="https://mintcdn.com/abbyy/r-nfa7jujx5b9gKX/images/flexi-capture/fls/tutorial2_11.png?fit=max&auto=format&n=r-nfa7jujx5b9gKX&q=85&s=755a4e0cf034e59903c49a7b41943456" alt="ABBYY FlexiLayout Studio の SearchElements.RecipeNumber ダイアログの Properties にある Character String タブのスクリーンショット。Alphabets リストに数字と英大文字のアルファベットが表示されています。" width="431" height="455" data-path="images/flexi-capture/fls/tutorial2_11.png" />
   </Frame>

3. アルファベット、つまりレシピ番号に含まれる可能性のあるすべての文字を設定します。テスト画像から判断すると、アルファベットには数字と英語アルファベットの大文字が含まれます。文字と数字の順序は事前にはわかりません。アルファベットを設定するには、Add... ボタンをクリックし、**Add New Alphabet** ダイアログで必要な文字を選択します。

   <Note>
     選択した文字は、Character Set 列 (Character String タブ、Alphabets field) に表示されます。
   </Note>

4. Percentage of alphabet characters を 1 に設定します。これは、プログラムが **RecipeNumber** 要素を探す際に、このアルファベットの文字だけを考慮することを意味します。

   <Frame>
     <img src="https://mintcdn.com/abbyy/r-nfa7jujx5b9gKX/images/flexi-capture/fls/tutorial2_12.png?fit=max&auto=format&n=r-nfa7jujx5b9gKX&q=85&s=b917e8bd5a4f676339bf4f0c673ed1c2" alt="ABBYY FlexiLayout Studio の Add New Alphabet ダイアログのスクリーンショット。数字と英大文字が選択され、文字プレビュー field に表示されています。" width="536" height="350" data-path="images/flexi-capture/fls/tutorial2_12.png" />
   </Frame>

   <Note>
     1 つの要素に複数のアルファベットを指定できます。この場合、その要素で使用する各アルファベットについて Percentage of alphabet characters を設定します。
   </Note>

5. Allow embedded hypotheses ボックスをオフにします。これにより、プログラムは最大長で、かつすべての検索条件を満たす仮説だけを作成するようになります。そうしないと、プログラムは複数の埋め込み仮説を作成する可能性があり、それぞれが選択したアルファベットのいずれかの一部で構成されます (アルファベット以外の文字として許可される割合を考慮) 。

6. Percentage of non-alphabet characters を 20% に設定します。

   <Note>
     この値は試行錯誤によってのみ決めることができ、FlexiLayout の調整時に変更できます。
   </Note>

7. Character count field に、次のあいまいな範囲を指定します: `{ 0, 8, 10, 16 }`。これは文字列の長さのおおよその見積もりです。番号は常に 8 桁であると仮定します。余裕を持たせるため、その番号は 8 桁から 10 桁の可能性があることをプログラムに指定します。この範囲外の仮説にはペナルティが課されます。

   <Note>
     この値は試行錯誤によってのみ決めることができ、FlexiLayout の調整時に変更できます。
   </Note>

8. リレーション タブをクリックします。

   <Frame>
     <img src="https://mintcdn.com/abbyy/r-nfa7jujx5b9gKX/images/flexi-capture/fls/tutorial2_13_1.png?fit=max&auto=format&n=r-nfa7jujx5b9gKX&q=85&s=afb49883f7af2bfa79db8a6bdee3bb9f" alt="ABBYY FlexiLayout Studio の SearchElements.RecipeNumber ダイアログの Properties にある Relations タブのスクリーンショット。要素を Recipe 要素にアンカーする Above、Below、RightOf のリレーションが表示されています。" width="431" height="455" data-path="images/flexi-capture/fls/tutorial2_13_1.png" />
   </Frame>

9. RecipeNumber 要素の参照要素として Recipe 要素を使用します。レシピ番号は常に field 名の右側にあり、名前と同じ高さに配置されます。したがって、要素の位置を名前に対して、また名前の上境界と下境界に対して指定する必要があります。

   そうしないと、プログラムは、設定したアルファベットの文字で構成される任意のテキスト フラグメントに対して有効な仮説を作成してしまいます。たとえそれが field 名より上または下にあっても同様です。

   要するに、プログラムは、**Recipe** 要素で記述された field 名の右側にあり、かつ Recipe 見出しと同じ高さにある **RecipeNumber** 要素で記述されたレシピ番号を探す必要があります。

10. RecipeNumber 要素が Recipe 要素の右境界の右側にあることを指定します。
    これを行うには、Add ボタンをクリックし、開いたダイアログで 参照要素 field の **Recipe** を選択します。Type ドロップダウンリストから Right of を選択します。Reference boundary ドロップダウンリストで **Right** を選択し、Offset field の値は変更せずそのままにします (デフォルト値は 0 です) 。Add Relation ボタン をクリックします。

<Frame>
  <img src="https://mintcdn.com/abbyy/r-nfa7jujx5b9gKX/images/flexi-capture/fls/tutorial2_13.png?fit=max&auto=format&n=r-nfa7jujx5b9gKX&q=85&s=4c8adc7a633b28cb622480cbc91658cd" alt="ABBYY FlexiLayout Studio の RecipeNumber に対する Add New Relation ダイアログのスクリーンショット。参照要素として Recipe が設定され、リレーションの型として Right of が選択され、参照境界として Right が指定されています。" width="416" height="282" data-path="images/flexi-capture/fls/tutorial2_13.png" />
</Frame>

11. **RecipeNumber** 要素が **Recipe** 要素より下に来ないよう指定します。
    そのためには、Add ボタンをクリックし、表示されたダイアログの 参照要素 field で **Recipe** を選択します。Type ドロップダウンリストで Above を選択し、Offset を -50 に設定します (この値は試行錯誤でしか決められません) 。

    これにより、field 名の上境界を基準に要素の位置を検出する際、プログラムにある程度の許容範囲を持たせることができます。Offset に負の値を指定すると、要素の下境界が名前の下境界より下にあることを指定できます。Add Relation ボタンをクリックします。
12. **RecipeNumber** 要素が **Recipe** 要素より上に来ないよう指定します。
    そのためには、Add ボタンをクリックし、表示されたダイアログの 参照要素 field で **Recipe** を選択します。Type ドロップダウンリストで Below を選択し、Offset を -50 に設定します (この値は試行錯誤でしか決められません) 。

    これにより、field 名の上境界を基準に要素の位置を検出する際、プログラムにある程度の許容範囲を持たせることができます。Offset に負の値を指定すると、要素の上境界が名前の上境界より上にあることを指定できます。Add Relation ボタンをクリックします。

    <Note>
      Reference boundary field で **\<whole>** を選択すると、正の Offset 値で指定できる位置は、要素の右境界より右、要素の左境界より左、要素の上境界より上、または要素の下境界より下だけです。

      Reference boundary field で Top と Bottom を選択すると、正の Offset 値によって検索範囲は要素の上境界と下境界で制限され、field 名の左境界および右境界を超える仮説は除外されます。
    </Note>

テスト画像で FlexiLayout のマッチングを試し、すべての画像でレシピ番号を含む field をプログラムが正しく見つけられることを確認します。
