Media > AI活用ユースケース > 法務 > 海外法人の口座開設で届く英文の設立証明書・役員名簿・株主名簿を読み取り、役員と実質的支配者の記載を申込内容と照合する

海外法人の口座開設で届く英文の設立証明書・役員名簿・株主名簿を読み取り、役員と実質的支配者の記載を申込内容と照合する

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

海外法人が口座開設のときに出す英文の設立証明書・役員名簿・株主名簿を読み取り、法人名・登録番号・役員・株主と持株数を書き出します。それを申込書に申告された役員と実質的支配者と項目ごとに突き合わせ、食い違いと足りない書類を担当者に返します。

サマリー
生成AI
ChatGPT/Claude/Gemini
AIサービス
AWS Textract/Azure AI/Google Document AI
連携・自動化
Python
対象業界
IT・SaaS/保険/金融
対象部門
法務
対象業務
内容確認・チェック/比較検討
主な課題
判断に時間がかかる/属人化している/確認ミスが多い
AIで行う処理
読み取り(OCR)
主な効果
入力漏れ削減/品質標準化/工数削減
導入難易度
★★★★☆
実装レベル
本格構成
費用感
API連携(中)
人間の確認
条件付き
現在工数
90h/月
AI導入後
30h/月
想定削減
67%
年間削減
720h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. 営業担当が、外国法人から申込書と英文の会社書類(PDF)を受け取り、受付の仕組みに登録する
  2. 取引時確認の担当が、設立証明書を開いて法人名・登録番号・設立日・登録上の住所を確認記録の様式に書き写す
  3. 役員名簿を開き、役員の氏名・役職・就任日を書き写す。申込書の「取引担当者」が役員か、委任状があるかを見る
  4. 株主名簿を開き、株主ごとの株数を電卓で足して持株比率を出す。株主が法人なら、その法人の株主名簿を求めて同じことをする
  5. 申込書で申告された実質的支配者と、名簿から計算した結果を突き合わせる
  6. 食い違いや足りない書類があれば、営業担当に照会の内容をメールで伝える
  7. そろったものを確認記録として仕上げ、責任者の承認に回す
導入後(After)
  1. 人営業担当が、申込書と英文の会社書類をPDFで受付フォルダに保存する。ファイル名に申込番号を付ける
  2. 自動保存をきっかけに処理が動き、形式・ページ数・パスワードの有無を確かめる
  3. 自動OCRが書類ごとに全文・キーと値・表・質問への答えを、信頼度付きで返す
  4. 自動生成AIが書類の種類を見分け、法人・役員・株主の項目を原文のまま切り分ける
  5. 自動プログラムが株主名簿の表から持株比率を計算し、法人株主が残っていれば、その法人の名簿が出ているかを見る
  6. 自動申込書の申告と、項目ごとに `match` / `candidate` / `mismatch` / `not_found` / `unreadable` を付ける
  7. 自動足りない書類と照会事項の一覧、確認記録の下書きを作る
  8. 人担当者が `match` 以外の項目だけを原本で確かめ、同一人物かどうか、照会するかを決める
  9. 人責任者が実質的支配者の判断と確認記録を承認する
各工程の詳しい説明を読む
  1. 営業担当が、外国法人から申込書と英文の会社書類(PDF)を受け取り、受付の仕組みに登録する
  2. 取引時確認の担当が、設立証明書を開いて法人名・登録番号・設立日・登録上の住所を確認記録の様式に書き写す
  3. 役員名簿を開き、役員の氏名・役職・就任日を書き写す。申込書の「取引担当者」が役員か、委任状があるかを見る
  4. 株主名簿を開き、株主ごとの株数を電卓で足して持株比率を出す。株主が法人なら、その法人の株主名簿を求めて同じことをする
  5. 申込書で申告された実質的支配者と、名簿から計算した結果を突き合わせる
  6. 食い違いや足りない書類があれば、営業担当に照会の内容をメールで伝える
  7. そろったものを確認記録として仕上げ、責任者の承認に回す

(a)書類どうしの食い違いを見落とす。 設立証明書の法人名に「Pte. Ltd.」が付き、申込書には付いていない。役員名簿の住所が古い。1件の中に3〜5種類の書類があり、それぞれが少しずつ違います。

