Media > AI活用ユースケース > 経理 > 海外の取引先から届く英文の送金明細(Remittance Advice)を読み取り、請求書ごとの支払額・銀行手数料・相殺を拾って、入金の消込の候補と差額の理由を出す

海外の取引先から届く英文の送金明細(Remittance Advice)を読み取り、請求書ごとの支払額・銀行手数料・相殺を拾って、入金の消込の候補と差額の理由を出す

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

海外の取引先から届く英文の送金明細を読み取り、請求書番号ごとの支払額・相殺・差し引かれた銀行手数料を明細の行にそろえます。銀行の入金の記録と売掛金の明細に照らし、消込の候補と、入金額が請求額と合わない理由の候補を財務担当に回します。

サマリー
生成AI
ChatGPT/Claude/Gemini
AIサービス
AWS Textract/Azure AI/Google Document AI
連携・自動化
Python
対象業界
商社/製造
対象部門
経理/財務
対象業務
データ入力・転記/内容確認・チェック
主な課題
入力作業が多い/判断に時間がかかる/確認ミスが多い
AIで行う処理
読み取り(OCR)
主な効果
入力漏れ削減/判断支援/工数削減
導入難易度
★★★☆☆
実装レベル
半自動化
費用感
API連携(中)
人間の確認
必須
現在工数
90h/月
AI導入後
24h/月
想定削減
73%
年間削減
792h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. インターネットバンキングで、その日の外貨の被仕向送金の到着の記録を確かめる
  2. 取引先から届いた送金明細のPDFをメールから探し、到着の記録と依頼人の名前・金額で対応を付ける
  3. 送金明細の請求書番号と金額を、販売管理の仕組みの売掛金の明細と1行ずつ照らす
  4. 送金明細の合計と入金額の差を出し、手数料か、相殺か、説明の無い不足かを分ける
  5. 取引先の条件の一覧を見て、手数料を費用に落とすか、取引先に請求し直すかを決める
  6. 会計の仕組みで消込を入力し、残った差を営業に知らせる
導入後(After)
  1. 人財務担当が、取引先から届いた送金明細のPDFを受け取りの場所(Amazon S3)に保存する。メールの受信から自動で保存してもよい
  2. 自動保存をきっかけに、AWS Textract が表と項目の読み取りを非同期で始める
  3. 自動プログラムが表のセルから「請求書番号・請求額・支払額・差し引き額・理由」の行を組み立てる
  4. 自動Claude API が、差し引きの行の文を決められた区分に当てはめ、参照しているクレジットノートの番号などを根拠の文と一緒に写す
  5. 自動プログラムが、銀行の被仕向送金の到着の記録と依頼人・金額・日付で対応を付け、売掛金の未消込の明細と請求書番号で照らす
  6. 自動プログラムが、取引先の条件の一覧から手数料の取り決めを引き、差額を「中継銀行の手数料の見込み」「取引先が差し引いた手数料」「相殺」「説明の無い不足」に分けて、消込の候補を出す
  7. 人財務担当が、照合できなかった行と説明の無い差のある入金を先に見て、消込の候補を直す
  8. 人財務担当が消込を会計の仕組みに入力し、請求し直す差額は営業に知らせる
各工程の詳しい説明を読む
  1. インターネットバンキングで、その日の外貨の被仕向送金の到着の記録を確かめる
  2. 取引先から届いた送金明細のPDFをメールから探し、到着の記録と依頼人の名前・金額で対応を付ける
  3. 送金明細の請求書番号と金額を、販売管理の仕組みの売掛金の明細と1行ずつ照らす
  4. 送金明細の合計と入金額の差を出し、手数料か、相殺か、説明の無い不足かを分ける
  5. 取引先の条件の一覧を見て、手数料を費用に落とすか、取引先に請求し直すかを決める
  6. 会計の仕組みで消込を入力し、残った差を営業に知らせる

(a)写すだけで時間がかかる。 1件の送金明細に請求書が10行並ぶことは珍しくありません。請求書番号の先頭の0が落ちている、取引先側の注文番号が書かれている、自社の請求書番号の枝番が無いといった書き方の違いを見ながら、売掛金の明細を探します。

