Media > AI活用ユースケース > 採用 > 合同企業説明会や学内の説明会で学生が手書きするアンケートを読み取り、氏名・学校・連絡先・関心のある職種を応募者台帳にそろえて、その日のうちにお礼と案内を送れるようにする

合同企業説明会や学内の説明会で学生が手書きするアンケートを読み取り、氏名・学校・連絡先・関心のある職種を応募者台帳にそろえて、その日のうちにお礼と案内を送れるようにする

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

説明会で学生が手書きするアンケートを読み取り、氏名・学校・連絡先・関心のある職種を応募者台帳にそろえます。案内を希望した学生にその日のうちにお礼と次の案内を送れるよう、メールの下書きまで作ります。

サマリー
生成AI
ChatGPT/Claude
AIサービス
Azure AI/Google Document AI
連携・自動化
Google Apps Script/Python
対象業界
IT・SaaS/人材/小売/製造
対象部門
採用
対象業務
データ入力・転記/台帳・マスタ管理
主な課題
人手が足りない/入力作業が多い/営業フォローが追いつかない
AIで行う処理
読み取り(OCR)
主な効果
対応スピード向上/工数削減/機会損失防止
導入難易度
★★☆☆☆
実装レベル
本格構成
費用感
API連携(中)
人間の確認
条件付き
現在工数
60h/月
AI導入後
21h/月
想定削減
65%
年間削減
468h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. 説明会の後、ブースの担当がアンケートを会社に持ち帰る
  2. 翌日以降、担当がアンケートを1枚ずつ見ながら応募者台帳に打ち込む
  3. 読めない字は、前後の文字から推測するか、空欄にする
  4. 台帳の中に同じ学生がいないかを、氏名とメールで探す
  5. 案内の希望に印のある学生に、お礼と次の説明会の案内をメールで送る
  6. 自由記述の質問に答えが要るものは、担当が個別に返信する
導入後(After)
  1. 人説明会の後、ブースの担当が会場か帰社後にアンケートをまとめてスキャンし、説明会ごとのドライブのフォルダに保存する
  2. 自動Google Apps Script が数分おきにフォルダを確かめ、新しいスキャンを1枚ずつに分ける
  3. 自動Google Document AI の Form Parser が、アンケートの欄のキーと値、職種と案内の希望のチェックボックス、信頼度を返す
  4. 自動Claude API が、欄を台帳の項目に写し、自由記述の質問を取り出し、選考に関係のない記載に印を付ける
  5. 自動Apps Script が、台帳の中の重複の候補を探し、メールアドレスの形と信頼度を確かめる
  6. 自動案内を希望し、アドレスが確かめられた学生に、型に沿ったお礼と案内のメールの下書きを作る
  7. 人担当が、印の付いた行(読めないアドレス、重複の候補、記載の印)を原本と見比べる
  8. 人担当が下書きをまとめて確かめ、送る
各工程の詳しい説明を読む
  1. 説明会の後、ブースの担当がアンケートを会社に持ち帰る
  2. 翌日以降、担当がアンケートを1枚ずつ見ながら応募者台帳に打ち込む
  3. 読めない字は、前後の文字から推測するか、空欄にする
  4. 台帳の中に同じ学生がいないかを、氏名とメールで探す
  5. 案内の希望に印のある学生に、お礼と次の説明会の案内をメールで送る
  6. 自由記述の質問に答えが要るものは、担当が個別に返信する

(a)打ち込みが追いつかない。 説明会が続く時期は、1週間に数百枚のアンケートがたまります。打ち込みが終わるまで、お礼のメールが送れません。 説明会から数日たって届くお礼は、学生にとって他社の案内に埋もれます。

(b)メールアドレスの読み違い。 立ったまま急いで書かれたアドレスは、読み違えやすい文字が並びます。推測で打ち込んだアドレスに送ったメールは、宛先不明で戻ってくるか、戻らずにどこかへ届きます。 戻ってこない場合は、学生に届いていないことにも気づけません。

