Media > AI活用ユースケース > 採用 > 海外の前職から届く英文の在職証明書を読み取り、候補者台帳と照らして、経歴の食い違いと在留資格の申請に足りない記載を拾う

海外の前職から届く英文の在職証明書を読み取り、候補者台帳と照らして、経歴の食い違いと在留資格の申請に足りない記載を拾う

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

海外の前職の会社から届く英文の在職証明書を読み取り、在籍期間・職位・職務内容を候補者台帳と照らします。履歴書との食い違いと、在留資格の申請に足りない記載を拾い、採用の担当者へ返します。

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

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

導入前(Before)
  1. 候補者から転送された前職の証明書のPDFを、担当者が開く
  2. 発行元の会社名、候補者の氏名、入社日と退職日、職位、職務内容、発行日、署名者を読む
  3. 候補者台帳の職歴の行を開き、会社名・期間・職位を見比べる
  4. 職務内容が、紹介先で就く業務に関連するものとして読めるかを確かめる
  5. 期間が書かれていない、職務内容が無い、署名が無いなどの不足をメモする
  6. 不足や食い違いがあれば、候補者に事情を聞き、前職への取り直しを頼んでもらう
  7. そろった証明書を申請の書類一式に入れ、訳文の作成に回す
導入後(After)
  1. 人候補者から届いた証明書のPDFを、候補者IDと職歴の行番号を付けて受付フォルダ(Amazon S3)に保存する
  2. 自動保存をきっかけに処理が動き、形式・ページ数・パスワードの有無を確かめる
  3. 自動OCRが証明書の全文、キーと値、質問への答え、署名の検出、信頼度を返す
  4. 自動発行元、候補者の氏名、入社日、退職日、職位、職務内容、発行日、署名者と連絡先を取り出し、原文のまま記録する
  5. 自動プログラムが候補者台帳の職歴の行と、氏名・会社名・期間・職位を規則で照らす
  6. 自動プログラムが、紹介先のカテゴリーと社内の記載の基準で、足りない記載に印を付ける
  7. 自動取り直しが要るものには、候補者に送る依頼文の下書きを作る
  8. 人担当者が、印の付いた証明書を画像と見比べて確かめる
  9. 人採用の責任者と専門家が、申請の書類一式として使えるかを決める
各工程の詳しい説明を読む
  1. 候補者から転送された前職の証明書のPDFを、担当者が開く
  2. 発行元の会社名、候補者の氏名、入社日と退職日、職位、職務内容、発行日、署名者を読む
  3. 候補者台帳の職歴の行を開き、会社名・期間・職位を見比べる
  4. 職務内容が、紹介先で就く業務に関連するものとして読めるかを確かめる
  5. 期間が書かれていない、職務内容が無い、署名が無いなどの不足をメモする
  6. 不足や食い違いがあれば、候補者に事情を聞き、前職への取り直しを頼んでもらう
  7. そろった証明書を申請の書類一式に入れ、訳文の作成に回す

(a)期間の食い違いを見落とす。 履歴書では「2021年4月〜2024年3月」なのに、証明書では「from 1st June 2021」。日付の書き方が国ごとに違い、月単位のずれは目で見比べても通ってしまいます。 申請の書類どうしで期間が合わないと、後から説明を求められることがあります。

(b)不足が申請の直前に分かる。 職務内容が書かれていない、退職日が無く「is working with us」と現在形のまま、といった証明書を受け取ったまま進め、申請の書類を組む段になって取り直しが必要と分かります。 前職の人事部とのやり取りは、候補者を介して数週間かかります。

(c)確認のやり方が担当者ごとに違う。 職務内容のどこまでを「関連する業務」として読むか、署名が無い電子発行の証明書をどう扱うか。4名の判断がそろっておらず、紹介先や専門家から差し戻されて初めて違いに気づきます。

  1. 【人】 候補者から届いた証明書のPDFを、候補者IDと職歴の行番号を付けて受付フォルダ(Amazon S3)に保存する
  2. 【自動】 保存をきっかけに処理が動き、形式・ページ数・パスワードの有無を確かめる
  3. 【自動】 OCRが証明書の全文、キーと値、質問への答え、署名の検出、信頼度を返す
  4. 【自動】 発行元、候補者の氏名、入社日、退職日、職位、職務内容、発行日、署名者と連絡先を取り出し、原文のまま記録する
  5. 【自動】 プログラムが候補者台帳の職歴の行と、氏名・会社名・期間・職位を規則で照らす
  6. 【自動】 プログラムが、紹介先のカテゴリーと社内の記載の基準で、足りない記載に印を付ける
  7. 【自動】 取り直しが要るものには、候補者に送る依頼文の下書きを作る
  8. 【人】 担当者が、印の付いた証明書を画像と見比べて確かめる
  9. 【人】 採用の責任者と専門家が、申請の書類一式として使えるかを決める

