Media > AI活用ユースケース > 経理 > 海外子会社の英文の銀行取引明細を毎月読み取り、会計の残高・明細と照合して、差異の理由の候補と要確認の一覧を作る

海外子会社の英文の銀行取引明細を毎月読み取り、会計の残高・明細と照合して、差異の理由の候補と要確認の一覧を作る

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

海外子会社から毎月集まる英文の銀行取引明細(Bank Statement)のPDFを読み取り、期首・期末の残高と入出金の明細を取り出します。それを子会社の会計の残高・明細と照合し、合わない明細に理由の候補を付けて、要確認の一覧にします。

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

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

導入前(Before)
  1. 子会社の経理が、銀行の明細のPDFと、預金勘定の元帳の書き出しを共有フォルダに置く
  2. 財務部の担当者が、口座ごとにPDFを開き、期首残高・期末残高・入出金の合計を表計算へ打ち込む
  3. 取引の行を、元帳の行と1行ずつ見比べる。金額と日付で探し、見つかったものに印を付ける
  4. 印の付かなかった行について、摘要(「SERVICE CHARGE」「INT CR」「FX CONV」など)から理由の見当を付ける
  5. 見当の付かないものは、子会社の経理へ英語で問い合わせのメールを書く
  6. 返答が来たら、差異の一覧に理由を書き込み、連結の担当へ渡す
導入後(After)
  1. 人子会社の経理が、明細のPDFと元帳の書き出しを、口座ごとの受付フォルダ(Amazon S3)に置く
  2. 自動保存をきっかけに AWS Lambda が動き、形式・ページ数・サイズ・パスワードの有無を確かめる
  3. 自動AWS Textract の非同期の文書分析を始め、表とセル、問いへの答えを受け取る
  4. 自動Python が口座の台帳を引き、数字と日付の書き方に合わせて、読み取った文字列を数値と日付に直す
  5. 自動Python が明細の中の計算(期首+入金-出金=期末、行ごとの残高の連続)と、前月の期末残高とのつながりを確かめる。合わなければ読み直しへ回す
  6. 自動計算が合った明細について、Python が元帳の行と金額・通貨・日付で照合する
  7. 自動照合できなかった行を Claude API に渡し、摘要と金額から差異の理由の候補を付けさせる
  8. 自動Python が残高の差異のうち、理由の候補で説明できる額と、説明できない額を計算する
  9. 人財務部の担当者が要確認の一覧を見て、理由の候補を確かめ、子会社への問い合わせを送るかを決める
各工程の詳しい説明を読む
  1. 子会社の経理が、銀行の明細のPDFと、預金勘定の元帳の書き出しを共有フォルダに置く
  2. 財務部の担当者が、口座ごとにPDFを開き、期首残高・期末残高・入出金の合計を表計算へ打ち込む
  3. 取引の行を、元帳の行と1行ずつ見比べる。金額と日付で探し、見つかったものに印を付ける
  4. 印の付かなかった行について、摘要(「SERVICE CHARGE」「INT CR」「FX CONV」など)から理由の見当を付ける
  5. 見当の付かないものは、子会社の経理へ英語で問い合わせのメールを書く
  6. 返答が来たら、差異の一覧に理由を書き込み、連結の担当へ渡す

(a)数字を打ち直している。 PDFの数字を表計算へ打ち込む時点で、1件あたり20分以上かかります。打ち間違いも、ここで入ります。 打ち間違いは会計との差異として表に出るので、子会社への問い合わせの後で「本社の打ち間違いでした」と分かることがあります。

(b)数字と日付の書き方が口座ごとに違う。 ドイツの銀行の「1.234,56」をそのまま打つと千倍の数字になります。英国の口座の「03/04」を3月4日と読むと、月をまたいだ取引の扱いを誤ります。担当者は口座ごとの癖を覚えていて、その記憶が引き継ぎの資料に書かれていません。

(c)差異の理由を探すのに時間がかかる。 未落ちの支払(会計では出金済み、銀行ではまだ)、入金の未着、銀行手数料や利息の計上漏れ、両替のときの換算差。理由の型は限られていますが、どの型に当たるかを摘要と金額から当てるのは担当者の経験です。

