消防設備点検の会社が点検員の手書きの点検票を読み取り、建物ごとの不良箇所を報告書に添える一覧と改修の見積依頼にそろえる
点検員が現場で手書きした設備ごとの点検票を撮影して読み取り、建物ごとに清書の下書きと不良箇所の一覧にそろえます。不良箇所からは改修工事の見積依頼の下書きを作り、記入漏れや判定と不良内容の食い違いだけを事務の確認に回します。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 連携・自動化
- Google Apps Script/Python
- 対象業界
- その他/不動産/建設
- 対象部門
- 品質管理
- 対象業務
- データ入力・転記/書類作成
- 主な課題
- 入力作業が多い/属人化している/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/工数削減/機会損失防止
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 点検員が現場で点検票に判定・不良内容・設置場所・措置内容を手書きする
- 点検員が事務所に戻ったとき、建物ごとの束を業務課の棚に入れる
- 業務課の担当が束を開き、報告書の作成ソフトに点検票の内容を1枚ずつ打ち直す
- ×の付いた項目を拾い、不良箇所の一覧(設備・設置場所・不良内容・数量)を作る
- 不良箇所の一覧から、工事課あての改修の見積依頼のメールを書く
- 判定と不良内容が合わない、字が読めない、設置場所が書かれていないものは、点検員に電話で聞く
- 報告書と点検票を建物の管理者へ送り、消防署への報告の段取りを案内する
- 人点検員が現場で点検票に手書きし、1棟を終えたらタブレットで全枚を撮影して、建物の番号を付けて送る
- 自動送信をきっかけに処理が動き、画像の枚数・大きさ・向きと、その建物の設置設備の一覧を確かめる
- 自動OCRが点検票の表、チェックボックス、上の欄(建物名・点検日・点検者)を読み、信頼度とあわせて返す
- 自動生成AIが、読み取り結果を点検項目に対応づけ、判定・不良内容・設置場所・数量・措置内容を書き写す
- 自動プログラムが、×と不良内容の食い違い、設置設備の一覧に対する点検票の不足、前回の不良の再発を調べる
- 自動清書の下書き、不良箇所の一覧、改修の見積依頼の下書きを作り、確認の要る欄に印を付ける
- 人業務課の担当が、印の付いた欄だけを画像と見比べ、必要なら点検員にチャットで聞く
- 人点検員が、自分の点検の不良箇所の一覧を見て内容を確かめる
- 人業務課が報告書を仕上げ、見積依頼を工事課へ送る
各工程の詳しい説明を読む
- 点検員が現場で点検票に判定・不良内容・設置場所・措置内容を手書きする
- 点検員が事務所に戻ったとき、建物ごとの束を業務課の棚に入れる
- 業務課の担当が束を開き、報告書の作成ソフトに点検票の内容を1枚ずつ打ち直す
- ×の付いた項目を拾い、不良箇所の一覧(設備・設置場所・不良内容・数量)を作る
- 不良箇所の一覧から、工事課あての改修の見積依頼のメールを書く
- 判定と不良内容が合わない、字が読めない、設置場所が書かれていないものは、点検員に電話で聞く
- 報告書と点検票を建物の管理者へ送り、消防署への報告の段取りを案内する
(a)打ち直しに時間がかかる。 1棟で項目は数十から百を超え、ほとんどは「○」です。手間の大半が、何も起きていない項目に使われています。
(b)不良内容の書き方が人によって違う。 「感知器不良」「感知器 作動せず」「202号室 煙感 NG」。見積依頼に書き移すときに、数量と設置場所を拾い直すことになり、書き方を読み慣れた担当でないとここで止まります。
(c)×と不良内容が食い違う。 ×が付いているのに不良内容が空欄、不良内容があるのに判定が○。目視の清書で見落とすと、報告書から不良が消えるか、無い不良が載ります。 点検員に電話で聞き直すと、その点検員は別の現場にいて、答えが返るのは翌日以降です。
(d)見積依頼が遅れる。 見積依頼は清書の後になります。不良が見つかってから見積が届くまでに数週間かかると、建物の管理者が他社に相談することがあります。
- 【人】 点検員が現場で点検票に手書きし、1棟を終えたらタブレットで全枚を撮影して、建物の番号を付けて送る
- 【自動】 送信をきっかけに処理が動き、画像の枚数・大きさ・向きと、その建物の設置設備の一覧を確かめる
- 【自動】 OCRが点検票の表、チェックボックス、上の欄(建物名・点検日・点検者)を読み、信頼度とあわせて返す
- 【自動】 生成AIが、読み取り結果を点検項目に対応づけ、判定・不良内容・設置場所・数量・措置内容を書き写す
- 【自動】 プログラムが、×と不良内容の食い違い、設置設備の一覧に対する点検票の不足、前回の不良の再発を調べる
- 【自動】 清書の下書き、不良箇所の一覧、改修の見積依頼の下書きを作り、確認の要る欄に印を付ける
- 【人】 業務課の担当が、印の付いた欄だけを画像と見比べ、必要なら点検員にチャットで聞く
- 【人】 点検員が、自分の点検の不良箇所の一覧を見て内容を確かめる
- 【人】 業務課が報告書を仕上げ、見積依頼を工事課へ送る
7番目と8番目に分けたのが、この設計の中心です。 業務課が見るのは読み取りの怪しい欄と食い違いで、点検員が見るのは不良の内容そのものです。撮影した当日に確認が届けば、現場の記憶が残っているうちに答えられます。
5番目をプログラムにしているのも意図してのことです。 生成AIに食い違いを判断させると、もっともらしい理由を付けて片方を埋めてしまいます。
02今回想定するシステム構成
点検票(設備ごと・1棟6〜8枚、手書き) │ 1棟を終えたら点検員がタブレットで撮影 → 建物番号を付けて送信 ▼【トリガー】画像の保存(Cloud Storage) Google Document AI(Form Parser) │ 表(点検項目ごとの行)、チェックボックス、上の欄、信頼度 ▼ Claude API(構造化出力)── 点検項目への対応づけ、判定・不良内容・設置場所・数量の書き写し ▼ Python ── ×と不良内容の食い違い、設置設備に対する点検票の不足、前回の不良との照合 ▼ 清書の下書き/不良箇所の一覧/改修の見積依頼の下書き/確認の要る欄の一覧 ▼ 【業務課が印の付いた欄を確認】→【点検員が不良の内容を確認】→ 報告書・見積依頼
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Google Document AI(Form Parser) | Azure AI Document Intelligence。AWS Textract は日本語の手書きを読めないため対象外 |
| 生成AI | Claude API(点検項目への対応づけ、値の書き写し、不良内容の整形) | OpenAI API、Gemini API |
| 連携 | Python(Cloud Run functions。保存を起点に読み取りと生成AIを呼び、下書きを書き出す) | Google Apps Script |
| 差異計算 | Python(食い違い・点検票の不足・前回の不良との照合) | Google Apps Script |
| 保管 | Cloud Storage(点検票の画像と読み取りの結果) | 社内のファイルサーバー |
| 通知 | 社内のチャット(点検員への確認の依頼) | メール |
物件の台帳と報告書の作成ソフトは、新しく足すものではありません。 物件の台帳に設置設備の一覧と前回の不良箇所の列を足すのが最初の準備作業です。
土台は Document AI の Form Parser です。 公式の説明では、Form Parser は OCR のテキストに加えて、キーと値のペア、表、チェックボックス、汎用のエンティティを抽出するとされています。プロセッサの一覧の言語表では、日本語(ja)が手書きに対応する言語として示されています。
ただし、表は行や列をまたぐセルの無い単純なものに限られます。 点検票は、点検項目が大項目と小項目に分かれ、セルを結合した欄があります。表として崩れた部分は、OCR のテキストと位置から生成AIが項目に対応づける、という二段構えにします。
処理する場所に日本のリージョンはありません。 Form Parser の対応リージョンは us・eu のほか、asia-southeast1(シンガポール)、asia-south1 などです。点検票には建物名と設備の不良箇所が書かれます。建物の防火上の弱点の情報でもあるので、 受託契約と自社の情報管理の決まりに照らして、外部のクラウドで処理してよいかを先に確かめます。
03どうやって実装するのか
処理の起点を決める
1棟の点検を終えた時点で、点検員がタブレットから全枚を送信したことを起点にします。 送信先は Cloud Storage の受付用のバケットで、建物番号ごとのフォルダに画像が入ります。最後に「送信完了」の小さなファイル(枚数を書いたもの)を置き、これが置かれたときに1棟分をまとめて処理します。
1枚ずつ処理を始めない理由は、点検票の不足を調べるためです。 1枚ずつだと、まだ撮っていない設備と、撮り忘れた設備の区別がつきません。1棟分がそろったときに、物件の台帳の設置設備と突き合わせます。
夕方にまとめて送る形にもしません。 現場ごとに送れば、食い違いの確認が点検員が次の現場へ移動している間に届きます。 夕方まとめると、翌日の朝まで誰も答えられません。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 点検票の画像 | 設備ごとの点検票。上の欄(建物名・点検日・点検者)と、点検項目ごとの判定・不良内容・措置内容 | 受付用のバケット |
| 送信完了の情報 | 建物番号、枚数、点検の種別(機器点検/総合点検)、点検員 | 送信完了のファイル |
| 物件の台帳 | 建物名、用途、設置設備の一覧(設備の種類・台数・設置階)、前回の不良箇所 | スプレッドシート |
| 点検項目の一覧 | 設備の種類ごとの点検項目の名前と並び(点検票の様式から自社で作る) | 自社で用意する表 |
| 不良内容の言い換えの表 | 「煙感」「NG」「作動せず」など、点検員の書き方と正式の書き方の対応 | 自社で用意する表 |
質を決めるのは、下の3つです。 設置設備の一覧が無ければ、点検票が1枚足りなくても気づけません。点検項目の一覧が無ければ、生成AIは読み取った文字列をどの項目のものとして扱うかを推測で決めます。 言い換えの表が無ければ、見積依頼の書き方が点検員の数だけ残ります。
点検項目の一覧は、消防庁の様式の点検票から作ります。 様式は消防用設備等ごとに定められていて、千葉市の案内では、平成31年4月に改正された様式が使われているとされています。様式が変わったときに一覧も直す、という運用にします。
データの取得方法を決める
読み取りは、Python から Form Parser のプロセッサを呼ぶだけです。オンライン処理は1回の要求あたり15ページまで(imageless_mode を有効にすると30ページまで)なので、1棟6〜8枚ならまとめて1回で送れます。 ファイルの大きさはオンライン処理で40MB、画像の解像度は40メガピクセルが上限です。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 全文のテキスト | text | 他の欄が startIndex・endIndex で指す、唯一の元 |
| 表 | pages[].tables(headerRows・bodyRows) | 点検項目ごとの行と、判定・不良内容の列 |
| キーと値のペア | pages[].formFields(fieldName・fieldValue) | 上の欄の建物名・点検日・点検者 |
| チェックボックス | fieldValue.valueType | filled_checkbox/unfilled_checkbox(判定欄に印を付ける様式の場合) |
| 信頼度と位置 | 各要素の layout の confidence と boundingPoly | 読めなかった欄の印、確認の画面での強調 |
判定の欄は、○×を書く様式と、チェックを入れる様式があります。 チェックボックスは、表の中では ✓ や ☐ の文字として、キーと値のペアでは filled_checkbox/unfilled_checkbox として返ります。どちらで返ってきたかを残し、生成AIに渡す前にそろえます。
物件の台帳と点検項目の一覧は、Python がスプレッドシートから読みます。建物番号が先、建物名は確認用です。 建物名から引くと、「〇〇ハイツ」と「〇〇ハイツ第2」を取り違えます。
AIへ渡す前に整形する
- 枚数の確認 … 送信完了のファイルに書かれた枚数と、バケットの画像の数を比べます。足りなければ処理を止め、点検員に再送を頼みます
- 形式と大きさ … JPEG と PNG を受け付けます。40MB と40メガピクセルを超えるものは縮めます。JPEG を何度も保存し直すと画質が落ちるとされているので、撮影した元の画像から1回だけ縮めます
- 向きと傾き … 横向きに撮られたものを回転します
- 解像度 … 公式の案内では、スキャンは最低200dpi、300dpi以上で一般に最良の結果とされています。A4 を撮影して200dpi相当に届かない画像は、撮り直しの印を付けます
- 設備の種類の見分け … 点検票の上部の様式名(「消火器具」「自動火災報知設備」など)を OCR のテキストから拾い、点検項目の一覧のどれを当てるかを決めます
- 重複の検知 … 同じ設備の点検票が2枚あれば、どちらも残して印を付けます。片方を捨てる判断はしません
4番目は、現場の撮影で一番崩れるところです。 機械室や屋上は暗く、点検票を手で持ったまま撮ると傾きます。撮影の手引きに「点検票を平らな面に置き、枠が画面いっぱいに入るように」と1行書くだけで、読めない欄が減ります。
AIに処理させる
させるのは、読み取り結果を点検項目に対応づけ、欄の中身をそのまま書き写すことです。 加えて、不良内容を見積依頼に使える形(設備・設置場所・数量・不良の内容)に分けて書き直させます。
| 見るもの | させること | 判断できないときの扱い |
|---|---|---|
| 点検項目 | 点検項目の一覧のどれに当たるかを対応づける | 当てはまる項目が無ければ unmatched |
| 判定 | 「○」「×」「該当なし(斜線)」のどれかを書き写す | 読めなければ unreadable、空欄なら blank |
| 不良内容 | 書かれた文字をそのまま raw に写す | 読めない文字は 〓 にして unreadable |
| 設置場所・数量 | 不良内容の中から、階・部屋・台数を分けて取り出す | 書かれていなければ null。推測で埋めない |
| 措置内容 | 「交換済」「調整済」などをそのまま写す | 空欄なら blank |
| 不良内容の整形 | 言い換えの表に沿って、見積依頼の書き方にそろえる | 表に無い言い方は raw のまま残す |
右端の列の「推測で埋めない」が、この構成でいちばん守りたい線です。 「202 煙感 NG」とあれば、設置場所は「202号室」、数量は1と読めます。しかし「煙感 NG」だけなら、どの部屋か分かりません。 ここで物件の台帳の設置階から「たぶん2階」と埋めると、見積依頼に間違った場所が載り、工事課が現地で探し回ることになります。
| させないこと | 理由 |
|---|---|
| 判定の書き換え | 判定は点検員が現場で決めたもの。読めない判定は読めないまま人へ |
| ×と不良内容の食い違いの解消 | どちらが正しいかは点検員にしか分からない |
| 改修の要否や工法の判断 | 工事課と点検員が決めること |
| 見積の金額 | 単価と工数は工事課が決める |
| 法令に適合しているかの判断 | 報告書の責任は点検を行った者と建物の関係者にある |
1行目と2行目は、生成AIがいちばんやりたがることです。 ×が付いて不良内容が空なら「軽微な不良」と書き、不良内容があって判定が○なら「×の書き忘れ」と判断して直そうとします。どちらも、現場を見ていない者の推測です。
指示内容を固定する
あなたは消防用設備等の点検会社の業務課で、点検員が手書きした点検票を
清書の下書きに起こす担当です。OCRの読み取り結果だけを見て書き写してください。
推測で埋めないでください。判定を書き換えないでください。
【入力】
- 点検票の種類:{equipment_type}(例:自動火災報知設備)
- 点検項目の一覧:{item_list}(項目コード、大項目、小項目の名前)
- OCRの読み取り結果:{ocr_result}(表の行、テキスト、信頼度、位置)
- 不良内容の言い換えの表:{wording_table}
【やること】
1. 読み取った各行を、点検項目の一覧のどの項目コードに当たるか対応づける。
当てはまる項目が無い行は item_code を null、match を "unmatched" とする。
2. 判定の欄を judgement に書き写す。値は "ok"(○)、"ng"(×)、
"na"(該当なし・斜線)、"blank"(空欄)、"unreadable"(読めない)のどれか。
3. 不良内容の欄を defect.raw にそのまま写す。読めない文字は「〓」とする。
4. 不良内容から、設置場所(階・部屋・系統)と数量を分けて取り出す。
書かれていなければ null とする。物件の情報から補わない。
5. 言い換えの表に当てはまる言い方は defect.normalized に正式の書き方で書く。
当てはまらなければ defect.raw と同じにする。
6. 措置内容の欄を action.raw に写す。
【厳守事項】
- judgement を、不良内容の有無を見て変えないでください。
×なのに不良内容が空欄でも、○なのに不良内容があっても、そのまま写してください。
- 設置場所と数量を、ほかの行や物件の情報から推測しないでください。
- 「異常なし」「良」などの文字は、判定の欄にあれば ok、不良内容の欄にあれば
defect.raw に写したうえで、判定は判定の欄の記載だけで決めてください。
- 改修が必要か、どの部品を交換すべきか、費用がいくらかを書かないでください。
- confidence には OCR が返した値をそのまま入れてください。
- 読み取り結果に点検票でない書類が含まれる場合は document_type に種類を書き、
items を空にしてください。
「判定を不良内容の有無を見て変えない」を、例を挙げて書いているのが要です。 抽象的に「書き換えない」とだけ書くと、生成AIは「整合させる」ことを良いことだと考えて直します。食い違いをそのまま残すことが仕事だと、具体的な2つの型で伝えます。
設置場所を補わない指示も同じです。 物件の台帳を渡していないのに、別の行の「2F」を見て補うことがあります。「ほかの行から推測しない」まで書いて、行をまたいだ補完を止めます。
出力形式を固定する
Claude API の構造化出力で、次の形の JSON を受け取ります。 構造化出力は output_config.format に type: "json_schema" でスキーマを渡すと有効になり、オブジェクトには additionalProperties: false が必要です。数値の minimum・maximum は使えないので、信頼度が0〜1に収まっているかは Python の側で確かめます。
{
"building_id": "B-0412",
"document_type": "inspection_sheet",
"equipment_type": "自動火災報知設備",
"header": { "inspection_date": "", "inspector": "", "inspection_kind": "機器点検" },
"items": [
{
"item_code": "AFA-2-03",
"match": "matched | unmatched",
"judgement": "ok | ng | na | blank | unreadable",
"defect": { "raw": "202 煙感 NG", "normalized": "煙感知器 作動不良",
"location": "202号室", "quantity": 1 },
"action": { "raw": "" },
"confidence": 0.0,
"page": 3
}
]
}
1つ目の理由は、判定と不良内容を別の欄に置けることです。 judgement と defect.raw が別々にあるので、食い違いは Python が機械的に拾えます。
| 型 | 条件 | 扱い |
|---|---|---|
| ×だが不良内容が空 | judgement が ng、defect.raw が空 | 点検員へ確認 |
| 不良内容があるが○ | judgement が ok、defect.raw に「異常なし」以外の文字 | 点検員へ確認 |
| 判定が空欄 | judgement が blank | 業務課が画像を見て、書き漏れなら点検員へ |
| 読めない | unreadable または信頼度が閾値未満 | 業務課が画像を見る |
| 場所か数量が無い | ng で location か quantity が null | 見積依頼の前に点検員へ |
2つ目は、点検票の不足を数えられることです。 物件の台帳の設置設備と equipment_type を突き合わせ、設置されているのに点検票が無い設備を一覧にします。
3つ目は、前回の不良と比べられることです。 前回の不良箇所と item_code・location が同じ不良は「再発」の印を付けます。前回の改修が終わっていないのか、直したのにまた壊れたのかは、点検員と工事課が確かめます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受付用のバケット | Cloud Storage への保存を起点にする | 送信完了のファイルで1棟分の処理を始める |
| Google Document AI | API 呼び出し | 表・キーと値・チェックボックス・信頼度を返す |
| Claude API | API 呼び出し(構造化出力) | 点検項目への対応づけと値の書き写し |
| 物件の台帳 | スプレッドシートの読み取り | 設置設備の一覧と前回の不良を引く |
| 確認の一覧 | スプレッドシートへの書き出し | 清書の下書き、不良箇所の一覧、確認の要る欄 |
| 社内のチャット | 通知 | 点検員へ確認の依頼と不良箇所の一覧を送る |
| 工事課 | メールの下書き | 改修の見積依頼の下書きを作る(送信は人) |
報告書の作成ソフトへは書き込みません。 業務課が確認を終えた下書きを、既存の取り込みの手順で入れます。未確認の判定が報告書に入る経路を作らないためです。
物件の台帳も読むだけです。 今回の不良を前回の不良の列に書き戻すのは、報告書が確定した後に業務課が行います。確定前の不良を書き戻すと、次の点検で「再発」の印が誤って付きます。
人が確認する
- 業務課が印の付いた欄を見る …
unreadable、blank、unmatched、信頼度の低い欄。確認の画面に画像の該当箇所を並べ、読み取りの誤りはその場で直します - 点検員が食い違いと不良の内容を確かめる … ×と不良内容の食い違い、設置場所や数量の抜け、点検票の不足。チャットで届いた一覧に答えます。判定を直せるのは点検員だけにします
- 点検員が不良箇所の一覧を見る … 言い換えた書き方が現場の不良と合っているか。見積依頼の内容は、ここで決まります
- 業務課が報告書を仕上げ、見積依頼を送る … 下書きを確かめてから工事課へ送ります
2番目で、業務課が判定を直さないことを決めておきます。 業務課は画像を見られますが、現場は見ていません。読み取りの誤り(×を○と読んだ)は業務課が直し、記入の食い違い(×なのに空欄)は点検員に聞く。 この線を引いておかないと、忙しい月に業務課の推測で埋まります。
目標は、1棟あたり15分です。 ○ばかりの点検票は一覧で流し見て終わり、時間を使うのは印の付いた欄と不良箇所だけにします。
例外に対処する
| 起きること | 対応 |
|---|---|
| 送った枚数とバケットの画像の数が合わない | 処理を止めて点検員に再送を頼む |
| 設置設備にあるのに点検票が無い | 点検票の不足として一覧に載せ、点検員へ確認 |
| 様式名が読めず設備の種類が決まらない | 業務課が画像を見て種類を選ぶ |
| 結合セルの多い欄で表が崩れる | テキストと位置から対応づけ、unmatched が多ければ業務課へ |
| 判定の欄に○と×が重ね書き | unreadable にする。どちらかに決めない |
| 前回の不良が今回は○ | 「前回の不良が今回は良」の印。改修済みかを工事課の記録で確かめる |
| 点検票でない書類が混ざる | document_type を見て処理から外し、業務課へ戻す |
| OCR か生成AIが応答しない | 受付用のバケットに残し、時間をおいて再実行。処理済みへ移すのは成功時だけ |
2行目と6行目は、AIの読み取りとは関係の無い確認です。 撮り忘れか点検し忘れかは画像からは分かりませんが、報告書を出す前に気づければ取り返せます。
記録を残す
- 点検票の元の画像と、撮影・送信の日時、建物番号、点検員
- OCR が返した JSON の全文
- 生成AIの出力(
items)と、使ったプロンプトの版、点検項目の一覧と言い換えの表の版 - 業務課と点検員が直した記録 … どの欄を、何から何へ、誰が直したか
- 確定した不良箇所の一覧と、送った見積依頼
- 点検員ごとの
unreadableと食い違いの件数
4番目は、報告書の内容を後から説明するために残します。 建物の管理者や消防署から問い合わせがあったとき、手書きの原本、読み取り、人の修正の順にたどれることが必要です。
最後の行は、書き方の手引きと撮影の手順を見直す材料です。
04実装レベルの3段階
最小構成では、120棟の量はさばけません。確かめるための段階です。 半自動化で、①の打ち直しの大半がなくなります。 不良箇所の拾い出しと見積依頼は手作業のまま残ります。本格構成で、②と③も下書きになり、食い違いが点検員に直接届きます。 本記事の想定はこの段階です。 半自動化を1か月回してから進んでください。 点検員ごとの書き方の癖と、表が崩れやすい点検票の種類が分かり、言い換えの表と点検項目の一覧をそこで直せます。
05工数削減シミュレーション
導入後 120件 × 15分 ÷ 60 = 30 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- ビルや共同住宅、店舗、福祉施設などの消防用設備等の点検を月に100棟前後請け負い、点検員が現場で紙の点検票に手書きし、事務所で清書と報告書の作成、不良箇所の拾い出し、改修の見積依頼を打ち直している点検会社や設備管理会社。点検員によって不良内容の書き方がばらばらで、見積依頼に必要な数量や設置場所が抜けがちな場合。
- 点検員がすでにタブレットの点検アプリで判定を入力しており、手書きの点検票が残っていない会社。受託している建物が数棟で、清書が短時間で終わる場合。なお、設備ごとの判定(良否)の決定、点検結果報告書の内容への責任、改修の要否と工法の判断、消防署への報告そのものは、この構成では代替できません。
07最小構成で試す方法
- 先月点検した建物から10棟を選ぶ(×の多い建物と、点検員に聞き直した建物を必ず入れる)
- その10棟の点検票の画像と、業務課が作った報告書と不良箇所の一覧を用意する
- 点検票の画像を1枚ずつ、手元のAIサービスの画面に貼り付ける
- 「この点検票の点検項目ごとに、判定(○・×・斜線・空欄)と不良内容をそのまま書き写してください。読めない字は〓にしてください。判定を書き換えないでください。×なのに不良内容が空の行と、不良内容があるのに○の行を別に挙げてください」と指示する
- 出てきた結果を、業務課の報告書と不良箇所の一覧に突き合わせる
確かめたいのは「手書きの判定と不良内容を、項目に対応づけて読めるか」です。
| 出てきた内容 | 判断 |
|---|---|
| ×と不良内容が報告書と合う | OCR の API とつなぐ段階に進む |
| 判定を勝手に直す・場所を補う | 指示の書き方で直る。構成は有効 |
| 結合セルの多い点検票で項目がずれる | 点検項目の一覧を渡す段階で直るかを、半自動化で確かめる |
| 字が読めない欄が多い | 撮影の手順が先。 AIの問題ではない |
4行目は珍しくありません。 平らな面に置いて撮り直し、どこまで変わるかを見ます。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| ×と不良内容の食い違いを生成AIが「整合」させる | 例を挙げて禁止し、食い違いは Python で拾う |
| 設置場所を他の行や物件の情報から補う | 「ほかの行から推測しない」と書く。null を許すスキーマにする |
| 結合セルで表が崩れ、項目がずれる | Form Parser の表は行や列をまたぐセルの無いものが前提。テキストと位置で対応づける |
| 判定欄が空欄の行を読み落とす | 値の空いたキーと値のペアは確実には読めない。点検項目の一覧の側から「読めなかった項目」を数える |
| 撮影が暗い・傾く | 最低200dpi、300dpi以上が望ましい。撮影の手引きを1行足す |
| 1枚ずつ処理して点検票の不足に気づかない | 送信完了のファイルで1棟分がそろってから処理する |
| 点検員の書き方がばらばらで見積依頼が読めない | 言い換えの表を作り、半自動化の1か月で育てる |
| 業務課が判定を推測で直す | 読み取りの誤りは業務課、記入の食い違いは点検員と分ける |
| 見積依頼が自動で工事課に飛ぶ | 下書きまでにする。 送信は業務課が行う |
上の2行が、この構成の失敗のほとんどです。 どちらも生成AIが「気を利かせて」埋めることから起きます。
4行目は見落としやすい落とし穴です。 空欄の判定は、読み取り結果に出てこないことで気づくしかありません。点検項目の一覧があれば、「この項目は読み取り結果に無かった」と数えられます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 建物名と所在地、設置されている消防用設備の種類と台数、不良箇所とその場所、点検員の氏名です。
- 不良箇所の一覧を防火上の弱点の情報として扱う … 「どの建物の、どの階の感知器が作動しないか」は、悪用されれば危険な情報です。チャットの通知には建物番号だけを載せ、建物名と所在地は確認の画面で見る形にします
- 処理する場所を確かめる … Form Parser の対応リージョンに日本はありません。受託契約に情報の取扱いの定めがある建物(官公庁、病院など)は、外部で処理してよいかを先に確かめます
- 判定を決めるのは点検員に置いたままにする … 消防法施行規則は、点検の結果を維持台帳に記録し、決められた期間ごとに消防長または消防署長に報告するよう求めています。報告の内容に責任を持つのは、点検を行った者と建物の関係者です。 この構成は、手書きを書類の形に移すところまでです
- 見積依頼を自動で送らない … 改修の要否や工法は、点検員と工事課が決めます。誤った不良箇所で見積が出ると、建物の管理者に不要な工事を勧めることになります
- 原本を残す … 手書きの点検票の画像を、報告書と同じ期間残します。誤りがあったとき、原本に戻れることが前提です
- 点検員の個人の評価に使わない … 食い違いの件数は、書き方の手引きを直すために数えます
誤りが起きた場合のリスクは、不良を報告書から落とすことと、無い不良を載せることの2つです。 どちらも「埋めない」という同じ指示で防ぎます。
10まず何から始めるか
1週目:物件の台帳に2つの列を足す
物件の台帳に、設置設備の一覧と前回の不良箇所の列を足します。来月点検する建物から埋めれば、半年で全棟が埋まります。
2週目:10棟で試す
先月の点検票から10棟を選び、手元のAIサービスに貼り付けて判定と不良内容を書き写させます。報告書と突き合わせ、判定を勝手に直していないかを最優先で見ます。
3週目:点検項目の一覧と撮影の手順を作る
共同住宅で多い設備(消火器、自動火災報知設備、誘導灯、避難器具)から、点検項目の一覧を表にします。 点検員には撮影の手順を配ります。
4週目:送信から清書の下書きまでをつなぐ
Cloud Storage への保存を起点に、Form Parser と Claude API を呼び、清書の下書きを一覧に書き出すところまで作ります。この時点では点検員への通知を出さず、業務課が下書きと画像を比べるだけにします。
2か月目: 食い違いと点検票の不足の照合を足し、点検員への確認の依頼を始めます。言い換えの表を育てます。3か月目以降: 不良箇所の一覧と見積依頼の下書きを足し、1棟45分が何分になったかを実測します。見積依頼が点検の何日後に出ているかを毎月数え、それが縮んだ時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
Form Parser が OCR のテキストに加えてキーと値のペア、チェックボックス、表、汎用のエンティティを抽出すること。言語の表で日本語(ja)が手書きに対応する言語として示されていること(原文の HTML で確認)。オンライン処理が15ページまで(imageless_mode で30ページ)であること。対応リージョンが us・eu・asia-southeast1・asia-south1 などで日本のリージョンが無いこと | Google Cloud: Processor list | 2026-10-26 |
| 表が行や列をまたぐセルの無いものに限られること。値の空いたキーと値のペアを確実には読めないこと。チェックボックスが値の種類とともにキーと値のペアとして抽出されること | Google Cloud: Form Parser | 2026-10-26 |
text を startIndex・endIndex で指す仕組み。formFields が fieldName と fieldValue を持つこと。チェックボックスの valueType が filled_checkbox/unfilled_checkbox になり、表の中では ✓ や ☐ の文字で現れること。表が headerRows と bodyRows に分かれること。要素ごとに confidence と boundingPoly を持つこと | Google Cloud: Handle the processing response | 2026-10-26 |
| 対応するファイルの形式(JPEG、PNG など)。JPEG などの非可逆の形式は縮めると画質と精度が落ちうること。スキャンは最低200dpi、300dpi以上で一般に最良の結果とされること | Google Cloud: Supported files | 2026-10-26 |
| オンライン処理のファイルの大きさの上限が40MB、画像の解像度の上限が40メガピクセルであること | Google Cloud: Document AI limits | 2026-10-26 |
構造化出力が output_config.format に type: "json_schema" で JSON スキーマを渡して有効になること。オブジェクトに additionalProperties: false が必要なこと。数値の minimum・maximum が非対応であること | Claude Docs: Structured outputs | 2026-10-26 |
| 消防用設備等の点検を種類と内容に応じて1年以内で消防庁長官が定める期間ごとに行うこと。点検の結果を維持台帳に記録し、特定防火対象物は1年に1回、それ以外は3年に1回、消防長または消防署長に報告すること。報告書の様式を消防庁長官が定めること(第31条の6) | e-Gov 法令API: 消防法施行規則 | 2026-10-26 |
| 機器点検が半年に1回、総合点検が年に1回であること(平成16年消防庁告示第9号)。消防用設備等ごとに点検の基準と点検結果報告書の点検票が定められていること。点検のデジタル化に向けた取組 | 消防庁: 消防用設備等点検報告制度と点検のデジタル化に向けた取組について(令和8年9月16日) | 2026-10-26 |
| 点検結果報告書(点検票を含む)の提出と、平成31年4月に様式が改正されたこと | 千葉市: 消防用設備等の点検報告 | 2026-10-26 |
点検の判定、報告書の内容、改修の要否は、消防設備士などの点検を行った者と建物の関係者が判断してください。 本記事は、上記の公開情報で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1758)についてのご相談はこちらから。