8番目が、この設計の分かれ目です。 担当者は120通を最初から読み直すのではなく、食い違いと不足の印が付いたものだけを開きます。 印の無いものは、期間と職位を並べた一覧で流し見ます。

5番目と6番目をAIにさせないのも、意図してのことです。 期間の比較、会社名の照合、記載の基準に当たるか。どれも規則で決まる比較で、AIには証明書から値を読み取るところまでをさせます。

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

構成図
英文の在職証明書(PDF。候補者から転送されたもの)
   ▼【トリガー】受付フォルダ(Amazon S3)への保存
AWS Lambda ── 形式・ページ数・サイズ・パスワードの確認
   ▼
AWS Textract(StartDocumentAnalysis:FORMS/QUERIES/SIGNATURES)
   │   全文、キーと値、質問への答え、署名の検出、信頼度
   ▼
Claude API ── 証明書の項目を取り出し、原文と解釈を分けて記録する
   │   ① 発行元と署名者  ② 氏名  ③ 入社日と退職日
   │   ④ 職位            ⑤ 職務内容  ⑥ 発行日
   ▼
Python ── 候補者台帳の職歴と照らし、記載の基準で不足に印を付ける
   ▼
一覧(ok / period_mismatch / name_mismatch / missing_item / needs_human)
   ▼
【担当者が印の付いた証明書を確認】
   ├──▶ 候補者への取り直しの依頼(下書き)
   └──▶ 責任者と専門家が申請に使えるかを決める
役割想定する製品代替候補
OCRAWS Textract(StartDocumentAnalysis/GetDocumentAnalysis)Azure AI Document Intelligence、Google Document AI
生成AIClaude API(証明書の項目の取り出し、依頼文の下書き)OpenAI API、Gemini API
差異計算Python(期間・会社名・職位の照合と、記載の基準による不足の判定)採用管理システムの書類チェックの機能
連携AWS Lambda(保存と完了の通知を起点に処理を動かす)Amazon EventBridge
保管Amazon S3(証明書、読み取り結果、照合の結果)社内のファイルサーバー

候補者台帳と紹介先の一覧は、新しく足すものではありません。 最初の準備は、証明書に書かれているべき記載の基準を、社内で1枚の表にすることです。発行元、氏名、入社日、退職日(在職中ならその旨)、職位、職務内容、発行日、署名者と連絡先。4名の判断をこの表にそろえます。

OCRに AWS Textract を選ぶのは、証明書が英文だからです。 公式の上限の表で、対応言語は英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語とされ、日本語や中国語は読めません。 手書きの文字が読めるのも英語だけなので、手書きの署名欄に書き添えられた日付は、英語以外では読めない前提で扱います。

この題材で効くのは、質問(QUERIES)です。 証明書の多くはレターの形で、期間も職位も文章の中に埋まっています。「この人はいつからいつまで在籍したか」と質問の形で聞くと、文章の中から答えの文字列と信頼度が返ります。 質問は英語の文書でしか使えず、1ページあたり非同期で30個までです。

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

Step1

処理の起点を決める

起点は2つあります。証明書が保存されたときと、毎週月曜の定時です。

1つ目は、受付フォルダ(Amazon S3)に証明書のPDFが保存されたことです。担当者は候補者から転送されたファイルを、ファイル名に候補者IDと職歴の行番号を付けて保存します。保存の通知で AWS Lambda が動き、読み取りから一覧への記録までを済ませます。どの職歴の証明かをファイル名で決めておくので、照合の相手を探す手間がかかりません。

2つ目は、毎週月曜9時の定時です。内定者ごとに、職歴の行のうち証明書がまだ届いていないもの、取り直しを頼んで2週間たっても届かないものを一覧にして担当者に送ります。申請の予定日から逆算して、遅れている候補者を先に見られるようにします。

Step2

入力データを集める