(d)月初に集中する。 60口座の明細が5営業日のうちに届き、連結の締めまでに終わらせる必要があります。丁寧に見るほど締めに間に合わず、忙しい月ほど行の見比べが粗くなります。

  1. 【人】 子会社の経理が、明細のPDFと元帳の書き出しを、口座ごとの受付フォルダ(Amazon S3)に置く
  2. 【自動】 保存をきっかけに AWS Lambda が動き、形式・ページ数・サイズ・パスワードの有無を確かめる
  3. 【自動】 AWS Textract の非同期の文書分析を始め、表とセル、問いへの答えを受け取る
  4. 【自動】 Python が口座の台帳を引き、数字と日付の書き方に合わせて、読み取った文字列を数値と日付に直す
  5. 【自動】 Python が明細の中の計算(期首+入金-出金=期末、行ごとの残高の連続)と、前月の期末残高とのつながりを確かめる。合わなければ読み直しへ回す
  6. 【自動】 計算が合った明細について、Python が元帳の行と金額・通貨・日付で照合する
  7. 【自動】 照合できなかった行を Claude API に渡し、摘要と金額から差異の理由の候補を付けさせる
  8. 【自動】 Python が残高の差異のうち、理由の候補で説明できる額と、説明できない額を計算する
  9. 【人】 財務部の担当者が要確認の一覧を見て、理由の候補を確かめ、子会社への問い合わせを送るかを決める

5番目が、この設計の分かれ目です。 明細の中で計算が合わないものは、会計と照合しません。照合すれば必ず差異が出て、その差異は子会社のせいではないからです。 読み直しに回る口座は、担当者がPDFを開いて該当の行だけを直します。

7番目でAIに計算をさせないのも、意図してのことです。 差異の額、説明できる額、説明できない額は Python が出します。AIが付けるのは、合わなかった行1つずつの「理由の候補」という言葉だけです。

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

構成図
英文の銀行取引明細(PDF)+ 預金勘定の元帳(CSV)
   ▼【トリガー】受付フォルダ(Amazon S3)への保存
AWS Lambda ── 形式・ページ数・サイズ・パスワードの確認
   ▼
AWS Textract(StartDocumentAnalysis:TABLES・QUERIES)
   │   表とセル(行・列・列見出し・信頼度)、口座番号・期間・残高への答え
   ▼  完了の通知(Amazon SNS)→ AWS Lambda が結果を取る
Python ── 口座の台帳の書き方で数値と日付に直す
   │   ① 明細の中の計算   ② 前月の期末とのつながり   ③ 元帳との照合
   ▼
Claude API ── 照合できなかった行に、差異の理由の候補を付ける
   ▼
Python ── 説明できる額と説明できない額の計算
   ▼
判定(reconciled / reconciled_with_items / needs_inquiry / needs_reread)
   ▼
【財務部の担当者が要確認のものを確認】
   └──▶ 子会社の経理への英文の問い合わせ(下書き)
役割想定する製品代替候補
OCRAWS Textract(StartDocumentAnalysis の TABLES・QUERIES)Azure AI Document Intelligence、Google Document AI
生成AIClaude API(差異の理由の候補と、問い合わせの下書き)OpenAI API、Gemini API
差異計算Python(数値への変換、明細の中の計算、元帳との照合)会計システムの預金照合の機能
連携AWS Lambda(保存と完了の通知を起点に処理を動かす)Amazon EventBridge
保管Amazon S3(明細、読み取り結果、照合の結果)社内のファイルサーバー

会計システムと口座の一覧は、新しく足すものではありません。 元帳は書き出したものを読むだけで、この構成から会計には書き込みません。口座の一覧に「数字の書き方」「日付の書き方」「入金と出金の列の形」を足すのが最初の準備作業です。

OCRに AWS Textract を選ぶのは、明細が英文だからです。 対応言語は英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語で、日本語や中国語、タイ語は対象外です。 タイの銀行の明細のうちタイ語と英語を併記したものは、英語の部分だけが読み取りの対象になります。