(b)持株比率の計算を、紙と電卓でしている。 株主名簿には普通株と優先株が混ざり、議決権の無い株式が含まれることもあります。株数の合計だけで比率を出すと、議決権の比率と合わなくなります。 持株会社をはさむと、2段、3段と遡る計算になり、途中で1桁でも写し間違えると結論が変わります。

(c)名前の照合が担当者ごとに違う。 「TAN Mei Ling」と「Mei Ling Tan」を同じ人とするか。決まりが無いので、担当者によって違う照会が出ます。

(d)照会の往復で日数が延びる。 足りない書類が後から1つずつ見つかり、営業担当が取引先に何度も連絡することになります。

  1. 【人】 営業担当が、申込書と英文の会社書類をPDFで受付フォルダに保存する。ファイル名に申込番号を付ける
  2. 【自動】 保存をきっかけに処理が動き、形式・ページ数・パスワードの有無を確かめる
  3. 【自動】 OCRが書類ごとに全文・キーと値・表・質問への答えを、信頼度付きで返す
  4. 【自動】 生成AIが書類の種類を見分け、法人・役員・株主の項目を原文のまま切り分ける
  5. 【自動】 プログラムが株主名簿の表から持株比率を計算し、法人株主が残っていれば、その法人の名簿が出ているかを見る
  6. 【自動】 申込書の申告と、項目ごとに match / candidate / mismatch / not_found / unreadable を付ける
  7. 【自動】 足りない書類と照会事項の一覧、確認記録の下書きを作る
  8. 【人】 担当者が match 以外の項目だけを原本で確かめ、同一人物かどうか、照会するかを決める
  9. 【人】 責任者が実質的支配者の判断と確認記録を承認する

8番目が、この設計の分かれ目です。 担当者は全件の書類を最初から読みません。印の付いた項目について、原本のどこに何が書いてあるかを確かめることに時間を使います。全項目を人が読み直す設計にすると、60分はほとんど減りません。

5番目をプログラムにしているのも意図してのことです。 答えが1つに決まる計算をAIにさせると、同じ入力で違う答えが出る余地を作ります。

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

構成図
申込書+英文の会社書類(設立証明書・役員名簿・株主名簿・組織図)
   ▼【トリガー】受付フォルダ(Amazon S3)への保存
AWS Lambda ── 形式・ページ数・パスワード・申込番号の確認
   ▼
AWS Textract(StartDocumentAnalysis:FORMS/TABLES/QUERIES/LAYOUT)
   │   全文、キーと値、表とセル、質問への答え、信頼度
   ▼
Claude API ── 書類の種類の見分けと、法人・役員・株主の項目の切り分け
   │   ① 法人名と登録番号   ② 設立日と設立地   ③ 登録上の住所
   │   ④ 役員と役職          ⑤ 株主・株式の種類・株数
   ▼
Python ── 持株比率の計算、法人株主の遡り、申込書との照合
   ▼
照合の一覧(match / candidate / mismatch / not_found / unreadable)
+ 足りない書類と照会事項 + 確認記録の下書き
   ▼
【担当者が印の付いた項目を原本で確認 → 責任者が承認】
役割想定する製品代替候補
OCRAWS Textract(StartDocumentAnalysis/GetDocumentAnalysis)Azure AI Document Intelligence、Google Document AI
生成AIClaude API(書類の種類の見分け、項目の切り分け、照会文の下書き)OpenAI API、Gemini API
差異計算Python(持株比率の計算、法人株主の遡り、申込書との照合)顧客管理の仕組みの照合機能
連携AWS Lambda(保存と完了の通知を起点に処理を動かす)Amazon EventBridge
保管Amazon S3(原本、読み取り結果、照合の結果、確認記録の版)社内のファイルサーバー

受付の仕組みと顧客管理の仕組みは、新しく足すものではありません。 最初の準備は、申告された役員と実質的支配者を、氏名・生年月日・住所・持株比率の列で取り出せるようにすることです。

