> ## 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 でベンダー データベースと事業部門データベースをデータ セットに接続し、列をマッピングし、正規化を設定して、データ セット レコードを管理します。

請求書を処理する際、ABBYY FlexiCapture はまずベンダー (請求書を発行した会社) と事業部門 (請求書を受領した会社または部門) を探します。

ほとんどの場合、ベンダーによって請求書の言語や、数値、日付、合計金額の書式が決まります。事業部門によって税率と適用される規制要件が決まります。ABBYY FlexiCapture は、請求書データを抽出し、バリデーションルールを適用する際に、これらすべての情報を使用します。

プログラムがベンダー field と事業部門 field を見つけやすくするために、ベンダー データベースと事業部門データベースを使用できます。これらは、Document Definition 内のデータ セットに接続する必要があります。

データ セットは、ベンダーまたは事業部門に関する情報を保存する外部データベース内のテーブルのローカル コピーです。値には型を設定して正規化でき、外部データベースとの同期を保つために定期的に更新することもできます。詳細は、[Preparing vendor and business unit databases](/ja/flexi-capture/invoice-reader/ir-preparing-db) を参照してください。

ベンダー データベースと事業部門データベースは、自動および手動のデータ チェックにも使用できます。

ベンダー データベースと事業部門データベースの使用は必須ではありませんが、次の点に注意してください。