使う機能は2つです。 入出金の表は TABLES で受け取ります。Textract の表は、セルごとの行と列の位置と信頼度に加えて、列見出し(COLUMN_HEADER)、表の題名、脚注、集計のセル(TABLE_SUMMARY)を区別して返します。 口座番号、明細の期間、期首・期末の残高は QUERIES(「What is the closing balance?」のような英語の問いに、答えと信頼度を返す機能)で取ります。問いは英語の文書でだけ使える機能で、この題材には合っています。

複数ページのPDFは、非同期の処理でしか扱えません。 同期の処理はPDFとTIFFで1ページまでで、非同期の処理はPDFとTIFFで500MB・3,000ページまでです。Textract に人の確認を組み込む Amazon Augmented AI は使いません。 2026年7月に保守モードに入り、新規の受け付けを停止しているためです。

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

Step1

処理の起点を決める

受付フォルダに明細のPDFが保存されたことを起点にします。 口座ごとにフォルダを分け、PDFと元帳のCSVがそろった時点で処理を始めます。片方しか無いうちは動かしません。 明細だけで読み取りを進めると、照合の段で元帳が無く、要確認の一覧が「元帳なし」で埋まります。

Textract の非同期の処理は、StartDocumentAnalysis で始め、完了を Amazon SNS のトピックへ通知します。その通知を AWS Lambda で受けて、GetDocumentAnalysis で結果を取ります。 ドキュメントは、Get の操作を繰り返し呼んで完了を待つやり方を勧めていません。呼びすぎると絞られるためです。

同じ明細を二重に処理しないように、ClientRequestToken を付けます。 同じトークンで同じ入力の Start を呼ぶと、同じジョブ番号が返り、処理はやり直されません。トークンには「口座の番号+明細の期間+ファイルのハッシュ」を使います。

Step2

入力データを集める

データ中身取得元
銀行取引明細英文のPDF。期間、口座番号、通貨、期首・期末残高、取引の表子会社の経理
読み取り結果表とセル(行・列・列見出し・信頼度)、問いへの答えと信頼度AWS Textract
預金勘定の元帳日付、金額、通貨、摘要、伝票番号子会社の会計システムの書き出し
口座の台帳子会社、銀行、口座番号(末尾4桁)、通貨、数字と日付の書き方、入出金の列の形財務部が管理する一覧
前月の結果前月の期末残高と、持ち越した差異の一覧この構成の前月の記録

質を決めるのは、口座の台帳と前月の結果です。 台帳に書き方が無ければ、「03/04」をどちらの日付と読むかが決まりません。前月の結果が無ければ、先月の未落ちの支払が今月落ちたのかどうかが分かりません。

入出金の列の形は、銀行ごとに3つほどに分かれます。 「入金」と「出金」の列が分かれている形、1つの金額の列に符号(- や末尾の DR)が付く形、金額の列とは別に「DR/CR」の列がある形です。台帳にどの形かを書いておき、Python の変換の規則を選びます。

Step3

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

取るものどこから何に使うか
表とセルTABLES の TABLE・CELL ブロック取引の行(日付、摘要、金額、残高)
列見出しCOLUMN_HEADER のセルどの列が金額で、どの列が残高か
集計のセルTABLE_SUMMARY のセル入金・出金の合計(照合の行から外す)
問いへの答えQUERY_RESULT ブロック(信頼度つき)口座番号、期間、通貨、期首・期末残高
全文の行LINE ブロック表の外にある残高や注記の拾い直し

問いは、1ページに5つほどにとどめます。 非同期の処理では1ページあたり30問まで使えますが、残高は1ページ目か最後のページにしかないことが多いので、問いに Pages を指定して、聞くページを絞ります。

結果は自社のS3に書き出させます。 非同期の処理の結果は、既定では Textract が持つ場所に7日間だけ保管され、7日を過ぎると取り出せません。OutputConfig で自社のバケットを指定し、照合の記録と同じ場所に残します。