OCRに AWS Textract を選ぶのは、書類が英文だからです。 公式の上限の表で、対応言語は英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語とされ、日本語や中国語は読めず、縦書きにも対応していません。 質問による読み取りは英語の文書だけです。中国語の書類が届く香港・中国本土の法人は、この構成の対象から外します(第7章の例外処理)。

この題材で効くのは、表(TABLES)の読み取りです。 表は TABLE と CELL のブロックで返り、セルごとに行番号・列番号と信頼度が付きます。見出しの列は COLUMN_HEADER、合計の行は TABLE_SUMMARY として見分けられます。株主名簿の「Total」の行を株主の1人として数えないために、この区別を使います。

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

Step1

処理の起点を決める

受付フォルダ(Amazon S3)にPDFが保存されたことを起点にします。 口座開設の申込は毎日ばらばらに届くため、1日1回の定時実行にはしません。 受け取った日のうちに不足を返せば、照会の往復を1回で済ませられます。

ファイル名の先頭に申込番号を付けるところまでを営業担当が行います。申込番号の無いファイルは、照合の相手を決められないので、処理を始める前に止めて営業担当に戻します。 1件の申込に書類が複数あるため、申込番号ごとに「書類がそろった」合図を受付の仕組みから出し、それを待ってまとめて動かします。

S3 への保存を AWS Lambda が受け、書類ごとに StartDocumentAnalysis を呼びます。ClientRequestToken に申込番号とファイルのハッシュから作った値を入れると、同じトークンで呼び直しても同じ JobId が返り、同じ書類を二度読みません。 JobTag には申込番号を入れ、完了の通知(Amazon SNS)からどの申込の書類かを引けるようにします。通知の状態が SUCCEEDED であることを確かめてから結果を取り、すぐ S3 に保存します。 JobId は7日間しか有効ではありません。

Step2

入力データを集める

データ中身取得元
会社書類のPDF設立証明書、役員名簿、株主名簿、組織図、存続証明書など受付フォルダ(S3)
読み取り結果全文、キーと値、表とセル、質問への答え、信頼度AWS Textract
申込書の申告法人名、登録番号、本店所在地、役員、取引担当者、実質的支配者とその持株比率口座開設の受付の仕組み
前回の確認記録継続取引先なら、前回確定した役員・株主・実質的支配者顧客管理の仕組み、S3 の保管領域
国・地域ごとの書類の対応表その国で設立証明書・役員・株主を示す書類の名前と、発行者法務が用意する一覧
名前の表記の決まり姓名の順、敬称、よくある綴りの揺れの扱い法務が用意する一覧

質を決めるのは、下の3つです。 前回の確認記録が無ければ、継続取引先の「何が変わったか」を言えません。国ごとの書類の対応表が無ければ、足りない書類を挙げられません。 シンガポールの法人で役員を示すのが何という書類かを知らないと、「役員名簿が無い」とも「別の書類で足りる」とも言えないからです。

Step3

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

読み取りは StartDocumentAnalysis に FeatureTypes として FORMS、TABLES、QUERIES、LAYOUT を指定して行います。全文の行と単語は、指定した機能にかかわらず返ります。 結果は GetDocumentAnalysis で取ります。1回に返るブロックは既定で最大1,000件なので、NextToken が返る限り続けて取ります。 JobStatus が PARTIAL_SUCCESS のときは Warnings に出たページを記録し、そのページを含む書類は unreadable として人に回します。

取るものどの機能で何に使うか
全文の行と単語常に返る法人名・住所の原文、書類の種類の見分け
キーと値FORMS「Company Registration No.」「Date of Incorporation」のように見出しと値が並ぶ項目
表とセルTABLES役員名簿と株主名簿。行番号・列番号・信頼度付き
段落と見出しLAYOUTLAYOUT_TITLE で書類の表題を取り、種類を見分ける
質問への答えQUERIES法人名・登録番号・設立日など、1つに決まる項目

質問は QueriesConfig に並べ、別名(Alias)を付けます。非同期の処理では1ページあたり30問までです。公式の手引きは、文書の中の言葉を使って質問を作ること、日付が複数ある文書では何の日付かを特定して聞くことを勧めています。