(c)重複が探しきれない。 台帳にすでにいる学生を探すのに、氏名の漢字の違い(「斉藤」「齋藤」)やメールの違い(大学のアドレスと個人のアドレス)で手間取ります。探しきれずに新しい行を作ると、同じ学生に案内が2通届きます。

(d)書かれた内容をそのまま写してしまう。 自由記述に学生が家族の勤め先や出身地を書いていても、打ち込む担当はそのまま台帳に写してしまいます。 台帳は選考の担当も見るので、選考に関係のない情報が選考の場に持ち込まれることになります。

  1. 【人】 説明会の後、ブースの担当が会場か帰社後にアンケートをまとめてスキャンし、説明会ごとのドライブのフォルダに保存する
  2. 【自動】 Google Apps Script が数分おきにフォルダを確かめ、新しいスキャンを1枚ずつに分ける
  3. 【自動】 Google Document AI の Form Parser が、アンケートの欄のキーと値、職種と案内の希望のチェックボックス、信頼度を返す
  4. 【自動】 Claude API が、欄を台帳の項目に写し、自由記述の質問を取り出し、選考に関係のない記載に印を付ける
  5. 【自動】 Apps Script が、台帳の中の重複の候補を探し、メールアドレスの形と信頼度を確かめる
  6. 【自動】 案内を希望し、アドレスが確かめられた学生に、型に沿ったお礼と案内のメールの下書きを作る
  7. 【人】 担当が、印の付いた行(読めないアドレス、重複の候補、記載の印)を原本と見比べる
  8. 【人】 担当が下書きをまとめて確かめ、送る

6番目で作るのは下書きまでです。 送る前に担当が宛先と型を確かめます。一度送ったメールは取り消せないので、送る操作だけは人に残します。

7番目が、この設計の分かれ目です。 担当が原本を見るのは印の付いた行だけです。印の無い行は、台帳の行と下書きを流し見て送ります。

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

構成図
説明会のアンケート(手書き、A4片面)
   │  会場か帰社後にスキャン
   ▼【トリガー】説明会ごとのフォルダへの保存(Apps Script の時間主導型トリガーで確認)
Google Apps Script ── 1枚ずつに分け、形式と解像度を確認
   ▼
Google Document AI(Form Parser)
   │   欄のキーと値、チェックボックス、信頼度
   ▼
Claude API ── 台帳の項目に写す/質問を取り出す/選考に関係のない記載に印
   ▼
Google Apps Script ── 重複の候補/アドレスの確認/下書きの作成
   ▼
応募者台帳の「取り込み待ち」シート+Gmail の下書き
   ▼
【担当が印の付いた行を原本で確かめ、下書きを確かめて送る】
役割想定する製品代替候補
OCRGoogle Document AI(Form Parser)Azure AI Document Intelligence
生成AIClaude API(アンケートの欄の写しと記載の印)OpenAI API
連携Google Apps Script(フォルダの確認、台帳への書き込み、下書きの作成)Python
差異計算Google Apps Script(台帳の中の重複の候補)Python
保管Google ドライブ(スキャンと読み取り結果)社内のファイルサーバー

新しく足すのは、応募者台帳の「取り込み待ち」のシートと、お礼と案内のメールの型の2つです。 型は説明会の種類(合同・学内)と関心のある職種ごとに用意し、差し込むのは氏名と説明会の名前と日付だけにします。

土台は Document AI の Form Parser です。 公式のプロセッサ一覧では、OCRのテキストに加えてキーと値のペア、チェックボックス、表を抽出するとされ、言語の一覧で日本語(ja)は手書きに対応する言語として示されています。アンケートの氏名・学校は欄として、職種と案内の希望の□はチェックボックスとして読めます。

Form Parser の注意書きのうち、この題材で効くのは2つです。 1つは、値が空のキーと値のペアは確実には読み取れないとされていること。もう1つは、チェックボックスの読み取りはラジオボタンに対応しないとされていることです。アンケートの選択肢は□で印刷し、○で囲む形にしません(第7章)。

