輸入の案件で海外の売り手から届く英文の貨物海上保険の保険証明書を読み取り、保険金額・担保条件・航路を案件台帳と照らして、条件の不足を拾う
CIFやCIPの輸入で売り手から届く英文の保険証明書を読み取り、保険金額・通貨・担保条件・航路・貨物の記載を案件台帳の条件と照らします。不足のある証明書を船の到着前に洗い出し、売り手への訂正依頼と自社での追加手配の検討に回します。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 連携・自動化
- Python
- 対象業界
- 商社/小売/物流/製造
- 対象部門
- 物流/購買
- 対象業務
- 内容確認・チェック/比較検討
- 主な課題
- 人手が足りない/入力作業が多い/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/工数削減/機会損失防止
- 導入難易度
- ★★★☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 売り手から船積書類のメールが届き、担当者が保険証明書のPDFを案件のフォルダに保存する
- 案件台帳を開き、契約番号から契約金額・通貨・取引条件・求める担保条件を確かめる
- 証明書の表面を読み、保険金額・通貨・船名・仕出地・仕向地・貨物の記載を台帳と見比べる
- 表面と裏面から担保条件を探し、Clauses (A) か (C) か、戦争・ストライキの約款が付いているかを読む
- 保険金の支払地と、日本での損害の検査の連絡先が書かれているかを見る
- 不足があれば、メモに書き、売り手への訂正依頼のメールを書く
- 確認した日を台帳の備考に書く(書かれないことも多い)
- 人船積書類のメールから、保険証明書のPDFを受付フォルダに保存する(ファイル名に契約番号を入れる)
- 自動保存をきっかけに処理が動き、形式・ページ数・パスワードの有無を確かめる
- 自動AWS Textract が全ページを読み、キーと値、表、質問への答えと信頼度を返す
- 自動生成AIが、読み取り結果から保険金額・通貨・担保条件・追加の約款・航路・貨物の記載を項目に分ける
- 自動契約番号で案件台帳を引き、求める条件と照らして項目ごとに印を付ける
- 自動印の組み合わせから、`ok` / `needs_correction` / `needs_human` を規則で決める
- 自動`needs_correction` のものについて、売り手への訂正依頼の英文の下書きを作る
- 人担当者が `needs_correction` と `needs_human` の証明書だけを開き、印の根拠を確かめる
- 人売り手への訂正依頼を送るか、自社の保険会社に追加の手配を相談するかを決める
- 【人/自動】 確認の結果を案件台帳の列に書き、`ok` のものは一覧で流し見て確定する
各工程の詳しい説明を読む
- 売り手から船積書類のメールが届き、担当者が保険証明書のPDFを案件のフォルダに保存する
- 案件台帳を開き、契約番号から契約金額・通貨・取引条件・求める担保条件を確かめる
- 証明書の表面を読み、保険金額・通貨・船名・仕出地・仕向地・貨物の記載を台帳と見比べる
- 表面と裏面から担保条件を探し、Clauses (A) か (C) か、戦争・ストライキの約款が付いているかを読む
- 保険金の支払地と、日本での損害の検査の連絡先が書かれているかを見る
- 不足があれば、メモに書き、売り手への訂正依頼のメールを書く
- 確認した日を台帳の備考に書く(書かれないことも多い)
(a)担保条件の書き方が揃っていない。 「ICC (A)」「Institute Cargo Clauses (A)」「All Risks」と、保険会社ごとに書き方が違います。読み慣れた担当者でないと、(A) 相当かどうかの判断に時間がかかります。
(b)保険金額の照合が暗算になっている。 台帳にある契約金額と割合から求める保険金額を出し、証明書の金額と比べます。通貨が違うと、そこで手が止まります。 インボイスの通貨と証明書の通貨が違うことに気づかないまま、金額の数字だけを見て通すことがあります。
(c)裏面は読まれない。 戦争・ストライキの約款は裏面の約款の一覧に小さく書かれていることがあり、表面の Conditions 欄だけを見ると、付いていないように見えたり、付いているように見えたりします。 忙しい週ほど、裏面は飛ばされます。
(d)確かめた記録が残らない。 台帳の備考に書くかは担当者次第で、事故が起きたあとに「この証明書は誰が見て通したのか」を答えられません。 担当者が休むと、その案件の確認はそのまま抜けます。
- 【人】 船積書類のメールから、保険証明書のPDFを受付フォルダに保存する(ファイル名に契約番号を入れる)
- 【自動】 保存をきっかけに処理が動き、形式・ページ数・パスワードの有無を確かめる
- 【自動】 AWS Textract が全ページを読み、キーと値、表、質問への答えと信頼度を返す
- 【自動】 生成AIが、読み取り結果から保険金額・通貨・担保条件・追加の約款・航路・貨物の記載を項目に分ける
- 【自動】 契約番号で案件台帳を引き、求める条件と照らして項目ごとに印を付ける
- 【自動】 印の組み合わせから、
ok/needs_correction/needs_humanを規則で決める - 【自動】
needs_correctionのものについて、売り手への訂正依頼の英文の下書きを作る - 【人】 担当者が
needs_correctionとneeds_humanの証明書だけを開き、印の根拠を確かめる - 【人】 売り手への訂正依頼を送るか、自社の保険会社に追加の手配を相談するかを決める
- 【人/自動】 確認の結果を案件台帳の列に書き、
okのものは一覧で流し見て確定する
8番目が、この設計の分かれ目です。 人が開くのは印の付いた証明書だけで、条件がそろったものは一覧で流し見て終わりにします。
6番目を規則で決めているのは、契約の条件が案件ごとに違うからです。 AIには証明書に何が書かれているかだけを答えさせます。
02今回想定するシステム構成
保険証明書(PDF。船積書類のメールに添付) ▼【トリガー】受付フォルダ(Amazon S3)への保存 AWS Lambda ── 形式・ページ数・パスワードの確認、契約番号の取り出し ▼ AWS Textract(StartDocumentAnalysis:FORMS/TABLES/QUERIES) │ 全文、キーと値、表、質問への答え、信頼度 ▼ Claude API ── 証明書の記載を項目に分ける │ ① 証明書番号・被保険者 ② 保険金額・通貨 ③ 担保条件 │ ④ 追加の約款(戦争・ストライキ) ⑤ 船名・仕出地・仕向地 │ ⑥ 貨物の記載・荷印 ⑦ 保険金の支払地・検査の連絡先 ▼ Python ── 案件台帳との照合(求める保険金額、通貨、担保条件、航路) ▼ 判定(ok / needs_correction / needs_human) ▼ 【担当者が印の付いた証明書だけを確認】 ├──▶ 売り手への訂正依頼(下書きを担当者が直して送る) └──▶ 自社の保険会社への追加手配の相談
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | AWS Textract(StartDocumentAnalysis/GetDocumentAnalysis) | Azure AI Document Intelligence、Google Document AI |
| 生成AI | Claude API(証明書の記載を項目に分ける) | OpenAI API、Gemini API |
| 差異計算 | Python(求める保険金額の計算、通貨・担保条件・航路の照合) | 案件台帳の関数 |
| 連携 | AWS Lambda(保存と完了の通知を起点に処理を動かす) | Amazon EventBridge |
| 保管 | Amazon S3(証明書、読み取り結果、照合の結果) | 社内のファイルサーバー |
案件台帳は、新しく足すものではありません。 最初の準備は、「求める担保条件」の列を決まった値(A、B、C)で書き直すことと、戦争・ストライキの約款を求めるかの列を足すことです。自由文のままでは、照合の規則が書けません。
OCRに AWS Textract を選ぶのは、証明書が英文だからです。 公式の上限の表では、対応言語は英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語とされ、日本語や中国語は読めません。 質問の検出は英語の文書だけが対象なので、この構成は英文の証明書に限ります。 欧州の売り手が現地語で発行した証明書は、文字は読めても質問が使えないため、担当者が目で見る一覧に入れます。
この題材で効くのは、質問(QUERIES)とページの指定です。 質問は対象ページを指定しないと既定で1ページ目だけに当たり、裏面に書かれた約款には届きません。 証明書は表と裏の2ページ程度のものが多いので、Pages に * を入れて全ページに当てます。質問は非同期の処理で1ページあたり30個までです。
03どうやって実装するのか
処理の起点を決める
受付フォルダ(Amazon S3)に保険証明書のPDFが保存されたことを起点にします。 保存の通知で AWS Lambda が動き、照合までを済ませます。1日1回の定時実行にはしません。
保存するのは担当者で、ファイル名の先頭に契約番号を入れる決まりにします。 メールの件名から自動で取る方法もありますが、売り手ごとに書き方が違い、取り違えると別の案件の条件で照合するため、最初は人が付けます。
再発行された証明書は、契約番号の末尾に版を付けて保存します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 保険証明書 | PDF。表面(保険金額・航路・貨物)と裏面(約款・請求の手順) | 受付フォルダ |
| 読み取り結果 | 全文、キーと値、表、質問への答え、信頼度 | AWS Textract |
| 案件の条件 | 契約番号、取引条件、契約金額、通貨、求める担保条件、保険金額の割合、戦争・ストライキの約款の要否、仕出地・仕向地、品名 | 案件台帳 |
| 船積の情報 | 船名、船積日、仕出港・仕向港(船荷証券の写しから担当者が台帳に入れたもの) | 案件台帳 |
| 約款の呼び方の一覧 | 「ICC (A)」「Institute Cargo Clauses (A)」など、同じ担保条件の別の書き方 | 自社で用意する一覧 |
質を決めるのは、下の3つです。 求める条件が決まった値で書かれていなければ照合の規則が書けず、約款の呼び方の一覧が無ければ、同じ (A) を別の条件として扱います。 一覧は読み慣れた担当者が過去の証明書から作り、一覧に無い書き方が出たら確かめてから足します。
データの取得方法を決める
読み取りは StartDocumentAnalysis に S3 の場所と FeatureTypes を渡して始めます。完了は NotificationChannel に指定した Amazon SNS のトピックに通知され、状態が SUCCEEDED なら GetDocumentAnalysis で結果を取ります。
| 指定するもの | 値 | 理由 |
|---|---|---|
FeatureTypes | FORMS、TABLES、QUERIES | 表面のキーと値、貨物の表、文章の中の条件 |
QueriesConfig | 質問の文と Alias、Pages に * | 裏面まで質問を当てる |
ClientRequestToken | ファイルのハッシュ | 同じ証明書で二重に読み取りを始めない |
JobTag | 契約番号 | 完了の通知から案件を引く |
OutputConfig | 自社の S3 の場所 | 読み取り結果を自社の側に残す |
Alias | 質問の文 |
|---|---|
CERT_NO | What is the certificate number? |
ASSURED | Who is the assured? |
SUM_INSURED | What is the amount insured? |
VESSEL | What is the name of the vessel or conveyance? |
VOYAGE_FROM | Where does the voyage start? |
VOYAGE_TO | What is the final destination of the voyage? |
CONDITIONS | What are the insurance conditions? |
CLAIMS_PAYABLE | Where are claims payable? |
担保条件のように表面と裏面の両方に書かれうる項目は、質問の答えだけに頼らず、全文を生成AIに渡して探させます。
結果は1回最大1,000ブロックで区切られ、NextToken が返る限り呼び直します。JobId は7日間しか有効でないため、取った結果はその場で S3 に保存します。 状態が PARTIAL_SUCCESS のときは Warnings のページ番号を記録し、そのページを読めなかったものとして扱います。
AIへ渡す前に整形する
- 形式の確認 … JPEG、PNG、PDF、TIFF であることを確かめます。XFA で作られたPDFは扱えないとされているので、印刷してPDFにし直します
- パスワードの確認 … PDFはパスワードで保護されていてはいけないとされています。保護されたものは、売り手に解除したものを頼みます
- サイズとページ数の確認 … 非同期の処理で、PDFとTIFFは500MB・3,000ページまでです。船積書類一式が1つのPDFで届いたときは、証明書のページだけを切り出します
- 言語の確認 … 英語以外の証明書は質問が使えないため、読み取りに回さず担当者の一覧に入れます
- 文字の大きさの確認 … 検出できる文字の高さの下限は15ピクセルで、150DPIで8ポイント相当です。裏面の約款はこの下限に近いことが多いため、スキャンの写しは解像度を確かめます
- 契約番号の確認 … ファイル名の契約番号で台帳が引けるかを確かめ、引けなければ処理を止めて担当者に戻します
5番目を軽く見ないでください。 写しをさらに写したPDFでは、裏面の小さな字の約款に読めない行が出ます。
AIに処理させる
させるのは、読み取り結果から7つの項目を取り出し、それぞれに根拠の文字列と状態を付けることだけです。 案件台帳との照合は Python が行い、AIには台帳を渡しません。
| 取り出すもの | 取り出し方 | 判断できないときの扱い |
|---|---|---|
| 証明書番号・被保険者 | 書かれたとおりに写す | 読めなければ unreadable |
| 保険金額・通貨 | 数値と通貨を分けて、書かれたとおりに写す | 金額が複数あれば ambiguous |
| 担保条件 | 書かれた文言をそのまま写し、一覧の呼び方に当てる | 一覧に無い書き方は unlisted |
| 追加の約款 | 戦争・ストライキの約款の記載の有無と文言 | 裏面が読めていなければ unreadable |
| 船名・仕出地・仕向地 | 書かれたとおりに写す。積み替え地があれば分ける | 「to be declared」等は not_fixed |
| 貨物の記載・荷印 | 品名、数量、荷印を写す | 明細が別紙参照なら reference_only |
| 保険金の支払地・検査の連絡先 | 都市名と、連絡先の会社名 | 書かれていなければ missing |
担保条件の欄が、この構成でいちばん大事です。 原文を evidence に写させ、一覧のどの呼び方に当たるかだけを選ばせます。
| させないこと | 理由 |
|---|---|
| 担保条件が契約に足りるかの判断 | 契約の条件との照合は規則で行う |
| 保険金額の計算・通貨の換算 | 照合は Python で行う。AIに計算させると根拠が追えない |
| 一覧に無い約款の読み替え | 「All Risks なので (A)」と決めると、違いを見落とす |
| 書かれていない約款の補い | 「通常は付いている」で埋めると、不足が消える |
| 保険を追加で手配すべきかの意見 | 売り手との交渉と自社の保険会社との相談は人が決める |
4行目がいちばん起きやすい失敗です。 指示で禁じたうえで、evidence が空の present が無いかを後段で機械的に確かめます。
指示内容を固定する
あなたは商社の輸入業務課で、売り手から届いた英文の貨物海上保険の
保険証明書を読み、記載を項目に分ける担当です。
AWS Textract の読み取り結果だけを見て答えてください。推測で埋めないでください。
【取り出す7項目】
1. 証明書番号と被保険者(Assured)
2. 保険金額(Amount Insured)と通貨
3. 担保条件(Conditions)
4. 追加の約款(戦争・ストライキ)
5. 船名、仕出地、積み替え地、仕向地
6. 貨物の記載(品名・数量)と荷印
7. 保険金の支払地(Claims payable at)と、仕向地での検査の連絡先
【status の選び方】
- present ........ 値が読み取れている
- missing ........ 該当する記載が無い。項目名だけがあって値が空の場合も missing
- unreadable ..... 文字は検出されているが信頼度が低く、値として確定できない
- ambiguous ...... 値の候補が複数あり、1つに決められない
- unlisted ....... 担保条件の文言が、約款の呼び方の一覧のどれにも当たらない
- not_fixed ...... 「to be declared」「TBA」など、値が未確定と書かれている
- reference_only . 「as per invoice」など、別の書類を参照するとだけ書かれている
迷ったときに present を選ばないでください。
【厳守事項】
- 金額と通貨は書かれたとおりに写してください。換算・丸め・合算をしないでください。
- 担保条件は、evidence に原文をそのまま写したうえで、
約款の呼び方の一覧のうち一致するものの記号(A/B/C)を選んでください。
一覧に一致するものが無ければ unlisted とし、読み替えないでください。
- 戦争・ストライキの約款は、表面と裏面の両方を探してください。
見つからなければ missing です。「通常は付いている」と補わないでください。
- 読み取りの警告が出ているページがあれば、そのページにありうる項目は
missing ではなく unreadable としてください。
- evidence には根拠の文字列を原文のまま、ページ番号と一緒に写してください。
- 契約の条件に足りるか、追加で保険を手配すべきかは書かないでください。
- 保険証明書でない書類(インボイス、保険料の請求書など)と判断した場合は、
項目を取り出さず document_type に種類を書いてください。
【読み取り結果】{textract_result}
【読み取りの警告があったページ】{warning_pages}
【約款の呼び方の一覧】{clause_aliases}
「迷ったときに present を選ばない」を区分の直後に置くのは、意図してのことです。 担保条件の欄には何かしらの約款名が必ず書かれているので、何も言わないと内容を見ずに present で通ります。
警告のあったページを渡すのは、missing と unreadable を分けるためです。 裏面が読めていないことを知らなければ、戦争の約款が見つからないことを、書かれていないこととして答えます。
出力形式を固定する
Claude API の構造化出力(output_config.format に json_schema)で、次の形のJSONを受け取ります。 数値の minimum・maximum の制約は使えないとされているため、値の範囲は Python の側で確かめます。
{
"contract_no": "IMP-2026-0912",
"document_type": "insurance_certificate",
"items": [
{ "item": "sum_insured", "status": "present",
"value": "USD 132,000.00", "amount": "132000.00", "currency": "USD",
"page": 1, "confidence": 98.1, "evidence": "Amount Insured: USD 132,000.00" },
{ "item": "conditions", "status": "present",
"value": "Institute Cargo Clauses (C) 1/1/09", "clause_code": "C",
"page": 1, "confidence": 96.4, "evidence": "Conditions: Institute Cargo Clauses (C) 1/1/09" }
]
}
items には7項目を並べます。item は cert_and_assured / sum_insured / conditions / war_strikes / voyage / cargo / claims_payable です。
照合は Python が台帳の条件と突き合わせて行い、項目ごとに印を付けます。
| 印 | 付く条件 |
|---|---|
amount_short | 保険金額が「契約金額 × 台帳の割合」に届かない |
currency_mismatch | 証明書の通貨が契約の通貨と違う |
clause_short | 担保条件の記号が、台帳で求める記号より下(求めた A に対して C など) |
war_strikes_missing | 台帳で求めているのに、戦争・ストライキの約款が missing |
voyage_mismatch | 仕出地・仕向地・船名が台帳の船積の情報と合わない |
cargo_mismatch | 品名が台帳の品名と合わない(呼び方の揺れの一覧で照らしたうえで) |
claims_place_missing | 保険金の支払地が missing |
判定は、印と状態の組み合わせで規則として決めます。
verdict | 条件 |
|---|---|
ok | 7項目がすべて present で、印が1つも無い |
needs_correction | 印が1つ以上あり、印の付いた項目の状態がすべて present か missing |
needs_human | unreadable・ambiguous・unlisted・not_fixed・reference_only が1つでもある |
status はAIが付け、印は Python が台帳と照らして付け、verdict は規則で決まります。 層を分けておけば、契約の条件が変わっても直すのは台帳と規則だけです。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受付フォルダ(Amazon S3) | 保存の通知で AWS Lambda を起動 | 証明書の保存を検知する |
| AWS Textract | API呼び出し(非同期) | 全文・キーと値・表・質問への答え・信頼度を返す |
| Claude API | API呼び出し | 7項目の取り出しと、訂正依頼の英文の下書き |
| 案件台帳 | 読み取り(照合)と、確認の列への書き込み | 条件を引き、確認の結果を書く |
| メール | 担当者が送る | 売り手への訂正依頼 |
案件台帳への書き込みは、「保険の確認」の列だけに限ります。 照合の元になる列を、照合する側が書き換えられないようにします。基幹システムの輸入管理とはつなぎません。
人が確認する
担当者が開くのは needs_correction と needs_human の証明書だけです。 ok のものは一覧で契約番号と売り手を流し見て、確認の列を確定します。
needs_humanを先に見る … 多くは裏面が読めていないか、一覧に無い約款の書き方ですneeds_correctionの印の根拠を確かめる …evidenceとページで、証明書の該当箇所を目で見ますclause_shortとamount_shortの対応を決める … 売り手に訂正を頼むか、自社で上乗せの保険を手配するかを、課長と決めます- 訂正依頼を送る … 下書きを直して送ります。送信は人が行います
- 印を覆したら記録する … どの印を、なぜ外したかを残します
3番目は、この構成が決めない部分です。 船がすでに出ていれば、売り手の保険を直すより自社で手配するほうが早いこともあります。
目標は、240件をならして1件4分です。 開くのは2割前後という想定です。
例外に対処する
| 起きること | 対応 |
|---|---|
| パスワード付きのPDF | 読めないので、売り手に解除したものを頼む |
| 船積書類一式が1つのPDF | 証明書のページだけを切り出して入れ直す |
| 英語以外の証明書 | 質問が使えないため、担当者の一覧に入れて目で見る |
状態が PARTIAL_SUCCESS | 警告のページを unreadable として扱い、needs_human へ |
| 保険金額が「as per invoice」 | reference_only。インボイスと突き合わせて人が確かめる |
| ファイル名の契約番号で台帳が引けない | 処理を止めて担当者に戻す。推測で近い案件に当てない |
| 保険証明書でなく保険料の請求書が届く | document_type を見て、照合せずに担当者に戻す |
| 処理が完了の通知を返さない | 受付フォルダに残す。処理済みへ移すのは成功時だけ |
上から4行目までが、試す段階でいちばん多く出るはずです。 どれも受け取り方の問題で、船積書類の案内に「保険証明書は単独の文字の入ったPDFで」と一文足せば多くは減ります。
記録を残す
- 元の証明書ファイル(版を含む)と、受け取った日時・送り主
- AWS Textract が返したJSONの全文と、
Warningsのページ - 生成AIが返した7項目のJSON、Python が付けた印、
verdict - そのとき参照した案件台帳の条件(求める担保条件、割合、戦争・ストライキの要否)
- 人が印を覆した記録 … どの印を、なぜ外したか
- 売り手への訂正依頼の日時と、再発行された証明書との対応
4つ目で「そのときの台帳の条件」を残すのは、契約の条件が後から変わることがあるからです。 当時の条件が残っていないと、事故のあとに「当時は足りていたのか」を答えられません。
04実装レベルの3段階
本記事の想定は半自動化です。 読み取りと照合と判定が自動になり、担当者は印の付いた証明書を確かめます。1件15分が4分になるのはこの段階です。 本格構成で足すのは、売り手ごとの傾向です。 同じ売り手が毎回 (C) で手配しているなら、次の契約で担保条件の書き方を見直すほうが早く済みます。
05工数削減シミュレーション
導入後 240件 × 4分 ÷ 60 = 16 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- CIFやCIPなど、売り手が貨物海上保険を手配する条件で海外から仕入れることが多い商社・メーカー・小売の輸入部門。海外の売り手や保険会社から英文の保険証明書(Insurance Certificate)がPDFで届き、保険金額・担保条件・航路が売買契約や信用状の条件に合っているかを担当者が目で見ている場合。月に百件を超える輸入案件があり、案件台帳(契約金額、通貨、求める担保条件、仕出地・仕向地)を表で持っている場合。
- FOBやFCAなど、自社(買い手)が保険を手配する条件の輸入が中心で、売り手から保険証明書が届かない場合。包括予定保険で自社の保険会社がすべての輸入を引き受けており、売り手の保険を確かめる工程が無い場合。保険証明書が日本語・中国語など英語以外で届くことが多い場合(この構成のOCRは英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語しか読めず、質問(Queries)は英語の文書だけが対象です)。なお、担保条件が十分かの評価、約款の解釈、保険を追加で手配するかの判断は、この構成では代替できません。
07最小構成で試す方法
- 先月届いた保険証明書から20件を選ぶ(表面に担保条件が無く裏面にだけあるもの、通貨が契約と違うもの、(C) のものを必ず入れる)
- 手元の生成AIの画面に1件ずつ渡し、「この保険証明書の、保険金額と通貨、担保条件、戦争・ストライキの約款の有無、船名・仕出地・仕向地、品名、保険金の支払地を、書かれたとおりに表にしてください。書かれていない項目は空欄にし、推測で埋めないでください。根拠の行を原文のまま添えてください」と指示する
- 出てきた表を案件台帳の条件と見比べ、当時の確認で見落としていた不足が無いかを数える
- 戦争・ストライキの約款について、AIの答えと証明書の原文を1件ずつ見比べる
20件は必ずやってください。 仕組みを組む前に、担保条件の書き方を読み替えないか、書かれていない約款を補わないかを確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 担保条件と約款を原文どおりに取り出した | OCRのAPIと照合の処理に進む |
| 見つからない約款を「通常は付いている」と答えた | 指示で禁じる。直るまで先に進まない |
| 裏面の字が読めない証明書が多い | 受け取り方が先。 売り手に単独のPDFを頼む |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 質問が裏面に当たらない | Pages を指定しないと1ページ目だけ。 * を入れる |
裏面が読めないのに約款が missing になる | Warnings のページを unreadable として渡す |
| 担保条件の書き方を読み替える | 原文を写させ、一覧に無いものは unlisted |
| 見つからない約款を補う | 指示で禁じ、evidence が空の present を機械的に拾う |
| 通貨の違いを見落とす | 金額と通貨を分けて取り出し、通貨の照合を先に行う |
| 台帳の条件が自由文で照合できない | 求める担保条件の列を A/B/C で書き直す |
| 品名が台帳と合わない | 売り手の品名と自社の品名の揺れの一覧を作る |
| 契約番号の取り違え | ファイル名の契約番号で引けなければ止める |
| 英語以外の証明書が混ざる | 質問は英語の文書だけ。担当者の一覧へ |
| 訂正依頼が自動で飛ぶ | 下書きまでにする。 送信は人が行う |
上の2行が、この構成の失敗のほとんどです。 どちらも裏面の扱いの問題で、質問のページの指定と読み取りの警告の扱いを最初から入れておけば防げます。
訂正依頼の自動送信は、最初から作らないでください。 誤った印のまま売り手に条件の不足を指摘することになります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 売り手と自社の名称、契約番号、契約金額と保険金額、品名と数量、船名と航路です。個人の情報はほとんど含まれませんが、取引の条件と金額がまとまっています。
- 外部へ渡す範囲を、証明書の読み取り結果までに限る … 案件台帳そのものはAIに渡さず、照合は Python の側で行います。 120社分の契約金額と条件の一覧を外へ出さないためです
- 読み取り結果を自社の側に置く …
OutputConfigで自社の S3 に出し、KMSKeyIdで自社の鍵による暗号化を指定できます。保管の期間を社内の文書管理の決まりに合わせます - 担保条件の評価を代替しない … この構成が出すのは、証明書に何が書かれているかと、台帳の条件との差です。補償が十分か、追加で手配するかは、課長と自社の保険会社が決めます
- 売り手への連絡を自動で送らない … 出すのは下書きまでです。誤った指摘は、売り手との関係に直接ひびきます
- 事故のあとに説明できる記録を残す … 誰が、いつ、どの印を見て通したかを残します
誤りが起きた場合のリスクは、不足を見落として通すことと、不足でないものを売り手に指摘することの2つです。 前者は unreadable を missing や present に混ぜると起き、後者は約款の書き方を読み替えないまま clause_short を付けると起きます。どちらも状態の区別から出ているので、そこだけは設計で守ります。
10まず何から始めるか
1週目:案件台帳の列を書き直す
「求める担保条件」の列を A/B/C の決まった値にし、戦争・ストライキの約款を求めるかの列と、保険金額の割合の列を足します。件数の多い上位30社の売り手との契約から埋めます。
2週目:20件で試す
先月の証明書から20件を選び、手元の生成AIに渡して項目を表にさせます。見つからない約款を補っていないか、担保条件の書き方を読み替えていないかを最優先で見ます。
3週目:約款の呼び方の一覧を作る
過去の証明書から担保条件と追加の約款の書き方を集め、どれが A・B・C に当たるかを課で決めます。迷う書き方は、自社の保険会社に確かめてから一覧に入れます。
4週目:受付フォルダから照合までをつなぐ
S3、Lambda、Textract、Claude API、Python の照合までを作ります。この時点では verdict を出さず、7項目と印の一覧だけを担当者が見ます。
2か月目: verdict を出し、needs_correction と needs_human の件数を毎週数えます。3か月目以降: 訂正依頼の下書きを足し、1件15分が何分になったかを実測します。売り手ごとの不足の傾向が見え、次の契約の条件の見直しに使えた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 対応形式が JPEG、PNG、PDF、TIFF で XFA のPDFは非対応なこと。非同期でPDFとTIFFが500MB・3,000ページまでなこと。PDFはパスワードで保護されていてはいけないこと。質問は非同期で1ページあたり30個までなこと。対応言語が英・仏・独・伊・葡・西の6つで、質問の検出は英語の文書だけなこと。検出できる文字の高さの下限が15ピクセル(150DPIで8ポイント相当)なこと。手書きは英語のみなこと | AWS: Set Quotas in Amazon Textract | 2026-10-15 |
質問の Pages を指定しないと既定で ["1"] になること。* で全ページを指せること。質問の文と Alias が200文字までなこと | AWS: Query | 2026-10-15 |
FeatureTypes に TABLES/FORMS/QUERIES を指定できること。完了が SNS に通知されること。ClientRequestToken で同じジョブの二重起動を防げること。JobTag が完了の通知に含まれること。OutputConfig と KMSKeyId で出力先と暗号化を指定できること。JobId が7日間有効なこと | AWS: StartDocumentAnalysis | 2026-10-15 |
結果が1回最大1,000ブロックで NextToken で続きを取ること。状態に PARTIAL_SUCCESS があり Warnings にページが返ること。質問の上限超過や存在しないページへの質問が INVALID_REQUEST_PARAMETERS として出ること | AWS: GetDocumentAnalysis | 2026-10-15 |
output_config.format に json_schema を指定するとスキーマに沿った JSON で返ること。数値の minimum・maximum と文字列の長さの制約が使えないこと | Claude: Structured outputs | 2026-10-15 |
| CIPでは売り手が Clauses 'A'(all risks)相当、CIFでは Clause 'C'(minimum cover)相当の保険を手配すること | ICC Academy: Incoterms 2020 CIP or CIF | 2026-10-15 |
担保条件が十分か、保険を追加で手配するかは、自社の保険会社と相談して決めてください。 本記事は公式のページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1674)についてのご相談はこちらから。