別名質問の例
COMPANY_NAMEWhat is the name of the company?
REG_NOWhat is the company registration number?
INC_DATEWhat is the date of incorporation?
JURISDICTIONUnder which law is the company incorporated?
REG_ADDRESSWhat is the registered office address?

質問は既定で1ページ目しか見ません。 ページの指定が無いと ["1"] になるため、**Pages に ["*"] を入れて全ページを対象にします。**

役員と株主は、質問で取りません。 手引きは、表全体や行・列をまとめて質問で取り出すことには対応していないとしています。役員名簿と株主名簿は TABLES の結果から、行ごとに読みます。質問は、設立日のように答えが1つに決まる項目にだけ使います。

Step4

AIへ渡す前に整形する

  1. 形式の確認 … JPEG、PNG、PDF、TIFF であることを確かめます。XFA形式のPDFは扱えないため、印刷し直してPDFにします
  2. パスワードの確認 … PDFはパスワードで保護されていてはいけません。保護されたものは、営業担当から解除したものを取り寄せます
  3. ページ数とサイズの確認 … 非同期の処理でPDFとTIFFは500MB・3,000ページが上限です。定款の全文と名簿がまとめて1ファイルになっているものは、名簿の部分に分けます
  4. 文字の大きさの確認 … 文字の高さが15ピクセルを下回ると検出されません。150 DPIで8ポイント相当です。公証の印影の近くの小さな文字は、300 DPIでスキャンし直してもらいます
  5. 言語の確認 … 全文の行に英語以外の文字が多ければ、その書類は読み取りの対象から外し、翻訳文の提出を求めます
  6. 申込書の申告の取り出し … 受付の仕組みから、申告された役員と実質的支配者を氏名・生年月日・持株比率の形で取り出します

4番目を軽く見ないでください。 読めないだけの記載は、「書かれていない」と区別がつきません。

Step5

AIに処理させる

させるのは、書類の種類を見分け、法人・役員・株主の項目を原文のまま切り分け、根拠の位置を添えることだけです。

取り出す項目中身取り出せないときの扱い
書類の種類設立証明書、役員名簿、株主名簿、存続証明書、組織図、その他見分けられなければ other
法人の特定法人名(原文のまま)、登録番号、設立日、設立地、登録上の住所見つからなければ not_found
役員氏名、役職(Director、Secretary など)、就任日、退任日退任日のある行は退任として分ける
株主株主名、個人か法人か、株式の種類、株数、表の行番号読めなければ unreadable
株式の種類の区別議決権の有無が書かれているか書かれていなければ not_stated
させないこと理由
持株比率の計算株数が正しければ答えは1つ。プログラムが計算する
実質的支配者に当たるかの結論判断は取引時確認の責任者が行う
名前の同一人物の断定候補として並べるまで。決めるのは人
書かれていない株主や役員の補完組織図から推測して株主名簿に足さない
法人名の綴りの訂正書類どうしの違いそのものが確認の材料になる

4行目がいちばん起きやすい失敗です。 組織図に「Holding Co. 60%」と描かれていて、その会社の株主名簿が出ていないとき、AIは組織図から株主を書き足しがちです。組織図は申告の一種で、名簿の代わりにはなりません。 名簿が無ければ「無い」と返させ、足りない書類の一覧に載せます。

Step6

指示内容を固定する

あなたは銀行の取引時確認の担当として、外国法人の英文の会社書類を読みます。
OCRが返した読み取り結果(全文、キーと値、表とセル、質問への答え)だけを見て、
項目を切り分けてください。推測で埋めないでください。

【やること】
1. 書類の種類を次から1つ選ぶ:
   certificate_of_incorporation / register_of_directors / register_of_members /
   certificate_of_good_standing / ownership_chart / other
2. 法人名・登録番号・設立日・設立地・登録上の住所を、原文の綴りのまま写す
3. 役員を1人1行で書き出す(氏名、役職、就任日、退任日)
4. 株主を表の1行ごとに書き出す(株主名、個人か法人か、株式の種類、株数、行番号)