処理する場所は、リージョンの一覧から選びます。 マルチリージョンの us と eu、シンガポール(asia-southeast1)などの単一リージョンがあり、日本のリージョンはありません。 アンケートには学生の氏名と連絡先が書かれているので、自社の個人情報の取扱いの決まりに照らして、国外で処理してよいかを導入前に決めます(第13章)。

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

Step1

処理の起点を決める

説明会ごとのドライブのフォルダにスキャンが保存されたことを起点にします。 Apps Script の時間主導型トリガーを数分おきに動かし、新しいファイルを探します。フォルダの名前に説明会の日付と名前を入れておき、台帳の行と下書きに差し込みます。

スキャンは、説明会の当日に行います。 会場に持ち運べるスキャナーがあれば会場で、無ければ帰社した日のうちに行います。翌日に回すと、お礼が翌日以降になり、この構成を入れた意味が半分になります。

処理が終わったファイルは処理済みのフォルダに移します。移すのは、台帳への書き込みと下書きの作成まで終わったときだけにします。

Step2

入力データを集める

データ中身取得元
アンケートのスキャンPDF。説明会の日付と名前説明会ごとのドライブのフォルダ
読み取り結果欄のキーと値、チェックボックス、全文、信頼度Google Document AI
応募者台帳氏名、ふりがな、学校、卒業予定年、メールアドレス、登録の経路応募者台帳のスプレッドシート
メールの型説明会の種類と職種ごとのお礼と案内の文面採用の担当が用意する型(新しく作る)
説明会の一覧説明会の日付、名前、種類(合同・学内)採用の予定表

質を決めるのは、アンケートの書式です。 メールアドレスの欄を1文字ずつの枡目にすると、読み違いが減ります。案内の希望を□の1つの選択にしておけば、チェックボックスとして読めます。書式を変えられるなら、構成を作る前に変えます。

応募者台帳は、重複の候補を探すために使います。 AIには渡さず、Apps Script の側で照らします。

Step3

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

読み取りは、Apps Script から Form Parser のプロセッサを呼ぶだけです。オンラインの処理は1回の要求で最大15ページなので、説明会のスキャンをまとめて1回で送らず、1枚ずつに分けてから送ります。 まとめて送る場合は、公式の上限が100ページのバッチ処理を使います。

取るものどこから何に使うか
アンケートの欄各ページの formFields(fieldName/fieldValue)氏名、ふりがな、学校、卒業予定年、メール、電話
職種と案内の希望fieldValue の valueType(filled_checkbox/unfilled_checkbox)関心のある職種、案内を受け取るか
自由記述応答の text質問の取り出しと、選考に関係のない記載の確認
信頼度各要素の layout の confidenceメールアドレスの読み違いの見分け

メールアドレスは、信頼度を文字のまとまりごとに見ます。 アドレス全体の信頼度が高くても、1文字だけ低いことがあります。低い文字を含むアドレスは、下書きを作らずに担当に回します。

応募者台帳は、Apps Script がスプレッドシートを読むだけです。 重複の照合のために、メールアドレスは小文字にそろえ、前後の空白を落とした形を別の列に持ちます。氏名は漢字の異体字で揺れるので、ふりがなと卒業予定年の組み合わせも照合の材料にします。どちらも規則で書ける処理なので、AIには任せません。

Step4

AIへ渡す前に整形する

  1. 形式の確認 … スキャンはPDFで保存します
  2. 解像度の確認 … 手書きの細かい文字を読むため、300dpiで保存します
  3. 1枚ずつに分ける … 説明会のスキャンをページごとに分け、ページの順を残します
  4. 白紙と別の紙の確認 … 書きかけで白紙に近いもの、会社案内の資料が混ざったものは、処理せずに担当へ回します
  5. 向きの確認 … 逆さに通されたページの向きを直します
  6. 書式の版の確認 … 利用目的の案内が入った新しい書式かを、用紙の隅に印刷した版の番号で確かめます。古い書式のアンケートは、担当へ回します