データ中身取得元
在職証明書PDF。発行元、氏名、入社日、退職日、職位、職務内容、発行日、署名者と連絡先受付フォルダ(Amazon S3)
読み取り結果全文、キーと値、質問への答え、署名の検出、それぞれの信頼度AWS Textract
候補者台帳候補者の氏名(パスポートの表記)、職歴の行ごとの会社名・期間・職位・業務の説明候補者台帳
紹介先の一覧紹介先の企業、申請で使うカテゴリーの区分、就く予定の業務紹介先企業の一覧
記載の基準証明書に書かれているべき記載と、足りないときの扱い内定者支援チームで作る表
会社名の別名の一覧前職の会社ごとに、履歴書と証明書に出てくる名称の書き方内定者支援チームで用意する一覧

質を決めるのは、会社名の別名の一覧です。 履歴書には ABC Technologies と書かれ、証明書の発行元は ABC Technologies Private Limited や親会社の名義、ということはよくあります。一覧にある書き方だけを同じ会社とし、無いものは人に見せます。

候補者の氏名はパスポートの表記で持ちます。 証明書には名と姓の順が違うもの、ミドルネームを省いたものがあります。照合は表記のゆれを規則で吸収し、吸収できないものは人に回します。

Step3

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

読み取りは StartDocumentAnalysis にS3の場所と FeatureTypes を渡して始めます。完了は NotificationChannel に指定した Amazon SNS のトピックに通知され、状態が SUCCEEDED なら GetDocumentAnalysis で結果を取ります。

指定するもの値理由
FeatureTypesFORMS、QUERIES(英語のとき)、SIGNATURES見出しのキーと値、文章の中の期間と職位、署名の有無
QueriesConfig質問の文と Alias の組期間や職位を項目名で受け取る
ClientRequestToken候補者IDと職歴の行番号とファイルのハッシュ同じ証明書で二重に読み取りを始めない
JobTag候補者IDと職歴の行番号完了の通知から照合の相手を引く
Alias質問の文
EMPLOYEE_NAMEWhat is the name of the employee?
EMPLOYER_NAMEWhich company issued this certificate?
START_DATEWhen did the employee join the company?
END_DATEWhen did the employee leave the company?
JOB_TITLEWhat was the employee's designation or job title?
DUTIESWhat were the employee's duties or responsibilities?
ISSUE_DATEOn what date was this certificate issued?
SIGNATORYWho signed this certificate and what is their title?

質問の答えが見つからなければ空のまま返ります。 退職日が空なら、全文から till、to、until、currently、is working を含む行を探し、在職中と書かれていれば employed を、何も無ければ missing を記録します。 退職日を、発行日や履歴書の日付で埋めることはしません。

結果は1回最大1,000ブロックで区切られ、NextToken が返る限り呼び直します。証明書の本体は1〜2ページでも、職務の別紙が付くことがあるので非同期で読みます。

候補者台帳、紹介先の一覧、記載の基準は、Python が読みます。 生成AIには、台帳の職歴の内容を渡しません。

Step4

AIへ渡す前に整形する

  1. 形式の確認 … JPEG、PNG、PDF、TIFF であることを確かめます。スマートフォンで撮った写真は、PDFにまとめて入れます
  2. パスワードの確認 … PDFはパスワードで保護されていてはいけないとされています。保護されたものは候補者に解除したものを頼みます
  3. サイズとページ数の確認 … 非同期の処理で、PDFとTIFFは500MB・3,000ページまでです
  4. 文字の大きさの確認 … 文字の高さは最小15ピクセルで、150 DPIで8ポイントの文字に相当します。写真で撮った証明書は、この下限を下回りやすい書類です
  5. 言語の確認 … 6言語に入らない証明書は読み取りに回さず、担当者が目で見る一覧に入れます
  6. 照合の相手の特定 … ファイル名の候補者IDと職歴の行番号で、台帳の行と紹介先の区分を引きます

4番目は、受付の時点で候補者に伝えておくと効きます。 写真ではなく、前職から受け取ったPDFそのものを送ってもらうよう、内定の連絡と一緒に案内します。

Step5

AIに処理させる

させるのは、証明書から8つの項目を読み取り、原文の文字列と、日付の解釈を分けて書き出すことです。 照合と不足の判定はさせません。