【厳守事項】
- 書かれていない項目は "not_found" とする。他の書類から補わない。
- 文字は見えるが確定できない値は "unreadable" とし、OCRの信頼度をそのまま写す。
- 表の合計の行(Total など)は株主として書き出さない。
- 株数は書かれた数字をそのまま写す。比率を計算しない。合計を出さない。
- 退任日がある役員は status を "resigned" にし、現任と混ぜない。
- 組織図(ownership_chart)の内容を、株主名簿の株主として書き出さない。
- 株主が法人の場合は holder_type を "entity" とし、その法人の株主を推測しない。
- 法人名・氏名の綴りを直さない。大文字・小文字・敬称もそのまま写す。
- 株式の種類に議決権の有無が書かれていなければ voting は "not_stated" とする。
- 実質的支配者に当たるかどうかを書かない。
- 各値の evidence には、根拠にした原文の文字列とページ番号を入れる。

【読み取り結果】{textract_result}
【書類のファイル名】{file_name}

「比率を計算しない」と「合計を出さない」を分けて書いているのには理由があります。 比率だけを禁じると、AIは「合計1,000,000株」のような数字を作り、それが名簿の数字と食い違っても見分けがつきません。数字を作る余地そのものを閉じます。

Step7

出力形式を固定する

次の形のJSONで受け取ります。 Claude API の構造化出力(output_config.format に type: "json_schema" とスキーマを指定)を使い、形の崩れた応答を後段に流さないようにします。

{
  "application_no": "",
  "file_name": "",
  "document_type": "register_of_members",
  "entity": {
    "name": { "value": "", "status": "found | not_found | unreadable", "evidence": "", "page": 1 },
    "registration_no": { "value": "", "status": "", "evidence": "", "page": 1 },
    "incorporation_date": { "value": "", "status": "", "evidence": "", "page": 1 }
  },
  "officers": [
    { "name": "", "role": "", "appointed": "", "resigned": "", "status": "current | resigned", "evidence": "", "page": 1 }
  ],
  "shareholders": [
    { "name": "", "holder_type": "individual | entity", "share_class": "", "voting": "yes | no | not_stated",
      "shares": "", "table_row": 0, "confidence": 0, "evidence": "", "page": 1 }
  ]
}

理由は、AIの出力とプログラムの計算を別の層に置けることです。 shareholders はAIが原文のまま埋め、比率と照合の結果はプログラムが別の表に書きます。判定の規則が変わっても、直すのはプログラムだけです。

照合の結果は、プログラムが次の形で出します。

判定意味
match申込書の申告と書類の記載が一致
candidate綴り・姓名の順・ミドルネームの違いだけで、同一人物の可能性がある
mismatch申告と書類で値が違う(持株比率、役職、法人名の主要部分など)
not_found申告にあるのに書類に無い、または書類にあるのに申告に無い
unreadable書類の該当箇所が読めず、照合できない

比率の計算は、議決権のある株式だけで行います。 voting が not_stated の株式があれば、その法人の比率は確定させず unreadable 扱いで人に回します。25%を超える人と50%を超える人を機械的に並べるのはプログラムの仕事で、その人が実質的支配者に当たるかを決めるのは人の仕事です。

Step8

システムへ連携する

つなぎ先方式内容
受付フォルダ(S3)AWS Lambda の起動書類の保存を検知し、読み取りを始める
AWS Textract非同期のAPI呼び出しと SNS の通知全文・キーと値・表・質問への答えを返す
Claude APIAPI呼び出し書類の種類の見分けと項目の切り分け、照会文の下書き
口座開設の受付の仕組み読み取り(APIまたはファイル出力)申込書の申告を取り出す
顧客管理の仕組み読み取り前回の確認記録を引く
確認記録の様式下書きの書き出し担当者が確かめて仕上げる

顧客管理の仕組みへは書き込みません。 この構成が出すのは照合の結果と確認記録の下書きまでで、確定した内容を登録するのは責任者の承認の後、人が行います。 書き込みを足すと、読み違いがそのまま顧客の情報になります。

照会文の下書きは営業担当の画面に出すだけにします。取引先へ送るのは営業担当です。

Step9

人が確認する