4番目で白紙に近いものを外すのは、学生が書きかけでブースを離れることがあるためです。 氏名だけが書かれたアンケートから台帳の行を作ると、連絡先の無い行が台帳に残ります。

6番目で書式の版を見るのは、案内を送ってよいかが書式によって変わるためです。 利用目的の案内と案内の希望の□が無い古い書式で集めたアンケートは、学生が案内を受け取ることに同意したかどうかが分かりません。 書式を改めた後も、ブースに古い用紙が残っていることがあるので、版の番号で機械的に分けます。

Step5

AIに処理させる

させるのは、アンケートの欄を台帳の項目に書かれたとおりに写すことと、自由記述から質問を取り出すこと、選考に関係のない記載に印を付けることです。 重複の候補とアドレスの確認は、Apps Script の規則で行います。

させること中身判断できないときの扱い
項目の写し氏名、ふりがな、学校、学部・学科、卒業予定年、メール、電話空欄なら blank、読めなければ unreadable
職種と希望の写し印の付いた職種、案内の希望印が読み取れなければ unclear
質問の取り出し自由記述のうち、当社への質問質問が無ければ空
記載の印本籍・出生地、家族、宗教、支持政党などに当たる記載があるかあれば sensitive。中身は写さない

4行目が、AIを使う理由です。 学生は「父が御社の取引先に勤めています」「地元の○○県に戻りたい」のように、さまざまな書き方で書きます。 決まった言葉の一覧では拾いきれないので、記載の種類に当たるかどうかだけをAIに見させ、中身は写させません。

させないこと理由
メールアドレスの補正読めない文字を推測すると、別の人に届く
学校名の言い換え略称を正式名に直すと、重複の照合がずれる
学生の評価・選考の候補の選定採用の担当が選考の手続きで行う
メールの文面の作成型を使う。学生ごとに文面を作らない
選考に関係のない記載の書き写し台帳に残さない

1行目がいちばん大事です。 「taro.yamada」の「.」が読めないとき、AIは「taroyamada」と「taro.yamada」のどちらかを選びます。選んだアドレスが正しく見えるほど、読み違いに気づけません。

Step6

指示内容を固定する

あなたは採用の担当で、説明会で学生が手書きしたアンケートの
読み取り結果を、応募者台帳の項目に写す立場です。OCRが返した結果だけを見て、
書かれていることを写してください。推測で埋めないでください。

【写す項目】
name(氏名)、kana(ふりがな)、school(学校)、faculty(学部・学科)、
grad_year(卒業予定年)、email、phone、
job_interest(印の付いた職種)、wants_info(案内の希望)

【厳守事項】
- メールアドレスと電話番号は書かれたとおりの文字列で写してください。
  読めない文字を推測で補わないでください。読めない文字が1つでもあれば
  status を unreadable にし、読めた部分だけを value に入れてください。
- 学校名は書かれたとおりに写してください。略称を正式名に直さないでください。
- 欄が空欄なら status を blank にしてください。空欄と読めない欄を混ぜないでください。
- 自由記述のうち、当社への質問だけを questions に書き出してください。
- 自由記述に、本籍・出生地、家族(家族の職業・勤め先を含む)、
  宗教、支持政党、思想・信条に当たる記載があれば、sensitive を true に
  してください。その記載の中身は、どこにも書き写さないでください。
- 学生を評価する言葉や、選考に進めるべきかは書かないでください。
- アンケートでない紙と判断した場合は、document_type に種類を書いてください。

【読み取り結果】{ocr_result}

「読めない文字が1つでもあれば unreadable」を明記しないと、読めた部分から推測してアドレスを完成させます。 推測が当たることも多いので、外れたときにだけ気づけないという形の失敗になります。

「中身はどこにも書き写さない」は、質問の取り出しとの関係で書いています。 質問と同じ段落に家族のことが書かれていると、質問として書き出した文に、そのまま家族のことが入ります。

