製造現場で手書きされる設備の日常点検チェックシートを読み取り、点検結果と測定値を保全の台帳にそろえて、「否」のままの設備と記入漏れを保全担当へ出す
作業者が始業時に手書きする設備の日常点検チェックシートを読み取り、点検項目ごとの判定と測定値を保全台帳にそろえます。「否」が付いたのに保全への依頼が無い設備、基準を外れた測定値、空欄を保全担当へ出します。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- Azure AI/Google Document AI
- 連携・自動化
- Google Apps Script/Python
- 対象業界
- 物流/製造
- 対象部門
- 品質管理/生産
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- 入力作業が多い/期限・対応漏れが起きる/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 作業者が始業時に設備を点検し、チェックシートのその日の列に「○」「×」「△」と測定値を書く
- 異常があれば、班長に口頭で伝える。班長が必要と判断したものだけ、保全課に依頼票を出す
- 週末に班長がチェックシートを回収し、月曜に保全課へ届ける
- 保全課の担当者が1枚ずつ開き、「×」「△」の行を探す
- 測定値を保全台帳に書き写し、基準の範囲に入っているかを目で見る
- 空欄を探し、多いシートは班長に戻す
- 「×」の行について、保全依頼の受付簿に同じ設備の記録があるかを思い出すか、探す
- 人作業者は今までどおりチェックシートに書く。異常があれば今までどおり班長に伝える
- 人班長が毎日の終業時に、その週のシートを複合機でスキャンし、取込フォルダに保存する(シートは設備に戻す)
- 自動Python のスクリプトが1時間ごとに取込フォルダを見て、Document AI の Form Parser に渡す
- 自動Form Parser が、設備番号・週の欄、点検項目と曜日の表、信頼度を返す
- 自動Claude API が、表のセルを点検項目ごとの判定(ok/ng/caution/blank)と測定値にそろえる
- 自動Python が、測定値を設備マスタの基準と比べ、「×」の行を保全依頼の受付簿と照らし、保全台帳に書き込む
- 自動毎朝、「依頼の無い×」「基準外の値」「法定項目の空欄」の一覧を保全課と班長に送る
- 人保全課が一覧を見て、設備を見に行くか、班長に確かめる
各工程の詳しい説明を読む
- 作業者が始業時に設備を点検し、チェックシートのその日の列に「○」「×」「△」と測定値を書く
- 異常があれば、班長に口頭で伝える。班長が必要と判断したものだけ、保全課に依頼票を出す
- 週末に班長がチェックシートを回収し、月曜に保全課へ届ける
- 保全課の担当者が1枚ずつ開き、「×」「△」の行を探す
- 測定値を保全台帳に書き写し、基準の範囲に入っているかを目で見る
- 空欄を探し、多いシートは班長に戻す
- 「×」の行について、保全依頼の受付簿に同じ設備の記録があるかを思い出すか、探す
(a)「×」が付いたまま、保全が知らない設備が出る。 2番の判断は班長に任されています。「様子を見る」となった異常は、依頼票にならないまま週末を迎えます。保全課がそれを知るのは、早くても翌週の月曜です。
(b)書き写しが、確認より先に時間を食う。 測定値は1枚に十数個あり、台帳への書き写しだけで1枚に数分かかります。「×」を探して受付簿と照らす7番は、時間が残ったときだけの作業になります。
(c)空欄は目に入りにくい。 「○」が並んだ列の中の空欄は、急いで見ると「○」の続きに見えます。月曜の朝に休んでいた作業者の列が、まるごと空いていることもあります。
(d)基準の範囲を覚えている人が限られる。 吐出圧力や油温の基準は設備ごとに違い、台帳の別のシートを見ないと分からない値もあります。 範囲を覚えているベテランの担当者が休むと、基準を外れた値が書き写されるだけで終わります。
- 【人】 作業者は今までどおりチェックシートに書く。異常があれば今までどおり班長に伝える
- 【人】 班長が毎日の終業時に、その週のシートを複合機でスキャンし、取込フォルダに保存する(シートは設備に戻す)
- 【自動】 Python のスクリプトが1時間ごとに取込フォルダを見て、Document AI の Form Parser に渡す
- 【自動】 Form Parser が、設備番号・週の欄、点検項目と曜日の表、信頼度を返す
- 【自動】 Claude API が、表のセルを点検項目ごとの判定(ok/ng/caution/blank)と測定値にそろえる
- 【自動】 Python が、測定値を設備マスタの基準と比べ、「×」の行を保全依頼の受付簿と照らし、保全台帳に書き込む
- 【自動】 毎朝、「依頼の無い×」「基準外の値」「法定項目の空欄」の一覧を保全課と班長に送る
- 【人】 保全課が一覧を見て、設備を見に行くか、班長に確かめる
2番目が、Before からの唯一の運用の変更です。 週末にまとめて回収すると、「×」から保全課が知るまでの時間が最大で1週間になります。 毎日スキャンすれば、翌朝には一覧に載ります。同じシートを毎日スキャンし直すので、読み取るたびに、その週の全列を台帳と照らし、変わった列だけを書き込みます。
8番目を人に残すのは、設備を止めるかどうかを決めるのが保全課だからです。 一覧は「見るべきもの」を並べるだけで、修理の要否も、止めるかどうかも書きません。
02今回想定するシステム構成
日常点検チェックシート(1台1週1枚、手書き) │ 班長が毎日の終業時にスキャン ▼【トリガー】Python のスクリプト(1時間ごと、社内のサーバーで定時実行) Python ── 形式・画質・ページの確認 ▼ Google Document AI(Form Parser) │ 設備番号・週の欄、点検項目×曜日の表、信頼度 ▼ Claude API ── 構造化出力で台帳の形にそろえる │ 項目ごとの判定 ok/ng/caution/blank/unreadable、測定値 ▼ Python ── 設備マスタの基準と比較、保全依頼の受付簿と照合 ▼ 保全台帳 ──【毎朝】一覧を作る ├──▶ 依頼の無い「×」(設備・日付・項目) ├──▶ 基準を外れた測定値 └──▶ 法定項目の空欄・読めなかったセル ▼ 【保全課が設備を見る/班長に確かめる】
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Google Document AI(Form Parser) | Azure AI Document Intelligence |
| 生成AI | Claude API(表のセルを判定と測定値にそろえる) | OpenAI API、Gemini API |
| 連携 | Python(フォルダの監視、台帳への書き込み、受付簿との照合) | Google Apps Script |
| 集計 | Python(基準との比較と毎朝の一覧) | Google Apps Script |
| 保管 | 社内のファイルサーバー | Google ドライブ |
新しく作るのは、設備マスタの基準の列と、チェックシートの書式の見直しの2つです。 保全台帳には設備番号と点検項目の列がすでにあるので、項目ごとの基準の下限・上限と、法定の点検項目かどうかの印を足します。
土台は Document AI の Form Parser です。 公式のプロセッサ一覧では、OCRのテキストに加えて、キーと値のペア、チェックボックス、表を抽出するとされ、言語の一覧で日本語(ja)は手書きに対応する言語として示されています。チェックシートの上部の「設備番号」「週の開始日」はキーと値のペアとして、点検項目と曜日の格子は表として読めます。
Form Parser の注意書きのうち、この題材でいちばん効くのは表の制限です。 公式のページでは、行や列をまたぐセルの無い、単純な表から抽出するとされています。点検部位を縦に結合したセルがあるチェックシートは、そのままでは表として崩れます。書式から結合セルをなくすのが、最初の準備作業です(第7章の前処理)。
処理する場所は、リージョンの一覧から選びます。 マルチリージョンの us と eu、シンガポール(asia-southeast1)などの単一リージョンがあり、日本のリージョンはありません。 チェックシートに書かれるのは設備の状態と点検者の名前程度ですが、国外で処理することは社内で確かめておきます。
03どうやって実装するのか
処理の起点を決める
班長が毎日の終業時に、その週のシートをスキャンして取込フォルダに保存することを起点にします。 シートは設備の横に掛けたまま使うので、スキャンしたら元の場所に戻します。 ファイル名には、スキャンした日付とラインの記号を入れる設定にします。
Python のスクリプトを、社内のサーバーで1時間ごとに定時実行します。 取込フォルダの新しいPDFを順に処理し、台帳への書き込みまで成功したものだけを処理済みのフォルダへ移します。 失敗したものは取込フォルダに残り、次の実行で拾い直されます。
毎朝の一覧は、別のスクリプトで7時に作ります。 2交替の朝番が始まる前に、前日までの「依頼の無い×」が保全課と班長の手元にあるようにします。読み取りと一覧を分けておくと、読み取りが止まっていても、前日までの分の一覧は出続けます。
同じシートは月曜から土曜まで毎日スキャンされるので、1枚のシートが週に最大6回読まれます。 第2章の600件は「週の終わりに確定したシート」の枚数で数え、途中のスキャンは同じ件の更新として扱います。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| チェックシートのPDF | 1台1週1枚。スキャンした日付とライン(ファイル名) | 取込フォルダ |
| 読み取り結果 | 設備番号・週の開始日・点検者の欄、点検項目×曜日の表、要素ごとの信頼度 | Document AI(Form Parser) |
| 設備マスタ | 設備番号、設備の種類、点検項目、基準の下限・上限と単位、法定の点検項目かどうか | 保全台帳の別シート |
| 保全依頼の受付簿 | 依頼日、設備番号、依頼の内容、受け付けた人、対応の状況 | 保全課の受付簿 |
| 稼働の予定 | 設備ごとの稼働日と停止日 | 生産管理の予定表 |
質を決めるのは、設備マスタの「法定の点検項目かどうか」の列です。 労働安全衛生規則では、プレス等についてクラッチ及びブレーキの機能、一行程一停止機構・急停止機構及び非常停止装置の機能など、フォークリフトについて制動装置及び操縦装置の機能、荷役装置及び油圧装置の機能などを、その日の作業を開始する前に点検しなければならないとされています。これらの項目の空欄は、ほかの空欄より先に出します。
稼働の予定は、空欄を正しく数えるために使います。 停止していた日の列が空いているのは当然です。予定表で停止日と分かっている列は、空欄として数えません。
データの取得方法を決める
読み取りは、Python から Document AI の処理の API を呼ぶだけです。公式のページには Python のクライアントライブラリで応答を扱う例が載っています。返ってきた Document から次のものを取ります。
| 取るもの | 応答のどこから | 何に使うか |
|---|---|---|
| 項目名と値の組 | pages[].formFields[] の fieldName と fieldValue | 設備番号、週の開始日、点検者 |
| 表 | pages[].tables[] の headerRows と bodyRows、各セルの layout | 点検項目×曜日の判定と測定値 |
| 全文のテキスト | text と各要素の textAnchor | 表として取れなかったときの手がかり |
| 信頼度 | 各要素の layout の confidence | かすれた「○」「×」や数字が確かに読めているかの判定 |
設備番号は、台帳の行を探す鍵です。 読み取った番号で設備マスタを引き、完全に一致する設備が1台だけあるときだけ結び付けます。 似た番号の設備に寄せることはしません。一致しなければ no_master として班長に確かめます。
表は、見出しの行で曜日の列を決めます。 headerRows に「月」「火」…「土」の見出しがあれば、その列の位置で曜日を決めます。見出しが読めないときに、列の並び順で曜日を推すことはしません。 1列ずれると、月曜の「×」が火曜の記録になり、保全依頼との照合が外れます。
AIへ渡す前に整形する
- 書式の見直し(導入時に1回) … 点検部位を縦に結合したセルをなくし、1行に1項目、1列に1日の単純な格子にします。Form Parser の表の抽出は、行や列をまたぐセルの無い表が対象です
- 設備番号の欄を独立させる … シートの上部に「設備番号:」の欄を1つだけ置き、手書きではなく印字した番号にします
- 形式の確認 … Document AI の対象は PDF、GIF、TIFF、JPEG、PNG、BMP、WebP などです。複合機のPDFはそのまま入れられます
- 画質の確認 … 公式には、スキャンは最低200dpiが望ましく、300dpi以上が一般に最もよい結果になるとされています。油の付いたシートのために、複合機の設定を300dpi以上に固定します
- 1枚1ファイル … まとめてスキャンしたPDFはページごとに分けます。オンラインの処理は1回の要求で最大15ページです
- 同じ週の重複の検知 … 同じ設備番号・同じ週のものが届いたら、新しいほうを正とし、古いほうと列ごとに比べます
1番目がいちばん効きます。 結合セルのあるシートは、人には見やすくても、表として読むと行の数がそろいません。書式を直すのは一度だけで、その後は毎日効きます。
6番目は、毎日スキャンする運用だからこそ要ります。 火曜に読んだ月曜の列と、水曜に読んだ月曜の列が違えば、誰かが後から書き足したか、読み取りが揺れたかのどちらかです。 どちらかは人が見るまで分からないので、changed の印を付けて一覧に出します。
AIに処理させる
させるのは、表のセルの文字を、点検項目ごとの判定と測定値にそろえることだけです。 基準との比較、受付簿との照合、空欄の数え上げは Python が行います。
| 取り出すもの | 取り出し方 | 判断できないときの扱い |
|---|---|---|
| 判定 | 「○」「レ」「良」は ok、「×」「否」は ng、「△」「要注意」は caution | 記号が読めなければ unreadable |
| 測定値 | セルに書かれた数字と単位をそのまま | 数字が読めなければ空にして unreadable |
| 空欄 | セルに文字が無い | blank。点検しなかったのか書き忘れかは判断しない |
| 備考 | 欄外や備考欄の手書きの文 | そのまま写す。要約しない |
| 点検者 | 曜日ごとの点検者の欄 | 読めなければ空 |
Python が比べる規則は次のとおりです。
| 比べること | 規則 |
|---|---|
| 依頼の無い「×」 | ng の行について、同じ設備番号で、その日から翌稼働日までの保全依頼が受付簿にあるか |
| 基準外の値 | 測定値が設備マスタの下限・上限の外にあるか。単位が違えば比べずに unit_mismatch |
| 法定項目の空欄 | 法定の印が付いた項目の blank で、その日が稼働日のもの |
| その他の空欄 | 稼働日の blank |
| 判定と値の矛盾 | 測定値が基準外なのに判定が ok になっているもの |
最後の行は、作業者の書き方の癖を拾います。 基準の範囲を知らない作業者は、値を書いて「○」を付けます。値は範囲の外なのに「○」が付いている行は、作業者への教え方を見直す材料になります。
| させないこと | 理由 |
|---|---|
| 空欄を前後の日の判定で埋める | 点検の記録が無いという事実が消える |
| かすれた数字を前日の値に寄せる | 基準を外れ始めた値が、前日と同じに見えてしまう |
「△」を ok か ng に振り分ける | どちらに寄せるかは保全課が決める |
| 設備を止めるべきかの判断 | 保全課の責任者が決める |
| 基準の範囲の判定 | 設備マスタの値で Python が比べる |
1行目がいちばん起きやすい失敗です。 月曜から土曜まで「○」が並ぶ中に1つだけ空欄があると、AIは前後と同じ「○」として返そうとします。埋められた「○」は台帳の上では正しく見え、法定項目の空欄の一覧からその日が消えます。
指示内容を固定する
あなたは金属加工工場の保全課で、設備の日常点検チェックシートを
保全台帳に記録する担当です。
渡すのは、チェックシート1枚の読み取り結果(表と項目の値)です。
書かれている文字だけを使って、点検項目ごと・曜日ごとに値を並べてください。
推測で埋めないでください。
【やること】
1. machine_no:「設備番号」の欄の文字をそのまま写す
2. week_start:「週の開始日」の欄の日付をそのまま写す
3. 表の各行について item(点検項目名)を写し、
月〜土の各セルを次のどれかにする
ok(○・レ・良)/ng(×・否)/caution(△・要注意)/
blank(セルに文字が無い)/unreadable(文字はあるが読めない)
4. セルに数字が書かれていれば value に数字、unit に単位をそのまま入れる
5. 備考欄や欄外の手書きの文は remarks にそのまま写す
6. 各セルの evidence に、根拠にした文字列をそのまま写す
【厳守事項】
- 空欄のセルを、前後の曜日の判定で埋めないでください。blank のままにします。
- かすれた数字を、前日の値や他の行の値から推さないでください。
- △ を ok や ng に置き換えないでください。caution のままにします。
- 曜日の見出しが読めない列は、並び順から曜日を推さず、
day を unknown にしてください。
- 単位を換算しないでください。書かれた単位のまま返してください。
- 設備を止めるべきか、修理が要るかは書かないでください。
- 点検項目名が読み取り結果に見当たらない行は、item を空にし、
note に「項目名なし」と書いてください。
【この設備の点検項目の一覧】{items}
【読み取り結果】{ocr_result}
点検項目の一覧を渡すのは、項目名の読み違いをそろえるためです。 「油圧」が「油庄」と読まれても、一覧に「油圧」があれば同じ行として扱えます。ただし、一覧に無い項目名を一覧のどれかに寄せることはさせず、見当たらなければ note に残します。
「△を置き換えない」を明記しないと、AIは ok か ng に寄せます。 判定は3値でも、後段の規則が2値に見えると、AIはそれに合わせようとします。△は保全課が「次に見に行くもの」として使う印なので、寄せた時点で意味がなくなります。
出力形式を固定する
Claude API の構造化出力を使い、次の形のJSONで受け取ります。 output_config.format に JSON スキーマを渡すと、応答がそのスキーマに沿った形になります。
{
"file": "20261008_L2_0451.pdf",
"machine_no": "P-12",
"week_start": "2026-10-05",
"rows": [
{ "item": "クラッチ及びブレーキの機能",
"cells": [
{ "day": "mon", "status": "ok", "value": "", "unit": "",
"confidence": 0.95, "evidence": "○" },
{ "day": "tue", "status": "ng", "value": "", "unit": "",
"confidence": 0.91, "evidence": "×" },
{ "day": "wed", "status": "blank", "value": "", "unit": "",
"confidence": 0.0, "evidence": "" }
], "note": "" },
{ "item": "油圧",
"cells": [
{ "day": "mon", "status": "ok", "value": "6.8", "unit": "MPa",
"confidence": 0.88, "evidence": "6.8" }
], "note": "" }
],
"remarks": "火曜 ブレーキ効き遅い 班長へ"
}
1つ目の理由は、照合と比較をAIの外に出せることです。 AIが返すのはシート1枚の値までで、基準との比較と受付簿との照合は Python が行います。基準の範囲を直しても、受付簿の形が変わっても、AIを呼び直さずにやり直せます。
2つ目は、status で「保全が見るもの」と「読み直すもの」を分けられることです。 ng と caution は設備を見る候補、blank は点検の記録の不足、unreadable は画像を見直す候補です。blank と unreadable を混ぜると、かすれて読めなかっただけのセルを点検漏れとして班長に戻してしまいます。
3つ目は、remarks に備考が残ることです。 上の例のように、「×」の理由は備考に書かれていることが多く、一覧に備考がそのまま載っていれば、保全課は設備を見に行く前に当たりを付けられます。
公式のページでは、列挙の値の大文字・小文字までは保証されないとされているので、status と day は Python で正規化してから使います。stop_reason が max_tokens のときは出力が途中で切れているので、台帳に書かずに呼び直します。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 取込フォルダ | Python で定時に読む | 新しいPDFを処理し、成功したものを処理済みへ移す |
| Document AI | Python のクライアントライブラリから処理の API を呼ぶ | 欄の値、表、信頼度 |
| Claude API | Python から呼ぶ | 表のセルを判定と測定値にそろえる |
| 設備マスタ | Python で読む | 点検項目、基準の範囲、法定の印 |
| 保全依頼の受付簿 | Python で読む | 設備番号と日付で依頼の有無を引く |
| 保全台帳 | Python で行を探して書き込む | 判定、測定値、印 |
| 毎朝の一覧 | 毎朝作るファイルとメール | 保全課とラインの班長へ |
受付簿には書き込みません。 「依頼の無い×」が見つかっても、保全依頼を自動で起票することはしません。 班長がすでに口頭で保全課に伝えていて、受付簿への記入だけが漏れていることもあるからです。起票するかは保全課が確かめてから決めます。
保全台帳への書き込みは、判定・測定値・印の列だけにします。 設備マスタの基準の値は保全課の技術者が決めたもので、読み取った値で上書きしません。
人が確認する
- 毎朝、「依頼の無い×」を見る … 保全課が設備を見に行くか、班長に電話で確かめます。1件ずつ、受付簿に記入するか「対応不要」とするかを決めて記録します
- 基準外の値を見る … 範囲の外れ方と備考を見て、設備を見に行くかを決めます。単位の違う
unit_mismatchは、書き方の問題として班長に戻します - 法定項目の空欄を見る … その日の点検が本当に無かったのかを班長に確かめます。点検していなかったなら、作業開始前の点検の運用そのものを見直します
unreadableとchangedを見る … 画像を見て値を直します。直した記録は台帳の別の列に残します
1番目を毎朝にするのは、異常のある設備が動き続ける時間を短くするためです。 これまでは週明けまで分からなかったものが、翌朝には一覧に載ります。それでも一晩は空くので、異常を見つけた作業者が班長に伝える運用は、今までどおり続けます。 この構成は、その連絡が途切れたときの網です。
目標は、600枚をならして1枚1.5分です。 印の付くシートが2割前後という想定で、それより多い月は、書式か、特定のラインの書き方を疑います。
例外に対処する
| 起きること | 対応 |
|---|---|
| 設備番号がマスタに無い | no_master。新しく入った設備か、番号の読み違いかを確かめる |
| 表が崩れて行がそろわない | 結合セルが残っていないかを見る。崩れたシートは人が入力する |
| 曜日の見出しが読めない | day が unknown。画像で列を確かめて直す |
| 同じ週のシートで前回と値が違う | changed。書き足しか読み取りの揺れかを班長に確かめる |
| 油や水でにじんで全体が読めない | 原本を見て手で入力する。シートをクリアファイルに入れる運用を検討 |
| 測定値の単位がマスタと違う | unit_mismatch。換算せず、書き方を班長に戻す |
| 停止日の列に記入がある | 予定表と食い違い。予定表の側の誤りかを確かめる |
| Document AI か Claude API が応答しない | PDFを取込フォルダに残し、次の実行で拾い直す |
2行目は、書式の見直しが済んでいないラインで集中して起きます。 崩れの多いラインから書式を直すと、例外はまとまって減ります。
記録を残す
- スキャンしたPDFと、スキャンした日付(紙の原本は、社内の規程で決めた期間、今までどおり保管する)
- Document AI が返したJSONの全文
- Claude API に渡した入力と、返ってきたJSON
- 保全台帳に書き込んだ値、付けた印、人が直した記録
- 毎朝の一覧の控えと、そのときの設備マスタの基準の版
- 「依頼の無い×」ごとに、保全課が確かめた結果(記入した・対応不要・設備を止めた)
毎朝の一覧の控えを残すのは、いつ気づけたかを後から示せるようにするためです。 設備の故障や災害が起きたとき、その前の点検で「×」があったのか、それを保全課がいつ知ったのかを説明できるようにします。基準の版を残すのは、基準を直したときに過去の印の意味が変わるからです。
04実装レベルの3段階
最小構成では枚数がさばけません。 確かめるための段階です。 半自動化で、1枚5分が3分程度になります。 書き写しはなくなりますが、基準との比較と受付簿との照合はまだ人です。本格構成で1.5分になり、この段階が本記事の想定です。 差が大きいのは、基準の範囲と受付簿を人が開いて探す作業がなくなるからです。 段階を飛ばさないでください。 半自動化の一覧を1か月見ると、表が崩れるラインと、単位の書き方がばらばらなラインが先に分かります。
05工数削減シミュレーション
導入後 600件 × 1.5分 ÷ 60 = 15 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- プレス機械・工作機械・コンプレッサ・フォークリフトなど100台を超える設備を持ち、作業者が始業時に紙のチェックシートへ点検結果と測定値を手書きしている工場。回収したシートを保全課が1枚ずつ見て、保全台帳に書き写している場合。「否」を付けたのに保全へ連絡が来ていなかった、と後から分かったことがある場合。社内にPythonを動かせるサーバーか常時起動のPCがある場合。
- 点検をすでにタブレットや設備の自己診断で記録しており、紙のチェックシートがほとんど無い場合。設備が数台で、班長が毎日目で見て足りる場合。チェックシートの書式が設備ごとにまったく違い、表の形をそろえる見直しができない場合。なお、設備を止めるかどうか、修理が要るかどうかの判断は、この構成では代替できません。
07最小構成で試す方法
- 先月回収したチェックシートから30枚を選ぶ(「×」の付いたもの、空欄の多いもの、油で汚れたものを入れる)
- 30枚をスキャンして、手元のAIサービスの画面に1枚ずつ貼り付ける
- 「この表の点検項目ごと・曜日ごとに、○×△と数字をそのまま書き出してください。空欄は空欄のまま、読めないものは読めないと書いてください。推測で埋めないでください」と指示する
- 書き出された値を、保全台帳に書き写した値と比べる
- あわせて、30枚の「×」の行について、保全依頼の受付簿に同じ設備・同じ週の記録があるかを手で数える
5番目はAIを使いません。 受付簿と照らすだけで、「×」が付いたのに依頼の無いものが何件あるかが分かります。この数が0でなければ、読み取りより先に照合の価値があります。
| 出てきた内容 | 判断 |
|---|---|
| 台帳に書き写した値とほぼ同じになった | Document AI と Python のつなぎに進む |
| 空欄を前後の日の「○」で埋めた | 指示の書き方で直る。構成は有効 |
| 表の行がずれて項目と値が合わない | 書式の見直しが先。 結合セルをなくす |
| 依頼の無い「×」が見つかった | 読み取りの前に、照合だけを手で毎週始める |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 空欄が前後の「○」で埋まる | 指示で禁じ、blank の件数が急に0になった週を疑う |
| 結合セルで表の行がずれる | 書式から結合セルをなくす。 Form Parser の表は単純な表が対象 |
| 曜日の列が1つずれる | 見出しで列を決め、並び順で推さない |
| 「△」が「○」か「×」に寄せられる | 3値のまま返すよう指示に書く |
| 設備番号を読み違えて別の設備に書く | 番号を印字にする。 完全一致のときだけ結び付ける |
| 停止日の空欄まで点検漏れに数える | 生産管理の予定表で稼働日を引く |
| 単位の違う値で基準と比べる | 換算せず unit_mismatch で戻す |
| 毎日の再スキャンで同じ「×」が何度も出る | 設備・週・曜日・項目で1件にまとめる |
| 「依頼の無い×」を自動で起票する | 起票は保全課が確かめてから。 口頭で伝わっていることがある |
| 一覧が長すぎて読まれない | 法定項目と「依頼の無い×」を先頭に、ラインごとに分ける |
| 基準の範囲が技術者ごとに違う | 設備マスタの値を正とし、版を残す |
| 国外で処理することを確かめていない | 日本のリージョンが無い。導入前に社内で確かめる |
上の2行が、この構成の失敗のほとんどです。 1行目はAIの側、2行目は紙の側の問題ですが、どちらも「台帳の値は正しく見えるのに、元の紙と違う」という同じ形で現れます。導入の初月は、毎週10枚を抜き取って原本と台帳を見比べてください。
下から4行目も、早く効いてきます。 一覧に載った「×」を誰かが自動で依頼にすると、口頭で伝わって対応済みのものまで二重に起票され、保全課は一覧を信じなくなります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 設備番号と点検項目、判定と測定値、備考の手書きの文、そして点検者の氏名です。
- 国外で処理することを確かめる … Document AI のリージョンの一覧に日本はありません。設備の状態や工程の情報を国外のリージョンで処理してよいかを、情報システムの担当と確かめます
- 点検者の氏名を評価に使わない … 空欄の多い作業者が一覧から分かるようになりますが、一覧の目的は設備の取りこぼしを拾うことです。 個人の評価に使うと、作業者は空欄を埋めるために「○」を書くようになります
- 設備を止める判断を一覧に任せない … 一覧が出すのは見るべきものの候補だけです。止めるかどうかは保全課の責任者が決めます
- 作業者から班長への連絡をやめない … 一覧は翌朝にしか出ません。その場で危ないと思った異常は、今までどおりその場で止めて伝えます
- 法定の点検の記録として何を残すかを決める … 紙の原本、スキャンしたPDF、台帳の値のどれを記録の正とするかを、安全衛生の担当と決めておきます
誤りが起きた場合のリスクは、異常のある設備を見落とすことと、点検していない日を点検済みとして残すことの2つです。 前者は ng を読み落とすと起き、後者は空欄を埋めると起きます。どちらも「書かれていないものを書かれたことにしない」という同じ規則から出ているので、そこだけは設計で守ります。
10まず何から始めるか
1週目:「依頼の無い×」を手で数える
先月のチェックシートの「×」の行を拾い、保全依頼の受付簿と照らします。AIを使わずにできる作業で、この構成が何を拾うためのものかが、数字で分かります。
2週目:30枚で試す
先月のシートから30枚を選び、手元のAIサービスに貼り付けて値を書き出させます。空欄を埋めていないか、表の行がずれていないかを最優先で見ます。
3週目:書式を直し、設備マスタを整える
表の行がずれたシートの書式から、結合セルをなくします。 あわせて、設備マスタに基準の下限・上限と、法定の点検項目の印を足します。140台を一度に埋める必要はなく、プレス機械とフォークリフトから始めます。
4週目:取込フォルダから一覧までをつなぐ
Python で取込フォルダを見張り、Document AI と Claude API を呼び、値を一覧に書き出すところまで作ります。この時点では受付簿と照らさず、読み取りの精度だけを見ます。
2か月目: 基準との比較と受付簿との照合を足し、毎朝の一覧を出します。班長の毎日のスキャンを始めます。3か月目以降: 1枚5分が何分になったかを実測します。「×」から保全課が知るまでの日数を数え、それが翌朝に収まった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| プレス等を用いて作業を行うときは、その日の作業を開始する前にクラッチ及びブレーキの機能、一行程一停止機構・急停止機構及び非常停止装置の機能などを点検しなければならないこと(第136条)。フォークリフトについて制動装置及び操縦装置の機能、荷役装置及び油圧装置の機能などを同様に点検しなければならないこと(第151条の25) | e-Gov 法令API: 労働安全衛生規則 | 2026-10-08 |
Form Parser がOCRのテキストに加えてキーと値のペア、チェックボックス、表を抽出すること。言語の一覧で日本語(ja)が手書きに対応する言語として示されていること。オンラインの処理が1回の要求で最大15ページであること | Google Cloud: Processor list | 2026-10-08 |
| 表の抽出が行や列をまたぐセルの無い単純な表を対象にすること。チェックボックスのモデルがラジオボタンに対応しないこと。値の入っていないキーと値の組を確実には読み取れないこと | Google Cloud: Form Parser | 2026-10-08 |
項目名と値の組が formFields の fieldName/fieldValue で、表が headerRows/bodyRows で返ること。信頼度が各要素の layout に入ること | Google Cloud: Handle the processing response | 2026-10-08 |
| 対応形式が PDF、GIF、TIFF、JPEG、PNG、BMP、WebP などであること。スキャンは最低200dpiが望ましく300dpi以上が一般に最もよいこと | Google Cloud: Supported files | 2026-10-08 |
マルチリージョンが us と eu で、単一リージョンにシンガポール(asia-southeast1)などがあり、日本のリージョンが一覧に無いこと | Google Cloud: Regional and multi-regional support | 2026-10-08 |
output_config.format に JSON スキーマを渡して応答の形を固定できること。列挙の値の大文字・小文字は保証されないこと。max_tokens で打ち切られたときはスキーマに合わない出力になりうること | Claude API: Structured outputs | 2026-10-08 |
どの項目を法定の点検項目とするか、設備を止めるかどうかは、自社の安全衛生の担当と保全課の責任者が決めてください。 本記事は各製品の公式ページと労働安全衛生規則の条文で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0890)についてのご相談はこちらから。