担当者が開くのは、match 以外の項目だけです。 match の項目は一覧で流し見ます。全項目を開く設計にすると、第10章の20分には収まりません。

  1. unreadable を先に見る … 原本で該当箇所を読み、値を手で入れます。多くはスキャンの取り直しで解決します
  2. candidate を決める … 生年月日や住所など、名前以外の項目もあわせて見て、同一人物かを決めます
  3. mismatch と not_found の根拠を確かめる … evidence と table_row で原本の該当行を開きます。申告の誤りか、書類が古いかを分けます
  4. 持株比率の計算の元を確かめる … 比率が25%や50%の境目に近い株主は、計算に使った株数を原本で確かめます
  5. 判定を変えたら記録する … どの項目を、どの判定に変えたか、理由を残します

4番目を省かないでください。 境目のすぐ上か下かで、確認する人が増えるか減るかが変わります。読み取りの1桁の違いが、そのまま結論の違いになる場所です。

Step10

例外に対処する

起きること対応
英語以外の書類(中国語の登記書類など)この構成では読めない。翻訳文の提出を求め、原本と翻訳文を両方保管する
パスワード付きのPDFPDFはパスワードで保護されていてはいけない。解除したものを取り寄せる
XFA形式のPDF扱えない。印刷し直してPDFにする
株主名簿が表になっていない(文章で書かれている)TABLES で取れない。全文から切り分けた結果を unreadable 扱いで人に回す
法人株主の名簿が出ていない足りない書類として照会の一覧に載せ、比率の計算をその段で止める
株式の種類に議決権の記載が無いnot_stated。比率を確定させず人に回す
書類の日付が古い発行日を一覧に出し、社内の基準より古ければ取り直しを求める
PARTIAL_SUCCESS で一部のページが読めないWarnings のページを記録し、その書類を unreadable に
OCRが応答しない受付フォルダに残す。処理済みに移すのは成功したときだけ

上から5行目が、最も時間を取る例外です。 遡りが途中で止まったことを、止まった段とあわせて一覧に出すのが、照会を1回で済ませる条件です。

Step11

記録を残す

  • 原本のPDFと、受け取った日時・申込番号・経路
  • OCRが返したJSONの全文(GetDocumentAnalysis の全ページ分)
  • AIの切り分けの結果(entity、officers、shareholders)
  • プログラムが出した持株比率と照合の結果、そのとき使った申込書の申告の内容
  • 担当者が判定を変えた記録 … どの項目を、どの判定に、なぜ変えたか
  • 責任者の承認の日時と、確定した実質的支配者
  • 照会した内容と、取引先からの回答の書類

確認記録とその添付は、7年間の保存が求められています。 犯罪収益移転防止法の概要で、特定事業者の義務として確認記録・取引記録等の作成と7年間の保存が挙げられています。読み取り結果とAIの出力を確認記録の一部として残すか、作業の記録として残すかを、最初に決めておきます。

04実装レベルの3段階

最小構成:コンソールで読み取り、AIの画面に貼って株主を書き出させる / 株主名簿の書き写し
半自動化:上記+受付フォルダから自動で読み取り、法人・役員・株主を一覧に出す / 書類の読み取りと書き写しの全体
本格構成:上記+持株比率の計算、法人株主の遡り、申込書との照合、照会文と確認記録の下書き / 照合と不足の洗い出しまで

最小構成では件数がさばけません。 1件ずつ貼り付けるので、90件には使えません。確かめるための段階です。 半自動化で、1件60分が40分程度になります。 書き写しは無くなりますが、比率の計算と申込書との突き合わせが残ります。本格構成で20分になり、この段階が本記事の想定です。 差が大きいのは、比率の計算と名前の照合が、持株会社の段数に比例して増える作業だからです。 段階を飛ばさないでください。 半自動化の一覧を1か月見ると、表の読み取りが崩れやすい国が先に分かります。それを対応表に書き足してから本格構成に進みます。

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

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

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

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

AI活用について相談する

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

向いている
  1. 外国に本店がある法人の口座開設・取引開始を毎月数十件から百件ほど受け付け、英文の設立証明書・役員名簿・株主名簿を取引時確認の担当者が1枚ずつ読んで、申込書の申告と突き合わせている銀行・証券会社・保険会社・決済サービスの事業者。持株会社を挟んだ株主構成が多く、実質的支配者の遡りに担当者ごとの差が出ている場合。確認記録の作成に時間がかかり、口座開設までの日数が延びている場合。
