新卒採用で手書きで提出されるエントリーシートを読み取り、氏名・学校・志望動機・自己PRを応募者台帳にそろえて、記入漏れと読み取れない箇所を拾う
手書きのエントリーシートを Azure AI Document Intelligence で読み取り、氏名・学校・志望動機・自己PRを企業ごとの応募者台帳の項目にそろえます。必須の欄の記入漏れと、読み取りに自信のない箇所を担当者へ返します。
- 生成AI
- Azure OpenAI Service/Claude
- AIサービス
- Azure AI/Google Document AI
- 対象業界
- 人材/小売/建設/製造
- 対象部門
- 採用
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- 人手が足りない/入力作業が多い/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 郵送で届いたエントリーシートを開封し、企業ごとに分けてスキャンする。PDFで届いたものはそのまま保存する
- 1枚ずつ開き、氏名・ふりがな・学校・学部・卒業予定・連絡先を応募者台帳に打ち込む
- 志望動機・自己PR・学生時代に力を入れたことを、文章のまま打ち込む
- 必須の欄が空いていないか、読めない字が無いかを見て、付箋かメモに残す
- 読めない字は、前後の文脈から推し量って打ち込むか、空欄にして印を付ける
- 記入漏れのあるものを企業の採用担当に伝え、応募者へ確かめるかを決めてもらう
- 台帳をCSVにして、企業の採用管理のシステムへ取り込む
- 人届いたエントリーシートを企業ごとにスキャンし、企業ごとの受付フォルダに保存する。PDFで届いたものはそのまま入れる
- 自動ファイルの保存をきっかけに、形式・ページ数・画像の大きさを確かめる
- 自動Azure AI Document Intelligence のレイアウトモデルで、文字・行・表・キーと値の組と、単語ごとの信頼度を返す
- 自動企業ごとの項目定義に合わせ、生成AIが欄ごとの値を取り出す。文章は書かれたとおりに写す
- 自動欄ごとに `filled` / `blank` / `low_confidence` / `not_found` を付け、信頼度はOCRの値から計算する
- 自動必須の欄の `blank` を記入漏れとして一覧にする
- 自動台帳に移さない欄(家族・本籍などに関わる欄)が様式にあれば、その欄を除いて企業への連絡事項に載せる
- 人担当者が `low_confidence` と `not_found` の欄だけを原本の画像と並べて直す
- 人記入漏れの一覧を確かめ、企業の採用担当に伝える
- 自動確定した台帳をCSVにして、企業の採用管理のシステムへ渡す
各工程の詳しい説明を読む
- 郵送で届いたエントリーシートを開封し、企業ごとに分けてスキャンする。PDFで届いたものはそのまま保存する
- 1枚ずつ開き、氏名・ふりがな・学校・学部・卒業予定・連絡先を応募者台帳に打ち込む
- 志望動機・自己PR・学生時代に力を入れたことを、文章のまま打ち込む
- 必須の欄が空いていないか、読めない字が無いかを見て、付箋かメモに残す
- 読めない字は、前後の文脈から推し量って打ち込むか、空欄にして印を付ける
- 記入漏れのあるものを企業の採用担当に伝え、応募者へ確かめるかを決めてもらう
- 台帳をCSVにして、企業の採用管理のシステムへ取り込む
(a)長い文章の打ち込みが重い。 3番目は1枚で800字から1,200字になることがあります。氏名や学校は1分で済んでも、文章の欄に1枚3分以上かかります。 締め切りの直後は数百枚がまとめて届き、取り込みが選考の日程に間に合わなくなります。
(b)読めない字を推し量って打ち込む。 5番目で、担当者が文脈から字を当てはめることがあります。当てはめた字が誤っていると、応募者が書いていない文章が台帳に残ります。 面接官が台帳の文章を読んで質問すれば、応募者は戸惑います。
(c)記入漏れと読めない欄が混ざる。 4番目のメモには、空欄と読めない欄が同じ印で残ることがあります。6番目で企業に伝えるとき、どちらなのかが分からず、原本を見直すことになります。
(d)様式を覚えた人に偏る。 企業ごとの欄の位置と必須の欄を覚えている担当者は2名で、その2名が休むと、取り込みが止まります。
4つに共通するのは、原本に書かれていることと台帳の中身が、人の目と手を通るあいだにずれることです。 打ち込みが速くなっても、ずれを見分ける仕組みが無ければ、選考に回る情報の確かさは変わりません。
- 【人】 届いたエントリーシートを企業ごとにスキャンし、企業ごとの受付フォルダに保存する。PDFで届いたものはそのまま入れる
- 【自動】 ファイルの保存をきっかけに、形式・ページ数・画像の大きさを確かめる
- 【自動】 Azure AI Document Intelligence のレイアウトモデルで、文字・行・表・キーと値の組と、単語ごとの信頼度を返す
- 【自動】 企業ごとの項目定義に合わせ、生成AIが欄ごとの値を取り出す。文章は書かれたとおりに写す
- 【自動】 欄ごとに
filled/blank/low_confidence/not_foundを付け、信頼度はOCRの値から計算する - 【自動】 必須の欄の
blankを記入漏れとして一覧にする - 【自動】 台帳に移さない欄(家族・本籍などに関わる欄)が様式にあれば、その欄を除いて企業への連絡事項に載せる
- 【人】 担当者が
low_confidenceとnot_foundの欄だけを原本の画像と並べて直す - 【人】 記入漏れの一覧を確かめ、企業の採用担当に伝える
- 【自動】 確定した台帳をCSVにして、企業の採用管理のシステムへ渡す
8番目が、この設計の分かれ目です。人が見るのは全部の欄ではありません。 OCRが自信を持って読めた欄は一覧で流し見て、読み取りに自信のない語と、欄が見つからなかったものだけに時間を使います。
5番目で、信頼度をAIに付けさせていないのも意図してのことです。 生成AIが「読めた」と言うかどうかではなく、OCRが返した単語ごとの信頼度の数値で決めます。
02今回想定するシステム構成
エントリーシート(郵送をスキャン/PDFで届いたもの) │ 企業ごとの受付フォルダに保存 ▼【トリガー】ファイルの保存 Azure Functions(中継の処理) ├──▶ 形式・ページ数・画像の大きさの確認 ▼ Azure AI Document Intelligence(レイアウトモデル+キーと値の組) │ 行・単語・表・キーと値の組、単語ごとの信頼度、手書きかどうか ▼ Azure Functions ── 企業ごとの項目定義と、台帳に移さない欄の一覧を引く ▼ Azure OpenAI(Microsoft Foundry) ── 構造化出力 │ 欄ごとの値(書かれたとおり)と、根拠の行番号 ▼ Azure Functions ── 行番号から信頼度を計算し、状態を付ける/記入漏れの一覧 ▼ 確認の画面 ──【担当者が low_confidence と not_found だけ直す】 └──▶ 応募者台帳のCSV ──▶ 企業の採用管理のシステム
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Azure AI Document Intelligence(レイアウトモデル) | Google Document AI |
| 生成AI | Azure OpenAI(Microsoft Foundry)(構造化出力で項目定義に合わせて取り出す) | Claude API |
| 連携 | Azure Functions(ファイルの監視、信頼度の計算、記入漏れの一覧、CSVの書き出し) | Azure Logic Apps |
| 保管 | 企業ごとの受付フォルダ | ― |
応募者台帳と企業の採用管理のシステムは、新しく足すものではありません。 足すのは読み取りと取り出しの仕組みと、確認の画面です。最初の準備は、企業ごとの項目定義を作ることです。 欄の名前、必須かどうか、文字数の目安、台帳の列名を1社1枚の表にします。
読み取りには、レイアウトモデルを使います。 文字・表・選択マーク・文書の構造を取り出すモデルで、日本語の手書きの文字の読み取りに対応しています。 行ごとに手書きの書体かどうかとその信頼度が返り、単語ごとにも信頼度が付きます。キーと値の組は、レイアウトモデルにクエリ文字列 features=keyValuePairs を付けると返ります。
代替候補の Google Document AI を使うときも、Azure を使うときも、処理するリージョンを確かめてください。 製品によって、日本語の手書きに対応した機能を使えるリージョンが限られることがあります。応募者の書類を国外で処理してよいかは、委託元の企業との契約で決まります。
03どうやって実装するのか
処理の起点を決める
企業ごとの受付フォルダにファイルが保存されたことを起点にします。 フォルダを企業ごとに分けておくと、どの企業の項目定義を使うかを、ファイルの置き場所で決められます。 書類から企業名を読み取って振り分けるより確かです。
1日1回の一括処理にはしません。 締め切りの直後に数百枚が届く企業でも、届いた順に処理しておけば、選考の書類が台帳にそろう日が早まります。 スキャンが終わったものから順に流れます。
処理が終わったファイルは処理済みのフォルダへ移します。 移すのは成功したときだけにします。受付フォルダに残っている数が、そのまま未処理の数になります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| エントリーシート | PDFまたは画像。1人1〜2ページ | 企業ごとの受付フォルダ |
| 読み取り結果 | 行・単語・表・キーと値の組、単語ごとの信頼度、手書きかどうか | Azure AI Document Intelligence |
| 項目定義 | 欄の名前、必須かどうか、台帳の列名、文字数の目安 | 企業ごとの項目定義の表 |
| 台帳に移さない欄の一覧 | 家族・本籍・住宅の状況・尊敬する人物・愛読書など | 全社共通の一覧 |
| 受付の情報 | 受付日、届いた経路(郵送/PDF)、企業ID | 受付の記録 |
質を決めるのは、項目定義です。 「志望動機」の欄が「当社を志望する理由」と書かれている企業もあれば、「あなたがやりたいこと」と書かれている企業もあります。欄の見出しの言い方を、項目定義に別名として並べておきます。 別名が無いと、欄が見つからない not_found が増えます。
台帳に移さない欄の一覧は、厚生労働省の公正な採用選考の特設サイトにある「就職差別につながるおそれがある14事項」を元に作ります。 本籍・出生地、家族、住宅状況、生活環境・家庭環境、宗教、支持政党、人生観・生活信条、尊敬する人物、思想、労働組合や学生運動などの社会運動、購読新聞・雑誌・愛読書に関わる欄です。一覧は全社で1つにし、企業ごとに変えません。
データの取得方法を決める
読み取りは、中継の処理からレイアウトモデルを呼ぶだけです。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 行と単語、単語ごとの信頼度 | pages の lines と words | 欄の値と、信頼度の計算 |
| 手書きの書体かどうか | styles の isHandwritten と信頼度 | 手書きの欄と印字の欄を分ける |
| キーと値の組 | features=keyValuePairs を付けた返却 | 欄の見出しと記入の対応 |
| 表 | tables | 学歴・資格のような表の形の欄 |
| 段落と役割 | paragraphs の role | 様式の題や見出しを、記入された文章と分ける |
モデル = prebuilt-layout(v4.0 2024-11-30 GA)
追加の指定 = features=keyValuePairs
送るもの = 1人分のエントリーシートのPDF(1〜2ページ)
手元に残す = 企業ID、受付日、経路、ファイル名(中継の処理が保持)
呼び出しは1人分ずつにします。 複数人分を1つのPDFにまとめて送ると、返ってきた行がどの応募者のものかを、ページ番号から逆にたどることになります。1人分ずつにしておけば、結果のJSONと応募者が1対1で対応します。
欄の見出しは、様式に印字された文字です。 styles で手書きでないと出た行は、多くが様式の見出しです。見出しと記入を分ける手がかりに使い、見出しを応募者の文章として台帳に入れないようにします。
キーと値の組は、空欄の見分けに効きます。 見出しはあるのに値が無い組は、その欄が空いていることを示します。欄の見出しが見つかっているかどうかで、blank と not_found を分けます。
AIへ渡す前に整形する
- 形式の確認 … PDFまたは画像(JPEG、PNG、BMP、TIFF、HEIF)であることを確かめます
- ページ数とサイズの確認 … PDFとTIFFは最大2,000ページ、有料(S0)のレベルで500MBまでです。1人分ごとに分けて入れます
- 画像の大きさの確認 … 50×50ピクセルから10,000×10,000ピクセルの間である必要があります
- 文字の大きさの確認 … 抽出する文字の最小の高さは、1024×768の画像で12ピクセルで、150dpiで約8ポイントの文字に当たります
- ロックの解除 … パスワードで保護されたPDFは、送る前に解除する必要があります
- 1人分ずつに分ける … まとめてスキャンされたものは、ページの区切りで分けます
4番目を軽く見ないでください。 手書きの小さな字で枠いっぱいに書かれた自己PRは、スキャンの解像度が低いと、字がつぶれて読めなくなります。 スキャンは300dpiを既定にします。
写真の欄は、台帳に移しません。 様式に顔写真の欄がある企業では、レイアウトモデルが写真を図として返すことがあります。生成AIに渡すのは行の文字とキーと値の組だけにし、図の領域は渡しません。 写真が必要かどうかは企業の選考の側で決めることで、台帳の項目にはしません。
2ページの様式は、ページの順を確かめます。 裏表を逆にスキャンすると、自己PRの続きが志望動機の欄に流れ込むことがあります。1ページ目に氏名の欄の見出しが無ければ、ページの順を入れ替えて読み直します。
読み取りの言語は指定しません。 公式の案内では、言語が確かでない限り言語コードを指定しないよう勧めています。英語の資格名やアルファベットの学部名が混ざる欄があるためです。
AIに処理させる
させるのは、OCRの結果から項目定義の欄ごとに値を写し、根拠にした行番号を返すことだけです。
| 取り出すもの | やり方 | 判断できないときの扱い |
|---|---|---|
| 氏名・ふりがな | 欄の値をそのまま | 欄が見つからなければ not_found |
| 学校・学部・学科・卒業予定 | 欄の値をそのまま。略称を正式名に直さない | 同じ |
| 連絡先 | 電話番号・メールアドレスを、数字と記号を足さずに | 桁が足りなくても補わない |
| 志望動機・自己PR・力を入れたこと | 書かれたとおりに写す。誤字も直さない | 読めない語は [判読不能] |
| 欄の状態の材料 | 見出しが見つかったか、値があるか | 迷ったら not_found |
文章の欄では、OCRの誤りと応募者の誤字を区別できません。 だからこそ、どちらも直させません。 直すのは原本を見た担当者だけで、low_confidence の語に限ります。
| させないこと | 理由 |
|---|---|
| 誤字・文法の修正、言い換え | 選考で読まれる文章を変えることになる |
| 文章の要約 | 台帳の文章は原文。要約は選考の側の仕事 |
| 読めない語の推測による補完 | 応募者が書いていない文章が台帳に残る |
| 台帳に移さない欄の値の写し | 家族・本籍などに関わる欄は、値を取り出さない |
| 応募者の評価や印象の記述 | 合否の判断は企業の選考の仕事 |
| 信頼度の付与 | OCRの単語ごとの信頼度から計算する |
3行目がいちばん起きやすい失敗です。 生成AIは、文脈から自然な語を当てはめるのが得意です。当てはめた語は読みやすく、誤りに気づきにくい。 第3章の(b)を機械が大量に起こすことになります。
指示内容を固定する
あなたは採用代行の会社で、手書きのエントリーシートを応募者台帳に
転記する立場です。OCRの読み取り結果だけを使ってください。
書かれていないことを補わないでください。
【項目定義】{field_definitions}
各欄の field_id、見出しの別名、必須かどうか、台帳の列名
【台帳に移さない欄】{excluded_fields}
家族、本籍・出生地、住宅の状況、生活環境・家庭環境、宗教、支持政党、
人生観・生活信条、尊敬する人物、思想、労働組合・学生運動などの社会運動、
購読新聞・雑誌・愛読書 に関わる欄
【厳守事項】
- 値は読み取り結果の文字をそのまま写してください。
誤字、送り仮名、句読点、改行の位置を直さないでください。
- 文章を要約したり、言い換えたりしないでください。
- 読み取り結果で文字が欠けている箇所は [判読不能] と書いてください。
前後の文脈から語を推測して埋めないでください。
- 略称を正式名称に直さないでください(例:「〇〇大」を「〇〇大学」にしない)。
- 電話番号やメールアドレスの数字・記号を足したり直したりしないでください。
- 欄の見出しが見つかったが値が無いときは value を null にし、
heading_found を true にしてください。
- 欄の見出しが見つからないときは heading_found を false にしてください。
- 台帳に移さない欄に当たる見出しがあれば、値を写さず、
excluded_headings に見出しだけを書いてください。
- 応募者の評価や印象を書かないでください。
- 各欄に、根拠にした行番号 line_ids を必ず付けてください。
【読み取り結果(行番号・行の文字・手書きかどうか)】{ocr_lines}
【キーと値の組】{key_value_pairs}
「誤字を直さない」と「推測で埋めない」を分けて書いているのは、別々に破られるからです。 誤字を直さないとだけ書くと、欠けた字を文脈で埋めます。埋めないとだけ書くと、送り仮名をそろえます。 どちらも、原本と台帳がずれる点では同じです。
台帳に移さない欄を「値を写さず、見出しだけ」としているのは、様式の見直しの材料にするためです。 見出しが残れば、どの企業の様式のどの欄に問題があるかが分かります。
出力形式を固定する
次の形のJSONで受け取ります。 Azure OpenAI の構造化出力で、このスキーマに従わせます。
{
"company_id": "",
"fields": [
{ "field_id": "", "heading_found": true,
"value": null, "line_ids": [0] }
],
"excluded_headings": [],
"document_type": "entry_sheet | other"
}
構造化出力では、すべての項目を必須にし、省略したいものは null との共用体型で表します。 オブジェクトには additionalProperties: false が必要です。value を null にできる型にしておくと、「見出しはあるが値が無い」を機械で拾えます。
状態は、中継の処理が規則で付けます。 AIが返した line_ids の単語の信頼度から、欄ごとの最小の信頼度を計算します。
| 条件 | 状態 | 台帳と確認の画面での扱い |
|---|---|---|
heading_found が false | not_found | 担当者が原本で欄を探す |
見出しあり、value が null | blank | 必須の欄なら記入漏れの一覧へ |
| 値あり、最小の信頼度がしきい値未満 | low_confidence | 該当の語に色を付けて担当者が直す |
| 値あり、最小の信頼度がしきい値以上 | filled | 一覧で流し見る |
しきい値は、最初の1か月で決めます。 担当者が直した語の信頼度を集め、直さずに済んだ語と直した語が分かれる値を探します。最初から決め打ちにしません。
document_type が other のものは、台帳に入れません。 同封された送付状や成績証明書が混ざることがあるためです。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 企業ごとの受付フォルダ | 中継の処理の監視 | ファイルの保存を検知し、企業IDを決める |
| Azure AI Document Intelligence | API呼び出し | 行・単語・表・キーと値の組と信頼度 |
| 項目定義の表 | 読み取り | 欄の別名、必須かどうか、台帳の列名 |
| Azure OpenAI | API呼び出し(構造化出力) | 欄ごとの値と根拠の行番号 |
| 確認の画面 | 中継の処理が作る一覧 | low_confidence と not_found の欄だけを原本と並べる |
| 企業の採用管理のシステム | 確定後のCSV | 台帳の列名にそろえた値 |
企業の採用管理のシステムへは、確定したCSVしか渡しません。 担当者の確認が済むまで、台帳は変わりません。企業ごとに取り込みの列名と文字コードが違うので、CSVの書き出しは項目定義の表に合わせます。
記入漏れの一覧は、企業の採用担当に渡すだけにします。 応募者へ直接連絡するかどうかは、企業が決めます。採用代行の会社から応募者へ連絡してよい範囲は、委託の契約で決まっているからです。
人が確認する
人が開くのは、low_confidence と not_found の欄を含むものだけです。 filled だけのものは、氏名と学校の一覧で流し見て確定します。
not_foundを先に見る … 欄の見出しが別名に無かったか、様式が変わったかです。多くは項目定義に別名を足して解決しますlow_confidenceの語を原本で直す … 色の付いた語だけを、原本の画像と並べて直します- 記入漏れの一覧を確かめる …
blankが本当に空欄かを、原本で目で確かめます - 台帳に移さない欄があった企業を記録する … 企業ごとにまとめて、様式の見直しの連絡に使います
3番目を省かないでください。 blank は、そのまま企業から応募者への確認の連絡になります。薄い鉛筆の字や、欄の外にはみ出して書かれた文章が blank と出ることがあります。
確認の画面は、左に原本の画像、右に台帳の下書きを並べます。 low_confidence の語を選ぶと、OCRが返した位置の情報から原本の該当の箇所に枠が付きます。目で字を探す時間を省くための作りで、直した語はその場で記録に残ります。
文章の欄を全部読み直さないでください。 色の付いた語だけを見る運用にしないと、第10章の2分には収まりません。
例外に対処する
| 起きること | 対応 |
|---|---|
| パスワードで保護されたPDF | 送る前に解除が必要。解除できないものは企業へ連絡 |
| ページ数・サイズが上限を超える | PDFとTIFFは最大2,000ページ、有料(S0)で500MB。1人分ずつに分ける |
| 画像の大きさが範囲外 | 50×50から10,000×10,000ピクセルの間に。スキャンし直す |
| 字が小さくつぶれる | 1024×768の画像で12ピクセルが下限。300dpiでスキャンし直す |
| 様式が変わって欄が見つからない | not_found が急に増える。項目定義を更新する |
| 送付状や証明書が混ざる | document_type が other。台帳に入れず担当者へ |
| 台帳に移さない欄がある | 値を写さず、企業に様式の見直しを伝える |
| OCRが応答しない | 受付フォルダに残す。処理済みへ移すのは成功時だけ |
上から5行目は、毎年の様式の改訂の時期に起きます。 企業が卒業年度ごとに様式を変えると、欄の見出しが変わります。not_found の件数を企業ごとに毎週見ていれば、改訂に最初の数枚で気づけます。
記録を残す
- 元のエントリーシートのファイルと、受付日・経路・企業ID
- OCRが返したJSONの全文
- 生成AIの出力と、中継の処理が付けた状態
- 担当者が直した語と、その語の信頼度
- 記入漏れとして企業に伝えた欄と、その日時
- 台帳に移さなかった欄の見出しと、企業に伝えた日時
4つ目は、しきい値を決め直す材料になります。 直した語の信頼度が、しきい値の近くに集まっているなら、しきい値は妥当です。しきい値よりずっと高い語を直しているなら、しきい値を上げます。
元のファイルとOCRの結果をいつ消すかは、委託の契約に合わせます。 応募者の個人情報なので、選考が終わった後に企業へ返すか消すかを、受託の時点で決めておきます。
04実装レベルの3段階
最小構成では枚数がさばけません。 1枚ずつ貼り付けるので、月1,200枚には使えません。確かめるための段階です。 半自動化で、1件6分が3分程度になります。 文章の打ち込みは無くなりますが、どの語を確かめるべきかが分からず、文章を読み直す時間が残ります。本格構成で2分になり、この段階が本記事の想定です。 差が大きいのは、信頼度で確かめる語を絞り込めるかどうかです。 段階を飛ばさないでください。 半自動化の一覧を1か月見ると、not_found の多い企業の様式と、字がつぶれやすいスキャンの設定が分かります。そこを直してから本格構成に進むほうが、確認の画面に並ぶ欄が少なくなります。
05工数削減シミュレーション
導入後 1,200件 × 2分 ÷ 60 = 40 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 複数の企業から新卒採用の書類の受付と応募者台帳の作成を請け負う採用代行の会社。手書きのエントリーシートを指定する企業を抱え、志望動機や自己PRの長い文章を担当者が打ち込んでいる場合。企業ごとに様式が違い、欄の位置を覚えた担当者に作業が偏っている場合。通年採用や秋採用の企業もあり、毎月一定の枚数が届く場合。
- エントリーシートをすべて採用サイトのフォームで受け付けており、手書きの書類が届かない会社。届く枚数が月に数十枚で、打ち込みで足りる場合。応募者の書類を外部のクラウドで処理することを、委託元の企業との契約で認めてもらえない場合。なお、応募者の評価や選考の合否の判断は、この構成では行いません。
07最小構成で試す方法
- 手書きの様式を使う企業を1社選び、受付済みのエントリーシートから30枚を選ぶ(字の小さいもの、薄いもの、欄の外にはみ出したものを数枚入れる)
- その30枚の台帳の打ち込み結果を用意する
- 30枚をPDFにして、手元のAIサービスの画面に1枚ずつ貼り付ける
- 「このエントリーシートの氏名・学校・志望動機・自己PRを、書かれたとおりに写してください。誤字を直さず、読めない字は[判読不能]としてください。空欄の欄は空欄と書いてください」と指示する
- 出てきた文章を、打ち込み済みの台帳と原本で突き合わせる
30枚は必ずやってください。 中継の処理を組む前に、「読めない字を推測で埋めないか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 台帳と同じ文章が写せた | OCRと項目定義の連携に進む |
| 読めない字を自然な語で埋めた | 指示の書き方とOCRの信頼度で直る。構成は有効 |
| 字が読めず[判読不能]が多い | スキャンの設定が先。 AIの問題ではない |
台帳と食い違った箇所は、どちらが正しいかを原本で確かめてください。 打ち込みのほうが誤っていることもあります。それが見つかれば、今の打ち込みにも第3章の(b)が起きていたということです。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 読めない字が自然な語で埋まる | [判読不能]と書かせ、信頼度はOCRの値で計算する |
| 誤字や送り仮名が直される | 書かれたとおりに写すことを指示に明記する |
blank と not_found が混ざる | 見出しが見つかったかどうかで分ける |
| 様式の見出しが文章に紛れ込む | styles の手書きかどうかで見出しを分ける |
| 字が小さくつぶれる | 300dpiでスキャンする。 下限は1024×768で12ピクセル |
| 様式の改訂で欄が見つからなくなる | not_found の件数を企業ごとに毎週見る |
| 家族や本籍の欄の値が台帳に入る | 台帳に移さない欄の一覧を全社で1つ持つ |
| 略称が正式名に直される | 略称のまま写させ、名寄せは台帳の側で行う |
| 送付状が台帳に入る | document_type で分ける |
| 確認で文章を全部読み直す | 色の付いた語だけを見る運用にする |
上の2行が、この構成の失敗のほとんどです。 どちらも、原本に無い文字が台帳に入る失敗です。エントリーシートの文章は、応募者が自分で書いたことに意味があります。 読みやすさより、原本どおりであることを優先します。
下から4行目も、早く効いてきます。 様式に家族の欄が残っている企業は、採用代行の会社が気づいて伝えなければ、毎年同じ様式を使い続けます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 応募者の氏名・連絡先・学校・自筆の文章です。様式によっては、本来は集めるべきでない家族や本籍に関わる記載が含まれます。
- 外部で処理することを委託の契約で確かめる … 応募者の書類をクラウドのOCRと生成AIで処理してよいか、処理する地域はどこかを、委託元の企業と取り決めます
- 台帳に移さない欄の値を取り出さない … 欄があっても値を写さず、企業に様式の見直しを伝えます。厚生労働省は、適性・能力に関係のない事項の把握が就職差別につながるおそれがあるとしています
- 応募者の評価をAIにさせない … この構成が出すのは、欄の値と状態までです。合否の判断は企業の選考の仕事です
- 文章を書き換えない … 誤字の修正も要約もさせません。選考で読まれる文章が、応募者の書いたものでなくなります
- 応募者への連絡は企業の判断に任せる … 記入漏れの一覧は企業に渡すだけにします
- 元のファイルの返却と消去の時期を決める … 選考が終わった後の扱いを、受託の時点で取り決めます
誤りが起きた場合のリスクは、応募者が書いていない文章が台帳に残ることと、書いた応募者に記入漏れを伝えてしまうことの2つです。 前者は推測による補完で起き、後者は blank と low_confidence を混ぜると起きます。前者は[判読不能]の指示とOCRの信頼度で、後者は見出しの有無と原本の確認で、設計で防ぎます。
10まず何から始めるか
1週目:項目定義と台帳に移さない欄の一覧を作る
手書きの様式を使う企業のうち、枚数の多い3社の項目定義の表を作ります。欄の見出しの別名、必須かどうか、台帳の列名を並べます。あわせて、厚生労働省の14事項から台帳に移さない欄の一覧を作ります。
2週目:30枚で試す
1社の30枚を手元のAIサービスに貼り付け、書かれたとおりに写させます。読めない字を推測で埋めていないかを最優先で見ます。
3週目:スキャンの設定をそろえる
受付の手順に300dpiのスキャンを書き、試した30枚のうち字がつぶれたものを取り直します。[判読不能]の数がどこまで減るかを見ます。
4週目:受付フォルダから下書きまでをつなぐ
企業ごとの受付フォルダを監視し、OCRと構造化出力で台帳の下書きを一覧に書き出すところまで作ります。この時点では状態を付けず、下書きと原本を担当者に見比べてもらいます。
2か月目: 信頼度による状態と確認の画面を足し、担当者が直した語の信頼度を集めてしきい値を決めます。3か月目以降: 12社すべての項目定義をそろえ、1件6分が何分になったかを実測します。記入漏れとして企業に伝えた欄が原本でも空欄で、確認の画面に並ぶ欄が色の付いた語だけになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
レイアウトモデルが文字・表・選択マーク・文書の構造を取り出すこと。入力がPDFと画像(JPEG/JPG、PNG、BMP、TIFF、HEIF)とOffice形式であること。PDFとTIFFが最大2,000ページ(Freeは最初の2ページ)、サイズがS0で500MB・F0で4MBであること。画像が50×50から10,000×10,000ピクセル、文字の最小の高さが1024×768の画像で12ピクセル(150dpiで約8ポイント)であること。パスワードで保護されたPDFは送る前に解除が必要なこと。行ごとに手書きの書体かどうかと信頼度が返り、単語ごとに信頼度が付くこと。段落に title・sectionHeading などの役割が付くこと | Microsoft Learn: Document layout analysis | 2026-10-08 |
v4.0 のレイアウトモデルと読み取りモデルが、日本語(ja)の手書きの文字に対応していること。言語が確かでない限り言語コードを指定しないよう勧めていること。キーと値の組をレイアウトモデルにクエリ文字列 features=keyValuePairs を付けて取り出せること | Microsoft Learn: Language and locale support for Read and Layout | 2026-10-08 |
構造化出力でモデルが指定したJSONスキーマに従うこと。すべての項目を必須にし、省略したいものは null との共用体型で表すこと。additionalProperties: false が必要なこと | Microsoft Learn: Azure OpenAI で構造化出力を使用する方法 | 2026-10-08 |
| 本人に責任のない事項(本籍・出生地、住宅状況、家族、生活環境・家庭環境)と、本来自由であるべき事項(宗教、支持政党、人生観・生活信条、尊敬する人物、思想、労働組合・学生運動などの社会運動、購読新聞・雑誌・愛読書)をエントリーシート・応募用紙に記載させることなどが、就職差別につながるおそれがある14事項として示されていること | 厚生労働省 公正採用選考特設サイト: 採用選考時に配慮すべき事項 | 2026-10-08 |
応募者の書類を外部で処理してよい範囲と、選考後の書類の扱いは、委託元の企業との契約で決めてください。 本記事は公開仕様と公的な案内で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0975)についてのご相談はこちらから。
