申請書の様式を改定したときに、記入例と記入の手引きが様式の欄とずれていないかを、画像と文で照らして校正する
各課が改定した申請書の様式と、その記入例・記入の手引きの3つを Gemini API に同時に読ませ、欄ごとの対応表とずれの一覧を作ります。文書担当は一覧を見て、担当課へ直しを返します。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Power Automate
- 対象業界
- その他/医療/教育/自治体
- 対象部門
- 法務/総務
- 対象業務
- 内容確認・チェック/比較検討
- 主な課題
- 属人化している/書類作成に時間がかかる/確認ミスが多い
- AIで行う処理
- 校正
- 主な効果
- 品質標準化/属人化解消/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 担当課が、改定した様式・記入例・手引きのPDFを、メールまたは共有ドライブで文書法制係に送る
- 係の担当者が、改定前の様式を共有ドライブから探し、改定後と並べて何が変わったかを把握する
- 改定後の様式の欄を上から順に見て、欄の番号・名前・記入する形式(和暦か西暦か、チェック欄か)を書き出す
- 記入例を開き、書き出した欄の一つひとつに見本の値があるか、形式が合っているかを見る
- 手引きを開き、「①欄」「③欄」のような番号の参照が、改定後の様式の欄と合っているかを見る
- 気づいたことをメールの本文に箇条書きし、担当課へ返す
- 担当課が直したものを、もう一度4番から見る
- 人担当課が、共有ドライブの受付フォルダに案件ごとのフォルダを作り、様式・記入例・手引き(あれば改定前の様式)のPDFを決まった名前で置く
- 自動1時間ごとの定時の処理が受付フォルダを見て、3点がそろった案件を拾う
- 自動ファイル名・形式・ページ数・サイズを確かめ、足りなければ担当課へ不足を知らせる
- 自動PDFを Gemini API の Files API に上げる
- 自動Gemini API に、様式の欄の一覧と、記入例・手引きとの対応、ずれの指摘をJSONで出させる
- 自動返ってきたJSONをスキーマで確かめ、欄番号の連番や件数の食い違いをスクリプトで点検する
- 自動欄ごとの対応表と指摘の一覧をスプレッドシートに書き出し、記入例の該当箇所に枠を描いた画像を添える
- 人文書法制係の担当者が指摘を1件ずつ見て、採る・採らない・書き直すを決める
- 人採った指摘だけを担当課へ返す
- 人担当課が直したものを置き直すと、2番から同じ処理がもう一度動く
各工程の詳しい説明を読む
- 担当課が、改定した様式・記入例・手引きのPDFを、メールまたは共有ドライブで文書法制係に送る
- 係の担当者が、改定前の様式を共有ドライブから探し、改定後と並べて何が変わったかを把握する
- 改定後の様式の欄を上から順に見て、欄の番号・名前・記入する形式(和暦か西暦か、チェック欄か)を書き出す
- 記入例を開き、書き出した欄の一つひとつに見本の値があるか、形式が合っているかを見る
- 手引きを開き、「①欄」「③欄」のような番号の参照が、改定後の様式の欄と合っているかを見る
- 気づいたことをメールの本文に箇条書きし、担当課へ返す
- 担当課が直したものを、もう一度4番から見る
(a)記入例は「前の版の手直し」なので、消し忘れが出る。 押印欄を削った様式に、記入例だけ「印」の丸が残る。欄を統合したのに、記入例には2つの欄の値が並ぶ。窓口で住民が記入例どおりに書くと、新しい様式の欄に入りきらない。 書き直しは、窓口の職員と住民の両方の時間を使います。
(b)手引きの欄番号は、欄が1つ増えるとすべてずれる。 様式の途中に欄が1つ増えると、それより後ろの欄の番号が1つずつ繰り下がります。手引きの「⑤欄」「⑥欄」「⑦欄」が、全部1つずつ別の欄を指すようになります。 番号を1つずつ追うのは単調で、見落としやすい作業です。
(c)見る人によって指摘の粒度が違う。 ある担当者は「生年月日の和暦・西暦の書き方が記入例と様式で違う」まで指摘し、別の担当者は欄の有無だけを見て返します。担当課からすると、出すたびに直される場所が違うことになります。表記の基準は庁内で決まっていても、どこまで見るかが人に寄っています。
- 【人】 担当課が、共有ドライブの受付フォルダに案件ごとのフォルダを作り、様式・記入例・手引き(あれば改定前の様式)のPDFを決まった名前で置く
- 【自動】 1時間ごとの定時の処理が受付フォルダを見て、3点がそろった案件を拾う
- 【自動】 ファイル名・形式・ページ数・サイズを確かめ、足りなければ担当課へ不足を知らせる
- 【自動】 PDFを Gemini API の Files API に上げる
- 【自動】 Gemini API に、様式の欄の一覧と、記入例・手引きとの対応、ずれの指摘をJSONで出させる
- 【自動】 返ってきたJSONをスキーマで確かめ、欄番号の連番や件数の食い違いをスクリプトで点検する
- 【自動】 欄ごとの対応表と指摘の一覧をスプレッドシートに書き出し、記入例の該当箇所に枠を描いた画像を添える
- 【人】 文書法制係の担当者が指摘を1件ずつ見て、採る・採らない・書き直すを決める
- 【人】 採った指摘だけを担当課へ返す
- 【人】 担当課が直したものを置き直すと、2番から同じ処理がもう一度動く
8番目が、この構成でいちばん大事な工程です。 AIの指摘は、そのまま担当課へ送りません。「記入例の値が様式の注意書きに反している」のような指摘は、注意書きの読み方で正誤が変わります。 担当者が採ったものだけを送ることで、担当課から見た指摘の質をそろえます。
10番目で、直した版も1回目と同じ基準で見直します。 直したときに別の欄を崩すことはよくあります。
02今回想定するシステム構成
担当課 │ 案件フォルダに 様式.pdf/記入例.pdf/手引き.pdf(+旧様式.pdf)を置く ▼【トリガー】1時間ごとの定時の処理 Google Apps Script ├──▶ ファイルの確認(名前・形式・ページ数・サイズ) ├──▶ Gemini API Files API へアップロード ▼ Gemini API(Interactions、構造化出力) │ ① 様式の欄の一覧(番号・名前・形式・注意書き) │ ② 記入例との対応(値の有無・形式・位置) │ ③ 手引きとの対応(欄番号の参照・説明文) │ ④ ずれと表記の不一致の指摘 ▼ Google Apps Script ── スキーマと連番の点検、枠の描画 ▼ スプレッドシート(対応表と指摘の一覧) ▼ 【文書法制係が指摘を採否】 ▼ 担当課へ返す(メールの下書き)
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 処理 | Gemini API(3つのPDFの照合と指摘のJSON出力) | Claude API、OpenAI API |
| 連携 | Google Apps Script | Google Cloud Run functions、Power Automate |
| 保管 | Google ドライブの共有ドライブ | SharePoint、庁内のファイルサーバー |
| 一覧 | Google スプレッドシート | Microsoft Lists |
新しく足すのは、Gemini API の利用と Apps Script のスクリプトだけです。 様式の原本はこれまでどおり共有ドライブに置き、ホームページへの公開もこれまでどおり人が行います。この構成からCMSへは何も書き込みません。
土台になるのは、Gemini API のドキュメント理解です。 PDFをネイティブに理解できるのはPDFの場合で、図表や書式まで含めて読みます。 テキスト・Markdown・HTML などの形式も受け付けますが、それらは文字だけの扱いになり、レイアウトは解釈されません。記入例の欄と値の位置関係を見たいので、必ずPDFで渡します。
上限は、1ファイル50MB、1,000ページです。 1ページはおよそ258トークンとして数えられます。複数のPDFを1回のリクエストで渡すこともでき、ドキュメントとプロンプトの合計がモデルの文脈の長さに収まれば、合わせて1,000ページまで扱えます。 様式・記入例・手引きの3つは、合わせても数十ページなので、1回で同時に渡せます。
ページの画像は最大3072×3072ピクセルに縮小され、最小は768×768ピクセルです。 記入例の吹き出しの小さな字は縮小で潰れることがあり、書き出し方は第7章の前処理で決めます。
Gemini 3 のモデルでは、PDFに埋め込まれた文字のトークンは課金されず、ページを画像として処理した分が IMAGE として数えられます。
03どうやって実装するのか
処理の起点を決める
1時間ごとの定時の処理を起点にします。 ファイルを置いた瞬間には動かしません。1つ目を置いた直後に動くと、記入例が無いと誤って返してしまうためです。
「そろった」の目印は、ファイル名で決めます。 01_様式.pdf、02_記入例.pdf、03_手引き.pdf の3つがあり、最後のファイルを置いてから10分以上たった案件を拾います。改定前の様式は 00_旧様式.pdf として任意で置きます。
処理が終わった案件は、フォルダ名の先頭に [済] を付けます。 直した版を置き直したら、担当課に外してもらいます。
1回の実行で拾う案件は、3件までにします。 Apps Script の実行時間は1回6分までで、1件のアップロードとAIの応答で1〜2分かかることがあるためです。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 改定後の様式 | 欄の枠、欄の番号と名前、注意書き。比べる基準 | 案件フォルダの 01_様式.pdf |
| 記入例 | 様式に見本の値と吹き出しを重ねたもの | 案件フォルダの 02_記入例.pdf |
| 記入の手引き | 欄の番号ごとの書き方の説明 | 案件フォルダの 03_手引き.pdf |
| 改定前の様式 | 改定点の要約に使う(任意) | 案件フォルダの 00_旧様式.pdf |
| 表記の基準 | 日付・金額・氏名・住所の書き方、使う語と使わない語 | 文書法制係が作る基準の一覧 |
| 案件の情報 | 様式の名前、担当課、担当者、公開予定日 | 案件フォルダの送り状のシート |
質を決めるのは、表記の基準の一覧です。 基準が無いと、AIは一般的な書き方を正しいとして指摘してきます。「生年月日は和暦で、元号を丸で囲む選択式」が庁内の基準なら、その一覧が無いと西暦への統一を勧めてきます。 基準は、文書法制係がこれまで指摘してきたことを20〜30行に書き出したもので足ります。
| 区分 | 基準 |
|---|---|
| 日付 | 様式の欄の形式に従う。様式が「令和 年 月 日」なら記入例も和暦 |
| 氏名・住所 | 記入例は架空の氏名と、市役所の所在地か実在しない番地にする |
| 押印 | 押印欄を削った様式では、記入例にも印影を描かない |
データの取得方法を決める
ファイルは、Apps Script で共有ドライブから読みます。 案件フォルダの中のファイルを名前で探し、PDFであることとページ数を確かめてから、Gemini API の Files API へ上げます。 上げたファイルは、返ってきた参照をリクエストに入れて使います。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 3つ(または4つ)のPDF | 案件フォルダ | 照合の対象 |
| 様式の名前と担当課 | 送り状のシート | 結果の一覧の見出しと、返送先 |
| 表記の基準 | 基準の一覧のシート | プロンプトに毎回入れる |
Files API を使うのは、PDFを何度も参照するためです。 担当者が「この欄だけもう一度見て」と聞き直すことがあり、同じPDFを送り直すより参照で済ませたほうが速く済みます。 公式のページも、やり取りを重ねる場合には Files API を勧めています。
Files API に上げたファイルは48時間で消え、ダウンロードし直すこともできません。 1ファイル2GB、1つのプロジェクトで20GBまでです。原本はいつも共有ドライブの側に置き、 48時間を過ぎた案件の聞き直しは上げ直します。
Apps Script の URL Fetch は、1回の送受信が50MBまでです。 1日の呼び出しは一般のアカウントで20,000回、Google Workspace で100,000回で、月40件では届きません。
AIへ渡す前に整形する
- ファイル名の確認 …
01_様式.pdf、02_記入例.pdf、03_手引き.pdfがそろっているかを見ます。足りなければ照合せず、担当課へ不足を知らせます - 形式の確認 … PDFであることを確かめます。ワープロ・スプレッドシートの原本が置かれていたら、PDFにして置き直すよう返します
- ページ数とサイズの確認 … 1ファイル50MB、1,000ページが上限です。記入例が50MBを超える場合は、解像度を下げて書き出し直してもらいます
- 記入例の解像度の確認 … 吹き出しの小さな字が読めることが要ります。ページの画像は最大3072×3072ピクセルに縮小されるため、A4の記入例は、余白を詰めて1ページに1枚で書き出します
- 旧様式の有無の確認 … あれば改定点の要約も出させ、無ければ省きます
- 表記の基準の読み込み … 基準の一覧のシートを毎回読み、プロンプトに差し込みます
3番目と4番目を軽く見ないでください。 圧縮しすぎると吹き出しの字が潰れ、「記入例に説明が無い」という誤った指摘が出ます。 試行の段階で書き出し方を変えて照合し、指摘が安定する設定を決めます。
AIに処理させる
させるのは、様式の欄を基準にして、記入例と手引きがそれぞれの欄をどう扱っているかを表にし、ずれを指摘することです。
| させること | 中身 | 判断できないときの扱い |
|---|---|---|
| 様式の欄の一覧 | 欄の番号、名前、記入の形式(自由記入・選択・チェック)、注意書き | 番号が振られていない欄は、上から順の仮番号を付けて numbered: false |
| 記入例との対応 | その欄に見本の値があるか、形式が様式と合っているか、値の位置 | 字が読めなければ unreadable |
| 手引きとの対応 | その欄を指す説明があるか、番号の参照が合っているか | 番号でなく名前で書かれていれば、名前で対応づける |
| ずれの指摘 | 種類、対象の欄、根拠にした文字列、ページ | 確信が持てなければ needs_review |
| 表記の点検 | 表記の基準に反する記載 | 基準に無いことは指摘しない |
| 改定点の要約 | 旧様式があれば、増えた欄・消えた欄・名前が変わった欄 | 旧様式が無ければ出さない |
指摘の種類は、次の8つに決めておきます。
| 種類 | 意味 | 例 |
|---|---|---|
sample_missing_field | 様式にある欄が、記入例に無い | 「連絡先メールアドレス」欄が記入例に無い |
sample_extra_field | 様式に無い欄の値が、記入例に残っている | 削った押印欄の「印」 |
sample_format_mismatch | 記入例の値の形式が、様式の指定と違う | 様式は和暦、記入例は西暦 |
sample_violates_note | 記入例の値が、様式の注意書きに反している | 「数字は算用数字で」に漢数字 |
guide_wrong_number | 手引きの欄番号が、改定後の様式と違う欄を指す | 手引きの「⑤欄」が、改定後は「⑥欄」 |
guide_missing_field | 様式にある欄の説明が、手引きに無い | 新しく増えた欄の説明が無い |
guide_stale_text | 手引きの説明が、改定前の内容のまま | 「押印してください」が残っている |
style_violation | 表記の基準に反している | 「下さい」 |
種類を決めておくと、担当者が見る深さを種類ごとに変えられます。 guide_wrong_number はほぼ機械的に正誤が決まり、sample_violates_note は注意書きの読み方で分かれます。
| させないこと | 理由 |
|---|---|
| 様式そのものの直しの提案 | 様式は担当課が決裁を取った確定版。基準を動かさない |
| 項目が法令上必要かどうかの判断 | 担当課が根拠法令とともに決めること |
| 記入例・手引きの書き直し | 直すのは担当課。AIの文が住民向けの文になると、責任の所在がぼやける |
| 表記の基準に無い「好み」の指摘 | 担当課から見た指摘の粒度がまたばらつく |
| 読めない字の推測 | 吹き出しが読めなければ unreadable とし、推測で埋めない |
1行目がいちばん起きやすい失敗です。 どちらが新しいかを知らないと、AIは「記入例に合わせて様式の欄名を直す」ことも提案します。
指示内容を固定する
あなたは市役所の文書担当として、窓口で配る申請書の様式と、
その記入例・記入の手引きが互いに合っているかを確かめる立場です。
【基準にするもの】
ファイル「01_様式.pdf」が、担当課が決裁を取った改定後の確定版です。
比べる基準は常に様式です。様式を直す提案はしないでください。
記入例(02_記入例.pdf)と手引き(03_手引き.pdf)が、
様式に合っているかだけを見てください。
【手順】
1. 様式の欄を上から順に一覧にしてください。
欄の番号(①、1、(1) など様式に書かれているとおり)、欄の名前、
記入の形式(自由記入/選択/チェック)、欄に付いた注意書きを書いてください。
番号が書かれていない欄は、上から順の仮番号を付け、numbered を false にしてください。
2. 欄ごとに、記入例にその欄の見本の値があるかを見てください。
値の位置を、記入例のページ番号と box_2d([ymin, xmin, ymax, xmax]、0〜1000)で示してください。
3. 欄ごとに、手引きにその欄の説明があるかを見てください。
手引きが番号で欄を指している場合、その番号が改定後の様式の同じ欄を指しているかを確かめてください。
4. ずれを、決められた種類(kind)のどれかで指摘してください。
5. 旧様式(00_旧様式.pdf)がある場合だけ、増えた欄・消えた欄・名前が変わった欄を書いてください。
【厳守事項】
- 記入例の字が読めない場合は、推測せず status を unreadable にしてください。
- 手引きの番号が合っているか確信が持てない場合は、needs_review を true にしてください。
- 表記の点検は、下の「表記の基準」に書かれていることだけにしてください。
基準に無い書き方の好みは指摘しないでください。
- 項目が法令上必要かどうか、欄を増やすべきか減らすべきかは書かないでください。
- 記入例や手引きの直した文を書かないでください。何がずれているかだけを書いてください。
- evidence には、判断の根拠にした文字列を、PDFに書かれているとおりに写してください。
【表記の基準】{style_rules}
【様式の名前と担当課】{form_name} / {section}
「様式を直す提案はしない」を手順より前に書くのは、後ろに置くと、食い違いを見つけた時点で両方を直す方向に書き始めるためです。 基準がどちらかを先に固定します。
「直した文を書かない」を入れるのは、 直した文があると担当課へ転送したくなり、住民が読む文の書き手がAIになるためです。
出力形式を固定する
構造化出力で、次の形のJSONを受け取ります。 Gemini API の構造化出力は、/v1beta/interactions へのリクエストの response_format に、mime_type を application/json とし、JSON スキーマを入れて指定します。
{
"form_name": "",
"fields": [
{ "no": "⑤", "numbered": true, "label": "連絡先電話番号",
"input_type": "free | choice | check", "note": "",
"sample": { "status": "ok | missing | unreadable", "page": 1,
"box_2d": [0, 0, 0, 0], "value": "" },
"guide": { "status": "ok | missing | wrong_number", "ref_text": "", "page": 2 } }
],
"findings": [
{ "kind": "guide_wrong_number", "field_no": "⑥", "file": "03_手引き.pdf",
"page": 2, "evidence": "", "needs_review": false }
],
"revision_summary": { "added": [], "removed": [], "renamed": [] }
}
kind は第7章の8種類のどれかを enum で縛り、status も enum で縛ります。公式のページでは、構造化出力のスキーマに enum、required、配列の minItems・maxItems などが使えるとされています。
1つ目の理由は、全欄の対応表(fields)と、ずれだけの指摘(findings)を別に持てることです。 迷ったら fields で前後の欄を確かめます。
2つ目は、スクリプトで点検できることです。 公式のページは、スキーマに沿ったJSONが返っても中身が正しいとは限らないので、アプリケーションの側で確かめるよう案内しています。この構成では、次の3つをスクリプトで見ます。
| 点検 | 中身 | 引っかかったとき |
|---|---|---|
| 連番 | fields の番号が①から抜けなく並んでいるか | 欄の読み落としを疑い、needs_review を全件に付ける |
| 件数 | findings の field_no が fields に存在するか | 存在しない欄への指摘は一覧から外し、ログに残す |
| 根拠 | evidence の文字列が、PDFの文字に含まれるか(様式・手引き) | 含まれなければ needs_review を付ける |
3つ目は、box_2d で記入例に枠を描けることです。 画像理解の公式のページでは、物の位置を [ymin, xmin, ymax, xmax] で、画像の大きさに対して0〜1000に正規化した値で返すとされています。スクリプトでもとの寸法に戻し、記入例のページの画像に赤い枠を描いて一覧に添えます。 担当者は、指摘の文を読む前に、どの欄の話かを画像で見られます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 共有ドライブ | Apps Script のドライブのサービス | 案件フォルダのファイルを読み、処理済みの目印を付ける |
| Gemini API Files API | URL Fetch(アップロード) | PDFを上げ、参照を受け取る |
| Gemini API(Interactions) | URL Fetch | 照合を依頼し、構造化出力のJSONを受け取る |
| スプレッドシート | Apps Script のスプレッドシートのサービス | 対応表と指摘の一覧を書き出す |
| メール | Apps Script のメールのサービス | 担当課への返送文の下書きを作る(送らない) |
ホームページのCMSへは何もつながず、照合の結果で公開を止めたり進めたりもしません。 担当課への返送は、採った指摘だけを並べた下書きまでにし、担当者が読んで送ります。
人が確認する
人が見るのは findings の全件です。 fields の対応表は、迷ったときにだけ開きます。指摘の件数は1件あたり平均5〜10件という想定で、 1件ずつ採る・採らない・書き直すを決めます。
needs_reviewの付いた指摘を先に見る … AIが確信を持てなかったもの。記入例の画像を開いて、枠の中を目で確かめますsample_violates_noteを見る … 注意書きの読み方で正誤が分かれる種類です。担当課の意図を想像せず、注意書きの文だけで判断します- 残りの指摘を見る …
guide_wrong_numberとsample_extra_fieldは、根拠の文字列を見ればほぼ決まります - 採否を記録する … 採らなかった指摘には理由を一言残します
同じ理由で採らない指摘が続いたら、表記の基準の一覧に「この書き方は可」と1行足します。
目標は、指摘を見て採否を決め、下書きを整えて送るまでを1件30分にすることです。
例外に対処する
| 起きること | 対応 |
|---|---|
| 3つのファイルがそろわない | 照合せず、担当課へ不足のファイル名を知らせる |
| PDF以外のファイルが置かれた | PDFにして置き直すよう返す |
| 1ファイルが50MBを超える | 解像度を下げて書き出し直すよう返す |
| 記入例の字が潰れて読めない | unreadable が欄の3割を超えたら、書き出し直しを頼む |
| 様式の欄に番号が無い | 仮番号で対応表を作り、手引きは欄の名前で対応づける |
| 欄の連番に抜けがある | 読み落としを疑い、全指摘に needs_review を付けて人が見る |
| JSONがスキーマに合わない | 1回だけやり直し、だめなら案件に「照合失敗」と書いて人へ |
上から4行目までが、ほとんどを占めます。 どれもAIの問題ではなく、担当課のファイルの作り方と置き方の問題です。
記録を残す
- 案件ごとの、照合に使ったPDFのファイル名と更新日時(原本は共有ドライブに残る)
- Gemini API に送ったプロンプトと、返ってきたJSONの全文
- スクリプトの点検の結果(連番・件数・根拠)
- 担当者の採否と、採らなかった理由
- 担当課へ返した日時と、直した版が置き直された日時
- 担当課ごと・指摘の種類ごとの件数
採らなかった理由は、外れ方で直す場所を決めるために残します。 「基準に無い好み」なら表記の基準を、「読み違い」なら記入例の書き出し方を見直します。
最後の行は、担当課への説明の材料になります。 ある課で guide_wrong_number が毎回出るなら、手引きを欄の名前で参照する書き方に変えてもらいます。
04実装レベルの3段階
最小構成では、指摘を一覧に残せません。 確かめるための段階です。 半自動化で、1件90分が30分になります。この段階が本記事の想定です。 欄の書き出しと突き合わせが無くなり、担当者の時間は指摘の採否と返送に集まります。 本格構成は、様式の台帳が整っている自治体に限られます。 段階を飛ばさないでください。 半自動化を3か月回すと、担当課ごとに多い指摘が分かり、手引きの書き方を変えてもらうほうが、本格構成より先に効くことが多くあります。
05工数削減シミュレーション
導入後 40件 × 30分 ÷ 60 = 20 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 窓口で配る申請書・届出書の様式が数百種類あり、各課が改定した様式を総務課や文書担当が公開前に確かめている市区町村。様式・記入例・記入の手引きが別々のファイルで作られ、改定のたびに3点をそろえ直している場合。改定の多い月に、記入例の差し替え漏れが窓口での書き直しや問い合わせにつながっている場合。様式をPDFにして共有ドライブに置ける環境がある場合。
- 様式の改定が年に数件しかなく、目視で足りる場合。電子申請に移行済みで、紙の様式と記入例をほとんど配っていない場合。様式の項目が法令上必要かどうかの審査を求める場合(この構成は欄の対応と表記を照らすだけで、項目の要否は判断しません)。外部のAPIを呼べる端末が無く、公開前の様式を庁外のサービスへ送れない場合。
07最小構成で試す方法
- 先月改定された様式から10件を選ぶ(うち数件は、公開後に記入例の誤りが見つかったものを入れる)
- その10件について、当時の担当者が返した指摘のメールを集める
- 様式・記入例・手引きの3つのPDFを、手元の Gemini の画面に同時に添付する
- 「01が改定後の確定版の様式です。様式は直さず、記入例と手引きが様式の欄と合っているかだけを、欄ごとに表にしてください。記入例の字が読めない場合は推測しないでください」と指示する
- 出てきた表と指摘を、当時のメールと突き合わせる
10件は、公開後に誤りが見つかったものを必ず含めてください。 人が見落としたずれを、照合が拾えるかがいちばん知りたいことです。
| 出てきた内容 | 判断 |
|---|---|
| 当時の指摘と同じずれが出て、見落としも拾えた | Apps Script とのつなぎに進む |
| 様式のほうを直す提案が混ざる | 指示の書き方で直る。構成は有効 |
| 記入例の字が読めない欄が多い | 記入例の書き出し方が先。 解像度と余白を見直す |
| 表記の好みの指摘が多すぎる | 表記の基準の一覧を作るのが先 |
4行目が出ることは珍しくありません。 基準の一覧が無いと、指摘の半分が好みになります。一覧を作ってから、同じ10件をもう一度照合してください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 様式のほうを直す提案が出る | 様式が基準であることを、手順より前に書く |
| 記入例の吹き出しの字が読めない | ページは最大3072×3072に縮小される。余白を詰め、1ページ1枚で書き出す |
| 表記の好みの指摘が多すぎる | 表記の基準の一覧に無いことは指摘させない |
| 欄の読み落としで対応表が短い | スクリプトで連番を点検し、抜けがあれば全件を要確認にする |
| 存在しない欄への指摘が出る | field_no が対応表にあるかをスクリプトで見て外す |
| 根拠の文字列が実際のPDFに無い | 埋め込まれた文字と照らし、無ければ要確認にする |
| 3つのファイルを置き終える前に動く | 最後のファイルから10分たった案件だけを拾う |
| 6分の実行時間を超える | 1回3件まで。 残りは次の実行に回す |
| Files API のファイルが消えている | 48時間で消える。聞き直しのときは上げ直す |
| 記入例に実在の人の氏名・住所がある | 表記の基準に「架空の氏名・住所にする」を入れ、style_violation で拾う |
| AIの指摘をそのまま担当課へ送る | 採った指摘だけを下書きに入れる。 送るのは人 |
上の2行が、この構成の失敗のほとんどです。 様式を基準に固定し、記入例を読める状態で渡せているかで、運用に乗るかが決まります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 公開前の申請書の様式、記入例、記入の手引き。住民の個人情報は扱わない前提です。 ただし、記入例に実在の人の情報が紛れていることがあります。
- 庁外へ送るのは、公開を予定している様式の資料だけにする … 様式・記入例・手引きは、もともと住民に配るための文書です。届いた申請書や住民の情報を、この仕組みに流さないでください。 案件フォルダに置けるファイルの種類を、名前の決まりで縛ります
- 有料の枠で使う … Gemini API の規約では、無料の枠で送った内容と応答は Google の製品の改善に使われ、人が読むことがあるとされています。有料の枠では、プロンプトと応答を製品の改善に使わず、違反を見つけて防ぐためだけに限られた期間記録するとされています。公開前の資料でも、有料の枠を前提にします
- ネットワークの区分を確かめる … 多くの自治体では、端末がネットワークの区分ごとに分かれています。外部のAPIを呼べる区分で様式を扱えるかを、情報政策の担当と先に決めてください
- AIの指摘で公開を止めない … 照合の結果は、文書法制係の確認の材料です。公開するかどうかは、これまでどおり担当課と係が決めます
- 住民に読まれる文をAIに書かせない … 記入例と手引きの直しは担当課が行います。AIの出力は、何がずれているかの指摘までにします
誤りが起きた場合のリスクは、ずれを見落として公開することと、正しい記入例を誤って直させることの2つです。 前者は欄の読み落としから、後者は様式を基準に固定できていないことから起きます。前者は第12章の4行目の連番の点検で、後者は同じ章の1行目で防ぎます。
10まず何から始めるか
1週目:表記の基準の一覧を作る
これまで担当課へ返してきた指摘のメールを半年分集め、繰り返し出てくる指摘を20〜30行の一覧にします。
2週目:10件で試す
先月改定された様式から10件を選び、手元の Gemini の画面に3つのPDFを添付して対応表を出させます。公開後に誤りが見つかった様式を必ず含め、見落としを拾えるかを最優先で見ます。
3週目:案件フォルダの置き方を決める
ファイル名の決まり(01_様式.pdf など)と、記入例の書き出し方(解像度・余白・1ページ1枚)を決め、担当課への案内を1枚にまとめます。 情報政策の担当と、外部のAPIを呼べる区分で扱えるかもここで決めます。
4週目:定時の処理から一覧の書き出しまでをつなぐ
Apps Script で案件フォルダを1時間ごとに見て、Gemini API で照合し、対応表と指摘の一覧をシートに書き出すところまで作ります。この時点では担当課へは何も返さず、係の中で採否だけをつけます。
2か月目: 記入例への枠の描画と、返送文の下書きを足します。採らなかった指摘の理由を毎週数え、表記の基準の一覧を直します。3か月目以降: 1件90分が何分になったかを実測し、担当課ごとの指摘の傾向を共有します。手引きの欄の参照を名前で書く形に変える担当課が増えた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
PDFはネイティブに理解でき、図表や書式まで含めて読むこと。テキスト・Markdown・HTML などは文字だけの扱いになること。1ファイル50MB、1,000ページまで。1ページ約258トークン。最大3072×3072ピクセル(縮小)、最小768×768ピクセル。複数のPDFを1回のリクエストで扱えること。Gemini 3 のモデルではPDFに埋め込まれた文字のトークンが課金されず、ページの画像は IMAGE として数えられること。インラインと Files API の2つの渡し方があり、大きな文書ややり取りを重ねる場合に Files API が勧められていること | Gemini API: Document understanding | 2026-10-07 |
物の位置を [ymin, xmin, ymax, xmax] で0〜1000に正規化した値で返し、もとの画像の大きさに戻して使うこと。対応する画像の形式 | Gemini API: Image understanding | 2026-10-07 |
構造化出力を /v1beta/interactions の response_format に mime_type: "application/json" とスキーマを入れて指定すること。enum・required・minItems・maxItems などが使えること。スキーマに沿っても中身の正しさは保証されず、アプリケーションの側で確かめるよう案内されていること | Gemini API: Structured output | 2026-10-07 |
| Files API のファイルが48時間で消えること。1ファイル2GB、1つのプロジェクトで20GBまで。上げたファイルはダウンロードできないこと | Gemini API: Files API | 2026-10-07 |
| 無料の枠では送った内容と応答が製品の改善に使われ、人が読むことがあること。有料の枠ではプロンプトと応答を製品の改善に使わず、違反の検知と防止のためだけに限られた期間記録すること | Gemini API Additional Terms of Service | 2026-10-07 |
| スクリプトの実行時間が1回6分まで。URL Fetch の呼び出しが1日20,000回(一般)/100,000回(Google Workspace)、1回の送受信が50MBまで | Google Apps Script: Quotas for Google Services | 2026-10-07 |
様式の項目の要否と、記入例・手引きの書き方の基準は、担当課と文書法制係で決めてください。 本記事は上の公開情報で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0834)についてのご相談はこちらから。