見るもの取り出し方判断できないときの扱い
発行元原文のまま。レターヘッドと署名欄の会社名を分ける2つが違えば両方を記録
氏名原文のまま複数の人名が並べば ambiguous
入社日原文と、日付として確定できるときだけ解釈月までしか無ければ月までを記録
退職日原文と解釈。在職中なら employed書かれていなければ missing
職位原文のまま。期間中に変わっていれば全部を並べる書かれていなければ missing
職務内容原文のまま、箇条ごとに書かれていなければ missing
発行日原文と解釈順序が決まらなければ ambiguous
署名者と連絡先氏名、役職、メールや電話の記載署名の検出があり氏名が読めなければ unreadable

職位を全部並べるのは、期間中の昇進が普通にあるためです。 「Software Engineer」から「Senior Software Engineer」に変わった証明書で、最後の職位だけを取ると、履歴書の職歴の行と照らしたときに食い違いに見えます。

職務内容を要約させないのも大事です。 要約すると、「関連する業務」として読めるかの判断に使う言葉が落ちます。原文のまま箇条で残し、読むのは人です。

させないこと理由
証明書が本物かどうかの判断前職への確認を含め、責任者が行う
在留資格の要件に当たるかの判断申請を取り次ぐ専門家が行う
期間や会社名の照合別名の一覧と規則で Python が行う
職務内容の要約や言い換え関連する業務かを読むための言葉が落ちる
書かれていない退職日や期間の補完履歴書の日付で埋めると、食い違いが消える

最後の行が、いちばん起きやすい失敗です。 退職日の無い証明書で、履歴書の職歴の日付を参考に埋めると、照合は必ず一致し、見つけたかった食い違いと不足がまとめて消えます。

Step6

指示内容を固定する

あなたは人材紹介会社の内定者支援チームで、候補者の前職から届いた
英文の在職証明書の記載を記録する担当です。
OCRの読み取り結果だけを使ってください。推測で埋めないでください。

【取り出す項目】
issuer_letterhead_raw、issuer_signature_block_raw、employee_name_raw、
start_date_raw、start_date、end_date_raw、end_date、employment_status、
job_titles_raw(配列)、duties_raw(配列)、issue_date_raw、issue_date、
signatory_name_raw、signatory_title_raw、signatory_contact_raw、
各項目の status と source(ページと行)

【status の選び方】
- ok ........... 値が読み取れており、その項目として解釈できる
- missing ...... 書かれていない
- unreadable ... 文字は検出されているが値として確定できない
- ambiguous .... 候補が複数ある、または日付の順序が決まらない

【厳守事項】
- 日付は、日と月の順序が文面から確定できるときだけ YYYY-MM-DD で
  入れてください。月までしか書かれていなければ YYYY-MM としてください。
  決まらなければ空にし、ambiguous にしてください。
- 退職日が書かれていない場合は missing にしてください。
  在職中と書かれていれば employment_status を employed にしてください。
  発行日やほかの日付から補わないでください。
- 職務内容は要約せず、書かれたとおりに箇条ごとに配列へ入れてください。
- 職位が複数書かれていれば、すべてを並べてください。
- 証明書が本物か、在留資格の要件を満たすかを書かないでください。
- 在職証明書でない書類(給与明細、推薦状、雇用契約書など)と
  判断した場合は、項目を取り出さず document_type に種類を書いてください。

【読み取り結果】{textract_forms_queries_signatures}

「推薦状」を在職証明書でない書類として挙げているのには理由があります。 前職の上司が書いた推薦状にも在籍期間と職務が書かれていることがあり、区別しないと、会社が発行した証明書と同じ扱いで一覧に入ります。 どちらとして扱うかは人が決めます。

Step7

出力形式を固定する

Claude API の構造化出力(output_config.format に json_schema を指定)で、次の形のJSONを受け取ります。

{
  "file": "",
  "candidate_id": "",
  "career_row": 2,
  "document_type": "employment_certificate",
  "issuer_letterhead_raw": "ABC Technologies Private Limited",
  "employee_name_raw": "Mr. Ravi Kumar S",
  "start_date_raw": "1st June 2021",
  "start_date": "2021-06-01",
  "end_date_raw": "31st March 2024",
  "end_date": "2024-03-31",
  "employment_status": "left",
  "job_titles_raw": ["Software Engineer", "Senior Software Engineer"],
  "duties_raw": ["Design and development of backend APIs", "Code review"],
  "issue_date_raw": "April 5, 2024",
  "signatory_name_raw": "",
  "signature_detected": true,
  "items": [
    { "item": "signatory_name", "status": "unreadable", "confidence": 0, "source": "p1:L31" }
  ],
  "request_draft": ""
}