向いていない
  1. 提出書類が英語以外(中国語・日本語・アラビア語など)で届く取引が中心の場合(この構成のOCRは英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語しか読めず、質問による読み取りは英語の文書だけです)。外国法人の取引が年に数件の場合。なお、実質的支配者に当たるかの最終判断、取引を受けるか謝絶するかの判断、疑わしい取引の届出をするかの判断は、取引時確認の責任者と法務・コンプライアンス部門が行うもので、この構成では代替できません。

07最小構成で試す方法

  1. 過去3か月に確認を終えた外国法人から20件を選ぶ(うち数件は、持株会社をはさむもの、照会が出たものを入れる)
  2. その20件について、当時の確認記録と照会の履歴を用意する
  3. 株主名簿のPDFを AWS Textract のコンソールで読み取り、表の結果を確かめる
  4. 表の結果を手元のAIサービスに貼り、「株主を表の1行ごとに、株主名・株式の種類・株数・行番号で書き出してください。合計の行は含めず、比率は計算しないでください」と指示する
  5. 書き出された株数から表計算で比率を出し、当時の確認記録の実質的支配者と突き合わせる

20件は必ずやってください。 ワークフローを組む前に、「株主名簿の表が、行と列の対応を崩さずに読めるのか」を確かめます。

出てきた内容判断
当時と同じ実質的支配者が出た申込書の申告との照合に進む
合計の行を株主として数えた指示と TABLE_SUMMARY の除外で直る。構成は有効
表の行と列がずれて株数が隣の株主に付いたスキャンの品質と書類の様式が先。 国ごとの様式を集める

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

問題対策
株主名簿の合計の行を株主として数えるTABLE_SUMMARY のセルを除き、指示にも明記する
表の行と列がずれて株数が隣の株主に付く行番号を残し、境目に近い株主は原本で確かめる
質問で株主の一覧を取ろうとする表全体の取り出しは質問の対象外。TABLES で読む
質問が1ページ目しか見ないPages に ["*"] を入れる
組織図から株主を書き足す組織図は名簿の代わりにしない。足りない書類として照会する
名前の完全一致で照合して食い違いが山ほど出るcandidate を設け、姓名の順と綴りの揺れを決まりにする
普通株と優先株を足して比率を出す議決権のある株式だけで計算する。 記載が無ければ止める
英語以外の書類を読ませる読めない。翻訳文を求める
結果の取得が JobId の期限に間に合わない完了の通知を受けたらすぐ取得して S3 に保存する

上の2行が、この構成の失敗のほとんどです。 行番号を最後まで持ち回し、原本に戻れるようにしてあるかで、運用に乗るかが決まります。

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

この構成で扱うデータ: 外国法人の役員と株主の氏名・住所・生年月日・国籍、持株数、そして口座開設の申込の内容です。役員と株主は、取引先の外にいる個人です。

  1. 外部へ渡す範囲を、照合に必要な項目までに限る … 生成AIに渡すのはOCRの結果だけにし、申込書の申告や前回の確認記録はプログラムの側で照合します。 顧客管理の仕組みの情報を生成AIへ渡しません
  2. 保管の場所と暗号化を決める … StartDocumentAnalysis の KMSKeyId を指定すると、利用者のバケットに出力するときにそのキーで暗号化されます。指定しない場合は SSE-S3 で暗号化されます
  3. 実質的支配者の判断を自動で確定させない … 出すのは比率と照合の結果までです。判断と承認は責任者が行います
  4. 疑わしい取引の届出の判断に使わない … この構成は書類の記載を読むだけで、取引の目的や資金の流れは見ていません
  5. 確認記録の保存期間と、作業の記録の保存期間を分けて決める … 確認記録は7年間の保存が求められています。読み取り結果やAIの出力をどこまで残すかを決めておきます

誤りが起きた場合のリスクは、実質的支配者の取り違えと、足りない書類の見落としです。どちらも「書かれたものだけを、行番号付きで扱う」設計で守ります。

10まず何から始めるか