Step4

AIへ渡す前に整形する

  1. 形式の確認 … 受け付けるのはPDF、TIFF、JPEG、PNG。XFA形式のPDFには対応しないため、印刷用のPDFに出し直してもらう
  2. パスワードの確認 … パスワード付きのPDFは扱えない。子会社にパスワードを外したPDFを置いてもらう
  3. ページ数とサイズの確認 … 非同期の処理で500MB・3,000ページまで
  4. 口座の特定 … ファイル名と問いで取った口座番号の末尾4桁を、口座の台帳と突き合わせる
  5. 数値への変換 … 台帳の書き方で「1.234,56」「(1,234.56)」「1,234.56-」「1,234.56 DR」を符号付きの数値に直す
  6. 日付への変換 … 台帳の書き方で日・月の順を決める。13以上の数が無い日付は、明細の期間の中に収まるほうを取り、両方収まるなら印を付ける
  7. 行の整理 … 「Balance brought forward」「Balance carried forward」のような繰越の行と、集計のセルを、取引の行から外す
  8. ページをまたぐ表の連結 … 各ページの表の列見出しをそろえ、1つの取引の一覧にする

7番目を落とすと、照合が根こそぎ崩れます。 繰越の行は金額を持っているので、取引として数えると入金・出金の合計がずれ、明細の中の計算が全ページで合わなくなります。

Step5

AIに処理させる

残高の計算と照合は、すべて Python が行います。 AIにさせるのは、照合できなかった行に、決まった区分の中から理由の候補を付けることと、問い合わせの下書きを書くことだけです。

理由の候補手がかり次にすること
outstanding_payment(未落ちの支払)元帳では出金済み、明細に無い。小切手や月末の送金翌月の明細で落ちるかを見る
deposit_in_transit(未着の入金)元帳では入金済み、明細に無い翌月の明細で入るかを見る
bank_charge_unbooked(手数料の未計上)明細の摘要が「CHARGE」「FEE」「COMMISSION」子会社に計上を依頼
interest_unbooked(利息の未計上)摘要が「INTEREST」「INT CR」子会社に計上を依頼
fx_conversion(両替の換算差)摘要が「FX」「CONVERSION」、金額が近いが一致しない換算に使ったレートを確かめる
duplicate_booking(二重計上)元帳に同じ金額・摘要の行が2つ子会社に確認
unknown(不明)上のどれにも当たらない子会社に問い合わせ

AIに選ばせる区分は、この7つに限ります。 区分が自由文だと、毎月の件数が数えられず、子会社ごとの傾向も見えません。

させないこと理由
差異の額の計算Python が出す。AIの足し算を照合に混ぜない
読み取った金額の補正「たぶんこの数字」に直さない。読み直しは人が行う
仕訳の作成差異をどう処理するかは担当者が決める
理由の断定出すのは候補。確かめるのは子会社への問い合わせ
説明できない額を候補で埋めるunknown を残すことに意味がある

2行目がいちばん起きやすい失敗です。 「1,234.56 と 1,234.65 の差は読み違いだろう」とAIに直させると、本当に金額が違う取引を消してしまいます。 読み違いを疑うのは、明細の中の計算が合わないときだけで、それは第5章の5番目で読み直しに回っています。

Step6

指示内容を固定する

あなたは本社の財務部で、海外子会社の預金残高を確かめる担当者です。
銀行の明細と会計の元帳を照合した結果、照合できなかった行を渡します。
各行について、差異の理由の候補を1つ選んでください。

【選べる区分】
outstanding_payment / deposit_in_transit / bank_charge_unbooked /
interest_unbooked / fx_conversion / duplicate_booking / unknown

【厳守事項】
- 計算をしないでください。差異の額は渡した値をそのまま使ってください。
- 金額や日付を直さないでください。読み違いと考えられる場合も、
  直した値を書かずに unknown とし、note に「読み取りの確認が必要」と書いてください。
- 手がかりが摘要と金額に無い場合は unknown を選んでください。
  もっともらしい区分で埋めないでください。
