> ## 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 FlexiCapture でルールを使用して抽出されたデータを検証します。ルールの作成とフィルタリング、重大度と条件の設定、ルールチェーンの構築、エラーのローカライズを行います。

**ルール**は、抽出されたデータを確認するための追加の方法です。ルールを使用すると、特定の field のデータに適用する制限 (言い換えると、特定の field から抽出された値が満たす必要のある条件) を指定できます。

また、ルールを使用して抽出された値を処理することもできます。たとえば、複数の field の値を結合したり、抽出された値をデータベースから取得した値に置き換えたりできます。

ルールの適用の厳しさ、つまり違反した場合に警告を出すかエラーを出すかを指定できます。ルール警告がある field には黄色のフラグが付き、ルールエラーがある field には赤いフラグが付きます。詳しくは、[ルールのバリデーション](/ja/flexi-capture/brief/brief-verification#rule-verification)を参照してください。

ルールは、field、セクション、Document Definition、またはルールを指定できるその他のアイテムのプロパティダイアログの Rules タブで設定します。

<div id="viewing-rules">
  ## ルールの表示
</div>

表示するルールの種類を選択するには、Show rulesドロップダウンリストを使用します。

* %0 を参照 現在のオブジェクトを参照しているルールのみを表示します。
* %0 が所有 現在のオブジェクトに保存されているルールのみを表示します。
* %0 とその子オブジェクトが所有 現在のオブジェクトおよびその子オブジェクトに保存されているルールのみを表示します (例: オブジェクトがグループの場合、グループに保存されているルールが、そのグループに含まれる field に保存されているルールと一緒に表示されます) 。

<Note>
  上記のルール表示オプションでは、「%0」は現在のオブジェクト名に置き換えられます。
</Note>

<Note>
  新しいルールは、%0 が所有 または %0 とその子オブジェクトが所有 を表示するよう選択した場合に作成できます。%0 を参照 を選択した場合は、新しいルールを作成できません。
</Note>

<Accordion title="ルールのフィルタリング">
  管理しやすくするために、ルールの一覧をフィルタリングできます。たとえば、特定の field に関係するルールのみ、または特定の condition によってトリガーされるルールのみを表示できます。

  Filterダイアログを開くには、Rulesタブの **Filter** ボタンをクリックします。

  使用できるフィルタリング条件は次のとおりです。

  * ルール名に次を含む ルール名でフィルタリングします (ドロップダウンリストから名前を選択します) 。
  * Field field でルールをフィルタリングします (field を選択すると、その field を使用するルールのみが表示されます) 。
  * **ルールの適用** このオプション群では、ルールの実行前に満たす必要がある condition の有無と、その condition の内容に基づいてルールをフィルタリングします。常に実行されるルール、つまりトリガーとなる condition を持たないルールだけを表示するには、Always オプションを選択します。次のいずれかの condition によってトリガーされるルールを表示するには、If this condition is true を選択します。
    * **セットに含まれる (完全一致) ** 許可された field 値 (つまり、ルールをトリガーする値) が、フィルタで指定した値と完全に一致するルールのみを表示します。
    * **セットに含まれない (完全一致) ** 禁止された field 値 (つまり、ルールをトリガーしない値) が、フィルタで指定した値と完全に一致するルールのみを表示します。
    * **空である** - field 値が空の場合に適用されるルールのみを表示します。
    * **空ではない** field 値が空でない場合に適用されるルールのみを表示します。
    * **セットと重複する** - 許可された field 値 (つまり、ルールをトリガーする値) に、フィルタで指定した値の少なくとも 1 つが含まれているルールのみを表示します。

  複数のフィルタリング条件を指定すると、それらすべてを満たすルールのみが表示されます。

  フィルタリング条件を指定すると、その内容は Filter ボタンの横にテキスト文字列として表示されます。フィルタをクリアするには、<img src="https://mintcdn.com/abbyy/IFr-A2MDVJd80FDs/images/flexi-capture/Clear_Filter.png?fit=max&auto=format&n=IFr-A2MDVJd80FDs&q=85&s=a318da2d1a47e22ec2b5078fe33aabe5" alt="" style={{display:"inline-block",verticalAlign:"middle",margin:0}} width="23" height="22" data-path="images/flexi-capture/Clear_Filter.png" /> をクリックします。フィルタをクリアすると、すべてのルールが表示されます。Rulesダイアログを閉じると、フィルタは自動的にクリアされます。

  ### フィルタの使用例

  次の 2 つのルールを設定したとします。

  * FirstRule は 通貨 = EUR, USD の場合に適用されます
  * SecondRule は 通貨 = EUR, RUR の場合に適用されます。

  以下のテーブルは、フィルタリング条件ごとに表示されるルールを示しています。

  | **ルール condition** | **値のセット** | **表示されるルール**          |
  | ----------------- | --------- | --------------------- |
  | セットに含まれる (完全一致)   | EUR, USD  | FirstRule             |
  | セットに含まれない (完全一致)  | EUR       | ...                   |
  | セットと重複する          | EUR       | FirstRule, SecondRule |
  | セットと重複する          | EUR, XXX  | FirstRule, SecondRule |
</Accordion>

<div id="setting-up-rules">
  ## ルールの設定
</div>

ルールの一覧には、設定されているすべてのルールと、各ルールの追加条件が表示されます。

新しいルールを作成するには、Rules タブで **New Rule...** ボタンをクリックします。開いたダイアログで作成するルールの種類を選択し、**OK** をクリックします。すると、次のオプションを含む **New Rule** ダイアログが開きます。

* Name - ルールの名前です。

* Show rule name in message to verifier - エラー通知に、エラーを発生させたルールの名前を含める場合は、このオプションを有効にします。既定では、rule error に関する通知は「ルール名: エラーメッセージ」の形式で表示されます。このオプションを無効にすると、通知にはエラーメッセージのみが表示されます。

* <a id="severity" />Severity - ルールの重大度です。ルールでエラーが発生すると、エラーメッセージとフラグが生成されます。フラグには、Error と Warning の 2 種類があります。
  rule error があるドキュメントをエクスポートしようとすると、その旨の通知が表示されます。rule error があるドキュメントでもエクスポートは可能です。
  **Note:**  このオプションは、[Calculate Sum](/ja/flexi-capture/templates/rule-calc-sum) および [Merge Fields](/ja/flexi-capture/templates/rule-merge) のルールでは使用できません。

* **Apply rule** - このグループのオプションでは、ルールをいつ適用するかを指定できます。
  * Always ルールは常に適用されます。つまり、ルールが監視している field に変更が加えられるたびに適用されます。このオプションは既定で有効です。
  * If this condition is true このオプションを有効にすると、特定の条件が満たされた場合にのみルールが適用されます。詳しくは、この記事の [ルールの適用条件](/ja/flexi-capture/templates/rules#launchconditions) セクションを参照してください。

* **Tags** はルールの絞り込みに使用されます。
  **Note:** 値の区切りには、スペースを入れずにカンマを使用してください。タグの値では大文字と小文字が区別されます。

* Enabled rule - ルールを有効または無効にします。

以下のオプションは、ルールの種類によって異なります。

* [Calculate Sum](/ja/flexi-capture/templates/rule-calc-sum) 複数の field の値を合計し、その結果を別の field に書き込みます。
* [Check Sum](/ja/flexi-capture/templates/rule-check-sum) 複数の field の値を合計し、事前定義された数値または別の field の値と照合します。
* [Compare Fields](/ja/flexi-capture/templates/rule-compare-fields) 複数の field の値を比較します。
* [Database Check](/ja/flexi-capture/templates/rule-bd) 抽出された値を、データベースから取得した対応する値と照合します。
* [Merge Fields](/ja/flexi-capture/templates/rule-merge) 複数の field の値を結合します。複数の field values を 1 つに結合する際には、任意の種類の区切り文字を追加できます。
* [Script](/ja/flexi-capture/templates/rule-script) 特定のデータに適用される制約を記述する user-defined script です。
* [Sum in Figures - Sum in Words (Russian)](/ja/flexi-capture/templates/rule-sum-in-words) 数字で書かれた合計値と、同じ合計値を単語で書いたものを比較します (ロシア語のテキストでのみ機能します) 。

<Note>
  ルールが[repeating field グループ](/ja/flexi-capture/templates/create-group-field)に設定されている場合、そのルールは各グループインスタンスに対して、各 field ごとに個別に適用されます。ルールがグループ内に設定されている場合、そのルールはその特定のグループインスタンスにのみ適用されます。
</Note>

## <a id="launchconditions" />ルールの適用条件

現在の FC のバージョンでは、特定の field が特定の値を持つ場合にルールをトリガーできます。ルールを作成または編集するときは、Always または If this condition is true オプションを選択して、ルールをいつ適用するかを指定できます。ルールをトリガーする条件を指定するには、If this condition is true オプションを選択し、その右側にある Edit ボタンをクリックして Condition for Applying Rule ダイアログを開きます。このダイアログでは、次の操作を行います。

* field を選択します。

* ルールをトリガーするために満たす必要がある条件を選択します。
  * **Belongs to set** 指定した許可値のいずれかに field の値が一致する場合、ルールが適用されます。
  * **Does not belong to set** 指定した禁止値のいずれかに field の値が一致する場合、ルールは適用されません。
  * **Is empty** - field の値が空の場合、ルールが適用されます。
  * **Is not empty** - field の値が空でない場合、ルールが適用されます。

* field の取り得る値の範囲 (許容値) を指定することもできます。

* 取り得る値のセットに値を追加するには、値を入力して **Add** をクリックします。セットから値を削除するには、その値を選択して **Delete** をクリックします。取り得る値のセットには空の値を追加することもできます。空の値を追加するには、何も入力せずに **Add** をクリックします。空の値は、取り得る値のセット内で空欄として表示されます。値は 1 回しか追加できません。

ルールの適用条件に含められるのは、テキストの field (継続する Region を持つ field を含む) 、バーコード、およびテーブル列のみです。ルールの適用条件には、チェックマーク、チェックマークグループ、複数の Instances を持つ field、画像、またはテーブルセルを含めることはできません。

<Warning>
  field のプロパティで Show on verification オプションが有効になっていない場合、この field に関連するエラーは Verification 中に表示されません。これは、この field を含むドキュメントに削除できないエラーフラグが付くことを意味します。
</Warning>

<div id="rule-chains">
  ## ルールチェーン
</div>

ルールチェーンは、適用順序が決まっているルールのグループです。これにより、同じ field に対して複数のルールを設定できます。

ルールチェーンを作成するには、次の操作を行います。

1. Rules タブで Chains ボタンをクリックします。
2. 表示されたダイアログで、New Chain... ボタンをクリックします。
3. ルールチェーンの名前とコメント (任意) を入力します。
4. **OK** をクリックします。

新しいルールチェーンが Chains ダイアログのリストに表示されます。次に、ルールチェーンにルールを追加します。追加するには、次の操作を行います。

1. Add Rule... ボタンをクリックします。
2. ルールを選択します。
3. **Move Up** ボタンと **Move Down** ボタンを使用して、ルールが適用される順序を並べ替えます。

<Warning>
  各ルールを含められるチェーンは 1 つだけです。
</Warning>

<Note>
  編集可能な field (プロパティで 読み取り専用 オプションが無効になっている field) をルールに追加しようとしたとき、そのルールが、同じくその field を編集可能な別のルールチェーンですでに使用されている場合は、そのルールをそのルールチェーンに統合するかどうかの確認を求められます。これに同意し、field を追加したルールが別のチェーンに属している場合は、2 つのルールチェーンが 1 つに統合されます。
</Note>

<Accordion title="ルールの保存場所">
  ルールは、作成されたアイテムのレベルに保存されます。保存先は、field、セクション、または Document Definition 自体です。ほとんどの場合、プログラムがルールをどこに保存するかは問題になりません。ただし、Document Definition が複雑で、複数の field グループや繰り返し要素を含む場合は、各ルールの保存場所を必ず把握しておいてください。たとえば、field グループがあり、その中の一部の field が特定のルールの対象になっている場合は、そのルールをそのグループまたはそのグループ内のいずれかの field に保存してください。そうしないと、そのグループの新しいインスタンスを作成したときに、そのルールは新しいインスタンスにコピーされず、適用もされません。アイテムのプロパティ ダイアログでは、そのアイテムを参照しているルール、そのアイテムが所有する (つまり保存している) ルール、またはそのアイテムとその子アイテムが所有するルールを確認できます。表示するルールの種類は、Show rules ドロップダウンリストで選択します。
</Accordion>

## <a id="errors-lang" />ルールのバリデーションエラーに使用される言語

ドキュメントが自動処理される場合、ルールのバリデーションエラーは、既定では Processing Station コンポーネントの UI 言語 (つまり、ABBYY FlexiCapture のインストール時に選択した言語) で表示されます。

ただし、オペレーターによっては、既定の言語以外でエラーメッセージを表示したい場合があります (たとえば、手動処理と自動処理を別々の国で実行している場合) 。

オペレーターごとに異なる言語を指定するには、言語ごとに個別の[バッチタイプ](/ja/flexi-capture/project-settings/batch-types-project-settings)を作成します。各バッチタイプで、自動処理中に出力されるエラーメッセージに使用する言語を指定します。

1. Project Setup Station で、**Project** > **Batch Types…** をクリックします。
2. 新しいバッチタイプを作成します (または既存のバッチタイプを選択して **Edit...** をクリックします) 。
3. **Verification** タブで、**Use this language for messages issued during processing** を選択します。

ルールのバリデーションエラーは、次のいずれかの言語で表示できます。

* 英語
* ハンガリー語
* スペイン語
* 中国語 (簡体字)
* 韓国語
* ドイツ語
* ポーランド語
* ポルトガル語 (ブラジル)
* ロシア語
* セルビア語
* フランス語
* チェコ語
* 日本語

4. 変更を保存します。

<Note>
  オペレーターが修正を行い、その直後にバリデーションルールによる再チェックが実行される場合、その再チェックで出力されるエラーメッセージは、ABBYY FlexiCapture の UI 言語で表示されます。これは、そのような処理が Processing Station ではなくローカルで実行されるためです。これは、デスクトップステーション上のすべてのエラーメッセージと、Web Station 上の書式エラーに当てはまります。
</Note>

<Warning>
  次の種類のエラーメッセージは英語でのみ利用できます。スクリプトルールで報告されるエラー、ドキュメント アセンブリ エラー、およびキーフィールドのマッチングエラーです。
</Warning>