1つ目の理由は、照合と不足の判定をプログラムの側に置けることです。 Python が台帳の職歴の行と照らし、記載の基準で印を付けます。

印付ける条件
ok氏名と会社名が一致し、期間のずれが基準の範囲内で、基準の記載がそろっている
period_mismatch入社日か退職日が、台帳の職歴と基準を超えてずれる
name_mismatch氏名か会社名が、台帳にも別名の一覧にも当たらない
missing_item期間・職位・職務内容・発行元・署名者のいずれかが missing
needs_humanambiguous、unreadable の項目がある、または在職証明書でない書類

2つ目は、紹介先のカテゴリーで扱いを分けられることです。 カテゴリー1と2の紹介先では、missing_item を取り直しの依頼ではなく記録だけにし、カテゴリー3と4の紹介先では、取り直しの依頼の下書きまで作ります。

3つ目は、原文と解釈を並べて持てることです。 訳文を作る人は、start_date_raw と start_date を並べて見れば、解釈が正しいかを原文で確かめながら訳せます。

Step8

システムへ連携する

つなぎ先方式内容
受付フォルダ(Amazon S3)保存の通知証明書の保存を検知して AWS Lambda を動かす
AWS TextractAPI呼び出し(非同期)読み取りを始め、完了の通知で結果を取る
Claude APIAPI呼び出し項目の取り出し、取り直しの依頼文の下書き
候補者台帳読み取り氏名と職歴の行を引く
紹介先の一覧読み取りカテゴリーの区分と就く予定の業務を引く
照合結果の一覧書き込み証明書ごとの印と根拠を書く

候補者台帳へは書き込みません。 証明書の期間に合わせて台帳の職歴を直すかは、候補者に事情を聞いたうえで担当者が決めます。 自動で直すと、食い違いがあったという事実が台帳から消えます。

Step9

人が確認する

担当者が開くのは、ok 以外の印が付いた証明書です。 ok のものは、期間と職位を並べた一覧で流し見ます。

  1. needs_human を先に片付ける … 読めない署名者や順序の決まらない日付を、画像で確かめます
  2. period_mismatch と name_mismatch の理由を候補者に聞く … 試用期間の扱い、社名の変更、グループ会社への転籍などを確かめます
  3. missing_item の取り直しを頼む … 下書きを直して、候補者に送ります
  4. 申請に使えるかを責任者と専門家に上げる … そろった証明書と照合の結果を並べて渡します

2番目で台帳の側を直すときは、直した理由を残します。 「証明書は入社日を正社員登用の日で書いている」のように理由が分かっていれば、申請の書類どうしで期間を説明できます。

Step10

例外に対処する

起きること対応
パスワードで保護されたPDF読めない。候補者に解除したものを頼む
6言語に入らない証明書読み取りに回さず、担当者が目で見る
退職日が無く、在職中とも書かれていないmissing。日付を補わず、取り直しを頼む
日と月の順序が決まらないambiguous。発行国の書き方と画像で人が確定する
レターヘッドと署名欄の会社名が違う両方を記録し、name_mismatch で人へ
推薦状や給与明細が送られてくるdocument_type を見て、在職証明書の取り直しを頼む
前職の会社が無くなっている取り直しができない。専門家に代わりの書類を相談する
ジョブが FAILED または PARTIAL_SUCCESSStatusMessage と Warnings のページ番号を記録し、そのページを人へ

上から3行目と4行目が、照合の誤りのほとんどを生みます。 どちらも期間という1つの値の問題で、ここを人に回す設計を崩すと、食い違いの印が当てにならなくなります。

Step11

記録を残す

  • 元の証明書と、受け取った日時、候補者ID、職歴の行番号
  • AWS Textract が返したJSONの全文と、使った質問の一覧
  • Claude API が返したJSON(原文と解釈の両方)
  • 照合の結果と、そのとき参照した台帳の職歴、記載の基準、別名の一覧の版
  • 担当者が印を覆した記録と、候補者から聞いた理由
  • 取り直しの依頼と、新しい証明書との対応

保存の期間と、見られる人を先に決めます。 証明書には候補者の職歴と、署名者の氏名や連絡先が書かれています。内定を辞退した候補者の証明書をいつ消すかも、ここで決めておきます。

04実装レベルの3段階