(b)差額の理由が送金明細と銀行の記録に分かれている。 相殺は送金明細に書かれ、途中の銀行が差し引いた手数料は送金明細には書かれず、入金額が少なくなるだけです。取引先が「Less bank charges」と自分で差し引き、その上に途中の銀行がさらに差し引くと、差額は二重になります。

(c)差額の扱いが担当者で違う。 30ドルの不足を手数料として費用に落とす担当者と、取り決めどおり取引先に請求し直す担当者がいます。取引先の条件の一覧を見に行く手間を省くと、扱いは担当者の感覚で決まり、どの入金でいくら差があったかを後から並べられません。

(d)相殺の根拠を追えない。 「Less CN」とだけ書かれた行は、どのクレジットノートの分かが分からないことがあります。同じ値引きが二度差し引かれていても気づきません。

  1. 【人】 財務担当が、取引先から届いた送金明細のPDFを受け取りの場所(Amazon S3)に保存する。メールの受信から自動で保存してもよい
  2. 【自動】 保存をきっかけに、AWS Textract が表と項目の読み取りを非同期で始める
  3. 【自動】 プログラムが表のセルから「請求書番号・請求額・支払額・差し引き額・理由」の行を組み立てる
  4. 【自動】 Claude API が、差し引きの行の文を決められた区分に当てはめ、参照しているクレジットノートの番号などを根拠の文と一緒に写す
  5. 【自動】 プログラムが、銀行の被仕向送金の到着の記録と依頼人・金額・日付で対応を付け、売掛金の未消込の明細と請求書番号で照らす
  6. 【自動】 プログラムが、取引先の条件の一覧から手数料の取り決めを引き、差額を「中継銀行の手数料の見込み」「取引先が差し引いた手数料」「相殺」「説明の無い不足」に分けて、消込の候補を出す
  7. 【人】 財務担当が、照合できなかった行と説明の無い差のある入金を先に見て、消込の候補を直す
  8. 【人】 財務担当が消込を会計の仕組みに入力し、請求し直す差額は営業に知らせる

4番目と6番目を分けているのが、この設計の分かれ目です。 「Less 2% early payment discount」が値引きか、「Deduct claim ref. Q-118」が品質のクレームの相殺かを分けるのは言葉を扱う作業で、規則では書き切れません。一方、その差を認めるか請求し直すかは、取引先との取り決めの問題です。 AIには区分までをさせ、扱いは取引先の条件の一覧から規則で決めます。区分を後から直しても、照合をやり直すだけで済みます。

6番目で「中継銀行の手数料」を「見込み」としているのは、その金額がどこにも書かれていないことが多いからです。 相殺などで説明できない残りを、負担の区分と照らして候補にするだけです。

02今回想定するシステム構成

構成図
送金明細(英文のPDF。取引先からメールで届く)
   │  メールの添付を受け取りの場所へ保存
   ▼【トリガー】Amazon S3 への保存
AWS Lambda ── StartDocumentAnalysis(FeatureTypes:TABLES、FORMS、QUERIES)
   ▼
AWS Textract(非同期の文書分析)── 完了の通知(Amazon SNS)
   ▼
AWS Lambda ── GetDocumentAnalysis
   ├──▶ Python:表のセルから請求書ごとの行を組み立てる
   ├──▶ Claude API:差し引きの行の区分と参照番号(根拠の文付き)
   ├──▶ Python:銀行の到着の記録との対応付け
   └──▶ Python:売掛金の明細との照合と差額の分解
   ▼
消込の候補と確認事項の一覧(財務担当が確認)
   ▼
会計の仕組みへの消込の入力(人)/営業への差額の連絡
役割想定する製品代替候補
OCRAWS Textract(StartDocumentAnalysis/GetDocumentAnalysis。TABLES・FORMS・QUERIES)Azure AI Document Intelligence、Google Document AI
生成AIClaude API(差し引きの行の区分と参照番号の書き出し)OpenAI API、Gemini API
差異計算Python(請求書番号の照合、入金額との差の分解、消込の候補)会計の仕組みの消込の補助機能
連携AWS Lambda(保存と完了の通知を起点に処理を動かす)AWS Step Functions
保管Amazon S3(送金明細の原本、読み取り結果、確認の記録)社内のファイルサーバー

