学習塾で毎月の模試の個人成績票を読み取り、教科別の得点・偏差値・志望校判定を生徒台帳に転記して、成績が下がり続けている生徒と面談の候補を出す
毎月返ってくる模試の個人成績票を読み取り、教科ごとの得点・偏差値と志望校の判定を生徒台帳に転記します。転記した成績を同じ模試の過去の回と並べ、下がり続けている生徒を面談の候補として教室長に返します。
- 生成AI
- Azure OpenAI Service/Claude
- AIサービス
- Azure AI/Google Document AI
- 連携・自動化
- Make/n8n/Power Automate/Python
- 対象業界
- 教育
- 対象部門
- 営業
- 対象業務
- データ入力・転記/集計・分析
- 主な課題
- データ分析に時間がかかる/入力作業が多い/期限・対応漏れが起きる
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/判断支援/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 教室に成績票が届いたら、事務が生徒ごとに仕分ける
- 事務が1枚ずつ、教科ごとの得点・偏差値と、志望校ごとの判定を生徒台帳の成績表に打ち込む
- 受けていない教科があれば、空欄のまま残すか「欠」と書く(担当者によって違う)
- 教室長が、気になる生徒の過去の成績を表計算で並べ、推移を見る
- 下がっている生徒を手帳にメモし、保護者に面談の連絡をする
- 成績票の原本を生徒に返す
- 人事務が紙の成績票をスキャンし、PDFで取れるものはそのまま、模試の回ごとのフォルダに入れる
- 自動フォルダへの保存をきっかけに連携の処理が動き、模試の回の情報(模試の系列・教科の構成・満点)を引く
- 自動OCRが成績票の文字・表・手書きかどうかの印と信頼度を返す
- 自動生成AIが、受験番号・氏名・教科ごとの得点と偏差値・志望校ごとの判定を取り出す
- 自動処理が受験番号で生徒台帳の生徒と結び付け、成績を転記する
- 自動処理が同じ系列の過去の回と並べ、規則に当てはまる生徒を面談の候補にする
- 人事務が、生徒を結び付けられなかった成績票と、信頼度の低い値だけを確かめる
- 人教室長が面談の候補の一覧を見て、連絡する生徒と順番を決める
各工程の詳しい説明を読む
- 教室に成績票が届いたら、事務が生徒ごとに仕分ける
- 事務が1枚ずつ、教科ごとの得点・偏差値と、志望校ごとの判定を生徒台帳の成績表に打ち込む
- 受けていない教科があれば、空欄のまま残すか「欠」と書く(担当者によって違う)
- 教室長が、気になる生徒の過去の成績を表計算で並べ、推移を見る
- 下がっている生徒を手帳にメモし、保護者に面談の連絡をする
- 成績票の原本を生徒に返す
(a)打ち直しが次の模試に追いつかれる。 1枚あたり教科5つと合計、志望校3校の判定で、打ち込む値は20個を超えます。受験学年の秋は、前の回の打ち直しが終わる前に次の成績票が届きます。
(b)受けていない教科の扱いがそろわない。 空欄にする人、0と打つ人、「欠」と書く人がいます。表計算の平均や推移の計算に0が混ざると、その生徒は大きく下がったように見えます。
(c)推移を見るのが、目に付いた生徒だけになる。 全員の過去の成績を並べる時間はありません。目立って下がった生徒には気づけても、少しずつ下がり続けている生徒に気づくのが遅れます。 気づいたときには受験の直前、ということが起きます。
(d)模試の種類を混ぜて比べてしまう。 前の月と今月で模試の種類が違うのに、偏差値だけを並べて「5下がった」と判断することがあります。模試ごとに受ける生徒の集団が違うので、この比べ方では上がったのか下がったのかが分かりません。
(e)面談の連絡が教室長の記憶に頼っている。 誰に連絡し、誰にまだ連絡していないかが手帳の中にしかなく、教室長が休んだ週や異動した直後に、連絡が止まります。
- 【人】 事務が紙の成績票をスキャンし、PDFで取れるものはそのまま、模試の回ごとのフォルダに入れる
- 【自動】 フォルダへの保存をきっかけに連携の処理が動き、模試の回の情報(模試の系列・教科の構成・満点)を引く
- 【自動】 OCRが成績票の文字・表・手書きかどうかの印と信頼度を返す
- 【自動】 生成AIが、受験番号・氏名・教科ごとの得点と偏差値・志望校ごとの判定を取り出す
- 【自動】 処理が受験番号で生徒台帳の生徒と結び付け、成績を転記する
- 【自動】 処理が同じ系列の過去の回と並べ、規則に当てはまる生徒を面談の候補にする
- 【人】 事務が、生徒を結び付けられなかった成績票と、信頼度の低い値だけを確かめる
- 【人】 教室長が面談の候補の一覧を見て、連絡する生徒と順番を決める
7番目が、この設計の分かれ目です。人が見るのは全員分ではありません。 結び付けと読み取りに問題の無い成績票は、台帳に入った値を一覧で流し見るだけにします。全員分を見直す設計にすると、48.0時間はほとんど減りません。
6番目を規則にしているのも、意図してのことです。 推移の見方を教室長ごとに変えると、教室によって候補の出方が違ってしまいます。規則を本部の教務担当と決めておけば、5教室で同じ基準になります。
02今回想定するシステム構成
個人成績票(紙をスキャン・PDF) │ 模試の回ごとのフォルダへ保存 ▼【トリガー】ファイルの保存 連携の処理(Power Automate) ├──▶ 模試の回の情報(系列・教科・満点)を引く ▼ Azure AI Document Intelligence(レイアウトモデル) │ 文字・表・手書きの印・信頼度 ▼ Azure OpenAI(Microsoft Foundry) ── 構造化出力 │ 受験番号・教科ごとの得点と偏差値・志望校の判定 ▼ Azure Functions ── 生徒との結び付け/推移の規則 ▼ 生徒台帳へ転記 + 面談の候補の一覧 ──【教室長が判断】
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Azure AI Document Intelligence(レイアウトモデル) | Google Document AI(Form Parser) |
| 生成AI | Azure OpenAI(Microsoft Foundry)(構造化出力で成績の項目を取り出す) | Claude API |
| 連携 | Power Automate(フォルダの監視と生徒台帳への書き込み) | Make、n8n |
| 集計 | Azure Functions(生徒との結び付けと推移の規則) | Python |
| 保管 | SharePoint の文書ライブラリ(成績票の画像と読み取り結果) | 社内のファイルサーバー |
生徒台帳は、新しく足すものではありません。 足すのは読み取りと推移の規則の処理です。最初の準備は、生徒台帳に模試ごとの受験番号を持たせることです。 成績票に書かれた氏名で生徒を引くと、同姓同名や漢字の違いで外れます。
読み取りには、Azure AI Document Intelligence のレイアウトモデルを使います。 文字に加えて表を取り出し、表の行数・列数とセルごとの位置を返します。成績票は教科を行、得点・平均点・偏差値を列とした表でできているので、表として返ることが効きます。 日本語は印刷の文字にも手書きの文字にも対応しています。
手書きかどうかの印も使います。 レイアウトモデルは行ごとに手書きの書き方かどうかを信頼度付きで返します。紙の成績票には、講師が赤ペンで書き込んでいることがあります。 この印で書き込みの行を除き、印刷された数字だけを取り出します。
生成AIは、Azure の中で処理を閉じられる Azure OpenAI にします。 扱うのは未成年の生徒の成績で、使うのは教室の職員だけです。生徒が直接使う画面は作りません。代替候補に挙げる生成AIを選ぶときも、未成年の情報を扱う用途での利用条件を、その製品の規約で先に確かめてください。
推移の規則の処理は、生成AIを使いません。 同じ系列の過去の回と比べるだけの計算なので、Azure Functions に式として書きます。規則に生成AIを使うと、同じ成績から出る候補が回によって変わり、教室長が一覧を信用しなくなります。
03どうやって実装するのか
処理の起点を決める
模試の回ごとのフォルダに、成績票のファイルが保存されたことを起点にします。 フォルダの名前は「模試の系列+実施日」にそろえ、ファイルを入れた時点でどの模試の何回目かが決まるようにします。成績票の上に書かれた模試の名前を読んで決める作りにすると、似た名前の模試を取り違えます。
紙の成績票は、教室のスキャナーで束のまま読み込み、1つのPDFにします。1ファイルに数十人分が入るので、処理はページの単位で行います。 PDFで取れる成績票は、生徒ごとのファイルでも、まとめたファイルでも同じ扱いにします。
転記が終わったかどうかは、模試の回の情報に持たせた受験者数と、転記できた人数を比べて決めます。 欠席した生徒の分は成績票が来ないので、受験者数は団体受験の申込の人数ではなく、成績票の枚数の側で数えます。
推移の規則は、模試の回の転記がすべて終わってから1回だけ動かします。 1枚ずつ転記するたびに動かすと、途中の段階で候補が出たり消えたりします。転記が終わった回について、翌朝に面談の候補の一覧を教室長に送ります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 個人成績票 | 受験番号、氏名、教科ごとの得点・平均点・偏差値、合計、志望校ごとの判定 | 模試の回のフォルダ |
| 模試の回の情報 | 模試の系列、実施日、学年、教科の構成、教科ごとの満点、判定の記号の並び | 本部が作る模試の一覧 |
| 生徒台帳 | 生徒ID、氏名、学年、教室、模試ごとの受験番号、第一志望校 | 生徒管理の仕組み |
| 過去の成績 | 同じ系列の過去の回の、教科ごとの偏差値と判定 | 生徒台帳の成績表 |
質を決めるのは、2行目です。 教科の構成と満点が分かっていれば、取り出した得点が満点を超えていないか、教科が足りないかを機械で確かめられます。判定の記号の並び(AがよくEが悪い、など)も模試ごとに持ちます。 模試によって記号が違うと、「判定が下がった」を規則で書けません。
第一志望校は生徒台帳に持たせます。 成績票には志望校が複数並び、どれが本人の第一志望かは成績票の並び順だけでは分からないことがあります。
データの取得方法を決める
読み取りは、連携の処理からレイアウトモデル(prebuilt-layout)を呼ぶだけです。outputContentFormat=markdown を付けます。 表は結合したセルと複数行の見出しを表せる HTML の表で返ります。成績票の見出しは「得点|平均点|偏差値」が教科の下に2段で並ぶことが多いので、この形のほうが列を取り違えにくくなります。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 表とセル | tables(行・列の位置、見出しかどうか) | 教科ごとの得点・平均点・偏差値 |
| 行と手書きの印 | styles(isHandwritten と信頼度) | 講師の書き込みの行を除く |
| 文字と信頼度 | pages の words(confidence 付き) | 数字の読み取りの確かさ |
| ページの区切り | pages | 1ファイルの中の生徒の区切り |
生徒台帳と過去の成績は、受験番号から生徒IDを引き、その生徒の同じ系列の過去の回だけを取ります。 系列が違う回は最初から取りません。取るのは直近の3回までです。 それより前の回まで並べると、学年が変わる前の成績が混ざり、学年の初めの低下を「下がり続けている」と読んでしまいます。
AIへ渡す前に整形する
- ページの区切り … 束でスキャンしたPDFを、成績票1人分ごとのページに分けます。1人2ページの模試は、模試の回の情報にページ数を持たせます
- 向きの補正 … 逆さに入ったページは、レイアウトモデルが返す向きの角度で確かめます
- 成績票以外のページを除く … 解答や解説、集計表のページが混ざっていれば外します
- ページ数とサイズの確認 … PDF と TIFF は2,000ページまで、ファイルは有料(S0)で500MBまでです。クラス単位の束なら十分に収まります
- 文字の大きさの確認 … 1024×768の画像で12ピクセルが読み取れる最小の高さで、150dpiで約8ポイントの文字にあたります。成績票の偏差値の欄は小さいので、スキャナーは300dpi程度にします
- 手書きの行を印で分ける …
isHandwrittenが付いた行は、取り出しの対象から外します
5番目は、最初に一度だけ確かめれば済みます。 教室のスキャナーの既定の設定が200dpiのままだと、偏差値の小数点が読めず、「52.4」が「524」になります。 満点や偏差値の範囲で弾けますが、弾かれる枚数が多ければ設定を直すほうが早く済みます。
AIに処理させる
させるのは、成績票1人分から項目を取り出し、根拠にした文字列を書き出すことだけです。
| 取り出すもの | 取り出し方 | 判断できないときの扱い |
|---|---|---|
| 受験番号・氏名 | 書かれたとおりに写す | 読めない桁があれば low_confidence |
| 教科ごとの得点 | 数字をそのまま | 空欄・ハイフン・「欠」は status: absent |
| 教科ごとの平均点・偏差値 | 数字をそのまま | 書かれていなければ null |
| 合計の得点・偏差値 | 成績票の合計の欄 | 自分で足さない |
| 志望校ごとの判定 | 学校名・学科名・判定の記号 | 志望校が書かれていなければ空の配列 |
2行目の absent が、この構成でいちばん大事な区別です。 0点は受けて0点だったということ、absent は受けていないということで、前者は推移の計算に入り、後者は入りません。 成績票によっては、受けていない教科の偏差値の欄に「-」が印刷されます。欄が埋まっているように見えても、値は無いものとして扱います。
| させないこと | 理由 |
|---|---|
| 偏差値や合計の計算 | 成績票に書かれた値だけを使う。書かれていなければ null |
| 推移の判断 | 規則で決める。教室ごとにぶれさせない |
| 違う模試どうしの比較 | 偏差値は受けた集団の中での位置。系列の中だけで比べる |
| 面談で何を話すかの提案 | 教室長が生徒と保護者を見て決める |
| 講習や教材の勧め | 面談の中で人が判断する |
1行目は、合計の偏差値で起きやすい失敗です。 合計の欄が読めないとき、教科の偏差値の平均で埋めることがあります。偏差値の平均は合計の偏差値とは一致しません。 埋めた値が推移に入ると、その回だけ不自然に上下します。
指示内容を固定する
あなたは学習塾の教室の事務で、模試の個人成績票を読み取る担当です。
OCRが返した読み取り結果だけを見て、1人分の成績を取り出してください。
【この模試の情報】
模試の系列:{exam_series} 実施日:{exam_date}
教科と満点:{subjects_and_full_marks}
判定の記号:{grade_symbols}
【取り出すもの】
1. 受験番号と氏名
2. 教科ごとの得点・平均点・偏差値
3. 合計の得点と偏差値(成績票の合計の欄)
4. 志望校ごとの学校名・学科名・判定の記号
【status の選び方】
- taken ... 得点が数字で書かれている(0 を含む)
- absent .. 空欄、「-」、「欠」、「未受験」など、受けていないことを示す
- unreadable .. 文字は検出されているが、数字として確定できない
迷ったときに taken を選ばないでください。
【厳守事項】
- 書かれていない値は null にしてください。推測で埋めないでください。
- 計算をしないでください。合計や偏差値を、教科の値から作らないでください。
- 得点が満点を超える、偏差値が 20 未満や 80 を超えるなど、
ありえない値は unreadable にしてください。直さないでください。
- 手書きの書き込みとして渡された行は使わないでください。
- 判定の記号は書かれたとおりに写してください。言い換えないでください。
- evidence には、値を取った元の文字列をそのまま写してください。
- 成績が上がったか下がったか、面談が必要かは書かないでください。
【読み取り結果】{layout_markdown}
「迷ったときに taken を選ばない」を明記しないと、ハイフンを0として返すことがあります。 読み取り結果の表には、その教科の行が確かに存在し、何も言わなければ数字を探して埋めます。禁じるのは、行があることを、受けたこととして扱う判断そのものです。
偏差値の範囲を「ありえない値」として書いているのは、小数点の読み落としを拾うためです。 「524」を52.4に直させず、unreadable にして人に回します。直してよいかは、画像を見た人にしか決められません。
出力形式を固定する
構造化出力で、次の形のJSONを受け取ります。 スキーマのすべての項目を必須にし、additionalProperties: false を付けます。値の無い項目は null を許す型にします。
{
"document_type": "score_report",
"exam_no": "",
"student_name": "",
"subjects": [
{ "subject": "数学", "status": "taken | absent | unreadable",
"score": null, "average": null, "deviation": null,
"low_confidence": false, "evidence": "" }
],
"total": { "subjects_count": null, "score": null, "deviation": null },
"targets": [
{ "school": "", "department": "", "grade": "", "evidence": "" }
]
}
処理はこれを生徒台帳に転記したうえで、規則に当てはめて面談の候補の一覧を作ります。
| 生徒 | 系列 | 直近3回の合計の偏差値 | 第一志望の判定 | 理由 |
|---|---|---|---|---|
| 中3・A教室 | 会場模試 | 58.2 → 55.9 → 53.1 | B → C | 3回続けて低下、判定が1段下がった |
| 中3・C教室 | 会場模試 | 61.0 → 60.4 → 54.7 | B → B | 直近で5ポイント以上低下 |
1つ目の理由は、status を推移の規則がそのまま使えることです。 absent の教科は推移の計算から外し、その回の合計の偏差値が教科の数の違う合計なら、比べる回から外します。 自由文で受け取ると、受けていないのか読めないのかを、規則の側で文章から推し量ることになります。
2つ目は、規則を後から変えられることです。 「3回続けて」「5ポイント」は教室長と本部で決める値で、受験学年の秋だけ厳しくする、といった変更が起きます。転記された値を残しておけば、規則を変えて過去の回に当て直せます。
3つ目は、evidence で確認が速くなることです。 確認待ちの値について、何という文字列から取ったかが一覧に出るので、画像を開く前に、小数点の読み落としか、ハイフンの読み違いかの見当が付きます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 模試の回のフォルダ | Power Automate のトリガー | ファイルの保存を検知する |
| 模試の一覧 | 読み取り | 系列・教科の構成・満点・判定の記号を引く |
| Azure AI Document Intelligence | API呼び出し | 文字・表・手書きの印・信頼度を返す |
| Azure OpenAI | API呼び出し(構造化出力) | 1人分の成績を返す |
| Azure Functions | HTTPで呼ぶ | 受験番号での結び付けと推移の規則 |
| 生徒台帳 | 連携の処理から書き込み | 成績の転記と、確認待ちの印 |
| 教室長へのメール | 連携の処理から送る | 面談の候補の一覧 |
生徒台帳へ書き込むのは、結び付けができて unreadable が無い成績だけです。 それ以外は「確認待ち」として別の一覧に置き、事務が確かめてから書き込みます。読み取りに問題がある値が台帳に入ると、推移の規則がその値で動いてしまいます。
人が確認する
事務が見るのは、確認待ちの一覧だけです。 結び付けができて、unreadable と low_confidence の無い成績票は、台帳に入った値を一覧で流し見て終わりにします。
- 結び付けができなかった成績票を見る … 受験番号が生徒台帳に無い場合です。多くは受験番号の登録漏れで、台帳を直せば済みます
unreadableの値を画像で確かめる … 小数点の読み落とし、印刷のかすれですabsentが多い生徒を確かめる … 1回で2教科以上がabsentの生徒は、本当に受けていないかを講師に聞きます- 教室長が面談の候補を見る … 一覧の理由と、生徒の普段の様子を照らして、連絡する生徒と順番を決めます
4番目は、候補を絞るための確認です。 一覧に挙がった生徒すべてに連絡する必要はありません。部活の大会の直後だった、体調を崩していた、という事情は教室長が知っています。 規則が出すのは「見たほうがよい生徒」までで、連絡するかは人が決めます。
3番目の講師への確認は、教室の授業の記録と照らせば済むことが多くあります。 模試の当日に体調を崩して途中で帰った、部活の大会で一部の教科だけ受けた、という事情です。absent が正しいと分かれば、その回は推移の計算から外れるので、候補に誤って挙がることはありません。
目標は、480枚をならして1枚2分です。 確認待ちに回るのは1割前後という想定で、それより多い回は、スキャンの設定か受験番号の登録が足りていません。
例外に対処する
| 起きること | 対応 |
|---|---|
| 受験番号が生徒台帳に無い | 確認待ちへ。氏名で結び付けを推し量らない。 事務が台帳の受験番号を登録してから転記 |
| 1人分が2ページに分かれている | 模試の回の情報のページ数で束ねる。合わなければ確認待ち |
| 教科の構成が模試の回の情報と違う | 模試の側の変更か、別の模試の成績票が混ざったか。本部が回の情報を直す |
| 合計の教科の数が前の回と違う | 3教科と5教科の合計は比べない。推移の規則から外す |
| 成績票が上下逆・斜め | 向きの角度で補正。補正できなければスキャンし直す |
| 赤ペンの書き込みが数字に重なる | 手書きの印で除いたうえで、重なった数字は unreadable |
| 志望校が書かれていない | 空の配列のまま転記。判定の推移は見ない |
| 判定の記号が模試の一覧に無い | 確認待ち。判定の記号の並びを本部が足す |
| 同じ生徒の成績票が二度届く | 受験番号と模試の回で照らし、二重に転記しない |
| OCRが応答しない | フォルダに残し、30分後にやり直す。3回続けば事務へ知らせる |
1行目を、氏名で埋めないでください。 同じ学年に同姓の生徒がいる教室は珍しくありません。取り違えた成績が別の生徒の推移に入ると、その2人とも誤った候補になります。
3行目と8行目は、模試の側の変更から起きます。 年度が変わると教科の構成や判定の記号が変わる模試があり、最初の回で確認待ちが急に増えたら、まず模試の一覧が古くなっていないかを疑います。
記録を残す
- 成績票のファイル(スキャンしたPDF)と、模試の回・ページの範囲
- OCRが返したJSONの全文と、AIが返した1人分のJSON
- 生徒台帳への転記の記録(いつ、どの値を、どの生徒に)
- 確認待ちに回った理由と、事務が直した値・直した理由
- 面談の候補の一覧と、そのとき使った規則の値(何回続けて、何ポイント)
- 教室長が連絡した生徒と、連絡しなかった理由
5つ目で規則の値を残すのは、規則は時期によって変えるからです。 受験学年の秋に基準を変えると、同じ成績でも候補に挙がるかどうかが変わります。どの基準で候補にしたかが残っていないと、保護者から理由を聞かれたときに答えられません。
最後の行は、規則を直す材料になります。 候補に挙がったが連絡しなかった生徒が多いなら、規則が厳しすぎます。
04実装レベルの3段階
最小構成では枚数がさばけません。 1人ずつ貼り付けるので、確かめるための段階です。 半自動化で、①の打ち込みがほぼ無くなります。 ただし、台帳への貼り付けと推移の確認は人が行うので、②と③は残ります。本格構成で推移の確認が規則に移り、本記事の想定の2分になります。 半自動化と本格構成の差は、台帳への貼り付けと推移の確認です。 半自動化では、流し込んだ表を事務が台帳の表に貼り直し、教室長が推移を表計算で見ます。本格構成では受験番号で台帳に直接入り、推移は規則が見るので、人は確認待ちと候補の一覧だけを見ます。 段階を飛ばさないでください。 半自動化の1か月で、どの模試の書式で教科の列を取り違えるかと、受験番号の登録がどれだけ抜けているかが分かります。そこを直してから台帳への自動の転記に進むほうが、確認待ちが減ります。
05工数削減シミュレーション
導入後 480件 × 2分 ÷ 60 = 16 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 複数の教室を持ち、毎月の模試の個人成績票が紙かPDFで数百枚返ってくる学習塾。教室の事務や講師が成績を生徒台帳や表計算に打ち直しており、打ち直しが終わる前に次の模試が来てしまう場合。保護者面談の候補を教室長の記憶と勘で選んでいて、成績が下がっている生徒への連絡が遅れることがある場合。
- 生徒が数十名で、教室長が成績票を全員分目で見られる塾。模試の成績をすでにデータで受け取れており、打ち直しが発生していない場合。模試を受けない個別指導だけの塾。なお、生徒の学習の状況をどう評価し、面談で何を伝えるか、講習を勧めるかどうかの判断はこの構成では行いません。
07最小構成で試す方法
- 先月の模試から20人分の成績票を選ぶ(うち数人は、受けていない教科がある生徒を入れる)
- 20人分の画像を、手元のAIサービスの画面に1人ずつ貼り付ける
- 「この成績票から、教科ごとの得点・平均点・偏差値と、志望校ごとの判定を表にしてください。空欄やハイフンは『未受験』と書き、0にしないでください。計算はしないでください」と指示する
- 出てきた表を、事務が打ち込んだ台帳の値と1つずつ照らす
- 推移は、表計算で同じ系列の過去の回と並べて見る
氏名を伏せた画像で試してください。 試す段階では生徒の氏名は要りません。受験番号の欄も紙で隠してからスキャンすれば足ります。
| 出てきた内容 | 判断 |
|---|---|
| 台帳の値と合った | フォルダの監視と台帳への転記に進む |
| 未受験の教科を0にした | 指示の書き方で直る。構成は有効 |
| 偏差値の小数点を読み落とす | スキャンの解像度が先。 AIの問題ではない |
3行目が出ることは珍しくありません。 その場合は、スキャナーの解像度を上げて同じ20人分を取り直し、どこまで変わるかを見てください。
推移の見方も、この段階で一度試しておきます。 20人分のうち、教室長が「下がっている」と感じている生徒が、表計算で並べた偏差値でも下がって見えるかを確かめます。感覚と数字がずれる生徒がいれば、規則を決めるときの材料になります。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 受けていない教科を0点として返す | absent を指示で定義し、迷ったら taken にしない と明記する |
| 合計の偏差値を教科の平均で埋める | 計算を禁じ、合計の欄が読めなければ null にする |
| 違う模試の偏差値を並べて比べる | 推移は同じ系列の中だけ。系列の違う回は最初から取らない |
| 3教科と5教科の合計を比べる | 合計の教科の数を持たせ、違えば比べない |
| 偏差値の小数点を読み落とす | 範囲外を unreadable にし、スキャンの解像度を上げる |
| 講師の書き込みを数字として拾う | 手書きの印で除く |
| 氏名で生徒を結び付けて取り違える | 受験番号だけで結び付ける |
| 推移の規則が教室ごとに違う | 規則の値を本部で決め、ログに残す |
| 面談の候補がそのまま保護者への連絡になる | 連絡するかは教室長が決める。 一覧は判断の材料にとどめる |
| 判定の記号が模試で違う | 記号の並びを模試の一覧に持たせる |
上の3行が、この構成の失敗のほとんどです。 どれも「書かれていない値を作る」か「意味の違う値を比べる」ことから出ています。成績票に書かれた値を、書かれた意味のまま台帳に入れる。 この1点を設計で守れば、残りは運用で直せます。
下から2行目は、運用が始まってから起きます。 一覧が毎回届くようになると、候補に挙がった生徒に機械的に案内を送る運用になりがちです。一覧には「連絡した」「見送った」の欄を設け、見送った理由を書く習慣を最初から作っておくと、規則の見直しにも使えます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 未成年の生徒の氏名、受験番号、教科ごとの成績、志望校です。志望校と成績の組は、本人と保護者にとって特に知られたくない情報です。
- 使う人を教室の職員に限る … 面談の候補の一覧と成績の推移を見られるのは、教室長・事務・本部の教務担当だけにします。生徒や保護者が直接触れる画面には、この構成をつなぎません
- Azure の中で処理を閉じる … OCR・生成AI・規則の処理を同じ Azure の契約の中に置きます。プロンプトと応答はモデルの学習に使われないとされています。生成AIのデプロイは、処理する地域を選べる種類にします。 Global の種類は、要求と応答が他の地域で処理されうるとされています
- 試すときは氏名と受験番号を伏せる … 最小構成で手元のAIサービスに貼るときは、氏名と受験番号の欄を隠した画像にします
- 面談の候補を、生徒の評価として扱わない … 一覧は「推移を見たほうがよい生徒」の一覧です。講師の評価や、クラスの振り分けに流用しないでください
- 保護者への連絡を自動で送らない … 面談の案内は教室長が送ります。成績が下がったという連絡は、読み取りの誤り1件で信頼を失います
- 成績票の画像の保存期間を決める … 生徒が退塾したら、画像とOCRの結果を消す期間を決めておきます
- 教室をまたいだ閲覧を絞る … 教室長が見られるのは自分の教室の生徒だけにし、5教室を横断して見るのは本部の教務担当に限ります。転校や教室の移動があった生徒は、移った先の教室に成績を引き継ぐ手順を決めておきます
誤りが起きた場合のリスクは、受けていない教科や読み違いで、下がっていない生徒を候補に挙げることと、下がっている生徒を見落とすことの2つです。 前者は absent を0にすると起き、後者は系列の違う回を混ぜると起きます。どちらも設計で防げるので、そこだけは崩さないでください。
10まず何から始めるか
1週目:受験番号と模試の一覧をそろえる
生徒台帳に、模試ごとの受験番号の列を足します。本部は、模試の系列ごとに教科の構成・満点・判定の記号の並び・1人分のページ数の一覧を作ります。最初は、受ける生徒が一番多い模試の系列1つだけで構いません。
2週目:20人分で試す
先月の成績票から20人分を選び、氏名と受験番号を伏せて手元のAIサービスで成績の表を作らせます。未受験の教科を0にしていないか、偏差値の小数点を読めているかを最優先で見ます。
3週目:推移の規則を決める
何回続けて、何ポイント下がったら面談の候補にするかを、教室長と本部で決めます。 第一志望の判定が何段下がったら候補にするかも決めます。ここが決まらないうちに処理を組むと、候補は出るのに誰も使わない一覧になります。
4週目:読み取りから台帳への転記までをつなぐ
Power Automate で模試の回のフォルダを見張り、レイアウトモデルを呼び、成績のJSONを確認待ちの一覧に書き出すところまで作ります。この時点では台帳へ自動で書き込まず、事務が一覧を見てから入れます。
2か月目: 受験番号で結び付けができたものを台帳へ自動で転記し、推移の規則で面談の候補を出します。確認待ちに回った件数を回ごとに数えます。3か月目以降: 他の模試の系列を足し、1枚6分が何分になったかを実測します。教室長が候補の一覧を見て面談の相手を決めるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| レイアウトモデルが文字・表・選択マーク・構造を取り出し、表の行数・列数とセルの位置を返すこと。行ごとに手書きの書き方かどうかを信頼度付きで返すこと。ページの向きの角度を返すこと。PDF・TIFFが2,000ページまで、S0で500MB、文字の最小高さが1024×768で12ピクセルであること。Markdown の出力で表が HTML の表になること。文字ごとの信頼度が返ること | Microsoft Learn: Document layout analysis | 2026-10-07 |
| レイアウトモデルが日本語の印刷の文字と手書きの文字に対応していること | Microsoft Learn: Language support for Read and Layout | 2026-10-07 |
構造化出力でスキーマのすべての項目を必須にし、additionalProperties: false を付けること | Microsoft Learn: Azure OpenAI で構造化出力を使用する方法 | 2026-10-07 |
| プロンプトと応答がモデルの学習に使われないこと。Global の種類のデプロイでは要求と応答がモデルの配置された任意の地域で処理されうること、DataZone ではそのデータゾーンの中で処理されうること | Microsoft Learn: Data, privacy, and security for Foundry Models sold by Azure | 2026-10-07 |
面談の候補の規則(何回・何ポイント)は、塾の方針で決めてください。 本記事は公開仕様で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0799)についてのご相談はこちらから。