最小構成:証明書を手でAIの画面に貼り、項目を表にさせる / 1通ごとの項目の読み取り
半自動化:上記+受付フォルダを起点に AWS Textract で読み、台帳と照合し、記載の基準で不足に印を付ける / 読み取り、項目の記録、照合、取り直しの依頼文の下書き
本格構成:上記+候補者が書類を送るフォームからの自動の受付、訳文の下書き、申請の書類一式の目録の作成 / 書類の受付から申請の準備まで

本記事の想定は半自動化です。 読み取りと照合が自動になり、担当者は印の付いた証明書を確かめて取り直しを頼みます。1件30分が10分になるのはこの段階です。 本格構成で足すのは、受付と訳文です。 候補者がフォームから職歴の行を選んで証明書を送れば、ファイル名を付ける作業が無くなります。訳文は下書きまでにし、訳した人が原文と突き合わせて仕上げます。 段階を飛ばさないでください。 半自動化を2〜3か月回すと、name_mismatch が出やすい国と会社の書き方と、記載の基準で迷う項目が先に分かります。そこで別名の一覧と基準を整えてから本格構成に進みます。

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

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

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

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

AI活用について相談する

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

向いている
  1. 海外のエンジニアや専門職を日本の企業に紹介する人材紹介会社と、海外から直接採用するIT企業・メーカー。内定後の在留資格の申請に向けて、候補者の前職から英文の在職証明書を集め、在籍期間や職務内容を履歴書と見比べる作業が毎月数十件から百件以上ある場合。証明書の書式が国と会社ごとにばらばらで、どこに期間や職務が書かれているかを探すのに時間がかかっている場合。
向いていない
  1. 海外からの採用が年に数名の企業。在職証明書が英語以外(中国語・ベトナム語・日本語など)で届く候補者が中心の場合(この構成のOCRは英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語しか読めず、手書きは英語のみです)。なお、証明書が本物かどうか、在留資格の要件を満たすかどうか、採用を進めるかどうかの判断は、採用の責任者と申請を取り次ぐ専門家が行うもので、この構成では代替できません。

07最小構成で試す方法

  1. 過去に受け取った証明書から20通を選ぶ(退職日が無いもの、期間中に職位が変わったもの、日付が 03/04/2021 のような書き方のもの、推薦状を必ず入れる)
  2. 手元の生成AIの画面に1通ずつ貼り付け、「この証明書の発行元、氏名、入社日、退職日、職位、職務内容、発行日、署名者を、書かれたとおりに表にしてください。書かれていない項目は『記載なし』とし、ほかの日付から補わないでください。職務内容は要約しないでください」と指示する
  3. 出てきた表を、候補者台帳の職歴と手で見比べる

20通は必ずやってください。 仕組みを組む前に、退職日を補わないか、職務内容を要約しないか、推薦状を見分けられるかを確かめます。

出てきた内容判断
期間と職務内容を原文どおりに取り出したOCRのAPIと照合の処理に進む
退職日を履歴書や発行日で補った補完を禁じる指示を足す。直るまで先に進まない
職務内容を要約した原文のまま箇条で返させる。構成は有効

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

問題対策
退職日を履歴書の日付で補う補完を禁じ、missing で人へ
最後の職位だけを取って食い違いに見える職位を全部並べて取り、台帳の行と規則で照らす
職務内容を要約して判断の言葉が落ちる原文のまま箇条で残す
日と月の順序を取り違える順序が決まらない日付は解釈させず、原文を残す
推薦状を在職証明書として扱う書類の種類を取り出させ、違えば人へ
会社名の表記の違いで不一致が出すぎる別名の一覧を作り、一覧にあるものだけを同じ会社とする
写真で撮った証明書の文字が読めない前職から受け取ったPDFを送るよう候補者に案内する
台帳の職歴を自動で直す直すのは理由を聞いた担当者。自動では書き込まない

上の2行が、この構成の失敗のほとんどです。 どちらも「書かれていることをそのまま取る」を崩す失敗で、補ったり絞ったりした瞬間に、照合が意味を失います。

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