土台は、AWS Textract の表の読み取りです。 送金明細の多くは「Invoice No./Invoice Date/Invoice Amount/Discount/Amount Paid」の列を持つ表で、行と列の対応が崩れると、ある請求書の支払額が隣の請求書に付きます。 Textract の表の機能は、セルごとに行の番号と列の番号を返し、列の見出しのセルや表の題名・脚注も区別して返すとされています。2ページ以上の送金明細があるので、非同期の StartDocumentAnalysis を使います。

Textract を選べるのは、送金明細が英文だからです。 公式の対応言語は英語・フランス語・ドイツ語・イタリア語・ポルトガル語・スペイン語で、手書きは英語だけ、問い合わせ(クエリ)は英語の文書でだけ使えます。日本の取引先から届く日本語の支払通知書には使えません。 国内分は UC-0454 のように別の読み取りのサービスで扱います。

販売管理の仕組みと会計の仕組みには書き込みません。 消込の候補は財務担当が確かめてから会計の仕組みに入力します。

03どうやって実装するのか

Step1

処理の起点を決める

受け取りの場所(S3 のフォルダ)にPDFが保存されたことを起点にします。 財務部の共有のメールアドレスに届いた添付を remit/<受信日>/ へ保存します。手で保存する運用から始めても、そこから先は同じです。

読み取りを始めるとき、ClientRequestToken に「受信日+メールの識別子+添付の番号」を入れます。 公式のページでは、同じトークンで StartDocumentAnalysis を呼ぶと同じ JobId が返り、同じジョブを誤って二度始めるのを防げるとされています。完了は Amazon SNS の通知で受け、JobTag でどのファイルかを知ります。JobId は7日間だけ有効なので、結果はその場で S3 に保存します。

銀行の到着の記録は、毎朝インターネットバンキングから前日分を書き出して置きます。 入金は送金明細より遅れることが多いので、先に届いた送金明細は「入金待ち」として保留し、到着の記録が来た日に照合をやり直します。

Step2

入力データを集める

データ中身取得元
送金明細支払者の名前、支払日、通貨、支払の合計、請求書番号ごとの請求額・支払額・差し引き額・理由の文、銀行の参照番号取引先から届くPDF
読み取り結果表のセル(行・列・見出し)、キーと値の組、問い合わせの答え、行と単語、信頼度AWS Textract
被仕向送金の到着の記録到着日、依頼人の名前、通貨、送金の金額、入金した金額、手数料の負担の区分、依頼人からのメッセージ取引銀行のインターネットバンキングから書き出したファイル
売掛金の未消込の明細取引先コード、請求書番号、請求日、通貨、請求額、未消込の残高、発行済みのクレジットノートの番号と金額販売管理の仕組みから書き出したファイル
取引先の条件の一覧送金の手数料の取り決め(買い手の負担/それぞれの負担/決めていない)、差額を費用に落としてよい上限、取引先側の名前の書き方の一覧営業と財務が整える表計算のファイル

質を決めるのは、いちばん下の取引先の条件の一覧です。 手数料の取り決めが無いと、差額を「取り決めどおり」と「請求し直す候補」に分けられません。差額を費用に落としてよい上限も、先に決めて書いておきます。 書いていない取引先は、差額のある入金をすべて人に回します。

依頼人の名前は、親会社や支払を代行する会社の名前で届くことがあります。 一覧に無い名前の入金は、金額が合っていても自動では対応を付けません。

Step3

データの取得方法を決める

取るものどこから何に使うか
請求書ごとの行TABLES の TABLE・CELL のブロック(行の番号・列の番号・列の見出し)請求書番号・請求額・支払額・差し引き額・理由の行の組み立て
支払者・支払日・通貨・合計QUERIES の QUERY_RESULT、FORMS のキーと値の組到着の記録との対応付け
銀行の参照番号QUERIES の QUERY_RESULT、LINE のブロック到着の記録の参照番号との照合
表の外の注記表の脚注(TABLE_FOOTER)、LINE のブロック「Bank charges for beneficiary's account」などの注記

表は、TABLE のブロックから CELL を行の番号・列の番号の順に並べて組み立てます。 公式のページでは、セルには行と列の位置が付き、列の見出しのセルには COLUMN_HEADER の印が付くとされています。見出しのセルの文字から、どの列が請求書番号・請求額・支払額・差し引き額かを決めます。見出しの言い方は取引先ごとに違う(Invoice No./Document No./Your Reference、Amount Paid/Payment Amount/Net など)ので、言い換えの一覧を持ちます。

