建設現場で手書きされるコンクリートの受入検査の記録を読み取り、配合ごとの規格値に照らして品質管理台帳に載せ、外れと記入漏れを拾う
現場で手書きされたコンクリートの受入検査の記録表を読み取り、運搬車ごとのスランプ・空気量・温度・塩化物量を品質管理台帳に載せます。配合ごとの指定値と許容差に照らし、外れた値と記入漏れを現場へ返します。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- Azure AI/Google Document AI
- 連携・自動化
- Google Apps Script/Python
- 対象業界
- 建設/自治体/製造
- 対象部門
- 品質管理
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- 人手が足りない/入力作業が多い/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/品質標準化/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 現場の担当者が、荷卸し地点で運搬車ごとに試験をして記録表に手書きする
- 打設が終わったら記録表をスキャンし、現場のフォルダに入れる
- 品質管理課が記録表を開き、運搬車ごとの値を品質管理台帳に打ち込む
- その工事の配合計画書を開き、呼び方(呼び強度・スランプ・粗骨材の最大寸法)と指定値を確かめる
- 打ち込んだ値を指定値と許容差に照らし、外れていないかを1行ずつ見る
- 外れた値、空欄、読めない字があれば、現場の担当者に電話かメールで確かめる
- 返事を受けて台帳を直し、外れの記録を品質の打合せの資料に載せる
- 人現場の担当者が、記録表の上部に工事コードと配合の記号を書き、300dpiでスキャンして現場のフォルダに入れる
- 自動Google Apps Script が15分ごとにフォルダを見て、未処理のファイルを拾う
- 自動Document AI の Form Parser が、記録表の上部の欄と、運搬車ごとの表を読み取る
- 自動Claude API が、読み取った表の列を台帳の列(時刻・車番・スランプ・空気量…)に対応づける
- 自動項目ごとの「ありえる範囲」で、小数点の読み違いの疑いを拾う
- 自動工事コードと配合の記号から規格値の表を引き、行ごとに `ok` / `out` / `missing` / `recheck` を付ける
- 自動結果を「確認待ち」のシートに書き、`out` があれば現場の担当者と品質管理課に知らせる
- 人品質管理課が `out` / `missing` / `recheck` の行だけを画像と見比べて確かめる
- 人確かめた行を品質管理台帳に反映し、外れの処置を現場と記録する
各工程の詳しい説明を読む
- 現場の担当者が、荷卸し地点で運搬車ごとに試験をして記録表に手書きする
- 打設が終わったら記録表をスキャンし、現場のフォルダに入れる
- 品質管理課が記録表を開き、運搬車ごとの値を品質管理台帳に打ち込む
- その工事の配合計画書を開き、呼び方(呼び強度・スランプ・粗骨材の最大寸法)と指定値を確かめる
- 打ち込んだ値を指定値と許容差に照らし、外れていないかを1行ずつ見る
- 外れた値、空欄、読めない字があれば、現場の担当者に電話かメールで確かめる
- 返事を受けて台帳を直し、外れの記録を品質の打合せの資料に載せる
(a)打ち直しの量が多い。 1枚に運搬車が十数台並ぶ日もあり、1枚で数十個の数字を目で追います。
(b)見比べる指定値が現場ごとに違う。 同じ現場でも、躯体と土間で配合が違えば、指定のスランプも違います。記録表に書かれた配合の呼び方を見て、その都度、配合計画書を開き直します。 許容差もスランプの値によって変わるため、表を引く手間が毎回かかります。
(c)小数点が読めない。 手書きの「4.5」の点がかすれて「45」に見える、「2.5」の点が罫線に重なる。読み違いなのか本当に外れたのかを、現場に聞くまで決められません。
(d)外れに気づくのが遅い。 品質管理課に記録表が回るのは打設の数日後です。外れが分かったときには、現場の記憶も薄れています。
- 【人】 現場の担当者が、記録表の上部に工事コードと配合の記号を書き、300dpiでスキャンして現場のフォルダに入れる
- 【自動】 Google Apps Script が15分ごとにフォルダを見て、未処理のファイルを拾う
- 【自動】 Document AI の Form Parser が、記録表の上部の欄と、運搬車ごとの表を読み取る
- 【自動】 Claude API が、読み取った表の列を台帳の列(時刻・車番・スランプ・空気量…)に対応づける
- 【自動】 項目ごとの「ありえる範囲」で、小数点の読み違いの疑いを拾う
- 【自動】 工事コードと配合の記号から規格値の表を引き、行ごとに
ok/out/missing/recheckを付ける - 【自動】 結果を「確認待ち」のシートに書き、
outがあれば現場の担当者と品質管理課に知らせる - 【人】 品質管理課が
out/missing/recheckの行だけを画像と見比べて確かめる - 【人】 確かめた行を品質管理台帳に反映し、外れの処置を現場と記録する
8番目が、この設計の分かれ目です。 全行を見直すと時間は減りません。印の付いた行だけに時間を使います。
6番目を規則にしているのも意図してのことです。 許容差は配合計画書と仕様書で決まるもので、AIに「外れているか」を聞くと、聞くたびに答えが揺れます。 表を引いて引き算するだけの仕事は、スプレッドシートの規則のほうが確実です。
02今回想定するシステム構成
受入検査の記録表(手書き) │ 現場でスキャン(300dpi) ▼ 現場ごとのフォルダ(Google ドライブ) ▼【トリガー】15分ごとの時間主導型トリガー Google Apps Script ── 未処理ファイルの確認 ▼ Google Document AI(Form Parser) │ 上部の欄(キーと値)、運搬車ごとの表、信頼度 ▼ Claude API ── 表の列を台帳の列に対応づける(値は写すだけ) ▼ Google Apps Script ── 範囲の確認/規格値の表との照合 ▼ 「確認待ち」シート(印と画像へのリンク) ▼ 【品質管理課が印の行だけ確かめる】→ 品質管理台帳
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Google Document AI(Form Parser) | Azure AI Document Intelligence |
| 生成AI | Claude API(表の列の対応づけ) | OpenAI API、Gemini API |
| 連携 | Google Apps Script(フォルダの確認、API の呼び出し、シートへの書き込み) | Python |
| 差異計算 | Google Apps Script(規格値の表との照合) | Python |
| 保管 | Google ドライブ(記録表の画像と読み取り結果) | 社内のファイルサーバー |
新しく足すのは、規格値の表と「確認待ち」のシートだけです。
土台は Document AI の Form Parser です。 公式のプロセッサ一覧では、OCRのテキストに加えてキーと値のペア、チェックボックス、表を抽出するとされ、言語の一覧で日本語(ja)は手書きに対応する言語として示されています。記録表の上部の「工事名」「打設日」「配合」はキーと値のペアとして、運搬車ごとの行は表として読めます。
Form Parser の注意書きのうち、この題材に効くのは2つです。 1つ目は、値が空のキーと値のペアは確実には読み取れないとされていること。2つ目は、表はセルが行や列にまたがらない単純なものだけが対象とされていることです。記録表に「スランプ」と「空気量」をまとめた2段の見出しがあれば、2つ目に当たります。
処理する場所は us・eu のマルチリージョンか、シンガポール(asia-southeast1)などの単一リージョンから選び、日本のリージョンはありません。 受入検査の値自体に個人情報はほとんど含まれませんが、記録者の氏名と工事名は国外で処理されます(第13章)。
03どうやって実装するのか
処理の起点を決める
Google Apps Script の時間主導型トリガーで、15分ごとに現場のフォルダを見に行きます。 公式ページでは、時間主導型トリガーは1分ごとから月1回まで設定でき、実行の時刻はわずかにずれることがあるとされています。インストール型トリガーとして示されているのは、スプレッドシートを開く・編集する・構造を変える、フォームの送信、カレンダーの予定の更新で、ドライブのフォルダにファイルが追加されたことを起点にするものは一覧にありません。 そのため、見に行く形にします。
1日1回の定時実行にはしません。 外れに気づくのが遅いことが、いまの課題の1つだからです。打設の当日中にスキャンされれば、その日のうちに外れが品質管理課に見えるようにします。
拾うのは「処理済み」の印が付いていないファイルだけです。印は、確認待ちのシートへの書き込みが終わったときにだけ付けます。 途中で止まったファイルは、次の15分で拾い直されます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 記録表の画像 | PDFまたはJPEG。1枚=1回の打設 | 現場のフォルダ |
| 読み取り結果 | 上部の欄(キーと値)、表のセル、各要素の信頼度 | Document AI |
| 規格値の表 | 工事コード×配合の記号ごとの指定スランプ、指定空気量、許容差、塩化物量の上限、温度の管理範囲 | 品質管理課が配合計画書から作るシート |
| ありえる範囲の表 | 項目ごとの、読み取りとしてありえる値の範囲と桁 | 品質管理課が作るシート |
| 現場の名簿 | 工事コード、現場の担当者、連絡先 | 工事の一覧 |
質を決めるのは、規格値の表です。 配合計画書はPDFで、指定値は表の形になっていません。最初に、工事ごと・配合ごとに1行の表へ書き出す作業が要ります。 ここをAIに読ませて作る手もありますが、規格値は一度作れば工事の終わりまで使うものなので、人が作って確かめます。
許容差の考え方は、農林水産省の「土木工事施工管理基準の手引き」第5章に整理されています。手引では、受入れ検査を荷卸し地点で、強度、スランプ、空気量及び塩化物含有量について行うとし、スランプの許容差を次のように示しています。
| 指定のスランプ | 許容差 |
|---|---|
| 2.5cm | ±1cm |
| 5cm及び6.5cm | ±1.5cm |
| 8cm以上18cm以下 | ±2.5cm |
| 21cm | ±1.5cm(呼び強度27以上で高性能AE減水剤を使う場合は±2) |
空気量は普通コンクリート・舗装コンクリート・高強度コンクリートで4.5%、軽量コンクリートで5.0%、許容差は±1.5%、塩化物含有量は塩化物イオン量として0.30kg/m³以下(購入者の承認を受けた場合は0.60kg/m³以下)とされています。この手引は JIS A 5308:2009 を引いています。 実際の規格値の表は、工事の特記仕様書と現行の JIS、配合計画書で確かめて作ってください。コンクリート温度は手引の受入れ検査の項目に無いため、工事ごとに仕様書や施工計画書で決めた管理範囲を表に入れます。
データの取得方法を決める
Apps Script から Document AI の process を REST で呼びます。公式の API リファレンスでは、POST https://documentai.googleapis.com/v1/{name}:process に rawDocument(ファイルの中身と種類)を渡す形で、認可のスコープは https://www.googleapis.com/auth/cloud-platform です。
認可には ScriptApp.getOAuthToken() を使います。 実行するユーザーの OAuth 2.0 のアクセストークンを返すメソッドで、トークンは時間がたつと切れるとされています。Apps Script のプロジェクトを Document AI を有効にした Google Cloud のプロジェクトに結び付け、マニフェストに cloud-platform のスコープを足しておきます。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 全文 | document.text | 各要素が textAnchor で指す元の文字列 |
| 上部の欄 | pages[].formFields(fieldName と fieldValue) | 工事コード、打設日、配合の記号、記録者 |
| 運搬車ごとの行 | pages[].tables(headerRows と bodyRows) | 時刻、車番、各試験の値 |
| 信頼度 | 各要素の layout.confidence | 低いセルを recheck に回す材料 |
公式ページでは、text が文書の文字の source of truth で、ほかの要素は textAnchor でその位置を指すとされています。セルの値は textAnchor から全文を切り出して得ます。値をどこから切り出したかを残しておくと、確認のときに画像の位置を示せます。
AIへ渡す前に整形する
- 書式をそろえる … 記録表の見出しを1段にし、セルの結合をなくします。Form Parser は行や列にまたがるセルの無い単純な表が対象です
- 上部に工事コードと配合の記号の欄を作る … 手書きの工事名から工事を当てるより、決めたコードを書いてもらうほうが確実です
- 解像度を確かめる … 公式ページではスキャンは最低200dpiが望ましく、300dpi以上が一般に最もよいとされています。現場のスキャナーの既定を300dpiにします
- ファイルの大きさとページ数を確かめる … オンライン処理はファイル40MBまで、Form Parser は15ページまでです。超えるものは分けます
- 1ファイルに複数の打設が入っていないかを見る … 複数枚をまとめてスキャンしたものは、ページで分けます
- 重複を見る … 同じ工事・同じ打設日・同じ配合のファイルが既にあれば、二重の記録として印を付けます
1番目がいちばん効きます。 生コン工場から渡される用紙は、「スランプ」の下に「指定」「実測」の2段の見出しを持つものが多く、Form Parser の表の前提から外れます。 会社の記録表を1つに決め、見出しは1段、1列に1項目にするだけで、後の対応づけがほとんど要らなくなります。
AIに処理させる
Document AI に読み取りを、Claude API に表の列の対応づけをさせます。 判定はさせません。
| 担当 | させること | させないこと |
|---|---|---|
| Document AI | 手書きの文字、上部の欄、表のセルと信頼度を返す | なし(返ってきた値を変えない) |
| Claude API | 表の見出しを台帳の列(時刻・車番・スランプ・空気量・コンクリート温度・外気温・塩化物量・供試体番号)に対応づけ、各セルの文字列を写す | 数値の補正、単位の換算、合否の判定 |
| Apps Script | ありえる範囲の確認、規格値の表との照合、印の付与 | なし(規則どおりに計算する) |
Claude API を使うのは、記録表が完全には1つにそろわないからです。 「SL」「スランプ(cm)」「スランプ値」のように見出しの書き方が現場ごとに違い、列の順番も入れ替わります。この揺れを規則で吸収しようとすると、新しい書き方が出るたびに規則が増えます。 見出しの意味を見て列を当てるのは、生成AIに向いた仕事です。
ただし、写すのは文字列のままです。 「4,5」を「4.5」に直す、「45」を「4.5」と推定する、といったことはさせません。読み違いの疑いは、次の段の規則が拾います。
| 段 | 何を見るか | 付ける印 |
|---|---|---|
| 範囲の確認 | 空気量が0〜10%、スランプが0〜25cm など、読み取りとしてありえるか | 範囲外は recheck |
| 信頼度の確認 | セルの信頼度がしきい値を下回るか | 下回れば recheck |
| 空欄の確認 | 値が無いか | missing |
| 規格値との照合 | 指定値±許容差、上限値、管理範囲に収まるか | 収まらなければ out、収まれば ok |
上の2段を先に通すのが、この設計の要です。 範囲外の値を規格値の照合に回すと、「空気量45%」が大きな外れとして出ます。現場に「外れています」と連絡した後で、読み違いだったと分かるのがいちばんの空振りです。
指示内容を固定する
あなたは建設会社の品質管理課で、コンクリートの受入検査の記録表を
台帳の形にそろえる担当です。OCRが返した表を見て、列の対応づけだけをしてください。
【台帳の列】
time(時刻)/truck_no(車番)/slump(スランプ)/air(空気量)/
concrete_temp(コンクリート温度)/air_temp(外気温)/
chloride(塩化物量)/specimen_no(供試体番号)
【やること】
1. 表の見出しの文字列を見て、台帳の列に対応づけてください。
対応づけられない見出しは unmapped に入れてください。
2. 各行の各セルについて、OCRが返した文字列をそのまま value に写してください。
3. 上部の欄から、工事コード、打設日、配合の記号、記録者を写してください。
【厳守事項】
- 値を直さないでください。「4,5」「45」「4.5」はそれぞれ書かれたとおりに写します。
- 小数点が無いように見えても、補って書かないでください。
- 単位を換算しないでください。単位の文字があれば unit に写してください。
- 空欄は value を空文字にしてください。前後の行から埋めないでください。
- 見出しの意味が2通りに取れるときは、どちらかに決めず unmapped に入れてください。
- 規格に合っているか、合格か、外れているかは書かないでください。
- 受入検査の記録表でない書類と判断したら、document_type にその種類を書き、
ほかの項目を空にしてください。
【OCRの結果(上部の欄と表)】{ocr_result}
「4,5」「45」「4.5」を並べて書いているのは、例を出さないと直してくるからです。 「値を直さない」だけでは、空気量の列に「45」とあれば「4.5の誤読と思われる」と考えて直します。直した値が正しいかどうかではなく、直したという事実が記録から消えることが問題です。
「前後の行から埋めない」も同じ理由です。 運搬車が十数台並ぶと、同じ値が続くことがよくあります。空欄を前の行の値で埋めると、記入漏れという事実が消えます。
出力形式を固定する
Claude API の構造化出力で、次の形の JSON を受け取ります。 公式ページでは、output_config.format に type: "json_schema" とスキーマを渡し、オブジェクトには additionalProperties: false が必要とされています。
{
"document_type": "acceptance_record",
"header": {
"site_code": "",
"pour_date": "",
"mix_code": "",
"recorder": ""
},
"unmapped": [],
"rows": [
{
"row_index": 1,
"cells": [
{ "column": "slump", "value": "", "unit": "" }
]
}
]
}
1つ目の理由は、Apps Script がそのまま列に書き込めることです。 column の値は台帳の列名と同じにしてあり、対応表を引かずに書き込めます。
2つ目は、範囲の確認をスキーマに入れられないことです。 公式ページでは、構造化出力のスキーマで minimum・maximum などの数値の制約は使えないとされています。そもそも値は文字列で写させているので、ありえる範囲の確認は Apps Script の側で行います。 役割の分け方と、製品の制約が一致しています。
3つ目は、unmapped で見出しの揺れが見えることです。 対応づけられなかった見出しが溜まれば、記録表の書式を直す材料になります。
Apps Script はこれに信頼度と判定を足して、確認待ちのシートに1行ずつ書きます。
| 列 | 中身 |
|---|---|
| 工事コード・打設日・配合 | header から |
| 運搬車の行番号・車番・時刻 | rows から |
| 項目・読み取った値・信頼度 | cells と Document AI の信頼度 |
| 規格値 | 規格値の表から引いた指定値・許容差・上限 |
| 印 | ok / out / missing / recheck |
| 画像へのリンク | 元のファイルとページ |
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 現場のフォルダ | Apps Script の DriveApp | 未処理のファイルを拾い、処理済みの印を付ける |
| Document AI | REST(process) | 上部の欄と表、信頼度を返す |
| Claude API | REST(Messages API と構造化出力) | 列の対応づけと値の写し |
| 規格値の表・範囲の表 | スプレッドシートの読み取り | 照合に使う値を引く |
| 確認待ちのシート | スプレッドシートへの書き込み | 行ごとの値と印 |
| 品質管理台帳 | 人が確かめた行を反映 | この構成からは直接書かない |
| 現場の担当者 | メール | out があったときだけ知らせる |
品質管理台帳へは直接書き込みません。 台帳は工事の品質記録として後から提出や説明に使うもので、読み違いが確かめられないまま入ると、後から見分けられません。 確認待ちのシートを間に置き、人が確かめた行だけを反映します。
現場への連絡は out のときだけにします。 読み違いのたびに連絡が飛ぶと、現場はすぐに通知を読まなくなります。
Apps Script の実行時間には上限があり、公式ページでは1回の実行が6分までとされています。15分ごとの1回で処理するファイル数を絞り、残りは次の回に回します。
人が確認する
品質管理課が見るのは、印が ok 以外の行だけです。 ok の行は、工事・打設日ごとの件数を見て流します。
recheckを先に見る … 画像のリンクを開き、読み取った値が書かれた値と同じかを確かめます。多くは小数点のかすれで、画像を見れば片づきますmissingを見る … 本当に空欄かを画像で確かめます。空欄なら現場に確かめ、試験をしていないのか書き忘れたのかを記録しますoutを見る … 規格値の表から引いた値が正しいか、配合の記号が合っているかを確かめます。配合の取り違えで外れに見えていることがあります- 確かめた行を台帳に反映する … 直した値と、直した理由を残します
3番目を省かないでください。 規格値の表は工事ごと・配合ごとで、記録表の配合の記号が1文字違えば、別の配合の許容差で判定されます。 外れの連絡を現場にする前に、配合が合っているかを確かめます。
目標は、240枚をならして1枚4分です。 印の付く行が1枚に1〜2行という想定で、それより多い月は、記録表の書式かスキャンの設定がずれ始めています。
例外に対処する
| 起きること | 対応 |
|---|---|
| 工事コードが読めない・名簿に無い | 照合せず recheck。品質管理課が工事を当ててから照合し直す |
| 配合の記号が規格値の表に無い | 照合せず「規格値なし」の印。表の整備漏れを先に疑う |
| 表が読み取れない(結合セル・斜めのスキャン) | 全行 recheck。書式とスキャンのやり直しを現場に頼む |
| 1ファイルに複数の打設 | ページで分けて再投入。分けられないものは人へ |
| ファイルが40MB・15ページを超える | 分けて投入する |
| 受入検査の記録表でない書類 | document_type を見て、処理せずに品質管理課へ戻す |
| Claude API の出力が途中で切れる | 公式ページでは max_tokens で切れた出力はスキーマに合わないことがあるとされる。max_tokens を上げて1回だけやり直し、だめなら人へ |
| アクセストークンの期限切れ | 取り直して1回だけやり直す |
| Document AI が応答しない | 処理済みの印を付けずに残す。次の回に拾い直される |
上から3行目までが大半を占めます。 どれもAIの問題ではなく、記録表の書き方と規格値の表の整備の問題です。 書式を直すほうが、読み取りの精度を上げようとするより効きます。
記録を残す
- 元の記録表の画像と、スキャンした日時・現場
- Document AI が返した JSON の全文
- Claude API の出力(列の対応づけと
unmapped) - 照合に使ったそのときの規格値の表の行
- 行ごとの印と、人が値を直した記録(直す前と後、理由、確かめた人)
outの連絡を現場に出した日時と、現場からの返事・処置
4つ目で「そのときの規格値」を残すのは、表が後から直るためです。 配合計画書の変更で指定値が変わると、過去の判定がどの値で行われたかが分からなくなります。
5つ目は、品質記録としての説明の材料になります。 台帳の値が記録表の字と違う場合、誰がいつ、なぜそう読んだのかを後から示せるようにしておきます。
04実装レベルの3段階
最小構成では枚数がさばけません。 確かめるための段階です。 半自動化で、1枚15分が9分程度になります。 打ち直しは無くなりますが、配合計画書を開いて見比べる②の4分と、確認依頼の③が残ります。本格構成で4分になり、この段階が本記事の想定です。 差が大きいのは、規格値の表を一度作れば、配合計画書を開く作業が毎回なくなるからです。 段階を飛ばさないでください。 半自動化を1か月回すと、unmapped の見出しと recheck の多い現場が分かり、そこを直してから照合を足すほうが空振りが減ります。
05工数削減シミュレーション
導入後 240件 × 4分 ÷ 60 = 16 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 土木・建築の現場を同時に十数か所以上持ち、荷卸し地点での受入検査を紙の記録表に手書きしている建設会社。本社や支店の品質管理の担当が、現場から送られてくる記録表のスキャンを見ながら品質管理台帳のスプレッドシートに打ち直し、配合計画書の指定値と1行ずつ見比べている場合。規格を外れた値や記入漏れに気づくのが、打設から何日も後になっている場合。
- 現場が数か所で、受入検査の記録表が月に数十枚しか無い場合。受入検査の値をすでにタブレットの入力アプリで記録している場合。打設中のその場で合否を決める判断そのもの(この構成は記録が届いた後の確認で、現場の受入れの可否は現場の担当者と監理者が決める)。なお、規格値の決め方と、外れたときの処置は工事の仕様書と発注者・監理者との取り決めによるもので、この構成では代替できません。
07最小構成で試す方法
- 先月の記録表から20枚を選ぶ(うち数枚は、小数点がかすれたものや空欄のあるものを入れる)
- Google Cloud のコンソールで Form Parser のプロセッサを作り、20枚を1枚ずつ読ませる
- 返ってきた表を、手元の生成AIの画面に貼り、「台帳の列に対応づけ、値は書かれたとおりに写してください。直さないでください」と指示する
- 出てきた値を、台帳に打ち込まれている値と1つずつ突き合わせる
- 読み違えた値が、ありえる範囲の確認で拾えるかを表計算で確かめる
20枚は必ずやってください。 ワークフローを組む前に、「この記録表の書式で表として読めるのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 表として読め、台帳の値と合う | Apps Script でつなぐ段に進む |
| 小数点の読み違いが出るが、範囲の確認で拾える | 構成は有効。 範囲の表を作り込む |
| 表がばらばらに崩れる | 書式の見直しが先。 見出しの段と結合セルを直す |
3行目が出ても失敗ではありません。 会社の記録表を1つに決めてから、同じ20枚の値を新しい用紙に書き写して試し直してください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 小数点の読み違いが「外れ」として出る | ありえる範囲の確認を先に通す。 範囲外は recheck |
| 生成AIが値を直して写す | 例を挙げて禁じる。直した値が入っていないかを、OCRの文字列と突き合わせて検知する |
| 空欄が前の行の値で埋まる | 埋めることを禁じ、空欄は missing |
| 2段の見出しで表が崩れる | 見出しは1段、セルの結合をなくす |
| 配合の記号の取り違えで外れに見える | out は配合を確かめてから現場へ連絡する |
| 規格値の表に配合が無い | 「規格値なし」で止める。表の整備を先に |
| 外れの通知が多すぎて読まれない | 現場への通知は out だけにする |
| 温度の管理範囲を決めていない | 工事ごとに仕様書や施工計画書で決めた値を入れる |
| 強度の結果まで同じ流れで扱おうとする | 対象外。 供試体番号だけを持ち、強度の報告とつなぐ |
上の2行が、この構成の失敗のほとんどです。 直すのは人だけで、直した記録が残るようにしておけば、運用に乗ります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 工事名と工事コード、打設日、配合、試験の値、運搬車の車番、そして記録者の氏名です。
- 処理する場所を決めておく … Document AI に日本のリージョンはありません。
us・euかシンガポールなどから選びます。発注者との契約で工事情報の取扱いに条件がある工事は、導入前に確かめます - 品質記録の原本を決める … 記録表の紙、スキャンした画像、台帳のどれを原本とするかを先に決めます。この構成は台帳を作る手伝いで、紙の記録を捨てる理由にはなりません
- AIに値を直させない … 第7章のとおり、読み違いの疑いは規則で拾い、直すのは人です。品質記録の値が誰の判断で変わったのかを、後から説明できる状態を保ちます
- この構成は受入れの可否を決めない … 荷卸し地点での受入れの判断は、現場の担当者と監理者が行います。この構成が出すのは、記録が届いた後の確認の材料です
- 外れの扱いは工事の取り決めに従う … 処置と発注者・監理者への報告は仕様書と取り決めによります。自動の通知を報告の代わりにしないでください
誤りが起きた場合のリスクは、外れを見落として台帳に載せることと、外れていないものを外れとして現場に問い合わせることの2つです。 前者は生成AIが値を直すと起き、後者は読み違いを照合に回すと起きます。どちらも「読む」と「判定する」の間で起きるので、そこを規則で守ります。
10まず何から始めるか
1週目:記録表の書式を1つに決める
いま使われている記録表を集め、見出しは1段、1列に1項目、上部に工事コードと配合の記号の欄を持つ書式に決めます。生コン工場の用紙を使っている現場には、次の打設から切り替えてもらいます。
2週目:20枚で試す
先月の記録表から20枚を選び、Form Parser で読ませて、台帳の値と突き合わせます。小数点の読み違いがどれくらい出て、ありえる範囲の確認で拾えるかを最優先で見ます。
3週目:規格値の表を作る
打設の多い上位10現場から、配合ごとの指定値・許容差・上限・温度の管理範囲を表に書き出します。特記仕様書と配合計画書で確かめ、現場の担当者にも見てもらいます。
4週目:フォルダから確認待ちのシートまでをつなぐ
Apps Script で現場のフォルダを見に行き、Document AI と Claude API を呼んで、確認待ちのシートに書き出すところまで作ります。この時点では照合をせず、読み取りと列の対応づけだけを見ます。
2か月目: ありえる範囲の確認と規格値の表との照合を足し、印を付けます。recheck と out の件数を毎週数えます。3か月目以降: out の現場への通知を足し、1枚15分が何分になったかを実測します。unmapped と recheck の多い現場の書式とスキャンの設定を直した時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 購入者が荷卸し地点で、強度・スランプ・空気量・塩化物含有量について受入れ検査を行うこと。スランプの許容差(2.5cmで±1、5及び6.5cmで±1.5、8〜18cmで±2.5、21cmで±1.5)、空気量4.5%(軽量5.0%)と許容差±1.5%、塩化物イオン量0.30kg/m³以下(承認で0.60kg/m³以下)。JIS A 5308:2009 を引いていること(原文のPDFを取得して確認) | 農林水産省: 土木工事施工管理基準の手引き 第5章 品質管理 | 2026-10-13 |
Form Parser がキーと値のペア、チェックボックス、表を抽出し、日本語(ja)が手書きに対応する言語として示されていること(原文を取得して確認) | Google Cloud: Processor list | 2026-10-13 |
| 値の入っていないキーと値のペアを確実には読み取れないこと。表はセルが行や列にまたがらない単純なものが対象であること | Google Cloud: Form Parser | 2026-10-13 |
text が文字の source of truth で、ほかの要素は textAnchor で指すこと。formFields(fieldName・fieldValue)と tables(headerRows・bodyRows)、layout の信頼度 | Google Cloud: Handle the processing response | 2026-10-13 |
| オンライン処理のファイルが40MBまで、Form Parser のオンライン処理が15ページまでであること | Google Cloud: Document AI quotas and limits | 2026-10-13 |
| スキャンは最低200dpiが望ましく、300dpi以上が一般に最もよいこと | Google Cloud: Supported files | 2026-10-13 |
POST https://documentai.googleapis.com/v1/{name}:process に rawDocument を渡すこと。スコープが cloud-platform であること | Google Cloud: processors.process | 2026-10-13 |
マルチリージョンが us と eu、単一リージョンにシンガポールなどがあり、日本のリージョンが一覧に無いこと | Google Cloud: Regional and multi-regional support | 2026-10-13 |
output_config.format に json_schema を渡すこと。additionalProperties: false が必要なこと。数値の制約(minimum・maximum など)が使えないこと。max_tokens で切れた出力がスキーマに合わないことがあること | Claude API: Structured outputs | 2026-10-13 |
| 時間主導型トリガーが1分ごとから月1回まで設定でき、時刻がわずかにずれることがあること。インストール型トリガーの一覧にドライブのフォルダへのファイルの追加を起点とするものが無いこと | Apps Script: Installable triggers | 2026-10-13 |
getOAuthToken() が実行ユーザーの OAuth 2.0 のアクセストークンを返し、時間がたつと切れること | Apps Script: Class ScriptApp | 2026-10-13 |
| スクリプトの実行時間が1回6分までであること | Apps Script: Quotas | 2026-10-13 |
規格値の決め方と、規格を外れたときの処置は、工事の仕様書と発注者・監理者との取り決めに従ってください。 本記事は各製品と農林水産省の手引で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1370)についてのご相談はこちらから。
