学校の保健室で手書きされる来室記録を読み取り、学年・症状・時間帯を月次で集計して、同じ症状の増え方と来室が続く生徒を養護教諭に返す
保健室で手書きされる来室記録簿を毎日読み取り、学年・症状・時間帯の集計表にそろえます。月末を待たずに、同じ症状の増え方と、来室が続く生徒の一覧を養護教諭に返します。
- 生成AI
- ChatGPT/Claude
- AIサービス
- Azure AI/Google Document AI
- 連携・自動化
- Google Apps Script/Python
- 対象業界
- 教育/自治体
- 対象部門
- 総務
- 対象業務
- データ入力・転記/集計・分析
- 主な課題
- データ分析に時間がかかる/人手が足りない/入力作業が多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 判断支援/対応スピード向上/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 来室した生徒が記録簿に学年・組・番号・氏名・症状を書く
- 養護教諭が時刻、体温、処置、担任への連絡の有無を書き足す
- 1日の終わりに記録簿をファイルに綴じる
- 月末に、1か月分の記録簿を1行ずつ表計算ソフトへ打ち直す
- 症状を自分の分類に読み替え、学年別・症状別・時間帯別に数える
- 同じ生徒の行を名前で探し、月に何回来たかを数える
- 集計表と気になる点を、学校保健委員会や職員会議の資料にまとめる
- 人生徒と養護教諭が、改めた様式の記録簿に今までどおり書く
- 人1日の終わりに、記録簿を複合機でスキャンし、保健室の取込フォルダに保存する
- 自動Apps Script が夜に取込フォルダを見て、Document AI の Form Parser に渡す
- 自動表の行ごとに、学年・組・番号、時刻、体温、症状、処置を取り出す
- 自動学年・組・番号を名簿と突き合わせ、生徒の番号に置き換える
- 自動Claude API が、症状の書き方を決まった分類と部位にそろえる
- 自動Apps Script が、来室の台帳に行を足し、学年・症状・時間帯で集計する
- 自動同じ症状の増え方と、来室が続く生徒の一覧を、翌朝までに作る
- 人養護教諭が、読み取りの印が付いた行を記録簿と見比べて直す
- 人一覧を見て、担任への声かけや保健指導が要るかを決める
各工程の詳しい説明を読む
- 来室した生徒が記録簿に学年・組・番号・氏名・症状を書く
- 養護教諭が時刻、体温、処置、担任への連絡の有無を書き足す
- 1日の終わりに記録簿をファイルに綴じる
- 月末に、1か月分の記録簿を1行ずつ表計算ソフトへ打ち直す
- 症状を自分の分類に読み替え、学年別・症状別・時間帯別に数える
- 同じ生徒の行を名前で探し、月に何回来たかを数える
- 集計表と気になる点を、学校保健委員会や職員会議の資料にまとめる
(a)打ち直しが多い。 1か月600行を1行ずつ打ちます。生徒の字は崩れていて、学年・組・番号の読み違いがそのまま集計の誤りになります。
(b)症状の読み替えが人によって違う。 「お腹が痛い」と「気持ち悪い」を同じ分類にするか、「だるい」をどこに入れるか。2名の養護教諭のあいだで分け方がそろっていないと、月ごとの比較ができません。
(c)変化に気づくのが遅い。 集計が月に1回なので、ある学年で発熱や風邪の症状が増えていても、数字として見えるのは翌月です。 その間は、養護教諭の「最近多い気がする」という感覚だけが頼りです。
(d)繰り返し来る生徒を数えていない。 名前で行を探して数えるのは手間がかかり、月末の集計では省かれがちです。週に何度も来ている生徒に、記録簿の上では誰も気づいていないことがあります。
- 【人】 生徒と養護教諭が、改めた様式の記録簿に今までどおり書く
- 【人】 1日の終わりに、記録簿を複合機でスキャンし、保健室の取込フォルダに保存する
- 【自動】 Apps Script が夜に取込フォルダを見て、Document AI の Form Parser に渡す
- 【自動】 表の行ごとに、学年・組・番号、時刻、体温、症状、処置を取り出す
- 【自動】 学年・組・番号を名簿と突き合わせ、生徒の番号に置き換える
- 【自動】 Claude API が、症状の書き方を決まった分類と部位にそろえる
- 【自動】 Apps Script が、来室の台帳に行を足し、学年・症状・時間帯で集計する
- 【自動】 同じ症状の増え方と、来室が続く生徒の一覧を、翌朝までに作る
- 【人】 養護教諭が、読み取りの印が付いた行を記録簿と見比べて直す
- 【人】 一覧を見て、担任への声かけや保健指導が要るかを決める
9番目は、印の付いた行だけでなく、毎日まとめて行います。 前の日の分を翌朝に見るので、記録簿の記憶が新しいうちに直せます。月末に1か月分を打ち直すより、毎朝数分のほうが続きます。
10番目は人だけが行います。 一覧は「誰が何回来たか」を出すだけです。声をかけるか、担任と共有するか、保護者に連絡するかは、養護教諭が生徒の様子を見て決めます。
02今回想定するシステム構成
来室記録簿(A4横、1行1来室、手書き) │ 1日の終わりに複合機でスキャン ▼【トリガー】Apps Script の時間主導型トリガー(毎日夜) Google Apps Script ── 形式・ページ数・日付の確認 ▼ Google Document AI(Form Parser) │ 表の行と列、欄の文字、信頼度 ▼ Google Apps Script ── 学年・組・番号を名簿と照合し、生徒の番号に置き換える ▼ Claude API ── 構造化出力で症状をそろえる │ 分類(頭痛・腹痛・発熱など)/部位/けがの有無 ▼ Google Apps Script ── 来室の台帳に追記、集計の規則 ├──▶ 学年×症状×時間帯の集計(毎日更新) ├──▶ 同じ症状の増え方(学年・組ごと) └──▶ 来室が続く生徒の一覧(養護教諭だけが見る) ▼ 【養護教諭が読み取りを直し、一覧を見て対応を決める】
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Google Document AI(Form Parser) | Azure AI Document Intelligence |
| 生成AI | Claude API(症状の書き方の分類と部位へのそろえ) | OpenAI API |
| 連携 | Google Apps Script(フォルダの監視、名簿との照合、台帳への書き込み) | Python |
| 集計 | Google Apps Script(学年×症状×時間帯の集計、増え方、来室回数) | Python |
| 保管 | Google ドライブ(共有ドライブ)、Google スプレッドシート | 校内のファイルサーバー |
生成AIの代替候補に Gemini API を挙げていないのは、規約のためです。 Gemini API の規約は、18歳未満の人が利用する、または利用しうるサービスの一部として使うことを禁じています。この構成を使うのは教員だけですが、扱うのは生徒の記述そのものです。 判断の余地を残さないよう、最初から外します。
土台は Document AI の Form Parser です。 公式のプロセッサ一覧では、キーと値のペア、チェックボックス、表を抽出するとされ、言語の一覧で日本語(ja)は手書きに対応する言語として示されています。記録簿は1行1来室の表なので、表の抽出がそのまま使えます。
Form Parser の注意書きのうち、この題材で効くのは2つです。 1つは、表の抽出が行や列をまたぐセルの無い単純な表を対象にしていること。もう1つは、ラジオボタンの読み取りに対応しないことです。症状に○を付ける記録簿は、そのままでは読めません。様式を改めるところから始めます(第7章)。
処理する場所にも注意が要ります。 Document AI のリージョンの一覧は、マルチリージョンの us と eu と、シンガポール(asia-southeast1)などの単一リージョンで、日本のリージョンはありません。 記録簿には生徒の氏名と健康の状態が書かれています。国外で処理してよいかを、学校の個人情報の取扱いの決まりに照らして、導入の前に決めます(第13章)。
03どうやって実装するのか
処理の起点を決める
1日の終わりに、養護教諭が記録簿をスキャンして取込フォルダに保存することを起点にします。 複合機のスキャンの宛先を保健室の共有ドライブのフォルダにし、ファイル名に日付が入る設定にします。スキャンは1日1回、その日の記録簿をまとめて1つのPDFにします。
Apps Script の時間主導型トリガーが、毎日夜に取込フォルダを見ます。 公式のページでは、時間主導型のトリガーは指定の時刻や間隔で動かせ、実行の時刻は少しずれることがあるとされています。翌朝までに台帳と一覧ができていれば足りるので、夜の1回で十分です。
処理が終わったPDFは、処理済みのフォルダへ移します。移すのは、台帳への書き込みまで成功したときだけです。 取込フォルダに残っているPDFが、未処理の日の分です。スキャンし忘れた日は、翌朝の一覧に「前日の記録簿が届いていない」と出します。 来室が0件の日と区別するためです。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 来室記録簿 | 日付、学年・組・番号、氏名、来室と退室の時刻、体温、症状の番号、様子(自由記述)、処置の番号、担任への連絡 | 取込フォルダのPDF |
| 読み取り結果 | 表の行と列、欄の文字、要素ごとの信頼度 | Document AI(Form Parser) |
| 生徒の名簿 | 学年・組・番号と、生徒の番号(校内のID) | 校務の名簿データを書き出したスプレッドシート |
| 症状の分類 | 分類の名前、記録簿の症状の番号との対応、よく書かれる言い方の例 | 養護教諭が用意する一覧 |
| 学校の行事 | 定期試験、体育祭、校外学習などの日付 | 学校の年間行事予定 |
質を決めるのは、症状の分類の一覧です。 「頭痛」「腹痛」「気分不良」「発熱」「けが(すり傷・打撲・ねんざなど)」「その他」のように、今まで月末の集計で使ってきた分け方をそのまま一覧にします。 分け方を変えると、去年の同じ月と比べられなくなります。よく書かれる言い方(「お腹いたい」「はきけ」)も、例として並べます。
行事の日付は、増え方を読むときの手がかりにします。 体育祭の練習が続く週にけがの来室が増えるのは、理由の分かる増え方です。集計表に行事を並べて出すだけで、AIには渡しません。
データの取得方法を決める
読み取りは、Apps Script から Document AI の処理の API を呼ぶだけです。PDFを渡すと、Document という形の応答が返ります。
| 取るもの | 応答のどこから | 何に使うか |
|---|---|---|
| 表の行と列 | pages[].tables[] の headerRows と bodyRows | 1行1来室の各欄 |
| 欄の文字 | 各セルの layout の textAnchor から text を引く | 学年・組・番号、時刻、体温、症状の番号、様子 |
| 信頼度 | 各要素の layout の confidence | 手書きの字が確かに読めているかの判定 |
| 日付 | pages[].formFields[] の fieldName と fieldValue | 記録簿の上の「月日」の欄 |
氏名の欄は読みますが、台帳には残しません。 学年・組・番号を名簿と突き合わせて生徒の番号に置き換え、氏名は番号と合っているかを確かめる照合にだけ使います。 番号と氏名が名簿で食い違えば、その行に印を付けて養護教諭に回します。台帳とAIに渡すデータには氏名を入れません。
来室の多い日は、記録簿が2ページ以上になります。 ページごとに表の見出しの行が繰り返されるので、2ページ目以降の見出しの行は読み飛ばし、ページをまたいでも行の番号が続くように Apps Script で振り直します。
名簿との照合は Apps Script が行います。 学年・組・番号の3つがそろって名簿に当たれば生徒の番号に置き換え、どれか1つでも読めないか当たらなければ、置き換えずに unmatched にします。 近い番号に寄せることはしません。
AIへ渡す前に整形する
- 様式の改訂 … 症状と処置に○を付ける欄を、番号を書き込む欄に変えます。「症状:1頭痛 2腹痛 3気分不良 4発熱 5けが 6その他」のように番号の意味を表の上に印刷し、生徒は番号を書き、様子は自由記述の欄に書きます
- 表の作りの確認 … 1行1来室にし、行や列をまたぐ升を無くします。 「様子」が長くなったら2行に書くのではなく、余白に書いてもらいます
- 形式の確認 … Document AI の対象は PDF、GIF、TIFF、JPEG、PNG、BMP、WebP などです。複合機のPDFはそのまま入れられます
- 画質の確認 … 公式には、スキャンは最低200dpiが望ましく、300dpi以上が一般に最もよい結果になるとされています。複合機の設定を300dpiに固定します
- 日付の確認 … ファイル名の日付と記録簿の「月日」の欄が食い違えば、処理を止めて養護教諭に知らせます
- 重複の検知 … 同じ日付のPDFが2つあれば、後のものを差し替えとして扱います
1番目がいちばん効きます。 ○を付ける欄はラジオボタンと同じ形で、Form Parser は読み取りに対応しません。番号を書く欄にすれば、手書きの数字1字として読めます。 生徒にとっても、○を付けるのとほとんど手間は変わりません。
AIに処理させる
させるのは、1行ごとに、症状の番号と様子の記述から、症状の分類と部位を1つずつ選ぶことだけです。
| 付けるもの | 選び方 | 判断できないときの扱い |
|---|---|---|
| 症状の分類 | 分類の一覧から1つ。症状の番号を優先し、様子の記述で確かめる | 番号が読めず、記述からも決められなければ unclear |
| 番号と記述の食い違い | 番号が「1頭痛」なのに記述が「転んで膝をすりむいた」なら conflict | ― |
| 部位 | けがのときだけ、記述から「頭」「手指」「膝」などを選ぶ | 書かれていなければ空 |
| 発熱の有無 | 体温の欄の数字が、学校で決めた目安以上か | 数字が読めなければ unreadable |
| 根拠 | 分類を決めた番号と記述の文字列 | ― |
番号を優先させるのは、生徒が自分で選んだ分類だからです。 記述は「だるい、頭もいたい」のように複数の症状が混ざることがあり、そこから選ばせると、AIがどれを主とするかを決めることになります。番号と記述が明らかに食い違うときだけ conflict として養護教諭に回します。
体温の目安は、学校で決めた数字を規則に書きます。 AIには数字を読ませず、Apps Script が数字と目安を比べます。
| させないこと | 理由 |
|---|---|
| 来室の理由や背景の推測 | 「教室に居づらいのでは」などは、生徒と話した養護教諭にしか分からない |
| 生徒ごとの傾向の要約 | AIに生徒の来室の履歴を渡さない。数えるのは規則 |
| 病名の推測 | 記述から病名を付けない。分類は今までの集計の分け方 |
| 出席停止や受診の要否の判断 | 出席停止は校長、臨時休業は学校の設置者の判断 |
| 読めない番号の補完 | 記述から番号を推して埋めると、生徒が選んだ分類が消える |
1行目がいちばん起きやすい失敗です。 「頭が痛い、昨日あまり寝ていない」と書かれた行を渡すと、AIは「睡眠不足による頭痛の可能性」と書き添えようとします。書き添えは一見親切ですが、生徒の様子についての推測が台帳に残ることになります。 分類と部位のほかは何も書かせません。
指示内容を固定する
あなたは学校の保健室で、来室記録簿の症状を決まった分類にそろえる係です。
渡すのは、記録簿の行ごとの読み取り結果です。生徒の名前は含まれていません。
書かれている番号と文字だけを使って分類してください。推測で埋めないでください。
【やること】行ごとに次を付けてください。
1. category:症状の分類の一覧から1つ。
症状の番号が読めていれば番号に対応する分類を選び、
様子の記述はその確認にだけ使ってください。
番号が読めないときだけ、記述から選んでください。
どちらからも決められなければ unclear。
2. conflict:番号の分類と記述が明らかに食い違うときだけ true。
3. body_part:けがのときだけ、記述に書かれた部位を一覧から選ぶ。
書かれていなければ空。
4. evidence:分類を決めた番号と記述の文字列をそのまま写す。
【厳守事項】
- 来室の理由、生徒の気持ち、家庭や学校生活についての推測を書かないでください。
- 病名を付けないでください。分類の一覧の名前だけを使ってください。
- 記述が複数の症状を含むときは、番号の分類を優先してください。
番号が無ければ、記述の最初に書かれた症状で選び、note に残りを書いてください。
- 読めない番号を記述から推して埋めないでください。
- 受診や休養が必要かどうかを書かないでください。
- 行を足したり、まとめたりしないでください。入力と同じ行数を返してください。
【症状の分類の一覧と、よく書かれる言い方の例】{categories}
【部位の一覧】{body_parts}
【読み取り結果】{rows}
「生徒の名前は含まれていません」と最初に書くのは、AIに名前を探させないためです。 渡す行には行の番号と、学年、時刻、症状の番号、様子の記述しかありません。生徒を特定できる情報を渡さないことを、指示の側でも明示します。
「入力と同じ行数を返す」を入れているのは、集計の数を守るためです。 同じ生徒の続けての来室を1行にまとめられると、来室の回数が減って見えます。Apps Script で入力と出力の行数を比べ、合わなければ台帳に書き込みません。
出力形式を固定する
Claude API の構造化出力を使い、次の形のJSONで受け取ります。 output_config.format に JSON スキーマを渡すと、応答がそのスキーマに沿った形になります。
{
"log_date": "2026-10-06",
"rows": [
{
"row_no": 1,
"category": "頭痛",
"conflict": false,
"body_part": "",
"evidence": "1/頭いたい",
"note": ""
},
{
"row_no": 2,
"category": "けが",
"conflict": true,
"body_part": "膝",
"evidence": "2/体育で転んで膝すりむいた",
"note": "番号は腹痛、記述はけが"
}
]
}
1つ目の理由は、AIの出力と生徒の番号を別の場所に置けることです。 AIが返すのは row_no と分類だけで、生徒の番号は Apps Script が row_no で結び付けます。AIの入出力のどこにも、生徒を特定する情報が出てきません。
2つ目は、category を enum で縛れることです。 分類の一覧の名前だけを許すスキーマにすれば、一覧に無い言葉は返ってきません。公式のページでは列挙の値の大文字・小文字までは保証されないとされていますが、分類の名前は日本語なので影響は小さく、念のため Apps Script で一覧と照らしてから台帳に書きます。
集計は Apps Script が次の規則で行います。
| 出すもの | 規則 |
|---|---|
| 学年×症状×時間帯の集計 | 来室の時刻を「始業前」「1〜2限」「3〜4限」「昼休み」「5〜6限」「放課後」に分けて数える |
| 同じ症状の増え方 | 学年・組ごとに、直近1週間の件数を前の4週間の平均と比べ、決めた倍率を超えたら印 |
| 来室が続く生徒 | 生徒の番号ごとに、直近2週間の来室回数が決めた回数以上なら一覧に載せる |
| 発熱の続き方 | 同じ組で、体温が目安以上の来室が同じ日に決めた人数以上なら印 |
倍率と回数は、学校で決めて規則に書きます。 何回で一覧に載せるかは、養護教諭の感覚と合わせて最初の1か月で調整します。
毎朝、養護教諭が開く画面は次の形にします。
【10月7日(火)朝の確認】前日の来室 34件(読み取りの印 4件)
■ 読み取りの印
行12 unmatched 2年?組18番(組が読めない)
行21 conflict 番号2(腹痛)/記述「体育で転んで膝すりむいた」
行27 unreadable 体温の欄
行30 note_outside 余白に記述あり
■ 増え方の印(直近1週間 ÷ 前の4週間の平均)
1年3組 発熱 6件(平均1.5件、4.0倍) 行事:なし
3年 全体 けが 9件(平均4.0件、2.3倍) 行事:体育祭の練習
■ 来室が続く生徒(直近2週間で5回以上)→ 別ファイル
2名(内容は保健室の端末でのみ表示)
来室が続く生徒の名前は、この画面にも出しません。 人数だけを出し、中身は別のファイルを開いて見ます。画面を開いたまま保健室を離れても、生徒が覗き込んで名前を見ることがないようにするためです。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 共有ドライブ | Apps Script の DriveApp | 取込フォルダのPDFを読み、処理済みへ移す |
| Document AI | Apps Script の UrlFetchApp から処理の API を呼ぶ | 表の行と列、欄の文字、信頼度を返す |
| 生徒の名簿 | スプレッドシートの読み取り | 学年・組・番号から生徒の番号を引く |
| Claude API | Apps Script の UrlFetchApp から呼ぶ | 症状の分類と部位 |
| 来室の台帳・集計表 | スプレッドシートへの書き込み | 行の追記、集計、一覧 |
来室が続く生徒の一覧は、集計表とは別のファイルに置き、共有は養護教諭2名に限ります。 学年×症状の集計表は保健部や管理職と共有しても、一覧は生徒の番号と回数が並ぶ、生徒を特定できる情報です。
名簿は読み取りだけです。 転入や学級の変更で名簿が古いと照合できない行が増えるので、名簿の書き出しは毎月の初めに更新します。
人が確認する
- 毎朝、前日の行の印を見る …
unmatched(名簿に当たらない)、unreadable(字が読めない)、conflict(番号と記述の食い違い)の行を、スキャンの画像と見比べて直します - 直した値を台帳に書く … 直した行には「人が直した」印を残します
- 増え方の印を見る … 印が付いた学年・組の行を見て、行事や天候で説明がつくかを考えます
- 来室が続く生徒の一覧を見る … 一覧の生徒について、来室の時刻と様子の記述を並べて読み、声をかけるか、担任と共有するかを決めます
4番目の判断は、一覧の数字だけでしないでください。 部活動でけがが続いている生徒も、教室に居づらくて来ている生徒も、一覧では同じ「2週間で5回」です。一覧は「この生徒の行を読み直す」きっかけです。
目標は、600件をならして1件1分です。 印が付く行は1割前後という想定で、それより多い日は、スキャンの画質か名簿の古さを疑います。
例外に対処する
| 起きること | 対応 |
|---|---|
| 学年・組・番号が名簿に当たらない | unmatched。近い番号に寄せず、養護教諭が直す |
| 同じ生徒が1日に2回来る | 2行として数える。まとめない |
| 生徒が書けない状態で来る | 養護教諭が代わりに書く。読み取りは同じ |
| 教職員が来室する | 学年の欄に「職員」と書く決まりにし、集計から外す |
| 表の外の余白に書かれた様子 | 表の行に結び付けられないので、note_outside として養護教諭に回す |
| ページの順番が入れ替わっている | 時刻で並べ直す。日付が違うページは止める |
| スキャンし忘れた日 | 翌朝の一覧に「届いていない」と出す |
| Document AI か Claude API が応答しない | PDFを取込フォルダに残し、翌日の実行で拾い直す |
1行目と2行目を守らないと、来室が続く生徒の一覧が崩れます。 番号を近いものに寄せると、別の生徒の回数が増えます。同じ日の2回をまとめると、本当に繰り返し来ている生徒の回数が減ります。
記録を残す
- スキャンしたPDFと、スキャンした日時
- Document AI が返したJSONの全文
- Claude API に渡した行(氏名を含まない)と、返ってきたJSON
- 来室の台帳(生徒の番号、日時、分類、部位、処置)と、人が直した記録
- 集計の規則の版(倍率、回数、体温の目安、時間帯の区切り)
- 一覧を見て養護教諭が対応した記録は、この台帳とは別に、今までどおり保健室の記録として残します
集計の規則の版を残すのは、規則を途中で変えるからです。 一覧に載せる回数を変えると、前の月と載る生徒の数が変わります。どの版で出した一覧かが分からないと、増えたのか規則が変わったのかを区別できません。
04実装レベルの3段階
最小構成では毎日は回せません。 確かめるための段階です。 半自動化で、1件3分が1.5分程度になります。 打ち直しはなくなりますが、集計と同じ生徒の数え上げはまだ手作業です。本格構成で1分になり、この段階が本記事の想定です。 差が大きいのは、生徒の番号に置き換わることで、同じ生徒の行を数えるのが規則でできるようになるからです。 段階を飛ばさないでください。 半自動化の台帳を1か月見ると、分類の一覧に足りない言い方と、名簿に当たらない書き方の癖が分かります。そこを直してから一覧を出すほうが、載るべき生徒が漏れません。
05工数削減シミュレーション
導入後 600件 × 1分 ÷ 60 = 10 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 生徒数が数百人から千人規模で、保健室の来室が1日に数十件ある中学校・高等学校。来室記録は紙の記録簿に生徒と養護教諭が手書きし、月末に養護教諭が表計算ソフトへ打ち直して、学校保健委員会や職員会議の資料を作っている場合。同じ生徒が繰り返し来ていることに、月末の集計まで気づけないことがある場合。Google Workspace for Education を使っている場合。
- 来室の記録をすでに校務支援システムや端末で入力しており、紙の記録簿が残っていない場合。来室が1日に数件で、養護教諭が記憶と手元のメモで把握できる場合。生徒の健康に関する情報を国外のクラウドで処理することを、設置者の決まりで認められない場合。なお、生徒の心身の状況の判断、保健指導の内容、出席停止や臨時休業の判断は、この構成では代替できません。
07最小構成で試す方法
- 先月の記録簿から5日分を選ぶ(行事のあった日と、来室の多かった日を入れる)
- 氏名の欄を紙で隠してからスキャンする
- 手元のAIサービスの画面に1日分ずつ貼り付ける
- 「この表を1行ずつ読み、学年、時刻、体温、症状の番号、様子を書き出してください。症状は次の分類の一覧から1つ選んでください。読めない欄は空にし、推測で埋めないでください」と指示する
- 書き出された行を、先月打ち直した表と比べる
氏名を隠すのは、試す段階でも生徒の情報を外に出さないためです。 試すのは読み取りと分類がどこまで合うかで、氏名は要りません。
| 出てきた内容 | 判断 |
|---|---|
| 先月の打ち直しとほぼ同じ行ができた | Document AI とのつなぎに進む |
| 分類が自分の読み替えとずれる | 分類の一覧に言い方の例を足せば直る。構成は有効 |
| ○を付けた症状が読めない | 様式の改訂が先。 番号を書く欄にする |
| 生徒の字が読めない行が多い | 記録簿を書く机の明るさや、ボールペンの太さを見直す |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| ○を付けた症状が読めない | ラジオボタンに対応しない。番号を書く欄に改める |
| 2行にまたがる様子の欄で表が崩れる | 単純な表が対象。行をまたぐ升を無くす |
| 番号を近い生徒に寄せてしまう | 3つがそろって当たるときだけ置き換える |
| AIが来室の理由を書き添える | 指示で禁じ、note の中身を週に1回見る |
| 行がまとめられて回数が減る | 入力と出力の行数を比べ、合わなければ書き込まない |
| 名簿が古くて当たらない行が増える | 名簿の書き出しを毎月更新する |
| 分類の分け方を途中で変える | 去年と比べられなくなる。変えるなら版を記録する |
| 一覧が保健部全体に共有される | 一覧は別のファイルにし、養護教諭だけが見る |
| 一覧の数字だけで声をかける | 行の記述を読み直してから決める |
| スキャンし忘れの日が0件に見える | 「届いていない」を一覧に出す |
上の2行は、始める前に様式で防げます。 どちらも読み取りの精度の問題ではなく、Form Parser が対応しない形の様式を使っていることの問題です。
下の2行は、運用が乗ってから起きます。 一覧が便利になるほど、共有したくなり、数字だけで動きたくなります。一覧が「生徒を特定できる健康の情報」であることを、最初の説明で伝えておいてください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 生徒の学年・組・番号と氏名、来室の日時、体温、症状、けがの部位、処置です。未成年の健康に関する情報です。
- 国外で処理してよいかを導入の前に決める … Document AI のリージョンの一覧に日本はありません。設置者や学校の個人情報の取扱いの決まりに照らして、
us、eu、単一リージョンのどこで処理するか、そもそも処理してよいかを決めます - AIに氏名を渡さない … Claude API に渡すのは、行の番号、学年、時刻、症状の番号、様子の記述だけです。生徒の番号との結び付けは Apps Script の中で行います
- 生成AIの選び方 … Gemini API の規約は、18歳未満が利用する、または利用しうるサービスでの利用を禁じています。生徒の記述を扱うこの構成では使いません。 他の製品でも、利用規約と年齢の条件を導入の前に確かめます
- 一覧の共有を絞る … 来室が続く生徒の一覧は、養護教諭2名だけが見ます。担任と共有するかは、生徒ごとに養護教諭が決めます
- 判断を規則やAIに任せない … 学校保健安全法は、養護教諭その他の職員が健康相談や日常的な観察で心身の状況を把握し、問題があると認めるときは指導や保護者への助言を行うものとしています。把握するのは人で、この構成はその材料を早く出すだけです。 出席停止は校長、臨時休業は学校の設置者が行うもので、増え方の印はその判断の代わりになりません
- 保存の期間を決める … 台帳とAIの入出力のJSONを、いつまで残すかを決めます。卒業した生徒の行の扱いも決めておきます
誤りが起きた場合のリスクは、来室が続く生徒を一覧から漏らすことと、一覧が見るべきでない人に見られることの2つです。 前者は番号の照合と行数の確認で、後者は共有の範囲で防ぎます。どちらも、AIの精度ではなく仕組みの側で守ります。
10まず何から始めるか
1週目:国外での処理を相談する
管理職と、設置者の個人情報の担当に、生徒の健康に関する記録を国外のクラウドで処理してよいかを相談します。ここで止まるなら、この構成は進めません。
2週目:5日分で試す
先月の記録簿から5日分を選び、氏名を隠して手元のAIサービスに貼り、行を書き出させます。○を付けた症状が読めるか、生徒の字がどこまで読めるかを最優先で見ます。
3週目:様式を改める
症状と処置を番号で書く欄にし、行をまたぐ升を無くした様式を作ります。分類の一覧は、今までの月末の集計の分け方をそのまま使います。
4週目:取込フォルダから台帳までをつなぐ
Apps Script で取込フォルダを見張り、Document AI と Claude API を呼び、来室の台帳に書き出すところまで作ります。この時点では一覧を出さず、台帳だけを毎朝見ます。
2か月目: 名簿との照合と集計の規則を足し、増え方の印を出します。印が付いた行の数を毎週数えます。3か月目以降: 来室が続く生徒の一覧を足し、載せる回数を養護教諭の感覚と合わせて決めます。月末の打ち直しがなくなり、一覧が毎朝の確認に組み込まれた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 学校に保健室を設けること(第7条)。健康相談を行うこと(第8条)。養護教諭その他の職員が健康相談や日常的な観察で心身の状況を把握し、指導と保護者への助言を行うこと(第9条)。出席停止を校長が行えること(第19条)。臨時休業を学校の設置者が行えること(第20条) | e-Gov法令API: 学校保健安全法 | 2026-10-07 |
Form Parser がキーと値のペア、チェックボックス、表を抽出すること。日本語(ja)が手書きに対応する言語に含まれること | Google Cloud: Processor list | 2026-10-07 |
| 表の抽出が行や列をまたぐセルの無い単純な表を対象にすること。チェックボックスのモデルがラジオボタンに対応しないこと | Google Cloud: Form Parser | 2026-10-07 |
表が headerRows/bodyRows、項目名と値の組が formFields の fieldName/fieldValue で返ること | Google Cloud: Handle the processing response | 2026-10-07 |
| 対応形式。スキャンは最低200dpiが望ましく300dpi以上が一般に最もよいこと | Google Cloud: Supported files | 2026-10-07 |
処理の場所が us・eu と単一リージョンで、日本が無いこと | Google Cloud: Regional and multi-regional support | 2026-10-07 |
output_config.format で応答の形を固定できること。列挙の値の大文字・小文字が保証されないこと | Claude API: Structured outputs | 2026-10-07 |
| 時間主導型のトリガーが指定の時刻や間隔で動かせ、実行の時刻が少しずれることがあること | Google Apps Script: Installable triggers | 2026-10-07 |
| 18歳未満の人に向けた、または利用されうるサービスの一部として API を使わないこと | Gemini API Additional Terms of Service | 2026-10-07 |
生徒の心身の状況の把握と対応は養護教諭と学校が、出席停止は校長が、臨時休業は学校の設置者が判断します。 本記事は公開の法令と製品の公式ページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0795)についてのご相談はこちらから。