合計の行にも気を付けます。 公式のページでは、合計の行のセルに TABLE_SUMMARY の印が付くことがあるとされています。請求書の行として数えると支払額が二重になるので、送金明細の合計として別に持ち、行の合計との一致を確かめます。

問い合わせは、表の外にある項目だけに使います。

問い合わせ(Text)Alias
What is the name of the payer?PAYER
What is the payment date?PAY_DATE
What is the total payment amount?PAY_TOTAL
What is the currency?CURRENCY
What is the bank reference number?BANK_REF

**問い合わせには Pages: ["*"] を付けます。 公式のページでは、ページを指定しないと既定で1ページ目だけに当てる**とされ、最後のページにある合計が空で返ります。

結果は NextToken が返る限り GetDocumentAnalysis を呼び続け、全ページ分をそろえてから組み立てます。 公式のページでは、1回で返るブロックは最大1,000件とされています。

Step4

AIへ渡す前に整形する

  1. 形式の確認 … JPEG、PNG、PDF、TIFF のどれかであることを確かめます。XFA の形式のPDFとパスワードで保護されたPDFは扱えないとされています。取引先の仕組みがパスワード付きで送ってくる場合は、取引先に外してもらうか、財務担当が外してから保存します
  2. ページをまたぐ表のつなぎ … 次のページの表の列の見出しが同じなら、1つの表としてつなぎます
  3. 金額の読み方の統一 … 「1.234,56」(欧州の書き方)と「1,234.56」を、取引先ごとの設定で読み分けます。設定の無い取引先で区切りが1つだけの金額は人に回します
  4. 負の数の読み方 … 「(120.00)」「-120.00」「120.00 CR」を差し引きの値として読みます
  5. 請求書番号の正規化 … 先頭の0、ハイフン、取引先側で付けた接頭辞を外した形を別に作ります。元の文字列も残し、照合の根拠として使います

3番目を軽く見ないでください。 「1.250」が1,250ユーロか1.25ユーロかを取り違えると、消込が1,000倍ずれます。 取引先ごとに設定し、送金明細の合計と行の合計の一致で確かめます。

Step5

AIに処理させる

させるのは、差し引きの行の文を区分に当てはめることと、参照している番号を写すことだけです。 読み取りは Textract、照合と計算はプログラムが行います。

させること中身できないときの扱い
差し引きの区分行の文を、値引き・クレジットノート・品質のクレーム・リベート・取引先が差し引いた銀行手数料・前払いや過払いの充当・その他のどれかに当てはめる文から決められなければ unclear
参照番号の書き出し文の中にあるクレジットノートの番号、クレームの番号、請求書番号を、そのまま写す無ければ空にする
注記の区分表の外の注記が、手数料の負担について書いたものかを分ける決められなければ unclear
根拠の文判断に使った文を、そのまま写す必ず埋める

差し引きの区分は、その差し引きを認めるかの判断ではありません。 値引きに分けても、それを認めているかは取り決めで決まります。

させないこと理由
金額の計算と合計プログラムが読み取った値から計算する
どの請求書に充てるかの決定請求書番号の照合で決め、決まらなければ人が決める
差額を誰が負担するかの結論取引先との取り決めと、財務担当・営業の判断で決まる
書かれていない手数料の金額の推定送金明細と到着の記録の差からプログラムが出す
請求書番号の補い番号が書かれていない行に、金額の近い請求書を当てない

4行目がいちばん起きやすい失敗です。 合計と入金額の差を見せると、AIは「中継銀行の手数料と思われる」と金額まで書きがちです。AIには入金額を渡しません。 差の分解はプログラムが行います。

Step6

指示内容を固定する

あなたは商社の財務部で、海外の取引先から届いた送金明細(Remittance Advice)の
差し引きの行を整理する担当者を手伝います。
渡された「行の一覧(行番号・請求書番号・請求額・支払額・差し引き額・理由の文)」と
「表の外の注記」と「区分の表」だけを見てください。