この構成で扱うデータ: 候補者の氏名、職歴、職位、職務内容、そして前職の署名者の氏名と連絡先です。採用の判断に関わる個人の情報で、候補者本人から預かったものです。

  1. 利用の目的を候補者に伝え、同意を取る … 証明書を読み取りと照合に使うこと、外部のクラウドで処理することを、書類を受け取る前に伝えます
  2. 外部へ渡す範囲を、読み取りに必要なものに限る … 生成AIに渡すのは証明書の読み取り結果だけです。台帳の職歴、紹介先の情報、選考の評価は渡しません
  3. 本物かどうかを判定させない … この構成が出すのは記載の照合までで、証明書の真正の確認は責任者が前職への確認を含めて行います
  4. 在留資格の要件を判断させない … 要件に当たるかは申請を取り次ぐ専門家が判断します
  5. 辞退者のデータを残しすぎない … 内定を辞退した候補者の証明書と読み取り結果を、決めた期間で消します

誤りが起きた場合のリスクは、食い違いを見落としたまま申請の書類を組むことと、正しい経歴を食い違いとして候補者に問いただすことの2つです。 前者は補完から、後者は表記の違いから起きるので、値を原文のまま残し、照合は規則と別名の一覧で行う設計を崩さないでください。

10まず何から始めるか

1週目:記載の基準を1枚の表にする

4名がそれぞれ見ている項目を書き出し、証明書に書かれているべき記載と、足りないときの扱いを1枚の表にします。申請を取り次ぐ専門家に見てもらいます。

2週目:20通で試す

過去の証明書から20通を選び、手元の生成AIの画面で項目を表にさせます。退職日を補わないか、職務内容を要約しないか、推薦状を見分けられるかを最優先で見ます。

3週目:別名の一覧とファイル名の決まりを作る

過去の証明書から、会社名の書き方の別名の一覧を作ります。保存するファイル名に候補者IDと職歴の行番号を付ける決まりも、ここで決めます。

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

S3、Lambda、Textract、Claude API、Python の照合をつなぎ、照合結果の一覧に印を書くところまで作ります。この時点では、カテゴリー3と4の紹介先に入る候補者だけを対象にします。

2か月目: 対象を全候補者に広げ、period_mismatch と name_mismatch の件数を毎週数えて別名の一覧と基準を直します。3か月目以降: 取り直しの依頼文の下書きを足し、1件30分が何分になったかを実測します。申請の書類を組む段で不足が見つかることがなくなった時点で、この構成は完成です。


11関連ユースケース

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

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

技術仕様確認日:2026-10-07/最終更新:2026-10-07
確認した内容情報源確認日
在留資格「技術・人文知識・国際業務」の在留資格認定証明書交付申請で、職務に従事した機関・内容・期間を明示した履歴書と、学歴又は職歴等を証明する文書(大学等の卒業証明書、在職証明書等で関連する業務に従事した期間を証明する文書 など)を出すこと。外国の文化に基盤を有する思考又は感受性を必要とする業務では3年以上の実務経験を証明する文書を出すこと。カテゴリー1・2はその他の資料が原則不要であること。提出書類が外国語の場合は訳文(日本語)を添付すること出入国在留管理庁: 在留資格「技術・人文知識・国際業務」2026-10-07
対応する形式がJPEG、PNG、PDF、TIFFであること。同期はPDF1ページ・10MB、非同期はPDFとTIFFで500MB・3,000ページであること。PDFはパスワードで保護できないこと。対応言語が英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語で、質問の検出は英語の文書だけであること。質問は非同期で1ページ30個までであること。手書きは英語のみであること。文字の最小の高さが15ピクセル(150 DPIで8ポイント相当)であることAWS: Set Quotas in Amazon Textract2026-10-07
StartDocumentAnalysis の FeatureTypes(TABLES/FORMS/QUERIES/SIGNATURES/LAYOUT)、QueriesConfig、ClientRequestToken、JobTag、NotificationChannel で Amazon SNS に完了を通知することAWS: StartDocumentAnalysis2026-10-07
GetDocumentAnalysis の JobStatus(SUCCEEDED/FAILED/PARTIAL_SUCCESS ほか)、MaxResults(最大1,000)と NextToken、StatusMessage、WarningsAWS: GetDocumentAnalysis2026-10-07
質問の応答が QUERY と QUERY_RESULT のブロックで返り、別名(Alias)と信頼度を持つこと。答えが見つからなければ空のまま返ることAWS: Queries2026-10-07
構造化出力を output_config.format に json_schema を指定して受け取れることClaude Docs: Structured outputs2026-10-07

在留資格の要件に当たるかの判断と申請の取次ぎは、専門家が行うものです。 本記事は出入国在留管理庁のページで確認できた提出書類の範囲と、証明書の読み取りと台帳との照合までを扱っています。

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

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

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

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