1週目:国ごとの書類の対応表を作る

取引先の多い上位5か国・地域について、設立証明書・役員・株主を示す書類の名前と発行者を一覧にします。全部の国を一度にそろえる必要はありません。件数の多い国から埋めます。

2週目:20件で試す

過去の確認済みの20件の株主名簿を AWS Textract のコンソールで読み、手元のAIサービスに株主を書き出させます。当時の確認記録と突き合わせ、合計の行を数えていないか、行がずれていないかを最優先で見ます。

3週目:照合の決まりを決める

何を candidate とするか、議決権の無い株式をどう扱うか、境目に近い株主をどう確かめるかを、取引時確認の責任者と決めます。 ここが決まらないうちに照合を組むと、一覧は出るのに誰も判断に使えない状態になります。

4週目:受付フォルダから一覧までをつなぐ

S3 と Lambda で受付フォルダを見張り、OCRを呼び、法人・役員・株主を一覧に書き出すところまで作ります。この時点では照合をせず、書き写しの正確さだけを見ます。

2か月目: 持株比率の計算と申込書との照合を足し、match 以外の項目の数を毎週数えます。3か月目以降: 照会文と確認記録の下書きを足し、1件60分が何分になったかを実測します。国ごとの対応表に、表の読み取りが崩れやすい様式と議決権の書き方を書き足し終えた時点で、この構成は完成です。


11関連ユースケース

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

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

技術仕様確認日:2026-10-08/最終更新:2026-10-08
確認した内容情報源確認日
特定事業者に取引時確認と、確認記録・取引記録等の作成と7年間の保存が課されていること。通常の特定取引で法人の実質的支配者を確認すること。外国に本店がある法人の本人確認に、日本国政府の承認した外国政府等が発行した書類を使えること。実質的支配者は議決権その他の手段により法人を支配する自然人まで遡って確認し、法人の性質(資本多数決法人か否か)に従って定められること。該当者が複数いれば全員が該当し、議決権の50%超を保有する自然人がいれば25%超の保有者は該当しないこと。ハイリスク取引では株主名簿等を確認すること警察庁 JAFIC: 犯罪収益移転防止法の概要(令和8年8月7日版)2026-10-08
対応する形式(JPEG・PNG・PDF・TIFF、XFA形式のPDFは非対応)。非同期の処理でPDF・TIFFが500MB・3,000ページまで。パスワード付きPDF不可。非同期で1ページ30問まで。対応言語が英・仏・独・伊・葡・西で、質問は英語の文書のみ。縦書き非対応。文字の高さ15ピクセル(150 DPIで8ポイント)が下限AWS: Set Quotas in Amazon Textract2026-10-08
FeatureTypes(TABLES・FORMS・QUERIES・SIGNATURES・LAYOUT)、全文の行と単語が常に返ること。ClientRequestToken で同じ JobId が返ること。JobTag が完了の通知に含まれること。SNSで SUCCEEDED を確かめてから結果を取ること。JobId が7日間有効なこと。KMSKeyId の扱いAWS: StartDocumentAnalysis2026-10-08
MaxResults が既定・最大1,000件で NextToken で続きを取ること。JobStatus に PARTIAL_SUCCESS があり Warnings がページ番号を返すことAWS: GetDocumentAnalysis2026-10-08
表が TABLE と CELL のブロックで返り、セルに行番号・列番号・信頼度があること。COLUMN_HEADER、TABLE_SUMMARY などのセルの種類AWS: Tables2026-10-08
表全体や行・列を質問で取り出すことは非対応。文書の言葉で質問を作り、日付は何の日付かを特定して聞くこと。ページ指定が無いと ["1"] になり、* で全ページを指定できることAWS: Best Practices for Queries2026-10-08
レイアウトの要素が LAYOUT_TITLE などのブロックで返ることAWS: Layout Response Objects2026-10-08
構造化出力を output_config.format(type: "json_schema")で指定することClaude: Structured outputs2026-10-08

実質的支配者に当たるかの判断の規則は、施行規則と所管の行政庁の指針、自社の規程に従って決めてください。 本記事は JAFIC の概要で確認できた範囲だけを扱っています。

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

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

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

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