【やること】
- 差し引き額のある行ごとに、deduction_type を次のどれかで付けてください。
  discount ........ 早期の支払・数量などの値引きと書かれている
  credit_note ..... クレジットノート(CN、Credit Memo)の充当と書かれている
  claim ........... 品質・数量・遅れのクレームと書かれている
  rebate .......... リベート・販売奨励と書かれている
  bank_charge ..... 取引先が銀行の手数料を差し引いたと書かれている
  prepayment ...... 前払い・過払いの充当と書かれている
  other ........... 上のどれでもないが、理由は書かれている
  unclear ......... 理由が書かれていない、または文から決められない
- 文の中にある番号を、ref_numbers にそのまま写してください(例:CN 2611-08)。
- 表の外の注記ごとに、note_type を charge_terms(手数料の負担の書き方)か
  other か unclear で付けてください。
- evidence には、判断に使った文をそのまま写してください。

【厳守事項】
- 金額を計算しないでください。渡された値をそのまま返してください。
- 差し引きを認めるか、請求し直すかを書かないでください。
- 誰が手数料を負担すべきかを書かないでください。
- 理由の文が「Deduction」「Adj.」だけの行は unclear です。
- 番号が書かれていない行に、番号を補わないでください。
- 迷ったときに discount や bank_charge を選ばないでください。unclear にしてください。

「Deduction だけの行は unclear」を例として書くのは、AIが前後の行から理由を補いがちだからです。 補った区分で消込を済ませると、自社が発行していないクレジットノートの分を認めることになります。 bank_charge を独立の区分にしているのは、取引先が自分で差し引いた手数料を、途中の銀行の手数料と分けるためです。

Step7

出力形式を固定する

区分は、Claude API の構造化出力で形を決めて受けます。 公式のページでは、output_config.format に JSON スキーマを渡すと、スキーマに合う JSON が返るとされ、正式提供の機能です。ただし、数値の minimum/maximum などの制約はスキーマに書けないとされているので、値の範囲はプログラムで確かめます。

{
  "advice_id": "remit/2026-10-14/msg-0412-1",
  "rows": [
    { "row_no": 3, "invoice_ref": "INV-26-07731",
      "deduction_type": "credit_note", "ref_numbers": ["CN 2611-08"],
      "evidence": "Less CN 2611-08 price adjustment" },
    { "row_no": 6, "invoice_ref": "INV-26-07802",
      "deduction_type": "unclear", "ref_numbers": [],
      "evidence": "Adj." }
  ],
  "notes": [
    { "note_type": "charge_terms",
      "evidence": "All bank charges outside our country are for beneficiary's account" }
  ]
}

プログラムは、これに照合と差額の分解の結果を足して消込の候補にします。

{
  "currency": "USD",
  "advice_total": 48210.00,
  "received_amount": 48175.00,
  "matches": [
    { "invoice_no": "INV-26-07731", "open_amount": 12400.00,
      "paid": 11900.00, "credit_note": "CN-2611-08", "cn_amount": 500.00,
      "status": "matched" }
  ],
  "gap": { "advice_vs_received": 35.00,
           "explained_by": "intermediary_charge_estimate",
           "charge_terms": "SHA", "within_writeoff_limit": true },
  "checks": [ "row_6_unclear_deduction" ]
}

形を分けるのは、区分と照合を別の層に置くためです。 rows はAIが埋め、matches と gap はプログラムが決めます。区分を1行直せば照合はやり直すだけで済み、差額の根拠も入金ごとに残ります。

checks決め方(プログラム)
invoice_not_found正規化しても売掛金の明細に無い請求書番号がある
cn_not_issued書き出したクレジットノートの番号が、発行済みのものに無い
unclear_deductiondeduction_type が unclear の行がある
total_mismatch行の合計と送金明細の合計が合わない
gap_over_limit説明できない差が、費用に落としてよい上限を超える
double_charge取引先が差し引いた手数料があり、さらに入金額が送金明細の合計より少ない
awaiting_receipt送金明細に対応する到着の記録がまだ無い
Step8

システムへ連携する

つなぎ先方式内容
Amazon S3保存の通知で Lambda を動かす送金明細の原本と到着の記録を受ける
AWS TextractStartDocumentAnalysis/GetDocumentAnalysis表のセル・キーと値の組・問い合わせの答え・行・信頼度
Amazon SNS完了の通知JobTag でファイルを知る
売掛金の未消込の明細書き出したファイルを読む読み取りだけ
取引先の条件の一覧書き出したファイルを読む読み取りだけ
Claude APIAPI呼び出し(構造化出力)差し引きの区分と参照番号
財務担当消込の候補と確認事項を共有の場所に置き、チャットで知らせる確認、修正、会計の仕組みへの入力