Step7

出力形式を固定する

次の形のJSONで受け取ります。 Claude API の構造化出力(output_config.format に JSON スキーマを渡す方式)を使い、形を固定します。

{
  "document_type": "job_fair_survey",
  "fields": [
    { "item": "name | kana | school | faculty | grad_year | email | phone",
      "value": "", "status": "read | blank | unreadable" }
  ],
  "job_interest": [],
  "wants_info": "yes | no | unclear",
  "questions": [],
  "sensitive": false
}

1つ目の理由は、メールアドレスの status で下書きを作るかを機械的に決められることです。 unreadable のアドレスには、どの規則でも下書きを作りません。

2つ目は、仕分けを Apps Script の規則で持てることです。

条件扱い
wants_info が yes で、メールが read で形が正しい下書きを作る
メールが unreadable、または形が正しくないcheck_email。下書きを作らない
wants_info が no台帳には載せる。下書きを作らない
wants_info が unclearcheck_consent。下書きを作らない
台帳の中に、メールが一致する学生がいるduplicate。新しい行を作らず、既存の行に説明会の参加を足す候補にする
氏名のふりがなと学校が一致し、メールが違う学生がいるpossible_duplicate。担当が決める
sensitive が truesensitive_note。担当が原本を見て扱いを決める
questions があるquestion。担当が個別に返信する

wants_info が unclear のときに下書きを作らないのは、案内を送ってよいかは学生の選んだことだからです。 印が薄い、両方に印がある、といったアンケートは、送らない側に倒します。

3つ目は、sensitive で記載の有無だけを残せることです。 中身を台帳に写さずに、原本に記載があることを担当に知らせられます。 原本の扱いは、自社の個人情報の取扱いの決まりに沿って担当が決めます。

公式のページでは、列挙の値の大文字・小文字までは保証されないとされているので、status などは Apps Script で小文字にそろえてから使います。stop_reason が max_tokens のときは出力が途中で切れているので、台帳に書かずに呼び直します。

Step8

システムへ連携する

つなぎ先方式内容
説明会ごとのフォルダApps Script の時間主導型トリガー新しいスキャンを探す
Google Document AIREST API の呼び出し欄、チェックボックス、全文、信頼度
Claude APIREST API の呼び出し項目の写し、質問の取り出し、記載の印
応募者台帳「取り込み待ち」シートへの書き込み写した値、印、スキャンのリンク
GmailGmailApp.createDraft型に氏名と説明会を差し込んだ下書き

応募者台帳の本体には、この構成から書き込みません。 取り込み待ちのシートから本体へ移すのは、担当の操作です。重複の候補を自動で既存の行にまとめることもしません。 別の学生を1人にまとめてしまうと、片方の学生への連絡が消えます。

メールは下書きまでです。 公式のリファレンスでは、GmailApp.createDraft は任意の引数付きで下書きを作るとされています。送る操作は、担当が下書きの一覧を確かめてから行います。

Step9

人が確認する

担当が原本を見るのは、印の付いた行だけです。 印の無い行は、取り込み待ちのシートの行と下書きを流し見ます。

  1. check_email を先に見る … 原本でアドレスを確かめます。確かめられないものは、電話番号があれば電話で、無ければ送らないことにします
  2. check_consent を見る … 原本で案内の希望の欄を確かめます。判断がつかなければ送りません
  3. duplicate と possible_duplicate を見る … 既存の行に説明会の参加を足すか、新しい行にするかを決めます
  4. sensitive_note を見る … 原本を見て、自社の決まりに沿って扱いを決めます。台帳には写しません
  5. question に返信する … 質問への返信は、担当が書きます
  6. 下書きの一覧を確かめて送る … 宛先と型の組み合わせを確かめます

1番目を先にするのは、その日のうちにお礼を送るためです。 読めないアドレスの学生は、放っておくと案内がまったく届かない学生になります。

