海外の現地法人から毎月届く英文の給与明細を読み取り、赴任者給与の台帳に転記して、規程の手当との食い違いを拾う
海外の現地法人から毎月届く英文の給与明細(Payslip)を読み取り、支給額・控除・現地の税額を本社の費目にそろえて、赴任者給与の台帳に転記します。海外赴任規程で決めた手当の額と、現地で実際に支給された額との食い違いを拾います。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 連携・自動化
- Python
- 対象業界
- IT・SaaS/商社/製造
- 対象部門
- 人事/財務
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- 入力作業が多い/属人化している/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/属人化解消/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 現地法人の人事から、赴任者ごとの給与明細のPDFがメールで届く
- 担当者がPDFを開き、赴任者の名前と対象の月を確かめる
- 支給の項目(基本給、各種の手当、残業代、賞与)、控除の項目(現地の税、社会保険、年金、そのほかの天引き)、差引の支給額を読み、赴任者給与の台帳に書き写す
- 通貨と支給の期間(月払い/半月払い/隔週払い)を確かめ、為替レートの表で円に換算する
- 海外赴任規程と国別の手当の表を開き、住宅・家族・ハードシップなどの手当が規程の額と合っているかを見る
- 前月の明細と比べて、大きく変わった項目がないかを見る
- 食い違いがあれば、現地の人事に英語で照会のメールを書く
- 人現地法人の人事が、給与明細のPDFを国ごとのアップロード先(Amazon S3)に置く
- 自動保存を起点に関数が動き、形式・サイズ・ページ数・パスワードの有無を確かめる
- 自動AWS Textract が表、キーと値のペア、問い合わせ(Queries)の答えを返す
- 自動Claude API が明細の行を本社の費目に当てはめ、根拠の文字列と信頼度を付ける
- 自動プログラムが通貨と支給の期間を確かめ、為替の表で円に換算し、支給・控除・差引の検算をする
- 自動プログラムが規程の手当の表と赴任者の情報(帯同の有無、赴任と帰任の日)に照らし、食い違いに印を付ける
- 自動前月の台帳と比べ、大きく動いた項目に印を付ける
- 自動印の付いた赴任者について、Claude API が現地の人事への照会文(英文)の下書きを作る
- 人担当者が台帳の案と印の付いた項目を確かめ、台帳に確定する
- 人照会文を直して現地の人事に送る
各工程の詳しい説明を読む
- 現地法人の人事から、赴任者ごとの給与明細のPDFがメールで届く
- 担当者がPDFを開き、赴任者の名前と対象の月を確かめる
- 支給の項目(基本給、各種の手当、残業代、賞与)、控除の項目(現地の税、社会保険、年金、そのほかの天引き)、差引の支給額を読み、赴任者給与の台帳に書き写す
- 通貨と支給の期間(月払い/半月払い/隔週払い)を確かめ、為替レートの表で円に換算する
- 海外赴任規程と国別の手当の表を開き、住宅・家族・ハードシップなどの手当が規程の額と合っているかを見る
- 前月の明細と比べて、大きく変わった項目がないかを見る
- 食い違いがあれば、現地の人事に英語で照会のメールを書く
(a)項目名が国ごとに違う。 3番目で、どの行が本社のどの費目に当たるかを毎回考えます。「Allowance」とだけ書かれた行が何の手当かは、その国の明細に慣れた担当者にしか分かりません。 担当者が替わると、最初の数か月は1件ごとに前任者の台帳を見返すことになります。
(b)手当の支給漏れや二重払いに気づくのが遅い。 5番目は時間のかかる確認で、締めの前の忙しい月は省かれます。家族の帯同が始まった月に家族の手当が付いていない、帰任した月の翌月にも住宅の手当が付いている。 こうした食い違いが、数か月後の精算で初めて見つかります。
(c)支給の期間がそろわない。 米国の現地法人では隔週払いの明細が月に2枚届くことがあり、2枚を足して1か月分にするか、1枚ずつ台帳に入れるかが担当者によって違います。 台帳の月ごとの合計が、そのせいで前月と比べられなくなります。
(d)照会の英文を毎回書く。 7番目の照会は、何を聞くかが決まっているのに、1件ずつ英文を書いています。
- 【人】 現地法人の人事が、給与明細のPDFを国ごとのアップロード先(Amazon S3)に置く
- 【自動】 保存を起点に関数が動き、形式・サイズ・ページ数・パスワードの有無を確かめる
- 【自動】 AWS Textract が表、キーと値のペア、問い合わせ(Queries)の答えを返す
- 【自動】 Claude API が明細の行を本社の費目に当てはめ、根拠の文字列と信頼度を付ける
- 【自動】 プログラムが通貨と支給の期間を確かめ、為替の表で円に換算し、支給・控除・差引の検算をする
- 【自動】 プログラムが規程の手当の表と赴任者の情報(帯同の有無、赴任と帰任の日)に照らし、食い違いに印を付ける
- 【自動】 前月の台帳と比べ、大きく動いた項目に印を付ける
- 【自動】 印の付いた赴任者について、Claude API が現地の人事への照会文(英文)の下書きを作る
- 【人】 担当者が台帳の案と印の付いた項目を確かめ、台帳に確定する
- 【人】 照会文を直して現地の人事に送る
9番目が、この設計の分かれ目です。 担当者は150件の明細を全部開くのではなく、台帳の案と印の付いた項目の根拠だけを見ます。 印の無い赴任者は、費目ごとの値と根拠の文字列を流し読みして確定します。
5番目から7番目をプログラムにしているのも、意図してのことです。 検算、換算、規程の額との比較は答えが1つに決まる作業です。生成AIに任せると、たまに「おおむね合っている」と書きます。AIにさせるのは、明細の行を費目に当てはめることだけです。
02今回想定するシステム構成
現地法人の人事(英文の給与明細PDF) ▼【トリガー】Amazon S3 への保存(国ごとの受付の場所) AWS Lambda ── 形式・サイズ・ページ数・パスワードの確認 ▼ AWS Textract(StartDocumentAnalysis:TABLES/FORMS/QUERIES) │ 完了の通知は Amazon SNS へ ▼ AWS Lambda ── GetDocumentAnalysis で結果を取得 ▼ Claude API ── 明細の行を本社の費目に当てはめる(根拠付き) ▼ Python ── 換算・検算・規程の手当額と前月との照合(規則) ▼ 赴任者給与の台帳(案)+照会文の下書き ▼【人】担当者が確定 → 照会を送る
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 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(明細、読み取り結果、照合の結果) | 社内のファイルサーバー |
赴任者給与の台帳と国内の給与計算システムは、新しく足すものではありません。 この構成は台帳に「案」の行を書き込むだけで、確定は担当者が行います。国内の給与計算システムには書き込みません。
読み取りの土台は、AWS Textract の文書の分析です。 表(TABLES)、キーと値のペア(FORMS)、問い合わせ(QUERIES)を FeatureTypes で指定して呼びます。表の機能は、セル、結合されたセル、列の見出し、表のタイトル、フッター、合計の行(TABLE_SUMMARY)まで見分けて返すとされています。給与明細の支給と控除の表を、行と列の構造のまま受け取れます。
問い合わせは、「この書類の支払日は何か」のような質問を英文で投げると、答えの文字列と信頼度を返す機能です。 答えが見つからなければ、答えの要素は空のまま返るとされています。問い合わせが使えるのは英語の書類だけです。 同期の処理で1ページあたり15個、非同期の処理で30個までです。
非同期の処理を選ぶのは、ページ数のためです。 同期の処理ではPDFは1ページまでで、2ページの明細は読めません。非同期の処理なら、PDFは500MB・3,000ページまで扱えます。完了の通知は Amazon SNS に届き、そこから Lambda で結果を取りに行きます。
03どうやって実装するのか
処理の起点を決める
現地法人の人事が、明細のPDFを Amazon S3 の受付の場所に置いたことを起点にします。 メールの添付で受け取る運用をやめ、国ごとに incoming/US/、incoming/UK/ のような受付の場所を分けます。S3 はオブジェクトが作られたときに Lambda を呼び出せます。
ここで気を付けるのは、同じバケットへの書き戻しです。 AWS の公式の説明では、関数を起動したバケットに関数が書き込むと、関数が自分自身を呼び出す繰り返しになりうるとされ、バケットを2つに分けるか、受付用の接頭辞にだけ起動を限ることが勧められています。この構成では、起動を incoming/ に限り、読み取り結果は results/ に書きます。
ただし、1ファイルごとに照合はしません。 現地法人によっては、月の途中に追加の支給(賞与、精算)の明細を後から送ってきます。読み取りはファイルが届くたびに行い、照合と台帳の案づくりは毎月の締め日の2営業日前に、その月に届いた分をまとめて行います。 隔週払いの2枚の明細を、1か月分として並べて見るためです。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 給与明細 | 支給・控除・差引の支給額、支払日、支給の期間、通貨、社員番号(現地) | S3 の受付の場所 |
| 赴任者の情報 | 本社の社員番号と現地の社員番号の対応、赴任国、赴任日・帰任日、家族の帯同の有無と開始日 | 赴任者の名簿 |
| 規程の手当の表 | 国ごとの手当の種類と額(または計算のしかた)、支払が現地か日本か | 海外赴任規程と国別の手当の表 |
| 費目の対応表 | 現地の項目名と本社の費目の対応(国・委託先ごと) | 自社で用意し、確定のたびに育てる |
| 前月の台帳 | 赴任者ごとの前月の費目と額 | 赴任者給与の台帳 |
| 為替レート | 月ごとの換算に使うレート | 自社で決めた為替レートの表 |
質を決めるのは、費目の対応表です。 「Accommodation」が住宅の手当である、という対応を一度確定したら表に残し、翌月からは表で当たる行はAIに聞かずに当てはめます。 AIに当てはめさせるのは、表に無い新しい項目名だけです。
赴任者の情報の「家族の帯同の開始日」と「帰任日」は、第3章の(b)を拾う材料です。 手当の付く条件が変わる日を持っていないと、支給漏れも、帰任後の支給も見つけられません。
データの取得方法を決める
Lambda から StartDocumentAnalysis を呼び、FeatureTypes に TABLES、FORMS、QUERIES を指定します。 完了の通知先(NotificationChannel)に SNS のトピックを指定し、通知を受けた別の Lambda が GetDocumentAnalysis で結果を取ります。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 支給・控除の表 | TABLE/CELL のブロック(列の見出し、合計の行の印付き) | 明細の行と額 |
| 社員番号、支払日、期間などのキーと値 | KEY_VALUE_SET のブロック | 明細の見出しの項目 |
| 問い合わせの答え | QUERY/QUERY_RESULT のブロック | 支払日、期間の始まりと終わり、通貨、差引の支給額 |
| 各ブロックの信頼度 | Confidence | 「読めなかった」の判定 |
問い合わせは、表とキーと値で取れなかったときの保険にします。 投げるのは次のような英文です。別名(Alias)を付けておくと、答えを項目名で受け取れます。
| 別名 | 問い合わせ |
|---|---|
PAY_DATE | What is the pay date? |
PERIOD_START | What is the pay period start date? |
PERIOD_END | What is the pay period end date? |
NET_PAY | What is the net pay amount? |
CURRENCY | What currency are the amounts in? |
同じ手順を何度も呼ばないために、ClientRequestToken を付けます。 同じトークンで同じ処理を呼ぶと、同じ JobId が返り、処理はやり直されないとされています。Lambda が再試行されても、同じ明細を二重に読みません。
結果は既定では7日間しか取り出せません。 取得したらすぐに S3 の results/ に保存します。
AIへ渡す前に整形する
- 形式の確認 … JPEG、PNG、PDF、TIFF のいずれかであることを確かめます。XFA の形式のPDFは対象外です
- パスワードの確認 … パスワードで保護されたPDFは読めません。 給与明細には保護が付いていることが多いので、受付の場所に置く前に現地の人事が保護を外す運用にします(第13章)
- サイズとページ数 … 非同期の処理でPDFは500MB・3,000ページまで。1名1〜2ページの明細なら問題になりません
- 画像の大きさ … 各辺10,000ピクセル以下です。写真で届いたものは縮小します
- 文字の大きさ … 検出できる文字の最小の高さは15ピクセルで、150dpiで8ポイントの文字に当たります。スキャンは150dpiを下回らないようにします
- 複数の赴任者がまとまったPDF … 1ファイルに何名分もあるものは、ページの見出しの社員番号で分けます
2番目がいちばん止まりやすいところです。 保護を外さずに置かれたPDFは読み取りで失敗し、その赴任者の行だけが台帳の案から抜けます。 失敗は担当者の一覧に「未読」として出します。
AIに処理させる
AIの仕事は2つです。明細の行を本社の費目に当てはめることと、照会文の下書きです。
| させること | 中身 |
|---|---|
| 費目への当てはめ | 対応表に無い項目名を、本社の費目(基本給、住宅手当、家族手当、ハードシップ手当、時間外、賞与、現地の所得税、社会保険、年金、そのほかの控除)のどれかに当てはめる |
| 支給と控除の区別 | 表の位置と見出しから、行が支給か控除かを決める |
| 期間の読み取り | 支給の期間の始まりと終わり、支払日を別々の項目にする |
| 根拠の文字列 | 項目ごとに、明細のどの行の文字列から取ったかを付ける |
| 照会文の下書き | プログラムが付けた印から、現地の人事向けの英文を作る |
| させないこと | 理由 |
|---|---|
| 規程の手当額との比較 | 決まった計算。プログラムで行う |
| 為替の換算 | 自社で決めたレートで、プログラムが行う |
| 現地の税額が正しいかの判断 | 現地の税務の専門家の領分 |
| 読めない額の推測 | 合計から逆算して埋めない |
| 照会するかどうかの判断 | 現地法人との関係に関わる。人が決める |
4行目がいちばん起きやすい失敗です。 控除の1行が読めないと、AIは支給の合計と差引の支給額から逆算して埋めようとします。その値が明細に書かれた額として台帳に載ると、検算が必ず合ってしまい、読めなかったことが消えます。
指示内容を固定する
あなたは日本の本社の海外人事の担当者です。
海外の現地法人が出した英文の給与明細の読み取り結果から、
明細の行を本社の費目に当てはめます。
読み取り結果に書かれていることだけを根拠にしてください。推測で埋めないでください。
【本社の費目】
支給:base_salary / housing_allowance / family_allowance /
hardship_allowance / overtime / bonus / other_earning
控除:local_income_tax / social_security / pension /
other_deduction
【厳守事項】
- 費目の対応表で当たる行は、表のとおりに当てはめてください。
- 表に無い項目名は、最も近い費目を選び、mapping_source を "ai" にしてください。
どれにも当てはまらなければ other_earning か other_deduction にし、
理由を note に書いてください。
- 「Allowance」とだけ書かれた行のように何の手当か分からないものは、
他の行から推測せず status を ambiguous にしてください。
- 額は明細に書かれた文字列をそのまま amount_text に入れてください。
桁区切りや通貨の記号を取り除かないでください。
- 読み取りの信頼度が50未満の行は status を unreadable にしてください。
- 読めない額を、合計や差引の支給額から逆算して埋めないでください。
- 金額の計算、為替の換算、規程の額との比較をしないでください。
- 税額や社会保険料が正しいかどうかを書かないでください。
- 各行に、根拠にした明細の行の文字列をそのまま evidence に写してください。
【赴任国と委託先】{country} / {payroll_vendor}
【費目の対応表(この国・委託先の分)】{mapping_table}
【読み取り結果(表・キーと値・問い合わせ、信頼度付き)】{textract_result}
「Allowance とだけ書かれた行」を名指しで書いているのは、そこが最も迷う行だからです。 何も言わないと、AIは金額の大きさから住宅の手当だろうと推測します。推測で当てはめた費目は、規程の額との照合で偶然合うことがあり、誤りに気づけなくなります。
「通貨の記号を取り除かない」も意図があります。 同じ明細に現地の通貨と米ドルの両方が出ることがあり、記号を落とすとどちらの額か分からなくなります。
出力形式を固定する
次の形のJSONで受け取ります。 Claude の構造化出力(output_config.format に json_schema を指定)を使い、項目の名前と型を固定します。
{
"employee_local_id": "US-00412",
"employee_hq_id": "",
"country": "US",
"pay_date": "2026-09-30",
"period_start": "2026-09-16",
"period_end": "2026-09-30",
"currency": "USD",
"lines": [
{ "side": "earning", "local_label": "Housing Allowance",
"hq_item": "housing_allowance", "mapping_source": "table | ai",
"amount_text": "$3,200.00", "status": "ok | ambiguous | unreadable",
"confidence": 96.4, "evidence": "Housing Allowance 3,200.00", "note": "" }
],
"totals": { "gross_text": "", "deductions_text": "", "net_text": "" }
}
1つ目の理由は、mapping_source で確認の重みを変えられることです。 table は確定済みの対応表で当たった行、ai は今回AIが当てはめた行です。担当者が見るのは ai の行だけで足ります。 確定した ai の行は、対応表に足していきます。
2つ目は、額を文字列で受けることです。 公式の説明では、構造化出力では数値の範囲(minimum・maximum)や文字数の制約は使えないとされています。額は文字列で受け、数値への変換と検算はプログラムの側で行います。
プログラムが規則で付ける印は、次のとおりです。
| 確認 | 規則 | 印 |
|---|---|---|
| 検算 | 支給の合計 - 控除の合計 = 差引の支給額 | sum_mismatch |
| 規程の手当 | 規程の表の額(換算後)と支給額の差が許容の幅を超える | allowance_diff |
| 支給の条件 | 帯同の開始後に家族の手当が無い/帰任日の後に手当がある | condition_gap |
| 前月との比較 | 費目ごとに前月から一定の割合を超えて動いた | month_change |
| 期間 | 隔週払いの2枚で、月の日数が足りない/重なる | period_gap |
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| Amazon S3 | オブジェクトの作成の通知 | 明細の保存を検知して Lambda を起動する |
| AWS Textract | API呼び出し(非同期) | 表、キーと値、問い合わせの答え、信頼度を返す |
| Amazon SNS | 完了の通知 | 読み取りの完了を Lambda に知らせる |
| Claude API | API呼び出し | 費目への当てはめ、照会文の下書き |
| 赴任者の名簿・規程の表 | 読み取り | 赴任と帰任の日、帯同、手当の額を引く |
| 赴任者給与の台帳 | 案の行の書き込み | 確定は担当者が行う |
台帳は「案」の行として書き込み、確定の印は担当者が付けます。 確定した行だけが、日本払いの分の計算や税金の精算の材料になります。国内の給与計算システムには、この構成から書き込みません。
人が確認する
- 印の付いた赴任者を先に見る …
allowance_diffとcondition_gapの付いた赴任者は、明細の画像と規程の表を並べて確かめます aiの行を確かめる … AIが新しく当てはめた費目が正しいかを見て、正しければ対応表に足しますunreadableとambiguousを確かめる … 画像で読めるなら担当者が入れ、読めなければ現地に照会します- 台帳を確定し、照会を送る … 下書きを直して現地の人事に送ります
1件あたり8分を目安にします。 印の無い赴任者は数分、印のある赴任者は規程の表を開いて確かめるので10分を超えます。ならして8分です。
2番目を省かないでください。 対応表が育つほど、翌月の ai の行が減り、確認が軽くなります。
allowance_diff が付いても、すぐに誤りとは限りません。 規程の額を現地の通貨で決めている国と、円で決めて毎月換算している国では、為替の動きだけで差が出ます。許容の幅は国ごとに決め、幅の中の差は印を付けずに台帳の注記に残します。 幅を狭くしすぎると、毎月ほぼ全員に印が付き、担当者は印を読まなくなります。最初の2か月は幅を広めに置き、実際に照会した件数を見ながら狭めます。
例外に対処する
| 起きること | 対応 |
|---|---|
| パスワードで保護されたPDF | 読めない。現地の人事に保護を外して置き直してもらう |
| 英語以外の明細が混ざる | Textract の対応外の言語は読めない。担当者が手で入れる |
| 隔週払いで2枚届く | 2枚を同じ月の明細として並べ、period_gap で期間の抜けと重なりを見る |
| 追加の支給(賞与、精算)が月の途中で届く | 同じ月にまとめ、別の行として台帳の案に載せる |
| 現地の社員番号が名簿に無い | 新しい赴任者か番号の誤り。台帳に載せず担当者へ |
| 対応表に無い項目名が多い | 委託先が替わった疑い。国ごとに対応表を作り直す |
| 読み取りが失敗する/7日を過ぎて結果が取れない | 受付の場所に残し、読み直す。処理済みへ移すのは成功時だけ |
| 為替レートの表に当月の値が無い | 換算をせず、allowance_diff の判定を保留する |
2行目の注意は、この構成の前提にかかわります。 現地法人のある国の明細が英語で出ているかは、委託先しだいです。英語以外の明細が届く国は、最初からこの構成の対象から外します。
記録を残す
- 届いた明細の原本と、置かれた日時・国
- Textract が返した結果の全文(表、キーと値、問い合わせ、信頼度)と
JobId - Claude が返したJSONと、使った指示の版
- プログラムが付けた印と、そのとき使った規程の表・為替レートの版
- 担当者が案を直した記録 … どの行を、何から何に変えたか
- 対応表に足した行と、足した日
4つ目で「規程の表の版」を残すのは、規程が年の途中で改定されるためです。 改定の前の月の支給を、改定の後の表で照合し直すと、正しかった支給に印が付きます。
04実装レベルの3段階
最小構成は、確かめるための段階です。 月150件には使えません。 半自動化で、1件24分が14分程度になります。 読み取りと転記は自動になりますが、換算と規程の照合は担当者が表を見ながら行います。本格構成で8分になり、この段階が本記事の想定です。 差が大きいのは、規程の照合と照会文が、1件ずつの手作業だからです。
05工数削減シミュレーション
導入後 150件 × 8分 ÷ 60 = 20 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 英語で給与明細を出す国(米国・英国・シンガポール・インド・オーストラリアなど)に現地法人を持ち、海外赴任者が数十名から数百名いる製造業・商社・IT企業。現地法人の給与計算の結果がPDFの給与明細だけで本社に届き、本社の人事が赴任者給与の台帳へ手で転記している場合。海外赴任規程で手当の額や支給の条件が決まっているのに、現地で支給された額との照合が担当者の目に頼っている場合。AWS を使っている、または使える場合。
- 給与明細が日本語・中国語・タイ語など英語以外で出る国の現地法人(AWS Textract は日本語などを読めません)。現地法人の給与計算の仕組みから本社へ明細のデータを直接受け取れる場合(読み取りは要りません)。赴任者が数名で、毎月の照合が目視で足りる場合。なお、現地の税額や社会保険料が正しく計算されているか、税金の負担を本社と本人でどう分けるかは、現地の税務の専門家と規程が決めることで、この構成はそれを代わりに判断しません。
07最小構成で試す方法
- 先月の明細から、国の違う20名分を選ぶ(うち数名は、手当の食い違いがあったと分かっているものを入れる)
- 当時の台帳の行を用意する
- 手元のAIサービスに、1名分の明細の画像と、本社の費目の一覧を貼る
- 「この給与明細の行を、本社の費目に当てはめてください。何の手当か分からない行は推測せず『不明』としてください。読めない額は計算で埋めないでください」と指示する
- 出てきた結果を、当時の台帳の行と見比べる
組む前に、費目の当てはめがどこまで当たるかを確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 当時の台帳とほぼ同じ当てはめが出た | Textract と照合の連携に進む |
| 分からない行を金額から推測して当てはめた | 指示の書き方で直る。構成は有効 |
| 国によって当てはめが大きく外れる | その国の対応表を先に作る |
3行目が出たら、その国の明細の項目名を一度すべて書き出し、本社の費目との対応を人が決めます。 その表があれば、AIに聞く行は大きく減ります。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 給与明細のPDFが読めない | パスワードで保護されたPDFは対象外。 現地で保護を外してから置く |
| 2ページの明細が読めない | 同期の処理はPDF1ページまで。非同期の処理を使う |
| 問い合わせの答えが空 | 答えが見つからなければ空で返る。表とキーと値の結果で補い、それでも無ければ unreadable |
| 「Allowance」だけの行を推測で当てはめる | 指示で禁じ、ambiguous にする |
| 読めない額を逆算で埋める | 指示で禁じ、検算はプログラムで行う |
| 隔週払いの月の合計がずれる | 支払日でなく期間で月に割り当てる |
| 起動の繰り返しが起きる | 起動を受付用の接頭辞に限り、結果は別の場所に書く |
| 結果が取れなくなる | 非同期の結果は7日で取り出せなくなる。すぐ S3 に保存する |
| 委託先が替わって項目名が一斉に変わる | 対応表に無い行が急に増えたら、国ごとに作り直す |
| 英語以外の明細 | 対象外。担当者が手で入れる |
上の2行が、最初の月に必ず出る失敗です。 どちらも読み取りの精度の問題ではなく、明細の渡し方の問題です。現地の人事との取り決めを先に済ませてください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 赴任者の氏名、社員番号、給与の額、手当、税額、社会保険と年金の番号、銀行口座、家族の状況です。個人の処遇そのもので、最も慎重に扱う種類の情報です。
- 外部へ渡す範囲を、費目の当てはめに必要な項目までに限る … Claude に渡すのは明細の行の名前と額と信頼度で、氏名、社会保険の番号、口座の番号は渡す前に伏せます。 赴任者は現地の社員番号で特定します
- パスワードを外したPDFの置き場を限る … 受付の場所は国ごとに書き込みの権限を分け、読み出せるのは海外人事の担当者と処理の関数だけにします。外したPDFをメールで送る運用にはしません
- 国をまたぐ個人データの移転を確かめる … 現地の個人データを日本の本社で扱うこと、AWS のどのリージョンで処理するかは、現地の法令と社内の規程で確かめてから決めます
- 税額の正しさを判断させない … この構成が出すのは、明細に書かれた額と規程の額の食い違いだけです。現地の税額や社会保険料の計算が正しいかは、現地の税務の専門家が見ます
- 照会を自動で送らない … 照会文は下書きまでにし、担当者が送ります
誤りが起きた場合のリスクは、読めなかった額を読めたことにすることと、規程との食い違いを見落とすことの2つです。 前者は逆算での補完を許すと起き、後者は比較をAIに任せると起きます。どちらも設計の分け方で防ぎます。
10まず何から始めるか
1週目:国ごとの対応表を作る
5か国の明細を1枚ずつ取り出し、項目名をすべて書き出して、本社の費目との対応を決めます。 あわせて、現地の人事に「パスワードを外して受付の場所に置く」運用を相談します。
2週目:20名分で試す
先月の明細から20名分を選び、手元のAIサービスで費目に当てはめさせます。分からない行を推測で埋めていないか、読めない額を逆算していないかを最優先で見ます。
3週目:Textract で読む
S3 と Textract の非同期の処理をつなぎ、20名分を読みます。表とキーと値、問い合わせの答えが、明細のどこまで取れるかを国ごとに確かめます。
4週目:台帳の案まで出す
Claude での当てはめと検算までをつなぎ、台帳の案として書き出します。この時点では規程の照合を入れず、担当者が直した行を数えます。
2か月目: 規程の手当の表と赴任者の情報を読み込み、規程の照合と前月との比較を足します。3か月目以降: 照会文の下書きを足し、1件24分が何分になったかを実測します。対応表で当たらない行が月に数行まで減った時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 対応する言語が英語・フランス語・ドイツ語・イタリア語・ポルトガル語・スペイン語であること。手書きは英語のみ、縦書きは対象外。問い合わせは英語の書類のみ。対応形式が JPEG・PNG・PDF・TIFF で XFA のPDFは対象外。同期はPDF1ページ・10MB、非同期はPDF500MB・3,000ページ。パスワードで保護されたPDFは対象外。画像は各辺10,000ピクセル以下。文字の最小の高さが15ピクセル(150dpiで8ポイント)。問い合わせは同期で1ページ15個、非同期で30個まで | AWS: Set Quotas in Amazon Textract | 2026-10-07 |
問い合わせの答えが QUERY/QUERY_RESULT のブロックで信頼度とともに返り、答えが見つからなければ空のまま返ること。別名(Alias)を付けられること | AWS: Queries | 2026-10-07 |
表の機能がセル、結合セル、列の見出し、タイトル、フッター、合計のセル(TABLE_SUMMARY)などを見分けること。FeatureTypes で指定すること | AWS: Tables | 2026-10-07 |
キーと値のペアが KEY_VALUE_SET のブロックで返り、FORMS で指定すること。キーと値に同じ信頼度が返ること | AWS: Form Data (Key-Value Pairs) | 2026-10-07 |
非同期の処理が StartDocumentAnalysis と GetDocumentAnalysis で、完了が Amazon SNS に通知されること。ClientRequestToken で同じ JobId が返ること。結果が既定で7日間保存されること | AWS: Calling Amazon Textract Asynchronous Operations | 2026-10-07 |
| S3 のオブジェクトの作成で Lambda を起動できること。起動したバケットへの書き込みで繰り返しが起きうるため、バケットを分けるか受付用の接頭辞に限ること | AWS: Process Amazon S3 event notifications with Lambda | 2026-10-07 |
構造化出力を output_config.format の json_schema で指定すること。数値の範囲や文字数の制約が使えないこと | Claude Docs: Structured outputs | 2026-10-07 |
手当の額と支給の条件は、自社の海外赴任規程に従ってください。 現地の税額・社会保険料の計算と、国をまたぐ個人データの扱いは、現地の専門家と自社の規程で確かめてください。本記事は公開仕様で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0710)についてのご相談はこちらから。
