他社から受け取った資料の受領記録と、返却・破棄までを台帳で管理する
取引先から受け取った提案書や技術資料の表紙を読み取り、差出元・資料名・受領日・対応する秘密保持契約を台帳の行にします。返却または破棄すべき期限を機械で計算し、期限前に通知文の下書きまで出します。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 連携・自動化
- Google Apps Script/Make/n8n/Power Automate/Python
- 対象業界
- IT・SaaS/商社/士業/広告/製造
- 対象部門
- 法務/知財
- 対象業務
- データ入力・転記/台帳・マスタ管理
- 主な課題
- 引き継ぎができていない/期限・対応漏れが起きる/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/属人化解消/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 担当者が社外から資料を受け取る(対面での手渡し、メールの添付、データルームからの取得)
- 受け取った担当者が、自分の記録用のシートかメールの下書きに、相手先と資料名と日付を書き留める
- 紙は自席の引き出しか各部の書庫へ、電子は自分の共有フォルダへ置く
- 法務に連絡があったものだけ、知財部が契約台帳を開いて対応する契約を探す
- 契約書の本文を開き、返却・破棄の条項と期限の日数、通知の要否を読む
- 読んだ条件を、担当者への返信に書いて伝える
- 検討が終わっても、返却・破棄が行われたかどうかを追う仕組みが無い
- 人受け取った担当者が、受領フォームに経路と現物の所在を入力し、紙はスキャンして、電子はそのまま受領登録フォルダへ保存する
- 自動保存をきっかけにワークフローが動き、形式・サイズ・ページ数を確かめる
- 自動表紙と送り状に当たるページだけを指定して、レイアウトモデルに読ませる
- 自動読み取り結果のうち表紙の領域だけを生成AIへ渡し、差出元・資料名・書面上の受領日・契約の手がかりを取り出す
- 自動契約台帳と突き合わせ、対応する秘密保持契約を決める
- 自動契約が決まったものは、台帳の条件から返却・破棄の期限の計算方法を確定する
- 自動受領台帳へ行を作る。判定は `registered` / `needs_human` / `contract_unknown` の3つ
- 人知財部が `needs_human` と `contract_unknown` の行だけを開き、契約の対応と保管場所を確定する
- 人検討が終わったら、担当者が受領台帳に検討終了を登録する
- 自動検討終了の登録から期限を計算し、期限前に返却・破棄の通知文の下書きを作る
- 人返却または破棄を実行し、証跡を登録したうえで、下書きを直して相手へ送る
各工程の詳しい説明を読む
- 担当者が社外から資料を受け取る(対面での手渡し、メールの添付、データルームからの取得)
- 受け取った担当者が、自分の記録用のシートかメールの下書きに、相手先と資料名と日付を書き留める
- 紙は自席の引き出しか各部の書庫へ、電子は自分の共有フォルダへ置く
- 法務に連絡があったものだけ、知財部が契約台帳を開いて対応する契約を探す
- 契約書の本文を開き、返却・破棄の条項と期限の日数、通知の要否を読む
- 読んだ条件を、担当者への返信に書いて伝える
- 検討が終わっても、返却・破棄が行われたかどうかを追う仕組みが無い
(a)記録が担当者の手元にしかない。 2番は担当者の善意で成り立っています。書く人と書かない人がいて、書く人でも書き方が違います。 知財部は「いま何を預かっているか」を聞かれても、各部に問い合わせるまで答えられません。
(b)異動と退職で、受け取った事実ごと消える。 引き出しの紙も個人フォルダのPDFも、その人がいなくなった時点で誰のものでもなくなります。 後任は資料の存在を知っていても、いつ誰から何のために受け取ったのかを知りません。
(c)対応する契約が分からない受領物がある。 相手先名が分かっても、その会社と結んだ契約が複数あれば、どれに当たるかが決まりません。もっと悪いのは、契約を結ばないまま受け取っている場合です。
(d)期限の起点が誰にも分からない。 条項は「検討終了後」から数えます。ところが検討が終わったという事実がどこにも登録されません。 案件が立ち消えになると、終わったのか続いているのかが曖昧なまま、受領物だけが残ります。
- 【人】 受け取った担当者が、受領フォームに経路と現物の所在を入力し、紙はスキャンして、電子はそのまま受領登録フォルダへ保存する
- 【自動】 保存をきっかけにワークフローが動き、形式・サイズ・ページ数を確かめる
- 【自動】 表紙と送り状に当たるページだけを指定して、レイアウトモデルに読ませる
- 【自動】 読み取り結果のうち表紙の領域だけを生成AIへ渡し、差出元・資料名・書面上の受領日・契約の手がかりを取り出す
- 【自動】 契約台帳と突き合わせ、対応する秘密保持契約を決める
- 【自動】 契約が決まったものは、台帳の条件から返却・破棄の期限の計算方法を確定する
- 【自動】 受領台帳へ行を作る。判定は
registered/needs_human/contract_unknownの3つ - 【人】 知財部が
needs_humanとcontract_unknownの行だけを開き、契約の対応と保管場所を確定する - 【人】 検討が終わったら、担当者が受領台帳に検討終了を登録する
- 【自動】 検討終了の登録から期限を計算し、期限前に返却・破棄の通知文の下書きを作る
- 【人】 返却または破棄を実行し、証跡を登録したうえで、下書きを直して相手へ送る
8番目が、この設計の分かれ目です。人が開くのは全件ではありません。 差出元も資料名も契約も決まった行は一覧で流し見て終わりにし、契約が決まらなかったものと、読み取れなかったものだけに時間を使います。
9番目を人に残しているのも、意図してのことです。 検討が終わったかは社内の事情でしか決まりません。AIが出すのは「検討終了の登録が無いまま長く置かれている受領物の一覧」までで、終わったと判定はさせません。 判定させると、まだ続いている案件の資料に返却の通知が飛びます。
02今回想定するシステム構成
受け取った資料(紙・電子)+ 受領フォーム ▼【トリガー】受領登録フォルダへの保存 Power Automate ├──▶ 形式・サイズの確認/表紙と送り状のページ番号を決める ▼ Azure AI Document Intelligence(レイアウトモデル) │ 指定したページだけを読み、段落・役割・表・選択マークを返す ▼ Claude API ── 表紙と送り状の領域のテキストだけを渡す │ ① 差出元 ② 資料名 ③ 書面上の受領日 ④ 契約の手がかり ▼ Python ── 契約台帳と突合し、期限の計算方法を条件から確定 ▼ 判定(registered / needs_human / contract_unknown) ▼ 受領台帳(スプレッドシート) ├──▶ 週次:検討終了の登録が無いまま長期化した受領物の一覧 ├──▶ 随時:保有者別の一覧(異動・退職のとき) └──▶ Claude API ── 返却・破棄の通知文の下書き(送信は人)
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Azure AI Document Intelligence | Google Document AI、AWS Textract |
| 生成AI | Claude API | OpenAI API、Gemini API |
| 集計 | Python | Google Apps Script |
| 連携 | Power Automate | Make、n8n |
契約台帳と共有フォルダは、新しく足すものではありません。 契約台帳に期限の条件と通知の要否の列を足すのが最初の準備作業で、この構成からは読むだけです。
土台になるのは、Azure AI Document Intelligence のレイアウトモデルです。 光学式文字認識(OCR)とディープラーニングのモデルを組み合わせ、テキスト、テーブル、選択マーク、ドキュメント構造を抽出するとされています。扱えるのはPDFと画像(JPEG/JPG、PNG、BMP、TIFF、HEIF)に加えてOffice形式(Word、Excel、PowerPoint、HTML)で、PowerPointは各スライド、Wordは最大3,000文字、Excelは各ワークシートが1ページ単位です。提案書がPowerPointのまま届くこの業務で効きます。
いちばん効くのは、ページを選んで読めることです。 pages クエリパラメーターで特定のページ番号またはページ範囲を指定できるとされています。表紙と送り状だけを読み、本文は送らないという設計が、この機能で成り立ちます。 第13章の中心もここです。
上限も先に押さえます。 PDFとTIFFは最大2,000ページ(Freeレベルでは最初の2ページのみ)、サイズは有料(S0)レベルで500MB、Free(F0)レベルで4MBです。画像は50×50から10,000×10,000ピクセルの間、最小の文字の高さは1024×768の画像で12ピクセルとされています。
03どうやって実装するのか
処理の起点を決める
受領登録フォルダにファイルが保存されたことを起点にします。 担当者が、紙はスキャンして、電子はそのまま同じフォルダへ置きます。経路で分けません。 紙だけ、メールだけと分けると、どれか1つの経路が記録から漏れます。
同時に受領フォームを出します。入れてもらうのは、経路(対面/メール/データルーム)、現物の所在、受け取った本人、案件名の4つです。資料に書かれていないのはこの4つで、それ以外は書かせません。
保存のたびに1件ずつ動かします。 一括処理にすると、受領フォームと資料の対応を後から結び直すことになり、取り違えが起きます。処理が済んだファイルは移し、残った数が未処理の数になるようにします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 受領物のファイル | PDF・画像・Office形式。紙はスキャンしたもの | 受領登録フォルダ |
| 受領フォームの値 | 経路、現物の所在、受け取った本人、案件名 | 受領フォーム |
| 読み取り結果 | 表紙と送り状の段落と役割、表、選択マーク、信頼度 | Azure AI Document Intelligence |
| 契約の情報 | 契約番号、相手先名、ドメイン、返却・破棄の期限の条件、通知の要否 | 契約台帳 |
質を決めるのは、いちばん下の行です。 契約台帳に期限の条件が無ければ、読み取りが正確でも期限は出ません。この列を埋めるのは人の作業です。
相手先のドメインも列に持たせます。 表紙の社名は略称や旧社名のことがあり、名称だけでは契約に結び付きません。
データの取得方法を決める
読み取りは、ワークフローからレイアウトモデルを呼ぶだけです。このとき、読ませるページを pages で絞ります。 絞らないと、本文まで外部へ出ます。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 段落と役割 | paragraphs の content と role | 表題は title、社名は pageHeader / pageFooter |
| 表のセル | tables の cells | 送り状の管理表から契約番号・資料名・部数を読む |
| 選択マーク | selectionMarks の state と confidence | 表紙の「返却」「破棄」の欄、秘密区分の欄 |
| 手書きの判定 | styles の isHandwritten と confidence | 受領印の横の手書きの日付の検出 |
| 単語ごとの信頼度 | words の confidence | 読めなかったのか、書かれていないのかを分ける |
表紙のページ番号は、機械が決めます。 既定は先頭2ページ、送り状が別ファイルならその全ページです。PowerPointは各スライドが1ページ単位なので、先頭スライドだけを指定できます。
契約台帳の照合は、契約番号・ドメイン・社名の順に引きます。名称から引くと、表記ゆれで引けない相手先が出ます。
AIへ渡す前に整形する
- 形式の確認 … PDF・画像・Office形式を確かめ、それ以外はPDFに変換します
- サイズとページ数の確認 … PDFとTIFFは最大2,000ページ、有料(S0)レベルで500MBが上限です
- 画像の寸法の確認 … 50×50から10,000×10,000ピクセルの間である必要があります
- 解像度の確認 … 抽出するテキストの最小高さは、1024×768の画像で12ピクセルです
- ロックの解除 … パスワードでロックされたPDFは、提出前に解除する必要があります
- ハッシュ値の取得 … 受領したファイルのハッシュ値を、この時点で計算して控えます
- 読ませるページの決定 … 表紙と送り状に当たるページ番号を決め、それ以外は送りません
6番目を後回しにしないでください。 破棄の証跡は、受領した時点のファイルと消したファイルが同じものだと示せて初めて成り立ちます。 消す直前に取っても、差し替わっていないことは示せません。
AIに処理させる
させるのは、表紙と送り状に書かれていることを取り出し、根拠にした文字列を書き出すことだけです。
| 取り出すもの | 取り出し方 | 判断できないとき |
|---|---|---|
| 差出元 | 表紙・ヘッダー・送り状の社名をそのまま | 複数社あれば ambiguous |
| 資料名 | 役割が title の段落、無ければ送り状の表 | つぶれていれば unreadable |
| 書面上の受領日 | 書面に印字または手書きされた日付だけ | 無ければ missing、複数なら ambiguous |
| 契約の手がかり | 契約番号、契約名、目的として書かれた記述 | 無ければ missing |
| 秘密である旨の表示 | 「秘」「社外秘」「Confidential」などの有無 | 検出されなければ none |
右端の列が、いちばん大事な区別です。 missing は書かれていないこと、unreadable は検出はされたが確定できないことで、前者は相手に確認し、後者はスキャンをやり直します。 分けるのは words と styles の信頼度です。
| させないこと | 理由 |
|---|---|
| 返却・破棄の期限の計算 | 起算点も日数も契約ごとに違う。台帳の条件から出す |
| 対応する契約の決定 | 手がかりを出すまで。突合は台帳と機械で行う |
| 検討が終わったかの判断 | 社内の事情でしか決まらない。人が登録する |
| 本文の要約・引用 | 他社の秘密情報。表紙の外の記述を出力に入れない |
| 契約番号の補完 | 桁を足す、枝番を推測する、似た番号に寄せない |
| 受領日の推測 | ファイルの更新日時やメールの日付から埋めない |
1行目と6行目は、同じ失敗の裏表です。 どちらも「それらしい日付」を作る動きで、台帳に入ると、期限を守っているという記録だけが残ります。
指示内容を固定する
あなたは知的財産部で、他社から受け取った資料の受領記録を作る立場です。
渡されたのは表紙と送り状の読み取り結果だけです。
そこに書かれていることだけで答え、推測で埋めないでください。
【取り出す項目】
issuer(差出元の社名)/ doc_title(資料名)/ doc_date(書面の日付)/
nda_hint(契約番号・契約名・目的の記述)/ marking(「秘」などの表示)
【status】ok(読み取れて解釈できる)/ missing(書かれていない)/
unreadable(検出はされたが信頼度が低く確定できない)/ ambiguous(候補が複数)
迷ったときに ok を選ばないでください。
【厳守事項】
- 返却期限、破棄期限、通知期限を書かないでください。「検討終了後30日」と
いう記述があっても、日付に直さないでください。
- どの秘密保持契約に対応するかを決めないでください。契約番号や目的の記述を、
そのまま nda_hint に写すだけです。
- 社名は書かれたとおりに写し、正式名称に直す、「株式会社」を補う、
略称を展開することをしないでください。
- doc_date は書面の日付だけです。ファイルの更新日やメールの日付から
埋めず、書かれていなければ missing としてください。
- 契約番号はそのまま入れ、桁を補う、枝番を足さないでください。
- 表紙と送り状の外にある記述を出力に入れないでください。資料の中身を
要約しない、引用しない、言い換えないでください。
- evidence には根拠にした文字列をそのまま写してください。
- 資料でない書類(名刺など)なら doc_kind に種類を書いてください。
【読み取り結果(表紙・送り状のみ)】{layout_result}
【受領フォームの値】{intake_form}
「期限を書かない」を最初に置いているのは、書かせると書くからです。 表紙や送り状に「検討終了後30日以内に返却」と印刷されていることがあり、何も言わなければ日付に直して返します。禁じているのは計算であって、条項を読むことではありません。「本文の記述を出力に入れない」も同じ趣旨の歯止めで、 渡すのは表紙の領域だけですが、送り状に概要が数行書かれていることがあります。
出力形式を固定する
次の形のJSONで受け取ります。
{
"doc_kind": "received_material",
"issuer": { "value": "", "status": "ok", "evidence": "" },
"doc_title": { "value": "", "status": "ok", "evidence": "" },
"doc_date": { "value": "", "status": "missing", "evidence": "" },
"nda_hint": { "contract_no": "", "contract_name": "", "purpose_text": "",
"status": "missing", "evidence": "" },
"marking": "marked | none | unreadable",
"page_count": 0
}
Claude API の構造化出力(structured outputs)を使い、このスキーマから外れない出力にします。 制約付きデコードでスキーマに沿った応答を保証する仕組みで、解析に失敗せず、型と必須項目が保証されるとされています。
ただし、縛れる範囲には限りがあります。 additionalProperties は false にする必要がある一方、数値の制約も文字列長の制約(minLength / maxLength)も使えません。 つまり本文を写して長くなった出力を、スキーマでは止められません。 止めるのは、渡すテキストを表紙に限る前処理のほうです。
status はAIが埋め、判定はPythonが規則で決めます。 層を分ければ、人に回す範囲が変わっても直すのは規則だけです。
| 条件 | 判定 |
|---|---|
契約番号が台帳と一致し、issuer と doc_title が ok | registered |
契約は決まったが unreadable か ambiguous がある | needs_human |
| 契約番号もドメインも社名も台帳と結び付かない | contract_unknown |
contract_unknown は必ず人に回します。件数が増えても自動では閉じません。 契約が無いまま受け取っているなら、台帳の不備ではなく、受け取り方の問題です。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受領登録フォルダ | Power Automate のトリガー | ファイルの保存を検知する |
| Azure AI Document Intelligence | API呼び出し | 指定したページの段落・表・選択マーク・信頼度 |
| Claude API | API呼び出し | 項目の取り出しと、通知文の下書き |
| 契約台帳 | スプレッドシートの読み取り | 契約番号・ドメイン・期限の条件・通知の要否 |
| 受領台帳 | スプレッドシートの書き込み | 行の作成と、状態の更新 |
| 人事マスタ | 名簿の読み取り | 保有者の在籍と所属、異動の予定を拾う |
契約台帳へは書き込みません。 契約番号が台帳に無かったときも書き足しません。足すかは、相手先に確認したうえで法務が決めます。
期限の計算はPythonの側に置きます。 台帳の「起算点」と「日数」を読み、検討終了の登録日から計算するだけです。ここに生成AIを挟まないことが前提です。
人が確認する
人が開くのは needs_human と contract_unknown の行だけです。 registered の行は、週に一度、件数と相手先を流し見ます。全件を開く設計にすると、第10章の5.0時間には収まりません。
contract_unknownを先に見る … 契約はあるのに台帳に無いのか、そもそも結んでいないのかを分けます。後者は担当部署へ差し戻しますneeds_humanの根拠を確かめる …evidenceを読み、必要なら表紙の画像を見ます。多くはスキャンのやり直しで解決します- 現物の所在を確定する … 受領フォームの値と実際の置き場所が合うかを見ます
- 検討終了を登録する(担当者) … 案件が終わった時点で受領台帳に登録します
- 通知文の下書きを直して送る … 返却または破棄を実行し、証跡を登録してから送ります。送信は人が行います
4番目は知財部の仕事ではありません。 検討が終わったかは担当部署しか知らないので、登録も担当部署に残します。 知財部は、登録の無い受領物の一覧を毎週見ます。
開くのは2割前後の想定です。 それより多い月は、契約台帳の整備が追いついていません。
例外に対処する
| 起きること | 対応 |
|---|---|
| 対応する契約が特定できない | contract_unknown。自動では閉じない。 法務と担当部署へ |
| 同じ相手先に契約が複数ある | 契約番号が無ければ needs_human。目的の記述で選ばない |
| 表紙に社名が無い(図面など) | 送り状と送信元ドメインで引く。決まらなければ needs_human |
| 書面に日付が無い | missing のまま。受領日は受領フォームの日付を入れる |
| パスワードでロックされたPDF | 提出前に解除が必要。解除できないものは相手先へ |
| ページ数・サイズが上限を超える | 最大2,000ページ、S0で500MB。分割して投入 |
| 文字が小さすぎる | 1024×768の画像で12ピクセルが下限。下回れば unreadable |
| Excelの資料の表が読めない | テーブル分析が非対応。PDFにしてから入れる |
| 現物が見つからない | 「所在不明」で残す。行ごと消さない |
| 検討終了の登録が無いまま長期化 | 週次の一覧に出す。AIは終了と判定しない |
| 破棄したが証跡が無い | 「完了」にしない。登録されるまで期限超過として扱う |
上から3行目までが、人が使う時間のほとんどです。 どれも契約と受領物の対応が決まらない場合で、読み取りの精度を上げても減りません。
記録を残す
- 受領物のファイル、受領時のハッシュ値、受領フォームの値
- レイアウトモデルへ送ったページ番号と、返ってきた読み取り結果(表紙と送り状のみ)
- 生成AIの出力(
statusとevidence)と、そのとき参照した契約台帳の内容 - 判定と、人が判定を覆した記録
- 検討終了の登録日、計算した返却・破棄の期限、実行日
- 破棄・返却の証跡と、相手へ通知した日時、通知文の本文
3つ目で「そのときの契約台帳の内容」を残すのは、条件が後から変わるためです。 期限の日数を直すと過去に計算した期限の意味が変わり、当時の条件が無いと、やり直す範囲が決まりません。
破棄の証跡は、電子と紙で残すものが違います。 紙は返送した送り状の控え、同梱した返却明細、相手からの受領の連絡です。社内で廃棄したなら、処理した日、立会者、廃棄業者の処理証明書の番号、対象の明細を残します。電子は削除の日時、実行者、ファイル名と件数、受領時に控えたハッシュ値を並べ、そのうえで共有フォルダ・担当者の端末・メールの添付・ごみ箱・バックアップという削除の範囲を先に宣言し、どこまで消したかを書きます。 バックアップに残る分は、保存期間が過ぎるまで残ることを通知文に書きます。
04実装レベルの3段階
最小構成では件数がさばけません。 1件ずつ貼り付けるので、月60件には使えない、確かめるための段階です。 半自動化で、1件14分が5分程度になります。 記録と突合と期限の計算が自動になり、残るのは契約が決まらなかったものの扱いと通知文の確認です。この段階が本記事の想定です。 本格構成との差は工数よりも追える範囲にあり、担当者の端末に残ったコピーまで棚卸しの対象に入ります。 段階を飛ばさないでください。 半自動化の台帳を3か月見れば、contract_unknown が多い部署と、条件の入っていない契約が先に分かります。
05工数削減シミュレーション
導入後 60件 × 5分 ÷ 60 = 5 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 共同開発・購買・技術提携の検討で、社外から提案書・仕様書・図面・評価レポートを月に数十件受け取る製造業、IT・SaaS、商社など。秘密保持契約は法務が管理しているのに、受け取った資料の記録は受け取った担当者の手元にしかない企業。契約台帳に「返却・破棄の期限の条件」と「通知の要否」の列を足せる場合。受領物の保管場所を、電子と紙のそれぞれで一か所に寄せられる場合。
- 資料の受け取りが相手先のデータルームに統一されており、閲覧と削除の記録がそちら側に残る場合。受け取る資料が年に数件で、担当者が記憶の範囲で追える場合。有効な秘密保持契約の一覧そのものがまだ作れていない場合は、先に契約台帳の整備が必要です。なお、契約条項の解釈や、返却と破棄のどちらを選ぶべきかという判断は、この構成では代替できません。
07最小構成で試す方法
- 直近3か月に受け取った資料から20件を選ぶ(うち数件は、対応する契約が分からないものを入れる)
- その20件について、当時どこに記録したか、現物がどこにあるかを担当者に聞く
- 20件の表紙と送り状だけをPDFにして、手元のAIサービスの画面に1件ずつ貼り付ける
- 「この表紙から、①差出元 ②資料名 ③書面に書かれた日付 ④契約番号や契約名や目的の記述 を取り出してください。書かれていない項目は『不明』とし、期限の計算はしないでください」と指示する
- 出てきた値を契約台帳と手で突き合わせ、契約が決まるか決まらないかを数える
3番の「表紙と送り状だけ」を守ってください。 資料をまるごと貼り付けると、試すだけのつもりで他社の秘密情報を外へ出すことになります。
| 出てきた内容 | 判断 |
|---|---|
| 20件のうち大半で契約が決まった | ワークフローの組み立てに進む |
| 契約が決まらない件が半分を超えた | 契約台帳の整備が先。 AIの問題ではない |
| 期限を勝手に計算して返した | 指示の書き方で直る。構成は有効 |
| 表紙から社名も表題も取れない | スキャンの設定か、送り状の様式を先に決める |
2行目が出ることは珍しくありません。 失敗ではなく、契約と受領物が結び付かない状態が数で見えたということです。 その数字が、契約台帳に列を足す作業を通す材料になります。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| AIが期限を計算して返す | プロンプトで禁じ、出力スキーマに期限の項目を作らない。 入れる場所が無ければ入らない |
| 契約が決まらない行が自動で閉じる | contract_unknown は人が開くまで完了にしない。 件数が多くても緩めない |
| 資料をまるごとOCRに送っている | pages で表紙と送り状だけを指定する。既定だと全ページが出る |
| 生成AIに本文のテキストまで渡している | 渡すのは title / sectionHeading / pageHeader / pageFooter の段落と送り状の表だけ |
| 社名が正式名称に直されている | 書かれたとおりに写させる。直すと資料の表記と合わなくなる |
| 同じ相手先の契約を目的の記述で選ぶ | 契約番号が無ければ needs_human。目的の文言は似ている |
| 破棄の証跡が後から作れない | 受領した時点でハッシュ値を控える。 直前では同一性を示せない |
| 電子の削除範囲があいまい | 共有フォルダ・端末・メールの添付・ごみ箱・バックアップを先に宣言する |
| 検討終了が誰も登録しない | 知財部が判定せず、滞留の一覧を毎週担当者に返す。 登録は担当部署に残す |
| 退職者の受領物が誰のものでもなくなる | 保有者の列を持ち、退職の予定日から逆算して棚卸しの一覧を出す |
| 通知が自動で相手へ飛ぶ | 下書きまでにする。 実行前の通知は事実と違う連絡になる |
| Excelで届いた資料の表が読めない | テーブル分析が非対応。PDFにしてから入れる |
上の4行が、この構成の失敗のほとんどです。 1行目と2行目は「機械に決めさせてはいけないことを決めさせた」型、3行目と4行目は「外へ出す範囲が広がった」型で、どちらも動いているように見えるまま進みます。 設計の段階で止めます。
「検討終了が誰も登録しない」の行も、早く効いてきます。 この登録は、仕組みを作った直後から誰もやりません。毎週の一覧を担当者へ返すところまでを運用に入れて、初めて回り始めます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うのは、他社の秘密情報です。漏れたときに困るのは相手先で、自社は契約に違反した側になります。 外部へ渡す範囲を決める前提が、ここで変わります。
- 外部APIへ渡すのは、表紙と管理情報だけにする。本文は渡さない … これが設計の中心です。OCRへは
pagesで表紙と送り状のページ番号だけを指定します。生成AIへ渡すのは、役割がtitle/sectionHeading/pageHeader/pageFooterの段落と、送り状の表のセルだけです。図面も評価データも価格も入りません
- 渡してよい項目を並べる形で持つ … 「この語があったら送らない」という除外にしないでください。除外は、書き漏らした分がそのまま外へ出ます
- 保持の期間を知ったうえで、消す手を持つ … 送信された入力データと分析結果は、分析操作の完了から24時間格納され、その後に自動で削除されるとされています。先に消すには Delete Analyze Result API を呼びます。受領物については毎回このAPIを呼ぶ運用にします
- 処理される場所を確かめる … 受信データはリソースを作成したのと同じリージョンで処理されるとされ、同じリージョンの顧客が一時ストレージを共有し、データはサブスクリプションとAPI資格情報で論理的に分離されるとされています。どこに作るかは相手先との取り決めで決めます
- 契約台帳そのものを外部へ出さない … 有効な秘密保持契約の一覧は、どの会社と何を検討しているかがまとまった資料です。突合はPythonの側で行います
- 証跡のために中身を残さない … 破棄を示すのに資料の内容は要りません。ファイル名、件数、ハッシュ値、削除の日時と実行者で足ります
- 通知は下書きまでにする … 実行して証跡を登録してから通知します。実行前に飛ぶと、事実と違う連絡になります
表紙を渡してよいかは、契約の条項と相手先の了解で決まります。 表紙だけでも、社名と資料名の組み合わせが秘密に当たる場合があります。判断は法務と相手先に委ねてください。
10まず何から始めるか
1週目:契約台帳に3つの列を足す
契約台帳に、返却・破棄の期限の条件(起算点と日数)、通知の要否、相手先のドメインの列を足します。一度に埋める必要はなく、受領の多い上位20社から埋めます。
2週目:20件で試す
直近3か月の受領物から20件を選び、表紙と送り状だけを手元のAIサービスに貼り付けて4項目を取り出します。契約台帳と手で突き合わせ、契約が決まらない件が何件あるかを数えます。 期限を勝手に計算していないかも、あわせて見ます。
3週目:受領台帳の項目と状態の遷移を決める
受領台帳の列と、「受領」「検討中」「検討終了」「返却・破棄済み」「通知済み」という状態の並びを決めます。破棄の証跡として何を残すかも、電子と紙で先に決めます。 ここが決まらないうちに自動化を作ると、完了にできない行がたまります。
4週目:受領登録フォルダから台帳の行までをつなぐ
Power Automate で受領登録フォルダを見張り、表紙のページを指定してOCRを呼び、4項目を取り出して受領台帳へ行を作ります。この時点では期限を出さず、契約が決まったかどうかだけを見ます。
2か月目: 期限の計算と、検討終了の登録が無い受領物の週次の一覧を足します。3か月目以降: 保有者別の一覧と通知文の下書きを足し、1件14分が何分になったかを実測します。退職予定者の受領物が棚卸しの一覧に出れば、形になります。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
抽出できる要素、入力形式とページ単位の数え方、pages によるページ指定、role / isHandwritten / state / confidence の返却、XLSXでのテーブル分析の非対応、ページ数・サイズ・画像寸法・最小の文字高の上限、パスワード付きPDFの解除 | Microsoft Learn: レイアウト分析 | 2026-09-28 |
| 入力データと分析結果が24時間格納されたのち自動で削除されること、Delete Analyze Result API での先行削除、リソースと同じリージョンでの処理、一時ストレージの共有と論理的な分離 | Microsoft Learn: データ、プライバシー、セキュリティ | 2026-09-28 |
制約付きデコードによるスキーマ準拠の保証、additionalProperties を false にする必要、数値の制約と文字列長の制約が使えないこと | Claude Docs: Structured outputs | 2026-09-28 |
契約条項の解釈と、返却か破棄かの選択は、法務と相手先で決めてください。実装ステータス:構成例。 公開仕様に基づく設計であり、当社で構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0266)についてのご相談はこちらから。