6番目の下書きの確かめでは、宛先と型の組み合わせを見ます。 関心のある職種の印から型を選んでいるので、印の読み違いがあると、営業職に関心のある学生に技術職の案内が届きます。 一覧で職種の列と型の名前を並べて見れば、数十件を数分で確かめられます。送る時刻は、夜遅くを避けて担当が決めます。

目標は、900枚をならして1枚1.4分です。 印の無い行は流し見で数十秒、印の付いた行は原本を見るので数分かかります。

Step10

例外に対処する

起きること対応
アドレスが読めないcheck_email。原本で確かめ、推測で送らない
案内の希望の印がはっきりしないcheck_consent。送らない側に倒す
○で囲む書き方の選択肢チェックボックスとして読めない。書式を□に改める
白紙に近いアンケート処理せず担当へ
会社案内などの別の紙が混ざるdocument_type を見て処理しない
高校生のアンケートが混ざる卒業予定年や学校で気づいたら処理を止め、担当へ。本構成の対象外
送ったメールが宛先不明で戻る台帳の行に印を付け、原本で確かめ直す
OCR・AIが応答しないファイルをフォルダに残す。次の実行で拾い直す

6行目を入れているのは、合同企業説明会に高校生が来ることがあるためです。 高卒の採用には、新卒の大学生とは別の決まりがあります。この構成で扱わず、担当が別の手順で扱います。

Step11

記録を残す

  • 元のスキャンと、説明会の日付・名前・スキャンした担当
  • OCRが返したJSONの全文と、Claude API の応答の全文(sensitive の中身は含まない)
  • 付いた印と、担当が確かめた結果・台帳の本体に移した日時
  • 作った下書きと、送った日時・送った担当
  • 宛先不明で戻ったメールと、確かめ直した結果
  • 説明会ごとの check_email の割合

2つ目で sensitive の中身を残さないのは、ログが台帳の代わりにならないようにするためです。 写させなかった記載が、ログから読めては意味がありません。

最後の行は、アンケートの書式とスキャンを見直す材料になります。 特定の説明会だけ check_email が多いなら、机の高さや筆記具、スキャンの設定に理由があります。

04実装レベルの3段階

最小構成:スキャンを手でAIの画面に貼り、欄を写させる / 1枚ごとの読み取り
半自動化:上記+OCRのAPIを呼び、写した値を取り込み待ちのシートに書き出す / 読み取りと台帳への書き出し
本格構成:上記+重複の候補・アドレスの確認・案内の希望の規則で印を付け、下書きまで作る / 取り込みの全体と、お礼の下書き

最小構成は確かめるための段階です。 1枚ずつ貼り付けるので、月900枚には使えません。 半自動化で、1枚4分が2分程度になります。 打ち込みは無くなりますが、重複を探す作業とメールを送る作業は残ります。 本格構成で1.4分になり、この段階が本記事の想定です。 差が大きいのは、重複の候補とアドレスの確認が規則に移り、下書きができあがっているためです。 段階を飛ばさないでください。 半自動化のシートを1か月見ると、どの説明会で読めないアドレスが多いかが分かります。書式と筆記具を直してから下書きの作成を足すほうが、送れない学生が減ります。

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

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

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

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

AI活用について相談する

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

向いている
  1. 新卒採用で合同企業説明会や大学の学内説明会に毎月何回も出展し、ブースで学生に紙のアンケートを書いてもらっている会社。回収したアンケートを採用の担当が翌日以降に応募者台帳へ打ち込み、お礼と次の案内を送るのが数日後になっている場合。説明会の参加者が多い時期に、打ち込みが追いつかず、連絡先の読み違いで案内が届かないことがある場合。
向いていない
  1. ブースでの受付をすでに学生のスマートフォンからのフォーム入力に切り替えており、紙のアンケートがほとんど無い場合。出展が年に数回で、アンケートが1回数十枚にとどまる場合。高校生を対象とする説明会のアンケートを扱う場合(高卒の採用の決まりに沿った別の扱いが要るため、本記事の対象外とします)。なお、選考に進める学生を選ぶことや、学生への連絡を送るかどうかの判断は、この構成では代替できません。