- evidence には、判断の根拠にした摘要の文字列をそのまま写してください。
- 前月から持ち越した行の一覧に同じ金額のものがあれば、
  carried_from に前月の行の番号を入れてください。
- 仕訳の案や、処理の方法を書かないでください。
- 子会社への問い合わせの下書きは英語で、unknown と duplicate_booking の行だけについて、
  日付・金額・摘要を示して理由を尋ねる文にしてください。

【口座】{account_profile}(数字・日付の書き方を含む)
【照合できなかった行(明細側)】{unmatched_statement_lines}
【照合できなかった行(元帳側)】{unmatched_ledger_lines}
【前月から持ち越した行】{carried_items}

「直した値を書かない」を明記しないと、直してきます。 1桁違いの金額が2つ並んでいれば、人の目にも読み違いに見え、AIは親切に揃えます。揃えた瞬間に、照合の記録から事実が消えます。

「もっともらしい区分で埋めない」も同じ理由です。 7つのうちどれかを選べと言われれば、手がかりが薄くても fx_conversion あたりを選びます。unknown が残ることを、指示の側で許します。

Step7

出力形式を固定する

次の形のJSONで受け取ります。 Claude API の構造化出力で、output_config.format にJSONスキーマを指定し、reason を enum で7つに限ります。オブジェクトには additionalProperties: false を付けます。

{
  "account_key": "SG01-USD-4821",
  "period": "2026-09",
  "items": [
    { "side": "statement | ledger", "line_no": 0,
      "reason": "outstanding_payment | deposit_in_transit | bank_charge_unbooked | interest_unbooked | fx_conversion | duplicate_booking | unknown",
      "evidence": "", "carried_from": "", "note": "" }
  ],
  "inquiry_draft": ""
}

照合の結果の全体は、Python が次の形でまとめます。

{
  "account_key": "SG01-USD-4821",
  "statement_opening": 0, "statement_closing": 0, "ledger_closing": 0,
  "internal_check": "ok | mismatch",
  "continuity_check": "ok | mismatch",
  "difference": 0, "explained": 0, "unexplained": 0,
  "verdict": "reconciled | reconciled_with_items | needs_inquiry | needs_reread"
}

1つ目の理由は、AIの出力と計算の出力を分けておけることです。 items はAIが埋め、difference と unexplained は Python が計算します。AIの区分が誤っていても、金額は誤りません。

2つ目は、verdict を規則で決められることです。

verdict条件
needs_rereadinternal_check か continuity_check が mismatch
reconciled差異が0
reconciled_with_items差異があり、すべて outstanding_payment か deposit_in_transit で説明できる
needs_inquiryunknown・duplicate_booking があるか、unexplained が0でない

3つ目は、翌月に持ち越せることです。 outstanding_payment の行は翌月の入力の「前月から持ち越した行」になり、翌月に落ちなければ、2か月続けて残った行として目立たせます。

Step8

システムへ連携する

つなぎ先方式内容
受付フォルダ(Amazon S3)保存の通知で AWS Lambda を起動明細と元帳がそろったら処理を始める
AWS TextractStartDocumentAnalysis/GetDocumentAnalysis表と問いの読み取り。完了は Amazon SNS で受ける
口座の台帳読み取りのみ書き方と口座の特定
Claude APIAPI呼び出し理由の候補と問い合わせの下書き
照合の一覧Python が書き出す口座ごとの verdict と差異の明細
会計システム連携しない仕訳は担当者が別に起こす

会計システムへは書き込みません。 手数料や利息の未計上が見つかっても、計上するのは子会社の経理です。この構成が出すのは照合の結果までで、書き込みを足すと、読み違いが仕訳まで一息に進みます。

Step9

人が確認する

人が開くのは、needs_reread と needs_inquiry の口座だけです。 reconciled と reconciled_with_items は、一覧で口座と差異の額を流し見ます。

  1. needs_reread を先に見る … PDFの該当のページを開き、計算が合わない行の数字を目で確かめて直す
  2. needs_inquiry の候補を確かめる … evidence の摘要と金額を見て、理由の候補が妥当かを判断する
  3. 問い合わせを送るかを決める … 下書きを直して送る。送信は人が行う
  4. 候補を覆したら記録する … どの行を、どの区分に変えたかを残す