会計の仕組みへの消込の入力は人が行います。 候補の数字がそのまま消込になると、誤りがそのまま売掛金の残高に進みます。取引先の条件の一覧にも書き込みません。 消込の都合で条件を書き換えると、契約と扱いが食い違います。

Step9

人が確認する

財務担当が全件の消込の候補を見ます。 見る順を決めておきます。

  1. checks のあるものを先に見る … 照合できない請求書番号、合計の不一致を原本で確かめます
  2. unclear の行と cn_not_issued を読む … 原本の文を読み、必要なら取引先の経理に問い合わせます
  3. gap_over_limit と double_charge を確かめる … 差額を取引先に請求し直すかを、取引先の条件と営業の意見で決めます
  4. 会計の仕組みに消込を入力する … 候補を確かめたものだけを入力します
  5. 請求し直す差額を営業に知らせる … 取引先への連絡は営業と財務担当が行います
Step10

例外に対処する

起きること対応
パスワード付き・XFA のPDF読めない。取引先に送り直してもらうか、外してから保存
表として読めない(文だけの送金明細)LINE のブロックから行を組み立てる。組み立てられなければ人へ
請求書番号が売掛金の明細に無いinvoice_not_found。金額の近い請求書に当てない
1つの送金で複数の取引先の分が払われる名前の書き方の一覧で分け、分けられなければ人へ
送金明細の通貨と入金の通貨が違う取引先が別の通貨で払った。照合を止め、人が換算と扱いを決める
入金はあるが送金明細が届かない到着の記録のメッセージ欄から候補を出し、確定は送金明細を取り寄せてから

5行目が、この構成で最も守りたいことです。 通貨が違う入金を換算して自動で照合すると、相場の差を手数料の差と取り違えます。

Step11

記録を残す

  • 送金明細の原本と、受け取ったメールの識別子・受信日
  • Textract が返した結果の全文と、組み立てた行の一覧
  • AIの区分の結果(rows、notes)と根拠の文
  • 照合と差額の分解の結果(matches、gap、checks)と、そのとき使った取引先の条件
  • 財務担当が直した消込 … どの行を、どの請求書に、なぜ充て直したか
  • 請求し直した差額と、営業に知らせた日

4つ目で「そのときの取引先の条件」を残すのは、取り決めが後から変わるためです。 当時の条件が残っていないと、どの入金をやり直すかが決まりません。

04実装レベルの3段階

最小構成:コンソールで送金明細を読み取り、区分を手元のAIサービスで付ける / 請求書番号と金額を写す手作業
半自動化:上記+保存を起点に自動で読み取り、行の組み立て・区分・到着の記録と売掛金の明細との照合・差額の分解まで出す / 消込の候補と確認事項の洗い出し
本格構成:上記+販売管理の仕組みと連携し、確認済みの消込を登録し、差額の請求し直しの連絡の下書きまで作る / 消込の登録と、差額の連絡の準備

半自動化で、1件15分が4分になり、この段階が本記事の想定です。 写す作業と差の計算は無くなり、人は照合できない行と理由の付かない差を確かめます。 本格構成は、消込の入力の件数が多い会社で検討します。 ただし、その前に取引先の条件の一覧と差額の上限を半年回して固めておく必要があります。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
4 名
月間件数
360 件
1件あたり現在時間
15 分
1件あたり導入後時間
4 分
現在  360件 × 15分 ÷ 60 = 90 時間/月
導入後 360件 × 4分 ÷ 60 = 24 時間/月
月間削減時間
66h
削減率
73%
年間削減時間
792h
年間金額換算(時間単価3,500円)
277万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. 輸出の代金を米ドル・ユーロなどの外貨で受け取り、海外の取引先から英文の送金明細がメールのPDFで月に数百件届く商社・メーカーの財務部・経理部。1回の送金で複数の請求書がまとめて払われ、値引き・クレジットノートの相殺・銀行手数料の差し引きで入金額が請求額と合わず、財務担当が送金明細と銀行の到着の記録と売掛金の明細を並べて手で消し込んでいる場合。差額をどこまで取引先に請求し直すかの判断が担当者によって違う場合。
向いていない
  1. 海外からの入金が月に数十件で、目で消し込んで足りる場合。取引先が送金明細を構造化されたデータ(銀行や決済の仕組みの電子の明細)で送ってきて、読み取りが要らない場合。送金明細が英語・フランス語・ドイツ語・イタリア語・ポルトガル語・スペイン語以外の言語だけで書かれている場合(この構成で使う読み取りのサービスはこの6言語に対応します)。なお、差額を取引先に請求し直すか、手数料として費用に落とすか、どの請求書に充てるかの判断は財務担当と営業が行います。この構成は消込の候補と差額の理由の候補を出すまでです。