* ベンダー データベースと事業部門データベースを使用すると、ABBYY FlexiCapture は請求書画像上の追加の会社情報を探すことで、会社をより確実に検出できます。また、検出されたベンダーが「既知」のベンダーであることを確認することもできます。さらに、ベンダー データベースを使用している場合は、[field を学習](/ja/flexi-capture/invoice-reader/ir-operator-training) できます。
* ベンダー データベースも事業部門データベースも使用しない場合、ABBYY FlexiCapture はニューラルネットワークを使用して、請求書画像上のベンダー名、事業部門名、住所を探します。詳細は、[Detecting the main fields](/ja/flexi-capture/invoice-reader/ir-search-fields#neuralnetwork) を参照してください。また、ABBYY FlexiCapture はベンダー データベースなしではベンダーを確実に識別できないため、[field を学習](/ja/flexi-capture/invoice-reader/ir-operator-training) することもできません。
* ベンダー データベースがなくても field training を使用したい場合は、請求書の抽出中にデータ セットへレコードを追加して会社情報を蓄積できます。詳細は、[データベースでベンダーと事業部門をルックアップする](/ja/flexi-capture/invoice-reader/ir-data-set-using#addnew) を参照してください。

<div id="connect-a-vendor-or-business-unit-database">
  ## ベンダーまたは事業部門のデータベースを接続する
</div>

ベンダー データベースと事業部門データベースは、どちらも同じ手順で接続します。

<Steps>
  <Step title="Document Definitions ダイアログを開く">
    **Project** メニューを開き、**Document Definitions...** をクリックします。
  </Step>

  <Step title="Document Definition を編集する">
    開いたダイアログで **Edit...** ボタンをクリックします。
  </Step>

  <Step title="Document Definition のプロパティを開く">
    **Document Definition** メニューを開き、**Document Definition Properties...** をクリックします。
  </Step>

  <Step title="Data Sets タブを開く">
    開いたダイアログで **Data Sets** タブを開きます。
  </Step>

  <Step title="データ セットを開く">
    **BusinessUnits** (または **Vendors**) の行をダブルクリックするか、**Set Up...** ボタンをクリックします。**Data Set** ダイアログが開きます。

    データ セットは基本的に、変更できない固定の列と型を持つデータのテーブルです。各データ セット列を外部データベースの列に対応付けます。データベースに必要なデータを含むテーブルがない場合は、そのデータを含むビューを作成し、そのビューをテーブルとして指定してください。
  </Step>

  <Step title="ソースを選択する">
    **Source** ドロップダウンリストから **Database** を選択します。

    <Note>
      データ セットの更新にスクリプトを使用する予定がある場合にのみ、**Script** ソース型を選択してください。詳しくは、[データ セットの更新](/ja/flexi-capture/invoice-reader/ir-data-set-update)を参照してください。
    </Note>
  </Step>

  <Step title="接続文字列を指定する">
    データベース接続文字列を指定します。プロジェクトの既存の環境変数を 1 つ選択することも、**Specify...** ボタンをクリックして新しい文字列を定義することもできます。プロジェクトの環境変数を使用すると、Document Definition を編集しなくても、プロジェクトを移動して同じ構造のデータベースに接続できます。
  </Step>

  <Step title="スキーマとテーブルを選択する">
    **Data schema** と **Database table** を選択します。
  </Step>

  <Step title="列を対応付ける">
    データ セットの列を、外部データベース内の対応する列に対応付けます。各データ セット列について、対応する外部データベース列または値を指定できます。

    **Match fields** リストには、次の項目が含まれます。

    * データ セット内の列名。
    * 外部データベース内の対応する列。
    * **Found** 列。データ セットの field とデータベース列の対応付けが確立されると、チェックマークが表示されます。
    * **Normalization** 列。値に使用される正規化の種類が表示されます。

    既定では、データ セットの **External Database** 列にある各 field には値が設定されています。これは、外部データベース列が指定されていないことを意味します。正規化を使用すると、わずかに異なる複数の値を同一のものとして扱えるようになります。詳しくは、[データ セット内の値の正規化](/ja/flexi-capture/invoice-reader/ir-normalization)を参照してください。

    各列を対応付けるには、テーブルでその列を選択し、**Edit...** ボタンをクリックします。詳しくは、[データ セット列をデータベース列に対応付ける](#map-a-data-set-column-to-a-database-column)を参照してください。
  </Step>

  <Step title="カスタム列を追加する（任意）">
    **Add...** ボタンを使用して、データ セットにカスタム列を追加し、外部データベース内の対応する列を指定します。

    <Note>
      複合列の管理には **Edit...** ボタンと **Delete** ボタンを使用します。事前定義列 (ロック アイコンで示されます) は削除できません。
    </Note>
  </Step>

  <Step title="更新間隔を設定する">
    自動更新が必要な場合は、データ セットでデータベースの更新間隔を指定します。
  </Step>

  <Step title="スクリプト検証を有効にする（任意）">
    スクリプトを使用してレコードを検証するには、**Check records using scripts** オプションを有効にします。詳しくは、[データ セット検証スクリプト](/ja/flexi-capture/appendix/scripts/script-validation)を参照してください。
  </Step>

  <Step title="変更を保存する">
    変更を保存します。
  </Step>
</Steps>

<div id="map-a-data-set-column-to-a-database-column">
  ### データ セットの列をデータベース列に対応付ける
</div>

各列について、**Match fields** リストで列を選択し、**Edit...** ボタンをクリックして、**Data Set Column Mapping** ダイアログでマッピングを設定します。

<Steps>
  <Step title="データベース列を選択する">
    **Database columns** リストから、対応するデータベース列を選択します。

    同じベンダーからの請求書でも、会社名や住所が異なる場合があります。複数の値が同じベンダー (同じ VATID) に対応する場合は、外部データベースのテーブルまたはビュー内の別々の列 (**Name1**、**Name2**、**Address1**、...、**AddressN** など) に格納します。その後、リストから **Several columns...** を選択し、データ セット列に対応するものとして任意の数のデータベース列を指定できます。

    <Note>
      外部データベースに会社名または住所の値が 1 つしかない場合でも、これらの field には請求書上で複数の一般的な候補が存在することがあります。検出品質を最大限に高めるには、請求書上のこれらの field のテキストを、データ セット内の対応するテキストにできるだけ近づける必要があります。詳細は、[データ セット内の複数値列](/ja/flexi-capture/invoice-reader/ir-preparing-db#complexcolumns)を参照してください。
    </Note>

    複数の列を作成するには、**Max variant count** ボックスで、field に許可する列数を指定します。オペレーターは後でこれらの列に値を追加できます。

    <Note>
      実際の列数より少ない数を指定すると、データ セットの更新時に自動的に増やされます。実際の列数より多い数を指定すると、空の列が追加されます。
    </Note>

    データベースにデータ セット列に対応する列がない場合は、[Vendors data set](/ja/flexi-capture/invoice-reader/ir-columns-vendors) セクションおよび [BusinessUnits data set](/ja/flexi-capture/invoice-reader/ir-columns-bu) セクションを参照してください。
  </Step>

  <Step title="正規化の型を選択する">
    **Normalization** リストから、列内のデータの型に最も適したエントリを選択します。詳細は、[データ セット内の値の正規化](/ja/flexi-capture/invoice-reader/ir-normalization)を参照してください。必要に応じて、**Store normalized value** オプションを有効にします。
  </Step>

  <Step title="Cannot be empty オプションを設定する">
    必要に応じて、**Cannot be empty** オプションを有効にします。

    <Note>
      **Cannot be empty** オプションを有効にすると、その列には値が必ず含まれている必要があることがプログラムに示されます。値が含まれていないことが判明した場合、その レコード は無効としてマークされます。
    </Note>

    <Info>
      Document Definition に、外部データベースを source として使用する **Vendors** データ セットが含まれており、**Vendor** field の値が **Business Unit** field の値に依存する場合、**BusinessUnitId** 列では **Cannot be empty** が既定で有効になります。**Vendors** データ セットが別の source を使用している場合は、このオプションを手動で有効にしてください。
    </Info>
  </Step>

  <Step title="マッピングを保存する">
    **Data Set Column Mapping** ダイアログで変更を保存します。
  </Step>
</Steps>

<div id="the-data-sets-tab">
  ## Data Sets タブ
</div>

すべてのデータ セットは **Data Sets** タブに一覧表示されます。この一覧には、次の追加情報が表示されます。

* データ セットの名前 (**Name** 列) 。
* 選択したソースの型 (**Source** 列) 。
* レコードの総数 (**Record count** 列) 。
* データ セットのステータス (有効かどうか)  (**Connected** 列) 。

<Note>
  レコードの総数は、データ セットのプロパティで **Cache data** オプションが有効になっている場合にのみ表示されます。
</Note>

一覧の右側にあるボタンを使って、データ セットを管理できます。

* **Set Up...** では、選択したデータ セットのプロパティ ダイアログを開きます。
* **Update** では、選択したデータ セットを更新します。
* **Check...** では、データ セットを確認します (データは別ウィンドウに表示されます) 。
* **Add...** では、新しいデータ セットを作成します。
* **Rename...** では、選択したデータ セットの名前を変更します。
* **Delete** では、選択したデータ セットを削除します。
* **View\...** では、選択したデータ セットのデータを表示および編集できるダイアログを開きます。
* **Clean Up** では、データ セット内のすべてのレコードを削除します。

**Vendors** と **BusinessUnits** のデータ セットはプロジェクト内に保存され、時間の経過とともにデータが変化する可能性のある外部データベースと同期する必要があります。同期はプロジェクトを開いたときに実行されますが、前回の同期からの経過時間が指定された更新期間を超えている場合に限られます。詳細については、[データ セットの更新](/ja/flexi-capture/invoice-reader/ir-data-set-update)を参照してください。

## <a id="viewing" />データ セットレコードの表示と編集

データ セットを表示または編集するには、Document Definition のプロパティダイアログの **Data Sets** タブでデータ セットを選択し、**View\...** ボタンをクリックします。

すべてのレコードは、3 つのレコードグループのいずれかに属しています。表示するレコードグループは、**Record group** ドロップダウンリストから選択できます。

* **General** には、有効なレコードのみが含まれます。
* **Deleted** には、ユーザーが削除したレコードが含まれます。これらのレコードは認識時に使用されず、[データベース検索](/ja/flexi-capture/invoice-reader/ir-data-set-using)の結果にも表示されません。データ セットが更新されても、これらのレコードは復元されません。
* **Invalid** には、無効なレコードが含まれます。

**Set...** ボタンをクリックすると、リスト内のいずれかの列の値でレコードを並べ替えたり、フィルタリングしたりできます。**Reset** ボタンをクリックすると、フィルターは無効になります。

レコードグループごとに、使用できる操作は異なります。

| 操作          | General                       | Deleted                           | Invalid                                |
| ----------- | ----------------------------- | --------------------------------- | -------------------------------------- |
| **Edit** \* | レコードを編集します。編集したレコードはリストに残ります。 | —                                 | レコードを編集します。編集したレコードはリストに残ります。          |
| **Add** \*  | レコードをリストに追加します。               | —                                 | —                                      |
| **Delete**  | レコードを **Deleted** に移動します。     | —                                 | レコードを **Deleted** に移動します。              |
| **Restore** | —                             | レコードを復元します (**General** に移動します) 。 | レコードを検証して有効にします (**General** に移動します) 。 |

* レコードの追加と編集は、**Primary key** オプションが有効な場合にのみ可能です。既定のデータ セット **PurchaseOrders** と **PurchaseOrderItems** のレコードは追加または編集できません。

<Note>
  レコードを追加または編集する際、field に指定できる値の数は、**Data Set Column Mapping** ダイアログでその field に設定された **Max variant count** を超えることはできません。**Add Record** ダイアログと **Edit Record** ダイアログでは、<img src="https://mintcdn.com/abbyy/39LtOHLEp1q7pm1x/images/flexi-capture/Add_to_DB.png?fit=max&auto=format&n=39LtOHLEp1q7pm1x&q=85&s=716437d729d5ff1658d99b6123c1c8aa" alt="" style={{display:"inline-block",verticalAlign:"middle",margin:0}} width="26" height="22" data-path="images/flexi-capture/Add_to_DB.png" /> ボタンと <img src="https://mintcdn.com/abbyy/mpS3pcxC_lkohQUS/images/flexi-capture/Remove_from_DB.png?fit=max&auto=format&n=mpS3pcxC_lkohQUS&q=85&s=af76788e1141f33096557389df7b704c" alt="" style={{display:"inline-block",verticalAlign:"middle",margin:0}} width="26" height="22" data-path="images/flexi-capture/Remove_from_DB.png" /> ボタンを使用してレコードを管理できます。
</Note>

<Note>
  新しく追加または編集したレコードに並べ替えやフィルタリングを適用するには、フィルターを再設定してください。
</Note>

<div id="database-check-rules">
  ### データベース チェック ルール
</div>

Invoice Document Definition には、**ベンダー**および**ビジネス ユニット**の field グループ内のデータをデータベースと照合するためのルールが含まれています。これらは標準のデータベース チェック型ルールで、** (却下済み) ベンダーがデータベース内に見つかる必要があります** および ** (却下済み) ビジネス ユニットがデータベース内に見つかる必要があります** という名前です。リスト内でルールを見つける方法については、[ルール](/ja/flexi-capture/invoice-reader/ir-setting-rules)を参照してください。

これらのルールのプロパティを確認すると、**ベンダー**および**ビジネス ユニット**グループ内の各 field がどのようにチェックされるかを確認できます。

* どの fields がデータ セット内の レコード (つまり、データベース内の レコード) と完全に一致する必要があるか。
* どの fields は完全に一致していなくてもよいか。
* どの fields が単にデータベースからコピーされるだけか。

また、データ セットから レコード を選択するための主キーとして使用する field を指定することもできます。

詳細については、[データベース チェック ルール](/ja/flexi-capture/templates/rule-bd)を参照してください。

データベース チェック ルールは、請求書 が認識されると自動的に適用され、その後は 検証 中に オペレーター がグループ内の fields を変更するたびに適用されます。

<div id="look-up-records-while-processing-invoices">
  ### 請求書 の処理中にレコードをルックアップする
</div>

ベンダーまたは事業部門が自動的に特定されなかった場合、オペレーター はデータベース (データ セット) から適切なレコードを選択できます。

詳細については、[データベースでベンダーと事業部門をルックアップする](/ja/flexi-capture/invoice-reader/ir-data-set-using)を参照してください。

<div id="modify-and-add-vendor-and-business-unit-records">
  ### ベンダーおよび事業部門のレコードを変更し、新しいレコードを追加する
</div>

検証中に、オペレーター が新しいベンダーおよび事業部門のレコード (データベース内に見つからない場合) をデータ セットに追加したり、既存のエントリを編集したりできるように設定できます。このデータは外部のベンダー データベースや事業部門データベースには保存されませんが、請求書 の処理およびルール チェックでは使用されます。詳細については、[オペレーター向けの追加プログラム機能を有効にする](/ja/flexi-capture/invoice-reader/ir-advanced-options-activation)を参照してください。

データベース ルックアップの詳細については、[データベースでベンダーと事業部門をルックアップする](/ja/flexi-capture/invoice-reader/ir-data-set-using)を参照してください。