1番目で直した数字は、元の読み取り結果を上書きしません。 直した値と直した人を別に記録し、どの口座のどの列で読み違いが多いかを数えます。

Step10

例外に対処する

起きること対応
パスワード付きのPDF扱えない。子会社にパスワードを外したものを置いてもらう
XFA形式のPDF対応しない。印刷用のPDFに出し直してもらう
英語以外の言語だけの明細読めない。口座の台帳で対象外とし、従来どおり目視
文字が小さすぎる文字の高さの下限は15ピクセル(150dpiで8ポイント)。画質の良いPDFを取り直す
口座番号が台帳と合わない処理を止める。別の口座の明細が置かれていないかを先に疑う
期首残高が前月の期末と合わないneeds_reread。明細の期間の抜けか、前月の読み違いを疑う
日付の日・月の順が決まらない印を付けて照合の幅を広げ、一覧で人が確かめる
表の列見出しが読めない前月の同じ口座の列の並びを使い、needs_reread を付ける
Textract の結果が取れない7日を過ぎると取り出せない。結果は自社のS3に書き出しておく

上から3行目は、運用で決めておく話です。 タイ語だけの明細や、中国語の明細はこの構成では読めません。対象外の口座をはっきりさせ、そこだけ従来の手順を残します。

Step11

記録を残す

  • 元の明細のPDFと元帳のCSV、受け取った日時と置いた人
  • Textract の読み取り結果の全文(自社のS3に書き出したもの)
  • 数値と日付への変換に使った口座の台帳の内容(そのときの書き方の設定)
  • 照合の結果(internal_check、difference、unexplained、verdict)
  • AIの出力(items、inquiry_draft)と、人が覆した記録
  • 子会社への問い合わせと返答、持ち越した行の翌月の結果

台帳の設定を残すのは、書き方の設定を後から直すことがあるためです。 日付の順を誤って設定していた口座は、過去の照合をどこまでやり直すかを、そのときの設定から決めます。

04実装レベルの3段階

最小構成:手元のAIサービスにPDFを貼り、表と残高を書き出させる / 1口座ずつの読み取りの確認
半自動化:上記+Textract の非同期の処理、Python の変換と明細の中の計算、元帳との照合、AIによる理由の候補 / 読み取り、計算の確認、照合、理由の候補の一覧
本格構成:上記+持ち越した行の翌月の自動の確認、子会社ごとの傾向の集計、問い合わせの返答の取り込み / 照合から持ち越しの管理まで

最小構成では60口座はさばけません。 確かめるための段階です。 半自動化で、1件50分が15分程度になります。 打ち込みと見比べは無くなり、残るのは要確認の口座の確認と、問い合わせの判断です。 この段階が本記事の想定です。本格構成では、先月の未落ちの支払が今月落ちたかの確認も自動になり、問い合わせが要る行がさらに絞られます。 段階を飛ばさないでください。 半自動化を2か月回すと、needs_reread の多い口座と、unknown の多い子会社が見えます。そこを直してから持ち越しの管理を自動にするほうが、誤った持ち越しが積み上がりません。

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

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

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

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

AI活用について相談する

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

向いている
  1. 海外に子会社や支店を複数持ち、現地の銀行口座が数十あり、本社の財務部が毎月その残高を確かめている商社・製造業・物流業。現地の銀行から電子データ(取引明細のファイル連携)を受け取れず、英文の銀行取引明細をPDFで集めている場合。子会社の会計の残高と明細を表計算や会計システムから書き出せる場合。月次の連結の前に、預金残高の差異の理由を子会社に問い合わせる作業が担当者の経験に頼っている場合。