07最小構成で試す方法

  1. 消込が終わった先月の入金から、取引先の違う送金明細を20件選ぶ(うち数件は、相殺と手数料が両方あったもの、欧州の取引先のものを入れる)
  2. AWS のコンソールで Textract の文書分析を開き、表の読み取りを有効にして読み取る
  3. 読み取った表を表計算に書き出し、当時の消込の記録と並べる
  4. 手元のAIサービスに、差し引きの行の文と区分の表を貼り、区分を付けさせる
  5. 付けた区分を、当時の担当者が判断した差額の扱いと比べる

区分が同じで扱いが違うなら、それは取り決めの問題で、AIの問題ではありません。

出てきた内容判断
表が崩れずに読め、区分も当時の扱いと合った照合のプログラムの組み立てに進む
欧州の書き方の金額や合計の行で数字がずれた前処理の設定で直る。構成は有効
AIが理由の無い差し引きに理由を補った指示の縛りで直す。構成は有効

08実装時につまずきやすいポイント

問題対策
合計の行を請求書の行として数えるTABLE_SUMMARY の印と、行の合計と送金明細の合計の一致で確かめる
問い合わせの答えが最後のページから取れない問い合わせに Pages: ["*"] を付ける
欧州の書き方の金額を取り違える取引先ごとに小数点の書き方を設定し、合計の一致で確かめる
請求書番号の書き方の違いで照合できない正規化した形と元の文字列の両方で照合する
AIが理由の無い差し引きに理由を補う「Deduction だけの行は unclear」と例を示して縛る
取引先が差し引いた手数料の上に、途中の銀行がさらに差し引くdouble_charge で拾い、取り決めと照らして人が決める
送金明細が先に届き、入金がまだ無い「入金待ち」として保留し、到着の記録が来た日に照合をやり直す

6行目は、AIの問題ではなく手数料の負担の区分の問題です。 取引銀行の被仕向送金の到着の記録のデータには、手数料の負担の区分(OUR/SHA/BEN)の項目があります。三菱UFJ銀行の外為の手数料のページでは、送金銀行の指示で手数料が受取人の負担となる場合や、負担の指示が無い場合に、被仕向送金の手数料がかかるとされています。ゆうちょ銀行の案内でも、仲介の手数料は受取人の負担で送金の金額から差し引かれる扱いだけとされています。区分と取引先の取り決めを並べて見れば、差額が取り決めどおりかが分かります。ただし、実際に差し引かれる額は経由した銀行によって違うので、金額を規則で決めつけません。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 取引先の名前、請求書番号と金額、値引きやクレームの内容、送金の依頼人と口座に関わる情報、取引先ごとの手数料の取り決めです。個人情報は少ないものの、取引の条件と入金の記録そのものです。

  1. 生成AIに渡す範囲を絞る … 区分には、差し引きの行の文と表の外の注記と区分の表だけを渡します。入金額、口座の情報、取引先の条件の一覧は渡しません
  2. 受け取りの場所の権限を絞る … S3 のフォルダは財務部と処理のプログラムだけが読めるようにし、結果は KMSKeyId を指定した暗号化で保存します
  3. 消込の候補をそのまま入力しない … 財務担当が確かめてから会計の仕組みに入力します
  4. 取引先への連絡を自動にしない … 差額の請求し直しや問い合わせは、営業と財務担当が行います
  5. 区分を負担の判断として使わない … 区分は送金明細に書かれた理由の整理で、誰が差額を負担するかは取り決めと判断で決まります