07最小構成で試す方法

  1. 先月の説明会のアンケートから50枚を選ぶ(読みにくいアドレス、自由記述の長いもの、案内の希望の印が薄いものを必ず入れる)
  2. その50枚について、当時の台帳の行と、宛先不明で戻ったメールの記録を用意する
  3. スキャンを、自社の決まりで認められた環境のAIサービスの画面に1枚ずつ貼り付ける
  4. 「このアンケートの氏名・ふりがな・学校・卒業予定年・メール・電話・関心のある職種・案内の希望を、書かれたとおりに写してください。読めない文字を推測で補わないでください。自由記述に家族や出身地、宗教などの記載があれば、中身を写さずに『記載あり』とだけ書いてください」と指示する
  5. 写された値を当時の台帳と比べる

アンケートは学生の個人情報なので、自社の決まりで認められた環境でだけ扱ってください。

出てきた内容判断
当時の台帳と同じ値が写せたOCRと Apps Script の連携に進む
読めない文字を補ってアドレスを完成させた指示の書き方で直る。直らなければ全件のアドレスを人が見る
家族などの記載の中身を写した指示を直す
アドレスが読めない枚数が多い書式とスキャンが先。 枡目の欄と300dpiに改める

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

問題対策
読めない文字を補ってアドレスを完成させる1文字でも読めなければ unreadable
案内の希望がはっきりしないのに送るunclear は送らない側に倒す
選択肢を○で囲む書式で読めないラジオボタンには対応しない。□に改める
自由記述の家族などの記載が台帳に入る中身を写さず、印だけを付ける
質問の取り出しに家族の記載が混ざる「どこにも書き写さない」と指示する
別の学生を1人にまとめてしまう重複は候補まで。まとめるのは人
学校の略称で重複が見つからない略称を直させず、ふりがなと卒業予定年でも候補を出す
スキャンが翌日に回る説明会の当日にスキャンする手順を決める
国外での処理を確かめていない日本のリージョンが無い。決まりの確認を先に

上の2行が、この構成の失敗のほとんどです。 どちらも、学生が選んでいないことや書いていないことを、機械が補ってしまうという同じ型の失敗です。

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

この構成で扱うデータ: 学生の氏名、ふりがな、学校、卒業予定年、メールアドレス、電話番号、関心のある職種、自由記述です。求職者の個人情報にあたります。

  1. 利用目的をアンケートに書いておく … 個人情報保護法第21条第2項は、本人から直接書面に記載された個人情報を取得する場合は、あらかじめ本人に利用目的を明示しなければならないとしています。アンケートの上に、台帳への登録と案内の送付に使うことを書きます
  2. 目的の範囲で集め、使う … 職業安定法第5条の5は、労働者の募集を行う者などに、業務の目的の達成に必要な範囲内で、目的を明らかにして求職者等の個人情報を収集し、その範囲内で保管・使用することを求めています。アンケートの項目は、案内と選考の連絡に要るものに絞ります
  3. 選考に関係のない情報を集めない … 厚生労働省は、本籍地や家族の職業、宗教や支持政党といった事項を応募用紙に書かせたり尋ねたりすると就職差別につながるおそれがあるとしています。アンケートにそうした欄を設けず、書かれた記載も台帳に写しません
  4. 国外で処理することを決まりに照らして決める … Document AI のリージョンの一覧に日本はありません。学生の個人情報を国外のリージョンで処理してよいかを、自社の決まりで確かめます。認められない場合は、日本のリージョンで処理できる製品を検討します
  5. 外部へ渡す範囲を絞る … AIに渡すのはアンケートの読み取り結果だけです。応募者台帳はAIに渡さず、重複の照合は Apps Script の側で行います
  6. メールを自動で送らない … 下書きまでにします。誤った宛先に送ったメールは取り消せません