向いていない
  1. 明細が英語以外(日本語・中国語・タイ語など)だけで書かれている場合(この構成のOCRは英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語しか読めません)。銀行から取引明細を電子データで受け取れる場合(OCRより先にそちらを使うべきです)。口座が数口座で、目視で足りる場合。なお、差異をどう処理するか(仕訳を起こすか、銀行へ照会するか)の判断は、この構成では代替できません。

07最小構成で試す方法

  1. 先月の明細から、様式の違う銀行の口座を5つ選ぶ(うち1つは、差異の理由が分かっている口座にする)
  2. 5口座のPDFと元帳の書き出しを用意する
  3. 手元のAIサービスにPDFを貼り、「期首残高、期末残高、取引の表を、日付・摘要・入金・出金・残高の列で書き出してください。数字は見えたとおりに写し、直さないでください」と指示する
  4. 書き出した表を表計算に貼り、期首+入金-出金=期末が合うかを確かめる
  5. 元帳と見比べ、合わない行について理由の区分を選ばせ、当時の担当者の判断と突き合わせる

5口座は必ずやってください。 Textract とワークフローを組む前に、口座ごとの様式で表が取れるのかを確かめます。

出てきた内容判断
表が取れ、計算も合うTextract と Python の照合に進む
表は取れるが、繰越の行が取引に混ざる前処理で外せる。構成は有効
計算が合わない口座が多い書き方の設定が先。 数字と日付の書き方を台帳に書く

3行目が出ることは珍しくありません。 ドイツの口座の「1.234,56」や、末尾の DR の扱いで計算がずれます。AIの読み取りの問題ではなく、数字の解釈の問題です。 台帳に書き方を書いてから、同じ5口座で試し直してください。

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

問題対策
読み違いが会計との差異として出る明細の中の計算を先に確かめ、合わなければ照合しない
繰越の行が取引に数えられる「brought forward」などの行と集計のセルを外す
「1.234,56」が千倍になる口座の台帳に数字の書き方を持たせる
日・月の順を取り違える台帳に日付の書き方を持たせ、決まらないものに印を付ける
AIが金額を直して照合を通す直した値を書かせない。 指示とスキーマで縛る
手がかりの薄い行に区分を当てはめるunknown を許すと指示に書く
パスワード付きのPDFで止まる扱えない。子会社に外したものを置いてもらう
複数ページの明細が同期の処理で通らない同期は1ページまで。非同期の処理を使う
結果が後から取り出せない7日で消える。OutputConfig で自社のS3へ
同じ明細を二重に処理するClientRequestToken を付ける
タイ語・中国語だけの明細読めない。対象外の口座として台帳に記す
子会社への問い合わせが自動で飛ぶ下書きまでにする。 送信は人が行う

上の2行が、この構成の失敗のほとんどです。 どちらも、明細の中で閉じるべき誤りが会計との差異に混ざる問題です。照合の前に明細そのものの計算を確かめる1段を置くかどうかで、運用に乗るかが決まります。

5行目も、同じくらい早く効いてきます。 AIが親切に金額を揃えると、照合の一覧はきれいになりますが、本当に違っていた取引が見えなくなります。

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

この構成で扱うデータ: 海外子会社の口座番号、残高、すべての入出金の金額と相手先の名前が書かれた摘要です。取引先との取引の規模が、そのまま読み取れる情報です。

  1. AIに渡す範囲を、照合できなかった行に限る … 明細の全体はOCRの段で読みますが、生成AIに渡すのは合わなかった行と、その口座の書き方の設定だけにします。口座番号は末尾4桁にします
  2. 読み取り結果の置き場所を自社に固定する … OutputConfig で自社のバケットを指定すると、暗号化に自社の鍵を指定することもできます。明細と結果を同じ権限の範囲で管理します
  3. 受付フォルダの権限を子会社ごとに分ける … 子会社の経理は自社の口座のフォルダにだけ置けるようにします。他社の明細が見える設計にしません
  4. 差異の処理を自動で決めない … 手数料の計上、二重計上の取り消し、銀行への照会は担当者が決めます。この構成が出すのは理由の候補です
  5. 問い合わせを自動で送らない … 下書きまでにします。子会社の経理との関係と、問い合わせの文面の正確さに関わります
  6. パスワードを仕組みに預けない … パスワード付きのPDFを自動で外す設計にすると、パスワードの管理そのものが重くなります。 外したものを置いてもらう運用にします

