# Multi-Page Merge: 複数ページの結果を1つに結合する

> Multi-Page Merge は、1つのドキュメントに属する抽出行（IDカードの表面と裏面、複数ページにわたる銀行明細書など）を1つのレコードに結合します。このページでは、行をグループ化する3つの方法、競合する値の処理方法、およびこの設定が有効になるタイミングについて説明します。

[**Multi-Page Merge**](/docs/reference/glossary#multi-page-merge) は、同じドキュメントに属する抽出結果を1つのレコードに結合します。1つのドキュメントが複数のファイルとしてアップロードされた場合（IDカードの表面と裏面を別々に撮影した場合、複数ページに分割された銀行明細書、複数部分にスキャンされた契約書など）、各ファイルは個別に処理され、それぞれ独自の結果を生成します。Multi-Page Merge を有効にすると、どの行が互いに関連しているかを認識し、それらを単一の [マージグループ](/docs/reference/glossary#merge-group) にまとめる方法をアプリに指示します。

## 同じドキュメントが複数の行として表示される理由

アップロードされたすべてのファイルは独立して処理され、それぞれ独自の結果を生成します。1回のアップロード自体が複数の行を生成する場合もあります。銀行明細書の1ページに12件の取引が含まれていれば、それぞれが独自の行になります。したがって、3つのファイルとして届いたドキュメントは、1行の結果を生成するのではなく、ファイルごとに3つの別々の行セットを生成します。

1つのドキュメントが複数のファイルに分割される一般的なケースは次のとおりです。

- **IDカード**が2つの画像として撮影された場合：表面には名前とID番号、裏面には住所と有効期限が記載されています。
- **銀行明細書**が複数ページにわたる場合：口座番号は1ページ目の上部に1回だけ表示され、取引テーブルは次のページに続きます。
- **複数ページの契約書**がページごとにスキャンされた場合：契約番号や署名欄が一部のページにのみ表示されます。

Multi-Page Merge はページではなく**行**に対して機能します。まず、どの行が互いに関連しているかを判断し、次に各グループの値を結合します。グループ化ルールは [テンプレート](/docs/reference/glossary#template) に保存されるため、一度設定すると、そのテンプレートで処理されるすべての [バッチ](/docs/reference/glossary#batch) に適用されます。

## ファイルを1つのレコードにグループ化する3つの方法

テンプレートの設定では、3つのマージモードのうち正確に1つを選択します。各モードは同じ質問「どの結果が互いに関連するか」に対して、異なる方法で答えます。

### Sequential Merge

このモードでは、ファイルをアップロード順に読み取ります。選択した [列](/docs/reference/glossary#column) が空白または同じ値である限り、それらのファイルは1つのレコードとしてまとめられます。列に新しい異なる値が表示された時点で、そこから新しいレコードが始まります。これは、識別値が1回だけ表示される文書に適しています。例えば、1ページ目にのみ印刷された請求書番号や、各契約書の上部に表示される名前などです。

Sequential Merge を選択する際には、**Where to break**（新しいレコードを開始する条件）も選択します。**Break on value change** がデフォルトで選択されています。

| 区切り条件 | 新しいレコードを開始する条件 |
| --- | --- |
| Break on value change | ファイルはアップロード順に処理されます。選択した列が空白または変更されていない間は、同じレコードに保持されます。列に異なる値が表示された最初のファイルが、新しいレコードを開始します。 |
| Break on a blank item | すべての列が完全に空白で返されたファイルは、区切りとして扱われます。その前のすべてが1つのレコードとなり、その直後のファイルが新しいレコードを開始します。 |
| Break when a value appears | 選択した列に最初に何らかの内容が表示されたファイル（内容は問わない）が、新しいレコードを開始します。スタンプ、チェックマーク、または新しい文書を示すフィールドの存在に役立ちます。 |
| Break on a specific value | 選択した列が入力したテキストまたはパターンに一致するファイルが、新しいレコードを開始します。プレーンテキストはそのまま使用されます。 INV-\d+ のようなパターンは、固定値ではなく形式に一致します。 |

### Match by Value

このモードはアップロード順を無視します。選択した列で同じ値を持つファイルは、アップロードされた位置がどれだけ離れていても、1つのレコードに結合されます。異なる文書のファイルが混在するバッチに適しています。例えば、複数の注文の通関書類が順不同で撮影されている場合で、注文番号がどのファイルが一緒に属するかを識別する値となるケースです。

すべての結果を他のすべての結果と比較するため、このモードでは、グループ化されるすべてのファイルで選択した列が存在し、正しく読み取られる必要があります。その列の値が空白で返されたファイルは、グループにマッチングされるのではなく、単独のレコードとして残されます。

### Fixed Count

このモードは内容を完全に無視します。連続するN個のファイルごとに1つのレコードになります。グループサイズ（N）を入力すると、アプリは固定ブロックでファイルを結合します。これは、常に同じ数の異なる項目で構成されるレコードを対象としています。例えば、領収書の写真、銀行の支払いスクリーンショット、承認メールの3ファイルで常に構成される経費レコードなどです。

## 複数のファイルで値が異なる場合

行がグループ化されると、アプリはフィールドごとにそれらを結合します。すべてのファイルで値が一致する列、または1つのファイルだけが値を持つ列は、共有値として扱われ、レコードのすべての行に入力されます。これにより、例えば1ページ目にのみ表示される口座番号が、後続ページのすべての取引行にコピーされます。

1つのグループ内で列に2つ以上の異なる非空白値がある場合、それは [競合](/docs/reference/glossary#conflict-handling)であり、 解決方法を選択します。この選択はテンプレート全体に適用され、個々の列には適用されません。

| 競合時のオプション | 競合する列に起こること |
| --- | --- |
| Combine into one | 異なる値はすべて1つのセルに結合されます。デフォルトの結合文字は前後にスペースのあるスラッシュ（ / ）で、 Join Values With で変更できます。クリアして値を間に何も入れずに結合することもできます。 |
| Keep all, split into rows | 推測は行われません。結合された1行の代わりに、ファイルごとに1行が生成されるため、各値を自分で確認できます。ファイル間で一致する値は引き続き入力されます。 |
| Keep the first value | 最も早くアップロードされたファイルの値が採用され、他の値は破棄されます。 |
| Keep the last value | 最も遅くアップロードされたファイルの値が採用され、他の値は破棄されます。 |

影響を受けるのは、実際に競合する列のみです。ファイル間で一致する列、および1つのファイルだけが入力した列は、レコード全体で引き続き共有されます。

## 設定場所

Multi-Page Merge はテンプレート内の設定で、テンプレートの他のオプションの隣にあります。

1. ダッシュボードで**Data Columns**パネルを開き、テンプレートヘッダーの**Settings**をクリックします。（同じ**Settings**操作は**Switch Template**ダイアログの各行にも表示されます。）
2. **Template Settings**ダイアログで**Merge Multiple Results**の行を見つけてオンにします。
3. **How to merge**でマージモードを選択します。Sequential Mergeを選択した場合は、**Where to break**で分割条件を選択し、プロンプトが表示されたら、モードが必要とするData Column、値、またはグループサイズを指定します。
4. **Merge Conflict Handling**でオプションを選択します。

ダイアログには現在の選択内容の平易な概要と具体例が表示されるため、設定を利用する前にその動作を確認できます。変更は自動的に保存されます。個別の保存ボタンはなく、ダイアログを閉じても変更は保持されます。必要な列、値、またはグループサイズがまだ入力されていない場合、ダイアログは設定が入力されるまで有効にならないという警告を表示します。アプリは不完全なマージ設定でエラーを出さず、結果をマージしないままにします。

これはテンプレート設定内にあるため、[Templates & Columns](/docs/concepts/templates-and-columns)ページで説明されているのと同じダイアログです。マージ設定は常にテンプレートに属します。テンプレートなしで処理されたバッチには、それを保持するテンプレート設定がありません。

## マージが適用される場所

Multi-Page Merge はファイルの処理方法を変更しません。エクスポート時に生成されるテーブルを変更します。これは単一のバッチ内で機能し、異なるバッチ間で行を結合することはありません。[Batches](/docs/concepts/batches)でバッチの定義とファイルがバッチに含まれる仕組みを参照してください。

- **アプリでの結果表示はファイルごとです。**ファイルを開いて抽出された行を確認する場合、そのファイル自身の結果が表示されます。このビューでは行は結合されません。
- **バッチのエクスポートではマージが自動的に適用されます。**バッチのテンプレートでマージがオンになっている場合、エクスポートされたスプレッドシートはマージされます。エクスポート時に有効にする個別の「このエクスポートをマージ」スイッチはありません。
- **複数のバッチをまとめてエクスポートする場合もマージが適用されます**。各バッチのテンプレート設定が使用され、その後バッチが1つのファイルにまとめられます。
- **マージは、マージがオンになっているテンプレートでバッチが処理された場合にのみ適用されます。**設定はエクスポート時にテンプレートから読み取られるため、処理後にマージ設定を修正した場合、そのバッチの次のエクスポートでは修正された設定が使用されます。

同じ設定がGoogle Sheets アドオンに送信される結果にも適用されます。バッチのテンプレートでマージがオンになっている場合、シートに書き込まれる行は結合されたものになります。

### エクスポート前の確認

デフォルトでは、マージを有効にした単一バッチのエクスポートでは、最初に **Confirm Merge Before Export** 画面が開きます。この画面には、**Before merge (raw results)** と **After merge (export result)** の2つのテーブルが並んで表示され、同じ マージグループの行は同じ色で共有されるため、どの生の行がどの結合行を生成したかを確認できます。ここで生の値を編集したり、同じ画面でマージ設定を直接調整したりしてから、 **Confirm & Export** をクリックしてファイルを生成できます。

毎回この確認を希望しない場合は、テンプレート設定で **Skip confirmation before export** をオンにします。複数のバッチをまとめてエクスポートする場合は、この確認画面は表示されず、マージが適用されてファイルが直接生成されます。

---

Source: https://imagetotable.ai/ja/docs/concepts/multi-page-merge