誤りが起きた場合のリスクは、別の人に案内を送ることと、選考に関係のない情報を選考の場に持ち込むことの2つです。 前者はアドレスを推測すると起き、後者は自由記述をそのまま写すと起きます。どちらも、補わせないことと写させないことで設計の側から防ぎます。

10まず何から始めるか

1週目:アンケートの書式を改める

メールアドレスの欄を1文字ずつの枡目に、職種と案内の希望を□の選択に改めます。上に利用目的を書き、選考に関係のない事項を尋ねる欄が無いかを確かめます。

2週目:50枚で試す

認められた環境のAIサービスで、先月のアンケート50枚を写させます。アドレスを補っていないか、家族などの記載の中身を写していないかを最優先で見ます。

3週目:決まりの確認とメールの型

アンケートを外部のサービスで、国外のリージョンで処理してよいかを、個人情報の取扱いの担当と確かめます。 あわせて、説明会の種類と職種ごとのメールの型を作ります。

4週目:フォルダから取り込み待ちのシートまでをつなぐ

Apps Script でフォルダを確かめ、OCRを呼び、写した値を取り込み待ちのシートに書き出すところまで作ります。この時点では下書きを作らず、担当がこれまでどおり打ち込みながら、シートの値が合っているかを見ます。

2か月目: 重複の候補、アドレスの確認、案内の希望の規則を足し、下書きの作成を始めます。3か月目以降: 1枚4分が何分になったかを実測します。説明会の当日にお礼と案内が送られ、宛先不明で戻るメールがほとんど無くなった時点で、この構成は完成です。


11関連ユースケース

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

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

技術仕様確認日:2026-10-08/最終更新:2026-10-08
確認した内容情報源確認日
本人から直接書面に記載された当該本人の個人情報を取得する場合は、あらかじめ本人に対しその利用目的を明示しなければならないこと(第21条第2項)e-Gov 法令API: 個人情報の保護に関する法律2026-10-08
労働者の募集を行う者などが、求職者等の個人情報を、業務の目的の達成に必要な範囲内で目的を明らかにして収集し、その範囲内で保管・使用しなければならないこと。適正に管理するために必要な措置を講じること(第5条の5)e-Gov 法令API: 職業安定法2026-10-08
本籍地や家族の職業といった本人に責任のない事項、宗教や支持政党といった本来自由であるべき事項を、応募用紙に記載させたり面接で尋ねたりすると就職差別につながるおそれがあること厚生労働省: 公正な採用選考の基本2026-10-08
Form Parser がOCRのテキストに加えてキーと値のペア、チェックボックス、表を抽出すること。言語の一覧で日本語(ja)が手書きに対応する言語として示されていること。オンラインの処理が1回の要求で最大15ページ、バッチ処理が最大100ページであることGoogle Cloud: Processor list2026-10-08
値の入っていないキーと値の組を確実には読み取れないこと。チェックボックスの読み取りがラジオボタンに対応しないこと。チェックボックスが valueType で印の有無として返ることGoogle Cloud: Form Parser2026-10-08
マルチリージョンが us と eu で、単一リージョンにシンガポール(asia-southeast1)などがあり、日本のリージョンが一覧に無いことGoogle Cloud: Regional and multi-regional support2026-10-08
output_config.format に JSON スキーマを渡して応答の形を固定できること。列挙の値の大文字・小文字は保証されないこと。max_tokens で打ち切られたときはスキーマに合わない出力になりうることClaude API: Structured outputs2026-10-08
GmailApp.createDraft で任意の引数付きの下書きを作れることApps Script: Class GmailApp2026-10-08

アンケートの項目、利用目的の書き方、学生の個人情報を外部のサービスで処理してよいかは、個人情報保護法・職業安定法と自社の個人情報の取扱いの決まりに沿って、人事部と個人情報の取扱いの担当が決めてください。 本記事は法令・厚生労働省のページと各製品の公式ページで確認できた範囲だけを扱っています。

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

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

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

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