手書きの小テストの答案を読み取って採点と集計を行い、生徒がつまずいた設問を教室ごとに一覧にする
手書きの小テストの答案をスキャンして読み取り、正答表と照らして採点し、成績表に入力します。設問ごとの正答率と誤答の傾向を集計し、生徒がつまずいた設問を教室ごとの一覧にして返します。
- 生成AI
- Azure OpenAI Service/Claude/Gemini
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 連携・自動化
- Power Automate/Python
- 対象業界
- 人材/教育
- 対象部門
- 品質管理
- 対象業務
- データ入力・転記/集計・分析
- 主な課題
- データ分析に時間がかかる/人手が足りない/入力作業が多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/判断支援/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 授業の冒頭で小テストを行い、答案を回収する
- 授業の後、講師が正答表を見ながら1枚ずつ○と×を付ける
- 点数を数えて答案に書く
- 教室の成績表(Excel)に、生徒ごとの点数を入力する
- 次の授業で答案を返す
- 月末に、教室の成績表を教務部へ送る
- 教務部が教室ごとの平均点を並べて見る
- 人授業の後、講師が答案を複合機でまとめてスキャンし、教室の投入フォルダに保存する
- 自動定時の処理が投入フォルダを見て、PDFを1ページ1枚に分ける
- 自動解答用紙の右上の書式番号で、学年・教科のカスタム テンプレート モデルを選ぶ
- 自動Document Intelligence が、生徒番号のマーク欄と20問の解答欄を読み取り、欄ごとの値と信頼度を返す
- 自動欄ごとに `read` / `blank` / `low_confidence` を付け、`read` の欄だけを正答表と照合して採点する
- 自動`low_confidence` の欄を含む答案は、その欄の切り抜き画像を付けて講師の確認一覧へ回す
- 人講師が確認一覧の欄だけを見て、読み取り結果を直すか、そのまま確定する
- 自動確定した点数と設問ごとの正誤を成績表に書き込み、返却用の個票を作る
- 自動週に一度、設問ごとの正答率と誤答の上位を集計し、Azure OpenAI が誤答の傾向を短くまとめる
- 人教務部が一覧を読み、教室へ返す
各工程の詳しい説明を読む
- 授業の冒頭で小テストを行い、答案を回収する
- 授業の後、講師が正答表を見ながら1枚ずつ○と×を付ける
- 点数を数えて答案に書く
- 教室の成績表(Excel)に、生徒ごとの点数を入力する
- 次の授業で答案を返す
- 月末に、教室の成績表を教務部へ送る
- 教務部が教室ごとの平均点を並べて見る
(a)採点と入力に講師の時間が取られる。 1枚2分でも、1人の講師が1日に8枚前後を採点し、入力します。授業の準備と生徒への声かけに使いたい時間が、採点に消えています。
(b)設問ごとの正誤が残らない。 4番目で入力しているのは点数だけです。どの設問を間違えたかは、返却した答案にしか残っていません。 生徒が答案をなくせば、それで終わりです。
(c)教室の違いが見えない。 教務部が見られるのは平均点だけで、平均点が同じでも、つまずいている設問が教室ごとに違うことは分かりません。 教え方の良い教室のやり方を、他の教室に広げる材料がありません。
(d)入力の誤りに気づけない。 点数の数え違いや、隣の生徒の行への入力が、そのまま成績表に残ります。保護者面談で答案と成績表の点数が違うと言われて、初めて気づきます。
- 【人】 授業の後、講師が答案を複合機でまとめてスキャンし、教室の投入フォルダに保存する
- 【自動】 定時の処理が投入フォルダを見て、PDFを1ページ1枚に分ける
- 【自動】 解答用紙の右上の書式番号で、学年・教科のカスタム テンプレート モデルを選ぶ
- 【自動】 Document Intelligence が、生徒番号のマーク欄と20問の解答欄を読み取り、欄ごとの値と信頼度を返す
- 【自動】 欄ごとに
read/blank/low_confidenceを付け、readの欄だけを正答表と照合して採点する - 【自動】
low_confidenceの欄を含む答案は、その欄の切り抜き画像を付けて講師の確認一覧へ回す - 【人】 講師が確認一覧の欄だけを見て、読み取り結果を直すか、そのまま確定する
- 【自動】 確定した点数と設問ごとの正誤を成績表に書き込み、返却用の個票を作る
- 【自動】 週に一度、設問ごとの正答率と誤答の上位を集計し、Azure OpenAI が誤答の傾向を短くまとめる
- 【人】 教務部が一覧を読み、教室へ返す
5番目で採点を規則にしているのが、この設計の分かれ目です。 正答表と許容する表記の一覧に一致するかだけで決めます。一致しないものは不正解で、そこにAIの解釈は入りません。 採点の根拠が正答表だけなので、保護者に点数を説明するときに困りません。
7番目で講師が見るのは、答案ではなく欄です。 1枚まるごとではなく、信頼度の低かった欄の切り抜きだけが並びます。講師の確認は、1欄数秒で終わる作業になります。
02今回想定するシステム構成
小テストの答案(紙・手書き) │ 教室の複合機でまとめてスキャン ▼【トリガー】定時の処理(30分おき)が投入フォルダを見る Python ── PDFを1ページ1枚に分ける/書式番号でモデルを選ぶ ▼ Azure AI Document Intelligence(カスタム テンプレート モデル) │ 生徒番号のマーク欄、20問の解答欄、欄ごとの信頼度 ▼ Python ── 欄ごとに read / blank / low_confidence を付ける │ read の欄だけを正答表と照合して採点 ├──▶ low_confidence を含む答案 → 講師の確認一覧(切り抜き画像つき) ▼ 成績表(Excel)── 点数と設問ごとの正誤 ▼(週1回) 設問ごとの正答率・誤答の上位 ▼ Azure OpenAI ── 誤答の傾向を短くまとめる ▼ 教務部 → 各教室へ
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Azure AI Document Intelligence(カスタム テンプレート モデル) | Google Document AI、AWS Textract |
| 生成AI | Azure OpenAI(Microsoft Foundry。誤答の傾向のまとめ) | Claude API、Gemini API |
| 連携 | Python(投入フォルダの確認、ページの分割、API の呼び出し、正答表との照合) | Power Automate |
| 集計 | Microsoft Excel(成績表、設問ごとの正答率) | Power BI |
| 保管 | SharePoint(投入フォルダ、答案の画像、正答表) | Google ドライブ |
複合機と成績表は、新しく足すものではありません。 成績表に「設問ごとの正誤」のシートを足し、教務部が正答表と許容する表記の一覧を管理するのが最初の準備です。
土台になるのは、カスタム テンプレート モデルです。 見た目の決まった書式から、ラベルを付けたキーと値、選択マーク、表、領域、署名を取り出すモデルで、書式の配置を手がかりに値を取り出すため、構造の決まった文書に向くとされています。解答用紙は教務部が作った書式なので、まさにこの型です。
手書きの日本語に対応しています。 カスタム テンプレート モデルの言語の一覧で、手書きの文字の対応言語に日本語が含まれています。Read と Layout の手書きの対応言語にも日本語があります。
書式が変わると精度が落ちます。 公式の案内では、書式に違いがあるときはそれぞれ少なくとも5枚の見本を用意し、書式ごとにモデルを作って、合成(compose)して1つの窓口にまとめる方法が示されています。学年・教科ごとに解答用紙の書式が違うので、書式ごとにモデルを作ります。
03どうやって実装するのか
処理の起点を決める
30分おきに動く定時の処理を起点にします。 講師は授業の後に答案をまとめてスキャンし、教室の投入フォルダに保存するだけです。Python のスクリプトを本部のサーバーで定時に動かし、投入フォルダにまだ処理していないPDFがあるかを見ます。
授業の直後に即時で採点する必要はありません。 答案を返すのは次の授業なので、30分おきで間に合います。まとめて処理するほうが、確認一覧を講師が一度に片付けられます。
処理が終わったPDFは処理済みフォルダへ移します。移すのは、全ページの読み取りが終わって成績表に書き込めたときだけです。 途中で止まったPDFは投入フォルダに残り、次の回にやり直されます。投入フォルダに残っている数が、そのまま未処理の数になります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 答案のPDF | 複合機でまとめてスキャンしたもの。教室と日付がファイル名に入る | 教室の投入フォルダ |
| 読み取り結果 | 生徒番号のマーク欄、20問の解答欄の値、欄ごとの信頼度、単語ごとの信頼度 | Document Intelligence |
| 正答表 | 書式番号ごとの20問の正答と配点 | 教務部が管理する正答表 |
| 許容する表記の一覧 | 設問ごとに正解として扱う別の書き方(全角と半角、送り仮名の許容など) | 教務部が管理する一覧 |
| 生徒の名簿 | 生徒番号、教室、学年、クラス | 名簿(Excel) |
質を決めるのは、許容する表記の一覧です。 英単語の大文字と小文字、「1/2」と「½」、数字の後の単位の有無。一覧に無い書き方は不正解になります。 一覧が薄いと、講師が「これは正解にしてよい」と直す欄が毎回同じように出てきます。その直しの記録が、一覧に足す候補になります。
生徒番号は、手書きではなくマーク欄で取ります。 名前を手書きで読むと、読み違いで別の生徒の成績に入ります。解答用紙の上部に0〜9のマークを4桁分並べ、生徒に塗らせたマークを選択マークとして読み取ります。
データの取得方法を決める
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 20問の解答欄の値 | カスタム テンプレート モデルのラベル付きフィールド | 正答表との照合 |
| 欄ごとの信頼度 | 各フィールドの confidence | read と low_confidence の区別 |
| 単語ごとの信頼度 | 読み取り結果の単語の配列 | フィールドの信頼度と合わせて総合的に見る |
| 生徒番号のマーク | 選択マークのフィールドと、選択マークの信頼度 | 生徒の特定 |
| 書式の一致の度合い | 文書の種類の信頼度 | 書式の違う用紙が混ざっていないかの確認 |
信頼度は、フィールドと単語の両方を見ます。 公式の案内では、カスタム モデルのフィールドの信頼度は値の位置についての確からしさを表し、文字の読み取りの確からしさは単語の信頼度で表されるとされています。両方を見て、欄としての信頼度を決めます。 位置は合っていても文字が崩れている欄は、フィールドの信頼度だけでは拾えません。
空欄にも信頼度が付きます。 公式の案内では、値の無い欄は NULL と信頼度が返り、高い信頼度は「値が無い」という予測が正しい可能性が高いこと、低い信頼度は値を見落としている可能性があることを示すとされています。これが、無答と読めなかったを分ける材料です。
文書の種類の信頼度が低いときは、書式の違う用紙を疑います。 学年違いの解答用紙が混ざっている、古い版の用紙を使っている、といった場合です。
記号で答える設問は、手書きの文字ではなく選択マークで取ります。 「ア〜エから選べ」の設問で生徒に記号を書かせると、「ア」と「マ」、「エ」と「工」の読み違いが起きます。解答用紙にア〜エの丸を印刷して塗らせれば、選択マークとその信頼度で読めます。 2つ以上塗られている欄は、選択マークの数で機械的に見分け、low_confidence として講師へ回します。
AIへ渡す前に整形する
- ページの分割 … 複合機のPDFを1ページ1枚に分けます。1ページが1人の答案です
- 白紙ページの除去 … 両面スキャンで出る裏面の白紙を除きます
- 書式番号の確認 … 解答用紙の右上に印刷した書式番号を読み、モデルを選びます。読めない場合は教室と日付から時間割を引きます
- 向きの確認 … 上下逆に入った答案を回転します
- 形式とサイズの確認 … PDFまたは画像(JPEG、PNG、BMP、TIFF、HEIF)で、有料(S0)レベルでは500MBまで、画像の寸法は50×50から10,000×10,000ピクセルの間です
- 解像度の確認 … 読み取れる文字の高さの下限は、1024×768の画像で12ピクセル(150dpiで約8ポイント)です。複合機の設定は200dpi以上にそろえます
- パスワードの確認 … パスワード付きのPDFは、提出前にロックを解除する必要があります
6番目を教室ごとに確かめてください。 複合機の既定の設定のまま低い解像度でスキャンすると、細い鉛筆の字が下限に近くなります。解像度が足りないだけの答案は、信頼度が一斉に下がり、講師の確認一覧が埋まります。
2番目も軽く見ないでください。 裏面の白紙が答案として読まれると、全欄が blank の答案が1枚増え、存在しない生徒の0点が出るか、生徒番号が読めずに確認一覧に並びます。白紙かどうかは、読み取り結果で文字がほとんど検出されないことと、書式番号が読めないことの両方で判断します。
AIに処理させる
Document Intelligence にさせるのは、欄ごとの値と信頼度を返すことだけです。 採点はしません。
| 欄の状態 | 決め方 | 採点での扱い |
|---|---|---|
read | 値があり、フィールドと単語の信頼度がともに基準以上 | 正答表と許容する表記の一覧で照合し、一致すれば正解 |
blank | 値が無く、その「値が無い」ことの信頼度が基準以上 | 無答として不正解 |
low_confidence | 上のどちらにも当てはまらない | 採点を保留し、講師の確認一覧へ |
基準の値は、最初は低めに置き、講師の直しの記録を見て上げます。 基準を高くしすぎると確認一覧が増え、低くしすぎると読み違いがそのまま採点に入ります。最初の1か月は、講師が直した欄の信頼度の分布を見て決めます。
Azure OpenAI にさせるのは、週に一度の誤答の傾向のまとめだけです。 設問ごとの正答率と、誤答の上位(同じ誤答が何人から出たか)を渡し、つまずきの傾向を1〜2文でまとめさせます。
| させないこと | 理由 |
|---|---|
| 答えが正しいかの判断 | 採点は正答表との照合で決める。AIは好意的に読んで正解にする |
low_confidence の欄の値の推測 | 講師が切り抜き画像で確かめる |
| 部分点の判断 | 記述の部分点は講師が決める。この構成は正答が決まった設問だけを扱う |
| 生徒一人ひとりへの評価の文 | 小テストの点数で生徒の力を言い切らない |
| 教室や講師の良し悪しの判断 | 正答率の違いの理由は、教務部が教室と話して確かめる |
| 誤答の上位に無い原因の推測 | 渡した誤答の文字列だけを根拠にする |
1行目が、最も起きやすい失敗です。 読み取りの結果をAIに渡して「採点して」と頼むと、「徳川家康」の「徳」の一画が欠けた答えも正解にします。それが正解かどうかは、塾の採点の基準で決まることで、AIが決めることではありません。 漢字の書き取りでは、一画の欠けを不正解にする基準が普通です。
指示内容を固定する
誤答の傾向のまとめ(週に一度、設問ごとに呼ぶ):
あなたは学習塾の教務部で、小テストの結果を教室へ返すための
まとめを作る担当です。渡した数字と誤答の文字列だけを根拠にしてください。
【渡すもの】
学年と教科:{grade_subject}
設問:{question_text}
正答:{answer}
教室ごとの正答率と無答率:{rates_by_classroom}
誤答の上位(誤答の文字列と人数):{top_wrong_answers}
【まとめ方】
- この設問で多かった誤答の型を、1〜2文でまとめてください。
例:「繰り上がりを足し忘れた答え(38)が最も多い」
- 誤答の型を言うときは、誤答の上位にある文字列を必ず1つ以上引用してください。
- 無答率が正答率より目立つ場合は、そのことを書いてください。
- 教室ごとの正答率に大きな差がある場合は、差があることだけを書いてください。
【厳守事項】
- 誤答の上位に無い誤答を、あるものとして書かないでください。
- 誤答の原因(教え方、生徒の理解度)を推測して書かないでください。
- 教室や講師の良し悪しを書かないでください。
- 数字を丸めたり、計算し直したりしないでください。渡した数字をそのまま使ってください。
- 誤答の人数が5人未満の場合は、傾向を書かず、pattern を空にしてください。
「原因を推測しない」を明記しないと、AIはもっともらしい理由を書きます。 「繰り上がりの指導が不足している可能性があります」と書けば、それを読んだ教室長は講師の指導の問題として受け取ります。原因を確かめるのは教務部と教室の対話で、まとめの文ではありません。
「5人未満なら書かない」も同じ理由です。 1〜2人の誤答から傾向を言うと、たまたまの書き誤りが教室全体のつまずきに見えます。
Document Intelligence 側には、プロンプトはありません。 何をどこから読むかは、解答用紙の見本に付けたラベルで決まります。見本のラベル付けが、この構成でのプロンプトにあたります。 書式ごとに少なくとも5枚の見本を用意し、生徒番号のマーク欄と20問の解答欄に、それぞれラベルを付けます。
出力形式を固定する
答案1枚ごとに、次の形で成績表の手前の台帳に書きます。
{
"sheet_id": "",
"form_no": "",
"classroom": "",
"student_no": "",
"student_no_status": "read | low_confidence",
"answers": [
{ "q": 1, "value": "", "state": "read | blank | low_confidence",
"field_conf": 0.0, "word_conf": 0.0, "result": "correct | wrong | pending" }
],
"score": null,
"needs_review": true
}
1つ目の理由は、state と result を別の層に置けることです。 state は読み取りの状態、result は採点の結果です。low_confidence の欄の result は必ず pending にし、講師が確かめるまで点数を出しません。 score は、pending が1つも無くなった時点で初めて入ります。
2つ目は、信頼度を2つ残すことです。 field_conf と word_conf を分けて残すと、後から基準を見直すときに、位置の問題か、字の問題かを分けて見られます。
週に一度の誤答の傾向は、次の形で受け取ります。 Azure OpenAI の構造化出力を使い、形を固定します。構造化出力では、スキーマの全ての項目を必須にし、additionalProperties を false にする必要があります。
{
"question_id": "",
"pattern": "",
"quoted_wrong_answers": [""],
"blank_notable": false,
"classroom_gap": false
}
quoted_wrong_answers を必須にしているのは、まとめの根拠を機械で確かめるためです。 引用された文字列が誤答の上位に実在するかを Python で照合し、実在しないものが1つでもあれば、そのまとめを捨てて空欄で出します。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 教室の投入フォルダ | Python による定時の確認 | 未処理のPDFを見つける |
| Document Intelligence | API 呼び出し(書式番号で選んだカスタム モデル) | 欄ごとの値と信頼度を返す |
| 正答表・許容する表記の一覧 | Excel の読み取り | 照合に使う |
| 講師の確認一覧 | 教室ごとの Excel のシート | low_confidence の欄と切り抜き画像 |
| 成績表 | Excel への書き込み | 確定した点数と設問ごとの正誤 |
| Azure OpenAI | API 呼び出し(週1回) | 誤答の傾向のまとめ |
成績表に書き込むのは、確定した答案だけです。 needs_review が true のものは、講師が確認一覧で確定するまで成績表に入りません。未確定の点数が保護者面談の資料に出ることを防ぎます。
正答表は、この構成から書き換えません。 講師が「これも正解にしてよい」と直した記録は、許容する表記の一覧に足す候補として教務部へ送り、足すかどうかは教務部が決めます。
人が確認する
講師が見るのは、low_confidence の欄だけです。 答案をまるごと見直すことはしません。
- 確認一覧を開く … 教室ごとのシートに、生徒番号、設問番号、読み取り結果、切り抜き画像が並びます
- 欄ごとに確定する … 読み取り結果が合っていればそのまま、違っていれば正しい値に直します。正解か不正解かではなく、何と書いてあるかを確定します
- 生徒番号が読めなかった答案を割り当てる … 名簿から選びます
- 許容する表記の候補を送る … 「この書き方も正解にすべき」と思ったものに印を付けます
2番目の「何と書いてあるか」を確定するという線を守ってください。 講師が確認一覧で正誤を決めると、同じ書き方でも教室によって正解と不正解が分かれます。講師が確定するのは読み取りの値で、正誤は正答表が決めます。 正答表に異論があれば、4番目で教務部へ送ります。
目標は、4,800枚をならして1枚0.5分です。 スキャンの操作と確認一覧の処理を合わせた時間です。確認一覧が1教室あたり週に数十欄を超えるときは、その教室の複合機の設定か、解答用紙の書式の版が合っていません。
例外に対処する
| 起きること | 対応 |
|---|---|
| 生徒番号のマークが読めない、または名簿に無い | 確認一覧で講師が名簿から割り当てる |
| 同じ生徒番号の答案が同じ回に2枚ある | 両方を保留し、講師に確認する(マークの塗り間違いが多い) |
| 文書の種類の信頼度が低い | 書式の違う用紙を疑う。採点せずに教務部へ |
| 裏面の白紙が混ざる | 前処理で除く。除けずに全欄 blank になったものは保留 |
| 解像度が足りず、信頼度が一斉に低い | その教室の複合機の設定を見直す。同じ答案を取り直す |
| 解答欄の外に答えを書いている | blank になる。講師の確認一覧には出ないので、返却時に生徒から申し出があれば講師が直す |
| 消しゴムの消し残りと新しい答えが重なる | 信頼度が下がり、確認一覧に出る |
| 正答表にその書式番号が無い | 採点せずに保留し、教務部に知らせる |
| Document Intelligence が応答しない | PDFを投入フォルダに残し、次の回にやり直す |
6行目は、この構成で拾えない例外です。 解答欄の外に書かれた答えは、テンプレートの外なので読まれず、欄は blank になります。答案を返したときに生徒が気づけるよう、個票に「無答」の設問番号を出します。 講師が直した記録は保存・ログに残ります。
記録を残す
- 答案のPDFと、1ページごとの画像
- Document Intelligence が返したJSONの全文と、使ったモデルの ID(書式ごと)
- 欄ごとの
state、field_conf、word_confと、そのとき使った基準の値 - 講師が確定・修正した欄の記録 … 読み取り結果と、講師が確定した値
- 採点に使った正答表と許容する表記の一覧の版
- 週ごとの設問別の正答率、誤答の上位、誤答の傾向のまとめ
- 許容する表記の候補と、教務部の採否
4つ目が、基準の値を見直す材料です。 講師が直した欄の信頼度がどのあたりに集まっているかを見ると、read の基準をどこまで下げてよいかが分かります。
5つ目で正答表の版を残すのは、正答表が後から直るためです。 正答表の誤りが見つかったとき、その版で採点した答案の範囲が分かれば、採点し直しは機械的に済みます。
04実装レベルの3段階
最小構成では講師の時間は減りません。 見本のラベル付けと突き合わせで、かえって時間がかかります。読み取れるかを確かめる段階です。 半自動化で、採点と入力の時間がほぼ消えます。 ただし、書式ごとに手でモデルを選び、スキャンのたびに処理を動かす手間が残ります。本格構成で1枚0.5分になり、この段階が本記事の想定です。 本格構成で初めて、教務部が欲しかった設問ごとの集計が出ます。 段階を飛ばさないでください。 半自動化を1つの教室で1か月回すと、どの設問の、どの書き方で講師が直しているかが分かります。それを許容する表記の一覧に足してから全教室に広げるほうが、確認一覧の量が最初から少なくて済みます。
05工数削減シミュレーション
導入後 4,800件 × 0.5分 ÷ 60 = 40 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 毎週の小テスト(漢字・計算・英単語・一問一答など)を決まった書式の解答用紙で行い、講師が手で採点して成績表に入力している学習塾・予備校・資格講座。教室が複数あり、設問ごとの正答率を教室を横断して見たい場合。解答用紙の書式を自社で決められる場合。
- 小テストがすでにタブレットやマークシート読み取り機で行われている場合。記述量の多い答案(作文・記述問題が中心)の採点に使う場合。解答用紙の書式が講師ごとにばらばらで、そろえられない場合。月の答案が数百枚で、手での採点で足りる場合。
07最小構成で試す方法
- 1つの教室の、1つの書式の小テストの答案を30枚集める(字の読みにくい答案と、無答のある答案を必ず入れる)
- 講師がふだんどおり採点した結果を控える
- Document Intelligence Studio で、同じ書式の見本5枚に解答欄のラベルを付け、カスタム テンプレート モデルを作る
- 残りの答案を読み取らせ、欄ごとの値と信頼度を表にする
- 正答表と照合して採点し、講師の採点と突き合わせる
無答のある答案を必ず入れてください。 空欄の信頼度が高く出るかどうかが、無答と読めなかったを分けられるかの分かれ目です。薄い鉛筆で書かれた答案も数枚入れます。 空欄と同じように見える欄に、低い信頼度が付くかを確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 講師の採点と一致し、食い違いが信頼度の低い欄に集まっている | 投入フォルダと成績表の連携に進む |
| 信頼度が高いのに読み違えた欄がある | 見本を足してモデルを作り直す。基準の値も上げる |
| 全体に信頼度が低い | スキャンの設定か解答用紙の書式が先。 解答欄の枠を太く大きくする |
3行目は、解答用紙を直す機会です。 欄が小さく、枠線と字が重なる書式は、人が採点するときも読みにくいはずです。解答欄を大きくし、枠の外に書かないよう注意書きを入れるだけで、信頼度が上がることがあります。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 読めなかった欄が無答として0点になる | 空欄の信頼度で blank と low_confidence を分ける |
| 一画欠けた漢字が正解になる | 採点はAIにさせない。正答表との照合だけで決める |
| フィールドの信頼度は高いのに字を読み違える | 単語の信頼度も見る。位置と字の信頼度は別物 |
| 名前の読み違いで別の生徒の成績に入る | 生徒番号はマーク欄で取る |
| 古い版の解答用紙が混ざる | 書式番号を印刷し、文書の種類の信頼度も見る |
| 裏面の白紙が0点の答案になる | 前処理で白紙を除く |
| 複合機ごとに読み取りの質が違う | 解像度を200dpi以上にそろえる |
| 講師が確認一覧で正誤を決めてしまう | 講師が確定するのは値。正誤は正答表 |
| 許容する表記が増えない | 講師の直しを候補として教務部へ送り、採否を決める |
| 誤答の傾向のまとめが原因まで書く | 原因の推測を禁じ、引用を必須にして照合する |
上の2行が、この構成の失敗のほとんどです。 どちらも「AIに採点させる」か「読めないものを無答と見なす」という、判断を機械の都合で済ませる設計から出ています。読み取りと採点を分け、空欄の信頼度を見ているかどうかで、運用に乗るかが決まります。
4行目も最初から効いてきます。 生徒番号を手書きの名前で取ると、確認一覧が名前の読み違いで埋まり、本来見るべき解答欄の確認が後回しになります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 生徒番号、教室、学年、小テストの答案の画像と点数、設問ごとの正誤。生徒の多くは未成年で、点数は保護者面談で使われる情報です。
- Azure OpenAI に生徒の情報を渡さない … 誤答の傾向のまとめに渡すのは、設問、正答率、誤答の文字列と人数だけです。生徒番号や教室の中の個人は含めません
- 答案の画像の保存期間を決める … 答案には字の癖や名前が残ります。採点の確定から何か月で消すかを決めてください
- 点数を講師の確認前に出さない …
pendingを含む答案の点数は成績表に入れません。未確定の点数が保護者に伝わることを防ぎます - 正答率を講師の評価に使わない … 教室ごとの正答率の差は、生徒の構成や授業の進度でも生じます。講師の人事評価の材料にするかどうかは別に決め、少なくともまとめの文には書かせません
- 確認一覧の切り抜き画像を教室の外に出さない … 切り抜きは教室ごとのシートに置き、他の教室からは見られないようにします
誤りが起きた場合のリスクは、書いた答えを0点にすることと、誤った答えを正解にすることの2つです。 前者は読めなかった欄を無答と見なすと起き、後者はAIに採点させると起きます。前者は空欄の信頼度で、後者は採点を正答表に置くことで、設計の側で守ります。
10まず何から始めるか
1週目:解答用紙を整理する
学年と教科ごとの解答用紙を並べ、書式番号と生徒番号のマーク欄を入れた版に作り直します。解答欄の枠は大きく、欄の外に書かないよう注意書きを入れます。この作業だけで、講師が採点するときの読みやすさも上がります。
2週目:1つの書式で30枚試す
Document Intelligence Studio で見本5枚にラベルを付け、カスタム テンプレート モデルを作って残りを読み取らせます。講師の採点との食い違いが、信頼度の低い欄に集まっているかを見ます。
3週目:正答表と許容する表記の一覧を作る
教務部が、書式番号ごとの正答表と、設問ごとの許容する表記を一覧にします。どこまでを正解とするかは、講師ではなく教務部が決めます。
4週目:1つの教室で半自動化を回す
Python で照合と成績表への書き込み、確認一覧の出力を作り、1つの教室で回します。この時点では誤答の傾向のまとめは出さず、講師が直した欄の記録を集めます。
2か月目: 直した欄の信頼度から基準の値を決め、許容する表記を足して、全書式のモデルを作ります。3か月目以降: 全教室の投入フォルダをつなぎ、設問ごとの正答率と誤答の傾向を教務部へ出します。確認一覧の量が教室ごとに落ち着き、教務部が教室と設問のつまずきの話を始められた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| カスタム テンプレート モデルが、ラベル付きのキーと値、選択マーク、表、署名、領域を取り出し、見た目の決まった書式に向くこと。書式が変わると精度が落ち、書式ごとに少なくとも5枚の見本でモデルを作って合成できること。PDFと画像(JPEG、PNG、BMP、TIFF、HEIF)が入力でき、PDFとTIFFは2,000ページまで(無料は最初の2ページ)、ファイルは有料(S0)で500MB・無料(F0)で4MB、画像は50×50から10,000×10,000ピクセル、文字の高さの下限が1024×768の画像で12ピクセルであること。パスワード付きPDFは解除が必要なこと | Microsoft Learn: Custom template document model | 2026-09-29 |
| カスタム テンプレート モデルの手書きの対応言語に日本語が含まれること | Microsoft Learn: Language support for custom models | 2026-09-29 |
| Read と Layout の手書きの対応言語に日本語が含まれること | Microsoft Learn: Language support for Read and Layout | 2026-09-29 |
| フィールドの信頼度が0〜1で、人の確認に回すかの判断に使えること。カスタム モデルのフィールドの信頼度は値の位置の確からしさで、単語の信頼度は文字の読み取りの確からしさであること。文書の種類と選択マークにも信頼度があること。値の無い欄は NULL と信頼度が返り、高い信頼度は値が無いという予測が正しい可能性が高いことを示すこと | Microsoft Learn: Accuracy and confidence scores | 2026-09-29 |
Azure OpenAI の構造化出力が JSON スキーマへの準拠を求める機能で、全ての項目を必須にし、additionalProperties を false にする必要があること | Microsoft Learn: Structured outputs(Azure OpenAI in Microsoft Foundry Models) | 2026-09-29 |
どこまでを正解とするかの基準は、教務部で決めてください。 本記事は公開されている製品の仕様で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0311)についてのご相談はこちらから。