誤りが起きた場合のリスクは、本当の差異を見落とすことと、存在しない差異を子会社に問い合わせることの2つです。 前者はAIに金額を直させると起き、後者は読み違いを照合に混ぜると起きます。どちらも、明細の中の計算と会計との照合を別の段に置くことで守ります。

10まず何から始めるか

1週目:口座の台帳に書き方の列を足す

口座の一覧に、数字の書き方、日付の書き方、入出金の列の形の3列を足します。60口座を一度に埋める必要はありません。取引の多い決済用の口座10から埋めます。 あわせて、英語で読めない明細の口座に「対象外」の印を付けます。

2週目:5口座で試す

様式の違う5口座のPDFを手元のAIサービスに貼り、表と残高を書き出させます。期首+入金-出金=期末が合うかを最優先で見ます。

3週目:子会社の置き方を決める

子会社ごとに受付フォルダを分け、明細のPDF(パスワードを外したもの)と元帳のCSVを口座ごとに置く手順を決めます。元帳の書き出しの列の並びもそろえてもらいます。

4週目:Textract から明細の中の計算までをつなぐ

保存をきっかけに Textract の非同期の処理を動かし、Python で変換と明細の中の計算を行うところまで作ります。この時点では元帳と照合せず、internal_check が合うかだけを見ます。

2か月目: 元帳との照合と、AIによる理由の候補を足し、verdict を出します。needs_reread と needs_inquiry の口座を毎月数えます。3か月目以降: 持ち越した行の翌月の確認を足し、1件50分が何分になったかを実測します。needs_reread が月に数口座まで減り、子会社への問い合わせが unknown の行だけになった時点で、この構成は完成です。


11関連ユースケース

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

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

技術仕様確認日:2026-10-01/最終更新:2026-10-02
確認した内容情報源確認日
受け付ける形式がJPEG、PNG、PDF、TIFFで、XFA形式のPDFに対応しないこと。同期処理が10MB・PDFとTIFFで1ページまで、非同期処理がPDFとTIFFで500MB・3,000ページまでであること。パスワード付きPDFを扱えないこと。問いが同期で1ページ15問、非同期で30問までであること。対応言語が英・仏・独・伊・葡・西で、問いは英語の文書だけで使えること。縦書きに対応しないこと。文字の高さの下限が15ピクセル(150dpiで8ポイント)であることAWS: Amazon Textract の固定のクォータ2026-10-01
AnalyzeDocument の FeatureTypes(TABLES・FORMS・QUERIES・SIGNATURES・LAYOUT)。表とセル、問いと答え(信頼度つき)のブロック。同期処理であり、非同期は StartDocumentAnalysis を使うこと。Amazon Augmented AI が2026年7月に保守モードに入り新規の受け付けを停止したことAWS: AnalyzeDocument2026-10-01
表のセル、結合されたセル、列見出し、表の題名・脚注、集計のセルが区別されて返ること。表の種類(構造化・半構造化)。セルの行・列の位置と信頼度AWS: Tables2026-10-01
非同期処理がS3の文書を対象に、完了を Amazon SNS に通知し、Get の操作で結果を取ること。Get を繰り返し呼んで完了を待つやり方を勧めないこと。ClientRequestToken で二重の処理を防げること。結果が既定で7日間保管され、OutputConfig で自社のバケットと暗号化の鍵を指定できることAWS: 非同期処理の呼び出し2026-10-01
構造化出力で output_config.format にJSONスキーマを指定できること。enum が使えること。オブジェクトに additionalProperties: false が必要なことClaude: Structured outputs2026-10-01

差異をどう処理するか、どの口座を照合の対象とするかは、自社の財務部と経理部、子会社の経理で決めてください。 本記事は上記の公開情報で確認できた範囲だけを扱っています。

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

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

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

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