自治体の保育課に毎月届く手書きの途中入所の申込書と就労証明書を読み取り、申込台帳の項目と利用調整に使う就労時間・世帯の状況をそろえ、記入漏れと添付漏れを拾う
保育所等の途中入所で毎月届く手書きの申込書と就労証明書を読み取り、申込台帳の項目と、利用調整に使う就労時間・世帯の状況の欄にそろえます。記入漏れと添付漏れは、締切の直後に保護者への連絡の一覧にします。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- Azure AI/Google Document AI
- 連携・自動化
- Google Apps Script/Python
- 対象業界
- 自治体
- 対象部門
- 総務
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- 入力作業が多い/期限・対応漏れが起きる/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 窓口と郵送で申込書と就労証明書を受け取り、受付印を押して受付簿に書く
- 締切の翌日から、職員が1件ずつ申込書を見て、児童・保護者・希望施設を業務システムに打ち込む
- 就労証明書を読み、父と母それぞれの雇用の形態、月間の就労時間、就労日数、育児休業の状況を打ち込む
- 保育を必要とする事由ごとに、添付が要る書類(就労証明書、求職活動の申立書、診断書など)がそろっているかを見る
- 記入漏れや添付漏れがあれば、点検の表にメモする
- メモのたまった分を、担当者が保護者に電話するか、通知を送る
- 係長が指数と添付の状況を確かめ、利用調整の資料にする
- 人受け取った申込みを、申込書と就労証明書と添付書類の1組ごとに複合機でスキャンし、受付番号をファイル名に入れて取込フォルダに保存する
- 自動Python のプログラムが10分おきに取込フォルダを見て、新しいファイルを拾う
- 自動Document AI が書類を読み、項目名と値の組・チェックボックス・表・信頼度を返す
- 自動Python が書類の種類(申込書・就労証明書・添付書類)をページごとに見分け、個人番号の欄を伏せる
- 自動Claude API が、申込書を申込台帳の項目に、就労証明書を就労の状況の欄に写す
- 自動Python が月間の就労時間を規則で計算し、市の基準表に当てはめて指数の候補を出す
- 自動Python が保育を必要とする事由ごとに添付書類の有無を点検し、記入漏れ・読み取りの怪しい欄と合わせて一覧にする
- 人担当者が、記入漏れと添付漏れの一覧から保護者へ連絡する
- 人担当者が `complete` 以外の申込みを開いて原本と見比べ、指数の候補を確かめて業務システムに入れる
各工程の詳しい説明を読む
- 窓口と郵送で申込書と就労証明書を受け取り、受付印を押して受付簿に書く
- 締切の翌日から、職員が1件ずつ申込書を見て、児童・保護者・希望施設を業務システムに打ち込む
- 就労証明書を読み、父と母それぞれの雇用の形態、月間の就労時間、就労日数、育児休業の状況を打ち込む
- 保育を必要とする事由ごとに、添付が要る書類(就労証明書、求職活動の申立書、診断書など)がそろっているかを見る
- 記入漏れや添付漏れがあれば、点検の表にメモする
- メモのたまった分を、担当者が保護者に電話するか、通知を送る
- 係長が指数と添付の状況を確かめ、利用調整の資料にする
(a)締切の直後に打ち込みが集中する。 300件のほとんどが締切の前の数日に届きます。2番と3番が終わらないと4番の点検に入れず、点検が終わるのは調整の会議の直前です。
(b)就労時間の書き方がばらばら。 標準的な様式では月間の就労時間を書く欄がありますが、週あたりの時間だけを書いたもの、曜日ごとの時間だけを書いたもの、シフト勤務で「変則就労」の欄を使ったものが混ざります。 職員がその場で月間に直して打ち込み、直し方が人によって違います。
(c)添付漏れに気づくのが遅い。 父母の片方の就労証明書が無い、求職中なのに申立書が無い、といった漏れは、4番まで来て初めて分かります。 保護者に連絡がつくのが締切から1週間後では、その月の調整に間に合いません。
(d)手書きの字と □ の印が読み取りにくい。 申込書の希望施設の名前、生年月日の数字、□ に付けたはずの印のかすれ。読めないまま推し量って打ち込むと、指数の誤りになります。
- 【人】 受け取った申込みを、申込書と就労証明書と添付書類の1組ごとに複合機でスキャンし、受付番号をファイル名に入れて取込フォルダに保存する
- 【自動】 Python のプログラムが10分おきに取込フォルダを見て、新しいファイルを拾う
- 【自動】 Document AI が書類を読み、項目名と値の組・チェックボックス・表・信頼度を返す
- 【自動】 Python が書類の種類(申込書・就労証明書・添付書類)をページごとに見分け、個人番号の欄を伏せる
- 【自動】 Claude API が、申込書を申込台帳の項目に、就労証明書を就労の状況の欄に写す
- 【自動】 Python が月間の就労時間を規則で計算し、市の基準表に当てはめて指数の候補を出す
- 【自動】 Python が保育を必要とする事由ごとに添付書類の有無を点検し、記入漏れ・読み取りの怪しい欄と合わせて一覧にする
- 【人】 担当者が、記入漏れと添付漏れの一覧から保護者へ連絡する
- 【人】 担当者が
complete以外の申込みを開いて原本と見比べ、指数の候補を確かめて業務システムに入れる
8番目が、この設計の分かれ目です。 漏れの一覧は受付の翌日には出ます。 締切の前に届いた申込みなら、締切までに書き足してもらえることもあります。
6番目を規則にし、9番目で人が確かめるのも意図してのことです。 指数は市の要綱で決まる点数で、1点の違いで内定が変わります。 AIの出した数字を確定させる経路は作りません。
02今回想定するシステム構成
申込書(手書き)+就労証明書(標準的な様式)+添付書類 │ 受付番号ごとに複合機でスキャン ▼【トリガー】Python のプログラムが10分おきに取込フォルダを見る Python ── 形式・ページ数の確認、書類の種類の見分け ▼ Google Document AI(Form Parser) │ 項目名と値の組・チェックボックス・表・信頼度を返す ▼ Python ── 個人番号の欄を伏せる ▼ Claude API ── 申込台帳の項目と就労の状況の欄に写す │ 児童/保護者/希望施設/世帯の状況/就労時間・日数/育児休業 ▼ Python ── 月間の就労時間の換算、基準表への当てはめ、添付書類の点検 │ complete/missing/not_detected/unreadable/attachment_missing ├──▶ 申込台帳の下書き(指数の候補つき) └──▶ 保護者への連絡の一覧(受付番号と不足の内容) ▼ 【人が保護者へ連絡し、原本と見比べて業務システムへ入れる】
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Google Document AI(Form Parser) | Azure AI Document Intelligence |
| 生成AI | Claude API(申込書と就労証明書の欄への対応付け) | Gemini API、OpenAI API |
| 差異計算 | Python(月間の就労時間の換算、基準表への当てはめ、添付書類の点検) | Google Apps Script |
| 連携 | Python(取込フォルダの監視、個人番号の欄を伏せる処理、結果の書き込み) | Google Apps Script |
| 保管 | 庁内のファイルサーバー、申込台帳の表 | 業務システムの添付ファイル機能 |
新しく作るものは2つです。 1つは市の基準表を規則として書き出した表で、就労時間の区分ごとの点数と、調整の点数の条件を並べます。もう1つは保育を必要とする事由ごとの添付書類の表です。どちらも今は要綱と職員の頭の中にあります。
土台は Document AI の Form Parser です。 公式のプロセッサ一覧では、OCRのテキストに加えてキーと値のペア(エンティティとチェックボックス)、表、一般的なエンティティを抽出するとされ、言語の一覧には日本語(ja)があり、手書きに対応する言語として示されています。 保護者の手書きの申込書と、勤め先が手書きした就労証明書の両方を同じ読み方で扱えます。
表は、単純なものに限られます。 公式には、行や列をまたぐセルの無い単純な表から抽出するとされています。就労証明書の曜日ごとの就労時間の欄は、セルの結合があると表として取れないことがあるので、表で取れなかったときは全文のテキストから拾い直します(第7章)。
Form Parser には、この題材で効く注意書きが2つあります。 1つは、値の入っていないキーと値の組(空欄の用紙など)を確実には読み取れないこと。もう1つは、ラジオボタンの読み取りに対応しないことです。申込書の □ はチェックボックスとして読めますが、○で囲む形の欄は読めません。 「キーと値の組が返ってこない」ことを空欄と決めつけない設計にします。
03どうやって実装するのか
処理の起点を決める
受付のたびに、申込み1件分を1つのPDFにしてスキャンすることを起点にします。 申込書、就労証明書(父母それぞれ)、添付書類をまとめて1つのファイルにし、ファイル名に受付番号を入れます。Python のプログラムが10分おきに取込フォルダを見て、新しいファイルを拾います。
締切の後にまとめてスキャンしません。 締切の前に届いた申込みは届いた日に読み、記入漏れを締切の前に保護者へ返します。 締切の後にまとめると、点検が会議の直前に詰まる今の形に戻ります。
処理済みのフォルダへ移すのは、申込台帳の下書きと連絡の一覧への書き込みまで成功したときだけにします。 取込フォルダに残っている数が、そのまま未処理の数になります。プログラムを庁内のどのサーバーで動かすか、そこから Document AI と Claude API の API を呼べるかは、情報セキュリティの担当課と先に決めます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 申込みのPDF | 申込書、就労証明書、添付書類。受付番号、受付日 | 取込フォルダ |
| 読み取り結果 | 項目名と値の組、チェックボックス、表、全文のテキスト、要素ごとの信頼度 | Document AI(Form Parser) |
| 様式の欄の一覧 | 申込書と就労証明書の欄の名前、必須かどうか、欄の位置 | 市で用意する一覧 |
| 基準表 | 就労時間の区分ごとの基本の指数、調整の点数の条件 | 市の要綱を書き出した表 |
| 添付書類の表 | 保育を必要とする事由ごとに要る書類 | 市で用意する表 |
| 施設の一覧 | 施設の正式な名前、略称、施設番号 | 業務システムから出力した一覧 |
質を決めるのは、様式の欄の一覧と添付書類の表です。 欄の一覧が無ければ、返ってきたキーと値の組をどの欄の答えかに当てはめられません。 添付書類の表が無ければ、何が足りないかを判断する物差しがありません。
データの取得方法を決める
読み取りは、Python から Document AI の処理の API を呼ぶだけです。ファイルを渡すと、Document という形の応答が返ります。
| 取るもの | 応答のどこから | 何に使うか |
|---|---|---|
| 項目名と値の組 | pages[].formFields[] の fieldName と fieldValue | 児童・保護者の氏名、生年月日、希望施設、入所希望日、勤め先、雇用の形態 |
| チェックボックス | formFields の fieldValue の valueType(filled_checkbox/unfilled_checkbox) | ひとり親、兄弟姉妹の在園、就労の曜日、育児休業の取得予定・取得中 |
| 表 | pages[].tables[] の headerRows と bodyRows | 就労証明書の就労実績(直近3か月の日数と時間) |
| 全文のテキスト | text と、各要素の textAnchor | キーと値の組や表で取れなかった欄の拾い直し |
| 信頼度 | 各要素の layout の confidence | 手書きの字の読み取りが確かかの判定 |
書類の種類は、ページの見出しの文字で見分けます。 「就労証明書」の見出しのあるページは就労証明書、市の申込書の見出しのあるページは申込書、それ以外は添付書類として扱います。見出しが見つからないページは、種類を決めずに unknown として人に回します。
個人番号の欄は、ここで Python が伏せます。 申込書に個人番号の欄がある市では、その欄の値を記号に置き換えてから Claude API に渡します。利用調整に個人番号は要らず、生成AIに渡す理由がありません。
AIへ渡す前に整形する
- 形式の確認 … Document AI の対象は PDF、GIF、TIFF、JPEG、PNG、BMP、WebP などです。複合機の保存形式は PDF にします
- 解像度の確認 … 公式には、スキャンは最低200dpiが望ましく、300dpi以上が一般に最もよい結果になるとされています。複合機を300dpiに設定します
- 圧縮の確認 … 非可逆の形式は画質と精度を落とすことがあるとされています。複合機の「高圧縮」の設定を使いません
- 向きと裏表の確認 … 逆さのページは向きを直し、白紙の裏面は取り除きます
- 書類の種類の見分け … ページの見出しで、申込書・就労証明書・添付書類を分けます
- 父母の対応付け … 就労証明書の本人氏名を申込書の保護者の氏名と照らし、父母のどちらの証明書かを決めます。決まらないものは人に回します
- 重複の検知 … 同じ児童の申込みが2つあれば、後のものに「再提出」の印を付けます
6番目を軽く見ないでください。 就労証明書が2通あっても、両方が同じ保護者のもの(転職の前後など)ということがあります。父母の取り違えは、そのまま指数の誤りになります。
AIに処理させる
させるのは、書類に書かれた文字を、申込台帳の項目と就労の状況の欄に写すことだけです。 就労時間を月間に直すことも、点数を付けることもさせません。
| 写す項目 | 当たるものの例 | 判断できないときの扱い |
|---|---|---|
| 児童の氏名・生年月日 | 申込書の「児童氏名」「生年月日」 | 読みにくい字は読めたまま写し unclear |
| 希望施設(第1〜第5希望) | 「第1希望」の欄の施設名 | 書かれたとおりに写す。施設の一覧との照合はしない |
| 入所希望日 | 「入所希望日」「○月1日」 | 書かれていなければ空 |
| 世帯の状況 | ひとり親、兄弟姉妹の在園、同居の祖父母などの □ | 印がどちらにも無ければ unknown |
| 雇用の形態 | 正社員、パート・アルバイト、自営業主などの □ | 複数に印があれば全部を写す |
| 就労時間(固定就労) | 曜日の □、月間の合計時間、就労日数、就労時間帯 | 書かれた単位(月・週)のまま写す |
| 就労時間(変則就労) | 月間または週間の合計時間、主な時間帯 | 単位を unit に写す |
| 育児休業 | 取得予定・取得中・取得済みの □、期間、復職予定日 | 書かれていなければ空 |
| 育児休業の短縮の可否 | 可・可(予定)・否の □ | 印が無ければ unknown |
右端の列が、この構成でいちばん大事な区別です。 就労時間は書かれた単位のまま写させます。週の時間を月間に直すのは、標準的な様式の注記にある換算のしかたに沿って Python が行います。AIに換算させると、どの書き方を何倍したのかが記録に残りません。
| させないこと | 理由 |
|---|---|
| 指数の計算と区分の判定 | 市の要綱で決まる点数。規則で出し、人が確かめる |
| 就労時間の月間への換算 | 換算のしかたは規則で決め、計算の過程を残す |
| 書かれていない就労日数の補完 | 曜日の印の数から日数を埋めると、漏れが消える |
| 施設名の「正しい名前」への置き換え | 似た名前の施設に寄せると、希望と違う施設になる |
| 添付書類がそろっているかの判断 | 事由ごとの表で決め、Python が行う |
3行目がいちばん起きやすい失敗です。 月の就労日数の欄が空でも、曜日の □ に5つ印があれば「月20日くらい」と埋めたくなります。その瞬間、勤め先が書いていなかったという事実が消えます。 標準的な様式でも、就労日数は雇用契約に基づく日数を勤め先が書く欄です。
指示内容を固定する
あなたは市の保育課で、保育所等の途中入所の申込書と就労証明書を読み、
申込台帳と就労の状況の欄に写すための下書きを作る立場です。
OCRが返した読み取り結果だけを見てください。推測で埋めないでください。
【やること】
1. 渡されたページが、申込書・就労証明書・それ以外のどれかを確かめてください。
それ以外の書類は写さずに document_type を other にしてください。
2. 申込書から、児童の氏名・生年月日、希望施設(第1〜第5希望)、
入所希望日、世帯の状況の印を写してください。
3. 就労証明書から、本人氏名、雇用の形態、就労時間(固定就労・変則就労)、
就労日数、就労時間帯、育児休業の状況、復職予定日、
育児休業の短縮の可否を写してください。
4. 読み取り結果の中の [MASKED] は伏せた値です。そのままにしてください。
【厳守事項】
- 文字と数字は書かれたものをそのまま入れてください。
- 就労時間と就労日数は、書かれた単位(月・週・日)のまま写し、
単位を unit に入れてください。月間に直す計算をしないでください。
- 書かれていない欄は空にしてください。曜日の印の数や
ほかの欄から、日数や時間を推し量って埋めないでください。
- 施設名は書かれたとおりに写してください。似た名前の施設に直さないでください。
- 読みにくい字は、読めた文字のまま value に入れ、unclear を true にしてください。
- チェックボックスの印がどちらにも無いときは unknown にしてください。
- 指数、点数、優先度、入所できるかどうかについて書かないでください。
- evidence には、各値の根拠にした文字列をそのまま写してください。
【読み取り結果(キーと値の組、チェックボックス、表、全文。個人番号は伏せてあります)】{ocr_result}
【この様式の欄の一覧】{form_fields}
「月間に直す計算をしない」を明記しないと、AIは親切に換算します。 週30時間と書かれた証明書を「月120時間」と写し、元が週の値だったことが下書きから消えます。 換算の規則が後から変わったとき、どれを直せばよいか分からなくなります。
出力形式を固定する
Claude API の構造化出力で、次の形のJSONに固定して受け取ります。 公式には、output_config.format に json_schema の形でスキーマを渡すと、制約付きのデコードでスキーマに従う応答を返すとされ、enum と required を使え、オブジェクトの additionalProperties は false にする必要があります。
{
"document_type": "application | employment_cert | other",
"application": {
"child_name": { "value": "", "unclear": false },
"child_birth": { "value": "", "unclear": false },
"wishes": [{ "rank": 1, "facility_text": "", "unclear": false }],
"start_date": { "value": "", "unclear": false },
"household": { "single_parent": "yes | no | unknown", "sibling_enrolled": "yes | no | unknown" }
},
"employment": [{
"person_name": { "value": "", "unclear": false },
"employment_type": [""],
"work_pattern": "fixed | variable | unknown",
"hours": { "value": "", "unit": "month | week | day | none" },
"days": { "value": "", "unit": "month | week | none" },
"childcare_leave": "planned | taking | taken | none | unknown",
"return_date": "",
"leave_shortening": "yes | yes_planned | no | unknown"
}],
"evidence": [{ "field": "", "text": "", "confidence": 0 }]
}
1つ目の理由は、AIの仕事と規則の仕事を別の層に置けることです。 JSONはAIが埋め、月間の就労時間の換算と基準表への当てはめは Python が行います。基準表が変わっても、直すのは規則の表だけです。
| 状態 | 付ける条件(Python が決める) |
|---|---|
complete | 必須の欄がそろい、unclear が無く、添付書類が事由の表どおりにある |
missing | 必須の欄のキーが見つかり、その近くに値が無い |
not_detected | 必須の欄のキーそのものが見つからない |
unreadable | 値はあるが unclear が立っている、または信頼度が基準を下回る |
attachment_missing | 事由の表で要る書類のページが無い |
unit_mismatch | 就労時間の単位が none、または月間と週間の両方が書かれ値が合わない |
2つ目の理由は、missing と not_detected と attachment_missing を分けられることです。 Form Parser は空欄のキーと値の組を確実には読み取れないとされているので、キーが返ってこないことを空欄と決めつけません。 not_detected は職員が原本を見て、空欄か読み取りの漏れかを決めます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 取込フォルダ | Python の定期実行 | 新しい申込みのPDFを拾う |
| Document AI | API呼び出し | 項目名と値の組・チェックボックス・表・信頼度を返す |
| Claude API | API呼び出し(構造化出力) | 個人番号を伏せた読み取り結果から、欄への対応付け |
| 施設の一覧 | ファイルの読み取り | 希望施設の名前と施設番号の照合 |
| 基準表・添付書類の表 | ファイルの読み取り | 指数の候補と、添付書類の点検 |
| 申込台帳の表 | 書き込み | 下書きの列にだけ書く。確定は人が行う |
| 保護者への連絡の一覧 | 書き込み | 受付番号、不足の内容、状態 |
| 業務システム | 書き込まない | 入力は職員が下書きを見て行う |
施設名の照合は、Python が施設の一覧と文字の近さで行います。 候補が1つに決まれば施設番号を付け、2つ以上あれば決めずに ambiguous として職員に回します。 「分園」「第二」のような一語の違いで別の施設になるためです。
業務システムへは書き込みません。 業務システムに取込の機能があるかは製品と契約によって違い、指数を確定させる経路をこの構成から作らないためでもあります。 職員が下書きを見ながら入力し、入力した日時を台帳に残します。
人が確認する
人が見るのは、連絡の一覧と、complete 以外の申込みだけです。 complete のものは、指数の候補と計算の過程を確かめて業務システムに入れます。全件を原本から読み直す設計にすると、第10章の20.0時間には収まりません。
- 連絡の一覧を受付の翌日に見る …
missingとattachment_missingは保護者へ連絡します。締切の前なら、締切までの提出を案内します not_detectedとunreadableは原本を見る … 書かれていれば下書きに入れ、空欄なら保護者へ連絡しますunit_mismatchは勤め先の書き方を確かめる … 月と週の値が食い違うときは、どちらを採るかを係の取り決めで決め、勝手に選びません- 指数の候補を確かめる … 計算の過程を読み、原本の就労時間の欄と見比べます
- 業務システムに入れる … 入れた日時と担当者を台帳に残します
目標は、300件をならして1件4分です。 連絡や原本の確認が要るのは2割前後という想定で、それより多い月は、様式の欄の一覧か複合機の設定に問題があります。
例外に対処する
| 起きること | 対応 |
|---|---|
| ○で囲む欄がある | ラジオボタンは対象外。unknown として人へ。 申込書の次の版で □ に直す |
| 必須の欄のキーが返ってこない | not_detected。空欄と決めつけず、原本で確かめる |
| 就労時間の表がセルの結合で取れない | 全文のテキストから拾い直し、unclear を立てて人へ |
| 就労証明書が標準的な様式でない | 欄の一覧に無い様式。読み取りは行い、全項目を not_detected 扱いで人へ |
| 父母のどちらの証明書か決まらない | 対応付けをせず人へ。指数の候補を出さない |
| 希望施設の名前が一覧と合わない | ambiguous。候補を並べて職員が決める |
| APIが応答しない | 取込フォルダに残す。処理済みへ移すのは書き込み成功時だけ |
2行目と5行目がいちばん大事な例外です。 前者は書いた保護者への誤った連絡に、後者は指数の誤りにつながります。どちらも「決めない」ことを正しい出力として扱います。
記録を残す
- 元の申込みのPDFと、受付番号・受付日・スキャンした日時
- Document AI が返した
DocumentのJSONの全文 - Claude API に渡した伏せた後の読み取り結果と、返ってきたJSON
- Python が付けた状態、月間の就労時間の換算の過程、そのとき使った基準表の版
- 保護者へ連絡した記録(いつ、何を、誰が)と、書類が届いた日
- 職員が下書きを直した記録と、業務システムへ入れた日時
04実装レベルの3段階
半自動化で、1件12分が7分程度になります。 打ち込みは下書きの確認に変わりますが、就労時間の換算と添付書類の点検が手作業のまま残ります。本格構成で4分になり、この段階が本記事の想定です。 差が大きいのは、換算と添付の点検が規則に移り、漏れの一覧が受付の翌日に出るからです。 段階を飛ばさないでください。 半自動化の下書きを1か月分見ると、not_detected の多い欄と、就労時間の書き方の型が分かります。基準表を規則に書き出すのは、その型を見てからのほうが漏れが少なくなります。
05工数削減シミュレーション
導入後 300件 × 4分 ÷ 60 = 20 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 保育所等の途中入所の申込みを毎月受け付け、締切から利用調整の会議までの短い期間に、紙の申込書と就労証明書を職員が業務システムへ打ち込んでいる市区町村。こども家庭庁の標準的な様式の就労証明書を使っており、申込書の様式も市で決まっている場合。記入漏れや添付漏れに気づくのが締切の後で、保護者への連絡が翌月の調整に回ってしまう場合。
- 申込みのほとんどがオンライン申請に移り、紙の申込書が月に数件しか無い場合。利用調整の基準表が毎月のように変わり、規則として書き出せない場合。庁内の情報セキュリティポリシーで、申込書の画像を外部のクラウドの API に送る経路が認められていない場合。なお、指数の算定と、どの保護者を優先するかという利用調整の判断は、この構成では代替できません。
07最小構成で試す方法
- 先月の途中入所の申込みから、就労時間の書き方が週・月・変則と分かれるものを含めて20件を選ぶ
- 個人番号の欄と、児童・保護者の氏名・住所を紙で隠してからスキャンする
- 20件を1件ずつ、庁内で利用が認められているAIサービスの画面に貼り付ける
- 「この就労証明書から、雇用の形態、就労時間と就労日数(書かれた単位のまま)、育児休業の状況を表にしてください。月間に直す計算をせず、書かれていない欄は空にし、ほかの欄から推し量らないでください」と指示する
- 出てきた表を、業務システムにすでに入っている値と1欄ずつ突き合わせる
| 出てきた内容 | 判断 |
|---|---|
| 値が書かれた単位のまま写り、空欄が空のままだった | OCRとプログラムの連携に進む |
| 週の時間を月間に換算した、日数を推し量った | 指示の書き方で直る。構成は有効 |
| 手書きの字や □ の印が読めない件数が多い | 様式と複合機の設定が先。 AIの問題ではない |
2番目を省かないでください。 試す段階でも、個人の情報を外のサービスへ出さない手順を最初から作ります。 庁内でどのAIサービスが使えるかは、情報セキュリティの担当課に先に確かめます。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| キーが返ってこない欄を空欄と決めつける | missing と not_detected を分ける。 空欄の組は確実に読めないとされている |
| 週の就労時間を月間に換算して写す | 「計算しない」を明記し、単位を unit に写させる |
| 曜日の印から就労日数を埋める | 書かれていなければ空。補わせない |
| 就労時間の表がセルの結合で取れない | 単純な表に限られる。全文のテキストから拾い直す |
| ○で囲む欄が読めない | ラジオボタンは対象外。申込書の版を □ に直す |
| 父母の就労証明書を取り違える | 本人氏名で対応付け、決まらなければ指数を出さない |
| 施設名が似た別の施設に寄る | 照合は Python で行い、候補が複数なら人へ |
| 基準表の改正が規則に反映されない | 版を付けて管理し、年度の切り替えの前に表を差し替える |
| 個人番号が全文のテキストに残ったまま渡る | 伏せた後のテキストを保存し、最初の50件で目で確かめる |
上の3行が、この構成の失敗のほとんどです。 どれも「書かれていないものを埋める」か「書かれた形を変える」誤りで、どちらも指数の誤りとして表に出ます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 児童と保護者の氏名・生年月日・住所、世帯の構成、ひとり親であること、勤め先と就労の状況、育児休業の状況、そして添付書類によっては病気や障害に関する情報です。どれも慎重に扱う個人の情報です。
- 外部の API に送ってよいかを先に決める … 申込書の画像をクラウドの API に送る経路が、市の情報セキュリティポリシーで認められているかを担当課と確かめます。認められない場合は、この構成を取りません
- 生成AIに渡す範囲を絞る … 個人番号は伏せ、診断書などの添付書類のページは Claude API に渡しません。 添付書類は「ページがあるか」だけを Python で見ます
- AIに渡すのは申込み1件分だけにする … 申込台帳の全体や基準表を生成AIへ渡しません
- 連絡の一覧に個人の値を出さない … 一覧には受付番号と不足の内容だけを出し、氏名や就労の状況の値は出しません
- 指数を確定させる経路を作らない … 業務システムへの入力と指数の確定は職員が行います。利用調整の結果は保護者の生活に直結します
- 保存の期間と消し方を決める … 申込書の原本の保存年限に合わせ、取込フォルダと処理済みフォルダのPDF、JSONの消し方も決めます
- この構成は利用調整の判断を代替しない … どの申込みを優先するか、要綱にない事情をどう扱うかは、市の要綱と担当の判断で決めることです。 この構成が出すのは、書類に何が書かれていたかという事実と、規則が出した点数の候補だけです
誤りが起きた場合のリスクは、指数の誤りと、書類を出した保護者への誤った連絡の2つです。 前者は換算と補完をAIにさせないことで、後者は not_detected を分けることで防ぎます。
10まず何から始めるか
1週目:基準表と添付書類の表を書き出す
市の要綱から、就労時間の区分ごとの基本の指数と、調整の点数の条件を表にします。保育を必要とする事由ごとに要る書類の表も作ります。あわせて、外部の API を使えるかを情報セキュリティの担当課に相談します。
2週目:20件で試す
先月の申込みから20件を選び、氏名と個人番号を隠してから庁内で認められたAIサービスで就労の状況を表にさせます。週の時間を月間に換算していないか、日数を推し量っていないかを最優先で見ます。
3週目:様式の欄の一覧を作る
申込書と就労証明書の欄の名前と必須かどうかを一覧にします。申込書に ○ で囲む欄があれば、次の版で □ に直す準備をします。 複合機を300dpi・PDFで取込フォルダへ保存する設定にします。
4週目:取込フォルダから下書きまでをつなぐ
Python で取込フォルダを見張り、Document AI を呼び、個人番号を伏せて Claude API を呼び、申込台帳の下書きに書き出すところまで作ります。この時点では換算と点検をせず、写した値と伏せた後のテキストだけを見ます。
2か月目: 就労時間の換算、基準表への当てはめ、添付書類の点検を足し、連絡の一覧を出します。3か月目以降: 1件12分が何分になったかを実測します。記入漏れと添付漏れの連絡が、受付の翌日に保護者へ届くようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
Form Parser がOCRのテキストに加えてキーと値のペア(エンティティとチェックボックス)、表、一般的なエンティティを抽出すること。言語の一覧に日本語(ja)があり、手書きに対応する言語として示されていること | Google Cloud: Processor list | 2026-10-06 |
| 表は行や列をまたぐセルの無い単純な表から抽出すること。チェックボックスのモデルがラジオボタンに対応しないこと。値の入っていないキーと値の組(空欄の用紙など)を確実には読み取れないこと | Google Cloud: Form Parser | 2026-10-06 |
formFields が fieldName と fieldValue を持ち、チェックボックスが valueType の filled_checkbox/unfilled_checkbox で返ること。表が headerRows と bodyRows で返ること。textAnchor と信頼度が返ること | Google Cloud: Handle the processing response | 2026-10-06 |
| 対応形式が PDF、GIF、TIFF、JPEG、PNG、BMP、WebP などであること。スキャンは最低200dpiが望ましく300dpi以上が一般に最もよいこと。非可逆の形式で精度が落ちうること | Google Cloud: Supported files | 2026-10-06 |
| こども家庭庁が利用調整事務に使う就労証明書の標準的な様式を示し、原則使用について令和6年内閣府令第84号が公布・施行されたこと。同ページに掲載の様式(Excel)で、就労時間(固定就労・変則就労)、月間の合計時間と就労日数、雇用契約に基づく時間であること、週の時間を記載した場合の換算の注記、育児休業の取得の状況、入所が内定した場合の育児休業の短縮の可否の欄があること | こども家庭庁: 「就労証明書」に関する情報 | 2026-10-06 |
構造化出力が GA で、output_config.format に json_schema を渡すこと。制約付きのデコードでスキーマに従う応答を返すこと。enum と required を使え、オブジェクトの additionalProperties は false にする必要があること | Claude API: Structured outputs | 2026-10-06 |
利用調整の基準と、申込書の様式・保存年限は、各市区町村の要綱と規程で決めてください。 本記事は各製品とこども家庭庁の公式ページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0590)についてのご相談はこちらから。