誤りが起きた場合のリスクは、取引先が不当に差し引いた分を手数料として費用に落とすことと、取り決めどおりの手数料を取引先に請求し直して関係を損ねることの2つです。 どちらも区分か照合の規則の誤りから起きるので、区分は根拠の文を残し、扱いは取引先の条件から選ぶ設計で防ぎます。

10まず何から始めるか

1週目:取引先の条件の一覧を整える

営業と一緒に、入金の件数の多い取引先から、送金の手数料の取り決めと、差額を費用に落としてよい上限を書き出します。

2週目:20件で読み取りを試す

取引先の違う20件をコンソールで読み取り、当時の消込の記録と並べます。合計の行、ページをまたぐ表、欧州の書き方の金額で数字がずれないかを最優先で見ます。

3週目:区分を当時の扱いと比べる

手元のAIサービスで20件の差し引きの行を区分に分け、当時の担当者の扱いと比べます。理由の無い差し引きに理由を補っていないかを確かめ、指示を直します。

4週目:保存から照合までをつなぐ

保存を起点に読み取り、行を組み立て、区分を付け、到着の記録と売掛金の明細と照らすところまで作ります。照合は、件数の多い取引先の書式1つから始めます。

2か月目: 照合の規則を増やし、checks と unclear の件数を毎週数えます。3か月目以降: 1件15分が何分になったかを実測し、販売管理の仕組みへの登録を検討します。財務担当が替わっても同じ扱いで差額を分けられるようになった時点で、この構成は完成です。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-10-15/最終更新:2026-10-15
確認した内容情報源確認日
対応する形式が JPEG・PNG・PDF・TIFF で XFA の形式のPDFは扱えないこと。パスワードで保護されたPDFは扱えないこと。非同期でPDFは3,000ページまでであること。対応言語が英語・フランス語・ドイツ語・イタリア語・ポルトガル語・スペイン語で、手書きは英語だけであること。問い合わせは英語の文書だけで、非同期で1ページ30件までであることAWS: Set Quotas in Amazon Textract2026-10-15
StartDocumentAnalysis の FeatureTypes に TABLES・FORMS・QUERIES・SIGNATURES・LAYOUT があること。文書を S3 に置くこと。完了の状態が SNS に通知されること。ClientRequestToken で同じジョブの二重の開始を防げること。JobTag が通知に含まれること。KMSKeyId で結果を暗号化できること。JobId が7日間だけ有効であることAWS: StartDocumentAnalysis2026-10-15
GetDocumentAnalysis が表を TABLE と CELL、キーと値の組を KEY_VALUE_SET、問い合わせを QUERY と QUERY_RESULT、行と単語を LINE と WORD のブロックで返すこと。1回で返すのは最大1,000件で、NextToken でページを送ることAWS: GetDocumentAnalysis2026-10-15
問い合わせの Pages を指定しないと既定で1ページ目だけになること。* で全ページを指定できることAWS: Query2026-10-15
表のセルに行と列の位置が付くこと。セルに COLUMN_HEADER・TABLE_TITLE・TABLE_FOOTER・TABLE_SECTION_TITLE・TABLE_SUMMARY の印が付くことAWS: Tables(Amazon Textract)2026-10-15
output_config.format に JSON スキーマを渡すとスキーマに合う JSON が返ること。正式提供の機能であること。数値の minimum/maximum などの制約に対応しないことClaude Docs: Structured outputs2026-10-15
送金銀行の指示で手数料が受取人の負担となる場合や、負担の指示が無い場合に、被仕向送金の手数料がかかること三菱UFJ銀行: 外為手数料2026-10-15
海外への送金で、仲介の手数料を送金人の負担にはできず、受取人の負担(送金の金額から差し引く)の扱いだけであることゆうちょ銀行: よくあるご質問 No.10282026-10-15
被仕向送金の到着の案内のデータに、手数料の負担の区分(OUR/SHA/BEN)の項目があること三菱UFJ銀行: 被仕向送金到着案内 全銀フォーマット2026-10-15

差額を取引先に請求し直すか、手数料として費用に落とすか、どの請求書に充てるかは、取引先との取り決めにもとづいて財務担当と営業が決めてください。 本記事は公開されている製品の仕様と資料で確認できた範囲だけを扱っています。手数料の額と扱いは取引銀行と経由する銀行によって違います。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-1590)についてのご相談はこちらから。

AI活用について相談する
目次