地盤調査の会社が手書きのスクリューウエイト貫入試験の記録表を読み取り、測点ごとの集計表と報告書の数表の下書きを作る
現場で手書きするスクリューウエイト貫入試験(SWS試験)の記録表を読み取り、荷重・半回転数・貫入深さ・貫入の状況を測点ごとの集計表にそろえます。記録の矛盾を拾ったうえで、報告書の数表の下書きを作ります。
- 生成AI
- Azure OpenAI Service/Claude/Gemini
- AIサービス
- Azure AI/Google Document AI
- 連携・自動化
- Google Apps Script/Python
- 対象業界
- 不動産/建設
- 対象部門
- 品質管理/営業
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- 人手が足りない/入力作業が多い/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/品質標準化/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 調査員と協力会社が、現場で測点ごとの記録表を書き、撮影またはスキャンしてメールで送る
- 報告書の担当が記録表を開き、案件の台帳から現場と測点を確かめる
- 記録表の表を、1行ずつ表計算の集計のシートに打ち込む
- 貫入量と1mあたりの半回転数を表計算の式で出し、記録表に書かれた値と見比べる
- 無回転で沈下した層(自沈層)の深さの範囲を拾い、メモする
- 集計のシートから報告書の様式の数表に値を貼り、体裁を整える
- 品質の確認の担当が、記録表と数表を見比べて確かめ、技術者が考察と判定を書く
- 人調査員と協力会社が記録表を撮影またはスキャンし、決まった共有フォルダに入れる(ファイル名に案件番号と測点番号を付ける)
- 自動1時間ごとにスクリプトが新しいファイルを拾い、形式・寸法・ページ数を確かめる
- 自動Azure AI Document Intelligence のカスタム ニューラル モデルが、記録表の見出しの項目と表を行ごとに返す(表・行・セルの信頼度付き)
- 自動生成AIが、貫入の状況の手書きの記事を決まった区分に書き分ける(原文も残す)
- 自動スクリプトが荷重の単位をそろえ、貫入量と1mあたりの半回転数を計算し、行のつながりの矛盾を拾う
- 自動測点ごとの集計表と、報告書の様式に合わせた数表の下書きを作る
- 人報告書の担当が、矛盾と低い信頼度の印が付いた行だけを記録表の画像と見比べて直す
- 人品質の確認の担当が数表の下書きを確かめ、技術者が考察と判定を書く
各工程の詳しい説明を読む
- 調査員と協力会社が、現場で測点ごとの記録表を書き、撮影またはスキャンしてメールで送る
- 報告書の担当が記録表を開き、案件の台帳から現場と測点を確かめる
- 記録表の表を、1行ずつ表計算の集計のシートに打ち込む
- 貫入量と1mあたりの半回転数を表計算の式で出し、記録表に書かれた値と見比べる
- 無回転で沈下した層(自沈層)の深さの範囲を拾い、メモする
- 集計のシートから報告書の様式の数表に値を貼り、体裁を整える
- 品質の確認の担当が、記録表と数表を見比べて確かめ、技術者が考察と判定を書く
(a)打ち込みが600枚分ある。 1枚の記録表は深さ0.25mごとの行が十数行から数十行あり、1行に5〜6個の値があります。 600枚を打ち込むと、それだけで月の工数の半分近くになります。
(b)打ち間違いが数表まで残る。 「0.75」を「0.57」、「1.00」を「10.0」と打つ誤りは、表計算の式では見つかりません。値として不自然でなければ、そのまま数表に載ります。 7番目の確認で見つかればよいのですが、確認の担当も記録表と数表を1行ずつ見比べるしかありません。
(c)現場の書き間違いと区別がつかない。 記録表そのものが誤っていることもあります。深さの欄が前の行と同じ、荷重が満載でないのに半回転数が書かれている、といった記録を、打ち込む側はそのまま写します。 誤りに気づくのは、数表の折れ線がおかしいと技術者が感じたときです。
(d)様式ごとに読み方が違う。 協力会社の記録表は、貫入量を書いている会社と書いていない会社があり、荷重の単位も N と kN が混ざります。担当ごとに読み替え方が少しずつ違い、同じ記録表から違う数表ができることがあります。
- 【人】 調査員と協力会社が記録表を撮影またはスキャンし、決まった共有フォルダに入れる(ファイル名に案件番号と測点番号を付ける)
- 【自動】 1時間ごとにスクリプトが新しいファイルを拾い、形式・寸法・ページ数を確かめる
- 【自動】 Azure AI Document Intelligence のカスタム ニューラル モデルが、記録表の見出しの項目と表を行ごとに返す(表・行・セルの信頼度付き)
- 【自動】 生成AIが、貫入の状況の手書きの記事を決まった区分に書き分ける(原文も残す)
- 【自動】 スクリプトが荷重の単位をそろえ、貫入量と1mあたりの半回転数を計算し、行のつながりの矛盾を拾う
- 【自動】 測点ごとの集計表と、報告書の様式に合わせた数表の下書きを作る
- 【人】 報告書の担当が、矛盾と低い信頼度の印が付いた行だけを記録表の画像と見比べて直す
- 【人】 品質の確認の担当が数表の下書きを確かめ、技術者が考察と判定を書く
7番目が、この構成の分かれ目です。人が見るのは、印が付いた行だけです。 600枚の全部の行を見比べると、80.0時間はあまり減りません。印の付かない行は、測点ごとの折れ線を目で流し見て終わりにします。
8番目は、いまと変わりません。 数表は報告書の材料で、地盤をどう評価するかは技術者が記録と現場の状況を見て決めます。
02今回想定するシステム構成
SWS試験の記録表(自社3様式+協力会社の様式) │ 撮影またはスキャン。ファイル名に案件番号・測点番号 ▼【トリガー】1時間ごと、共有フォルダの新しいファイル Python スクリプト(事務所のサーバーで実行) ├──▶ 形式・寸法・ページ数の確認、案件の台帳との照合 ▼ Azure AI Document Intelligence(カスタム ニューラル モデル) │ 見出しの項目(現場名・測点・日付・試験者・試験機) │ 表(荷重・半回転数・貫入深さ・貫入量・記事・推定土質)+表・行・セルの信頼度 ▼ Claude API ── 貫入の状況の記事を区分に書き分ける(原文を残す) ▼ Python ── 単位の統一/貫入量と1mあたりの半回転数の計算/行のつながりの矛盾の検出 ▼ 測点ごとの集計表 + 報告書の数表の下書き ▼ 【人】印の付いた行を直す → 品質の確認 → 技術者が考察と判定
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Azure AI Document Intelligence(カスタム ニューラル モデル) | Google Document AI |
| 生成AI | Claude API(貫入の状況の記事の書き分け) | Azure OpenAI、Gemini API |
| 連携 | Python(ファイルの受け取り、APIの呼び出し、計算と矛盾の検出、表の書き出し) | Google Apps Script |
| 保管 | 社内のファイルサーバー(記録表の画像、読み取りの結果、集計表) | クラウドのストレージ |
報告書の様式と案件の台帳は、新しく足すものではありません。 数表の下書きは報告書の様式の数表と同じ列の並びで書き出し、担当が貼り付けて使います。報告書のファイルそのものには書き込みません。
土台になるのは、Azure AI Document Intelligence のカスタム ニューラル モデルです。 文書の配置と言葉の特徴を組み合わせて、ラベルを付けた項目を取り出す深層学習のモデルで、同じ情報を持つが見た目の違う様式にも使えるとされています。手書きの対応言語に日本語(ja)が含まれます。
決め手は、表を「表形式のフィールド」として学習させられることです。 行の数が記録表ごとに変わる表(動的な表)を1つのフィールドとして取り出せ、v4.0(2024-11-30 GA)では表・行・セルのそれぞれに信頼度が付きます。公式のページは、まず表、次に行、最後にセルの順で精度を確かめるよう勧めています。
様式の違いは、1つのモデルで扱います。 カスタム ニューラル モデルは、1つの文書の種類の異なる様式をまとめて学習させるのがよいとされ、様式ごとに少なくとも5枚のラベル付きの見本を入れるよう勧めています。様式の数が15ほどまでなら1つのデータセットにまとめられ、それを超えるなら複数のモデルを作って組み合わせます。5種類の記録表なら、1つのモデルに収まります。
SWS試験の名称と記号も、いまのものにそろえます。 JIS A 1221 は2020年10月26日に改正され、試験の名称が「スウェーデン式サウンディング試験」から「スクリューウエイト貫入試験」に変わりました。日本建築総合試験所の案内では、Wsw は静的貫入最小荷重、Nsw は換算半回転数と定義され、Wsw の値は 50・150・250・500・750・1000N 以外も可とされています。協力会社の古い様式に旧名が残っていても、数表は新しい名称と記号で出します。
03どうやって実装するのか
処理の起点を決める
1時間ごとに、共有フォルダに入った新しいファイルを処理します。 記録表は、調査員が現場を離れるたびに送られてきます。1時間ごとに読めば、夕方には当日の調査の集計表がそろいます。
ファイル名に案件番号と測点番号を付けることを、送る側の決まりにします。 記録表の見出しにも現場名と測点は書かれていますが、手書きの現場名から案件を引くより、ファイル名の番号で引くほうが確実です。 見出しの読み取りの結果は、ファイル名との食い違いを見つけるために使います。
処理が終わったファイルは処理済みのフォルダへ移し、移すのは読み取り・計算・書き出しがすべて成功したときだけにします。 1棟の5測点がそろった時点で、その棟の集計表を「確認待ち」にします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 記録表の画像・PDF | 測点ごとに1枚。見出しと表 | 共有フォルダ |
| 読み取りの結果 | 見出しの項目、表の行とセル、表・行・セルの信頼度 | Azure AI Document Intelligence |
| 案件の台帳 | 案件番号、現場名、測点の数と配置、調査日、担当の調査員・協力会社 | 案件の台帳 |
| 様式の定義 | 様式ごとに、手で書く列と事務所で計算する列、荷重の単位 | 自社で用意する表 |
| 報告書の数表の様式 | 列の並び、深さの刻み、桁の丸め方 | 報告書の様式 |
質を決めるのは、様式の定義です。 協力会社の様式で貫入量の列が無い、荷重が kN で書かれている、といった違いを様式ごとに1行で持ちます。これが無いと、読み取れた値を正しい列に置けません。 第3章の(d)の読み替えのばらつきを、ここで1つの決まりにそろえます。
報告書の数表の様式は、丸め方まで書き出します。 1mあたりの半回転数を整数にするか小数1桁にするか、深さを何桁で書くかは会社の決まりです。決まりがスクリプトに入っていないと、人が出した数表と同じ値になりません。
データの取得方法を決める
読み取りは、学習させたカスタム ニューラル モデルを呼ぶだけです。 学習には、Document Intelligence Studio で記録表の見本にラベルを付けます。
| ラベルを付けるもの | 種類 | 中身 |
|---|---|---|
| 現場名・測点・調査日・天候・試験者・試験機 | 見出しの項目(キーと値) | 案件の台帳との照合に使う |
| 試験の表 | 表形式のフィールド(動的な表) | 列は荷重・半回転数・貫入深さ・貫入量・記事・推定土質 |
| 試験機の種類のチェック | 選択マーク | 手動/半自動の別 |
| 試験者の署名欄 | 署名 | 署名の有無の確認 |
表は「動的な表」として学習させます。 記録表の行の数は、地盤の固さで十数行から数十行まで変わります。公式のページは、行の数が変わる表を含む文書では、学習の見本にも行の数の違う文書を入れるよう勧めています。浅い深さで止まった測点と、深くまで貫入した測点の両方を見本に入れます。
記録表が2ページにわたる場合も、1つの表としてラベルを付けます。 表形式のフィールドは既定でページをまたぐ表に対応しており、1ページで終わる見本と2ページにわたる見本の両方を入れておくのがよいとされています。
学習は、東日本(Japan East)の地域で行えます。 カスタム ニューラル モデルの学習は特定の地域でしか行えず、その一覧に Japan East が含まれています。v4.0 では月10時間の無料の学習時間があり、 学習の料金は実際の時間で、1回の学習は最低30分として計算されます。
AIへ渡す前に整形する
- 形式の確認 … PDFまたは画像(JPEG/JPG、PNG、BMP、TIFF、HEIF)であることを確かめます
- 大きさとページ数の確認 … 有料(S0)のレベルで500MB、PDFとTIFFは2,000ページまで(無料のレベルは最初の2ページ)です
- 画像の寸法と文字の大きさ … 50×50〜10,000×10,000ピクセル、文字の高さは1024×768の画像で12ピクセルが下限です。現場で斜めから撮った記録表は、細い数字がこの下限を割ります
- ファイル名の確認 … 案件番号と測点番号が決まりどおりかを確かめ、台帳に無い番号は止めます
- 様式の判定 … 見出しの読み取りから様式を決め、様式の定義の行を選びます
- 重複の検知 … 同じ案件・同じ測点の記録表が既にあれば、差し替えか二重送信かを人に聞きます
3番目は、撮り方の決まりで防ぎます。 記録表を板の上に置き、真上から1枚ずつ撮る、影が数字に掛からないようにする。協力会社にも同じ撮り方を頼み、撮り方の見本の写真を1枚渡しておきます。
AIに処理させる
読み取りの大半は、学習させたモデルが行います。 生成AIにさせるのは、貫入の状況の手書きの記事を、決まった区分に書き分けることだけです。 数値の列は生成AIに渡しません。
| 書き分けるもの | 区分の例 | 判断できないときの扱い |
|---|---|---|
| 貫入の状況の記事 | 無回転で沈下(自沈)/回転して貫入/打止め・貫入不能/音や感触の記述(ジャリジャリ・ガリガリ など) | 区分に当てはまらなければ other とし、原文を残す |
| 推定の土質の記入 | 書かれた土質の名前(粘性土・砂質土・礫混じり など) | 書かれた文字のまま。区分に寄せない |
| 記事に書かれた深さ | 「1.25mでストン」のように記事に深さがあれば、その深さ | 表の深さの列と食い違えば depth_conflict |
推定の土質は、書かれたとおりに写すだけにします。 生成AIは、半回転数の多さや記事の音の記述から「砂質土だろう」と推せてしまいます。推した土質が数表に載ると、調査員が見ていない判断が報告書に入ります。
数値の列を生成AIに渡さないのは、数値はモデルの読み取りとスクリプトの計算で足りるからです。 生成AIを通すと、桁を直す、それらしい値にそろえる、といった手が入りうるので、数値は読み取った文字のままスクリプトに渡します。
スクリプトで拾う矛盾は次のとおりです。
| 矛盾 | 拾い方 | 印 |
|---|---|---|
| 深さが前の行より浅い・同じ | 行の順に貫入深さを比べる | depth_order |
| 荷重が満載でないのに半回転数がある | 自社の試験の手順に合わない組み合わせとして拾う | load_rotation_mismatch |
| 荷重の値が 50・150・250・500・750・1000N のどれでもない | 改正後は他の値も可とされるので、誤りとせず確認を求める | wsw_nonstandard |
| 記録表に書かれた1mあたりの半回転数と計算の値が違う | スクリプトの計算と見比べる | nsw_mismatch |
| セルの信頼度が低い | 決めたしきい値より低いセル | low_confidence |
3行目の扱いがこの題材の細かいところです。 Wsw の値は改正で標準の6段階以外も可とされたので、標準でない値を誤りと決めつけると、正しい記録を差し戻すことになります。印は「確認してほしい」という意味に留めます。
指示内容を固定する
あなたは地盤調査の会社で、SWS試験の記録表の「記事」欄を整理する係です。
渡すのは、1枚の記録表の行ごとの記事欄と推定土質欄の文字(OCR の読み取り結果)です。
書かれていることだけを使ってください。推測で埋めないでください。
【やること】
行ごとに、記事欄の文字を次の区分のどれかに当ててください。
- self_sinking ....... 無回転で沈下した(「自沈」「ストン」「スルスル」など)
- rotating ........... 回転して貫入した
- refusal ............ 打止め、貫入不能、これ以上進まない
- sound_texture ...... 音や感触の記述(「ジャリジャリ」「ガリガリ」「シャリシャリ」など)
- other .............. 上のどれにも当たらない
- blank .............. 記事欄が空欄
1つの記事に複数の内容があれば、当てはまる区分をすべて挙げてください。
【厳守事項】
- 記事欄の原文を original にそのまま写してください。言い換えないでください。
- 推定土質欄は、書かれた文字を soil_as_written にそのまま写してください。
記事の内容や数値から土質を推さないでください。空欄なら空のままにしてください。
- 記事に深さが書かれていれば(例「1.25mでストン」)、その文字を depth_in_note に写してください。
表の深さの列と食い違っていても、どちらかに直さないでください。
- 荷重・半回転数・深さの数値を作ったり直したりしないでください。
- 地盤の良し悪し、自沈層が問題かどうか、改良が要るかを書かないでください。
- 区分に迷ったら other にして、理由を reason に短く書いてください。
【この会社の記事の言い換えの一覧】{note_dictionary}
【行ごとの記事欄と推定土質欄】{rows}
「土質を推さない」をはっきり書かないと、推します。 「ジャリジャリ」とあれば礫混じりと書き足すのは自然な流れで、それが調査員の見立てとして数表に載ってしまいます。 原文の写しと区分だけを返させます。
「自沈層が問題かどうかを書かない」も同じです。 区分の self_sinking は、記録に「無回転で沈下」と書かれているという事実だけを表します。どの深さの自沈がどれほど重いかは、技術者が判断します。
出力形式を固定する
次の形の JSON で受け取ります。 Claude API の構造化出力で、output_config.format に type: "json_schema" と schema を渡します。
{
"survey_point": { "case_no": "", "point_no": "", "form_type": "" },
"rows": [
{
"row_index": 0,
"original": "ストン",
"categories": ["self_sinking"],
"soil_as_written": "",
"depth_in_note": "",
"reason": ""
}
]
}
1つ目の理由は、行の番号で読み取りの結果とつなげられることです。 row_index はモデルが返した表の行の番号と同じにし、スクリプトは数値の行と記事の行を番号で合わせます。 生成AIに数値を渡さなくても、同じ行の記録として扱えます。
2つ目は、スキーマの制約に頼りすぎない設計にしてあることです。 公式のページによると、Claude の構造化出力では object に additionalProperties: false を付け、数値の minimum・maximum や文字列の minLength・maxLength はスキーマとしては送れません(SDK の変換で説明文に移されます)。配列の minItems は 0 と 1 だけです。値の範囲の確かめは、すべてスクリプトの側で行います。
3つ目は、categories を配列にして、1つの記事に複数の内容を持たせられることです。 「ジャリジャリ、1.50mで打止め」のような記事を、sound_texture と refusal の両方として残せます。
スクリプトが作る集計表の1行は、次の形です。
| 列 | 中身 | 出どころ |
|---|---|---|
| 深さ | 貫入深さ(m) | 読み取り |
| 荷重 Wsw | N にそろえた値 | 読み取り+単位の統一 |
| 半回転数 | その行の半回転数 | 読み取り |
| 貫入量 | 前の行との深さの差 | 計算 |
| 換算半回転数 Nsw | 1mあたりに換算した半回転数 | 計算(自社の丸め方) |
| 記事の区分と原文 | categories と original | 生成AI |
| 推定土質 | 書かれたとおり | 生成AI(写しのみ) |
| 印 | 矛盾と低い信頼度の印 | スクリプト |
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 共有フォルダ | スクリプトが読む | 新しい記録表を拾う |
| Azure AI Document Intelligence | API の呼び出し | 見出しの項目と表、表・行・セルの信頼度を返す |
| Claude API | API の呼び出し | 記事を区分に書き分ける |
| 案件の台帳 | 表の読み取り | 案件番号・測点の数の照合 |
| 集計表・数表の下書き | 確認待ちのフォルダに表計算のファイルで書き出す | 担当が直して報告書へ貼る |
報告書のファイルには書き込みません。 下書きは報告書の数表と同じ列の並びのファイルで出し、貼り付けるのは担当です。 報告書は依頼元へ出す書類で、数字1つの誤りが基礎の仕様の判断に関わるためです。
案件の台帳も読むだけです。 測点の数が台帳と合わない(5測点の案件に4枚しか届かない)ときは、その棟の集計表を「確認待ち」にせず、足りない測点を担当に知らせます。
人が確認する
報告書の担当が開くのは、印の付いた行と、印の付いた行を含む測点だけです。
depth_orderとload_rotation_mismatchを先に見る … 記録表の画像を開き、読み取りの誤りか現場の書き間違いかを決めます。現場の書き間違いなら、調査員に確かめてから直しますlow_confidenceのセルを見る … かすれた数字、桁の点の位置を画像と見比べますnsw_mismatchとwsw_nonstandardを見る … 計算の値と記録の値のどちらが正しいかを決めます- 直したら記録する … どの行の、どの値を、何から何へ、誰の確認で直したかを残します
印の付かない行は、測点ごとの深さと換算半回転数の折れ線を流し見るだけにします。 5測点の折れ線を並べると、1測点だけ形が違うものが目に付きます。 地盤の違いか記録の誤りかを、そこで画像に戻って確かめます。
品質の確認の担当は、数表の下書きと記録表を、印の付いた行を中心に見比べます。 全行の見比べは、導入から2か月ほど続けて、印の付かない行に誤りが無いことを確かめてからやめます。
目標は、600枚をならして1枚3分です。 印の付く測点が3割前後という想定です。それより多い月は、撮り方が崩れているか、新しい協力会社の様式が見本に入っていません。
例外に対処する
| 起きること | 対応 |
|---|---|
| ファイル名に案件番号・測点番号が無い | 処理を止め、送った人に付け直しを頼む |
| 見出しの現場名と案件の台帳が食い違う | ファイル名を正として処理し、食い違いを印にして人に見せる |
| 学習していない様式の記録表 | 表の信頼度が低く出る。人が打ち込み、見本を5枚集めて学習し直す |
| 表が2ページにわたる | 1つの表として返る。行の番号が続いているかを確かめる |
| 測点の数が台帳と合わない | 足りない測点を担当に知らせ、棟の集計表を止める |
| 同じ測点の記録表が2枚届く | 差し替えか二重送信かを人に聞く。古いほうを消さない |
| 記事が区分に当てはまらない | other として原文を残し、言い換えの一覧に足すかを月に1回見直す |
| 生成AIが応答しない | 記事の区分を空のまま集計表を作り、原文だけを載せる |
| 読み取りが応答しない | ファイルを元のフォルダに残し、次の回に再処理する |
3行目が、運用で最も手間のかかる例外です。 協力会社が様式を変えると、そこから先の記録表の信頼度がまとめて下がります。新しい様式の記録表を5枚集めたら学習し直すことを、協力会社との決まりにしておきます。学習の回数には、3.x の版では月20回までという上限があったことも頭に置いておきます。
記録を残す
- 元の記録表の画像・PDF と、受け取った日時・送った人
- 読み取りの結果の JSON の全文(表・行・セルの信頼度を含む)と、そのとき使ったモデルの ID
- 生成AIの書き分けの結果と、そのとき使った言い換えの一覧の版
- 集計表・数表の下書きと、付いた印
- 人が直した記録 … どの行の、どの値を、何から何へ、誰の確認で直したか
- 依頼元へ出した報告書の版と、その元になった集計表の版
モデルの ID を残すのは、学習し直すと同じ記録表でも結果が変わるためです。 どのモデルで読んだかが残っていないと、後で報告書の数字を問われたときに、なぜその値になったかを説明できません。
最後の行は、報告書を出したあとの問い合わせに備えるものです。 依頼元から数値の確認を求められたとき、記録表・読み取り・直した記録・報告書の版を1本の線でたどれるようにしておきます。
04実装レベルの3段階
本記事の想定は半自動化です。 1枚8分が3分になる見込みは、この段階で置いています。打ち込みと計算の見比べが無くなり、残るのは印の付いた行の確認です。 本格構成は、手書きの分が安定してから広げます。 機械ごとにデータのファイルの形が違えば、取り込みのスクリプトが機械の数だけ要ります。
05工数削減シミュレーション
導入後 600件 × 3分 ÷ 60 = 30 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 戸建て住宅の地盤調査を月に百件前後受け、1棟あたり数か所の測点でSWS試験を行う地盤調査の会社。手動・半自動の試験機や協力会社の調査員の分で、記録表が紙の手書きのまま事務所に届き、報告書を作る担当が表計算に打ち直している場合。協力会社ごとに記録表の様式が少しずつ違う場合。報告書の数表の様式が社内で決まっている場合。
- 全自動の試験機だけを使っていて、測定の値がデータのファイルで取り出せる場合(読み取りは要らず、ファイルを報告書の様式に流し込むだけで足ります)。調査が月に数件で、打ち直しが負担になっていない場合。なお、地盤の許容応力度の算定、改良の要否の判定、基礎の仕様の提案はこの構成では行いません。
07最小構成で試す方法
- 先月の記録表から、自社の様式と協力会社の様式を混ぜて30枚選ぶ(うち数枚は、斜めに撮ったものや、記録の書き直しがあるものを入れる)
- その30枚について、担当が打ち込んだ集計のシートを取り出しておく
- Document Intelligence Studio で、まず学習の要らないレイアウトモデルにかけ、表がどう返るかを見る
- 様式ごとに5枚ずつラベルを付けてカスタム ニューラル モデルを学習させ、残りの記録表を読ませる
- 読み取った値を、担当が打ち込んだ集計のシートと1セルずつ突き合わせる
3番目を飛ばさないでください。 レイアウトモデルで表がきれいに返るなら、学習の前に、どの列で読み取りがつまずくかが分かります。
| 出てきた内容 | 判断 |
|---|---|
| 打ち込みと同じ値が大半のセルで出た | スクリプトの計算と矛盾の検出に進む |
| 小数点の位置を取り違えるセルが多い | 記録表の数字の書き方(点を大きく書く)と撮り方で直る |
| 協力会社の1つの様式だけ信頼度が低い | その様式の見本を足して学習し直す |
| 打ち込みの側に誤りが見つかった | 構成の効果そのもの。 誤りの型を記録しておく |
4行目は珍しくありません。 突き合わせで食い違ったセルを画像で確かめると、読み取りではなく、これまでの打ち込みのほうが誤っていたということが起きます。その型(桁の取り違え、行のずれ)を記録しておくと、矛盾の検出の決まりを足す材料になります。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 小数点の位置を取り違える(0.75→7.5) | 深さの順と貫入量の計算で拾う。記録表の点を大きく書いてもらう |
| 生成AIが記事から土質を推して書き足す | 写しだけにさせる。 推した土質を数表に載せない |
| 生成AIに数値の列を渡して桁を直される | 数値は渡さない。読み取りの文字のままスクリプトへ |
| 標準でない荷重の値を誤りとして差し戻す | 改正で他の値も可。印は確認の依頼に留める |
| 行の数の少ない見本だけで学習する | 浅い測点と深い測点の両方を見本に入れる |
| 2ページの記録表で表が切れる | 1つの表としてラベルを付け、両方の見本を入れる |
| 協力会社が様式を変える | 5枚集めて学習し直すことを決まりにする |
| 丸め方が人の数表と違う | 報告書の丸め方をスクリプトに入れる |
| ファイル名の番号が抜ける | 送る側の決まりにし、無ければ止める |
| 数表の下書きを報告書に自動で入れる | 貼るのは担当。 報告書へは書き込まない |
上の3行が、この構成の失敗のほとんどです。 どれも「それらしい値にそろえる」動きで、誤りを見つけるための構成が、誤りを作る側に回ります。 数値は生成AIを通さず、生成AIには写しと区分だけをさせてください。
4行目は、規格の改正を知らないと起きます。 2020年の改正で Wsw の値は標準の6段階以外も可とされました。古い決まりのまま「標準でない値は誤り」とすると、正しい記録を何度も差し戻すことになります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 調査の現場の所在地、施主や依頼元の名前、調査員の名前、試験の値です。現場の所在地と施主の名前は、個人を特定できる情報です。
- 生成AIに渡すのは記事欄の文字だけにする … 見出しの現場名・施主名・所在地は生成AIに渡しません。記事の書き分けに要るのは、記事欄と推定土質欄だけです
- 読み取りのリソースの地域を決めておく … Azure のリソースは作るときに地域を選び、カスタム ニューラル モデルの学習は Japan East を含む特定の地域で行えます。記録表の画像がどこで処理されるかを、導入の前に確かめてください
- この構成は地盤の評価を代替しません … 数表は記録表の値と換算の値だけです。許容応力度の算定、改良の要否、基礎の仕様は、技術者が記録と現場の状況を見て判断します
- 数表の下書きを依頼元へ直接出さない … 報告書へ貼るのも、出すのも人です。数字1つの誤りが、基礎の仕様の判断に関わります
- 協力会社の記録表の扱いを取り決めておく … 協力会社が書いた記録表を自社のクラウドで読み取ることを、契約か覚書で取り決めておきます
- 元の記録表を原本として残す … 読み取りの結果は写しです。記録表の画像を原本とし、報告書と同じ期間保管します
誤りが起きた場合のリスクは、誤った値が報告書に載ることと、正しい記録を誤りとして差し戻すことの2つです。 前者は数値を生成AIに通さないことと印の確認で、後者は Wsw の扱いのように印を確認の依頼に留めることで防ぎます。どちらも、判断を人に残す設計で守ります。
10まず何から始めるか
1週目:様式の定義と丸め方の決まりを書き出す
自社と協力会社の5種類の記録表について、手で書く列・事務所で計算する列・荷重の単位を1行ずつ書き出します。あわせて、報告書の数表の列の並びと丸め方を書き出します。ここで担当ごとの読み替えのばらつきが見つかれば、それをまずそろえます。
2週目:30枚で試す
様式を混ぜた30枚を、Studio のレイアウトモデルにかけ、打ち込んだ集計のシートと突き合わせます。小数点の取り違えと行のずれがどこで起きるかを見ます。
3週目:ラベルを付けて学習させる
様式ごとに5枚以上、行の数の違う見本と2ページの見本を混ぜてラベルを付け、カスタム ニューラル モデルを学習させます。表・行・セルの信頼度の出方を、様式ごとに見ます。
4週目:計算と矛盾の検出をつなぐ
スクリプトで共有フォルダを読み、モデルと生成AIを呼び、計算と矛盾の検出をして、集計表を確認待ちのフォルダに書き出すところまで作ります。この時点では数表の下書きを出さず、集計表の印の出方だけを見ます。
2か月目: 報告書の数表の下書きを出し、品質の確認の担当が全行を見比べます。3か月目以降: 印の付かない行に誤りが無いことを確かめてから全行の見比べをやめ、1枚8分が何分になったかを実測します。協力会社の様式が変わっても5枚で学習し直す運用が回り、印の付く測点の割合が安定した時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
カスタム ニューラル モデルの手書きの対応言語に日本語(ja)が含まれること | Microsoft Learn: Language support for custom models | 2026-10-29 |
| カスタム ニューラル モデルが配置と言葉の特徴を組み合わせて項目を取り出し、見た目の違う様式に使えること。v4.0 でキーと値・選択マーク・表形式のフィールド・署名に対応し、表・行・セルの信頼度が付くこと。表形式のフィールドが既定でページをまたぐ表に対応すること。様式ごとに5枚以上のラベル付きの見本を勧めていること。学習が Japan East を含む特定の地域で行えること。入力が PDF と画像(JPEG/JPG、PNG、BMP、TIFF、HEIF)で、PDF と TIFF は2,000ページまで(無料は最初の2ページ)、大きさが S0 で500MB・F0 で4MB、画像が50×50〜10,000×10,000ピクセル、文字の高さの下限が1024×768で12ピクセルであること。v4.0 で月10時間の無料の学習時間があり、学習の料金は1回最低30分で計算されること。3.x の版で学習が月20回までであること | Microsoft Learn: Custom neural document model | 2026-10-29 |
| カスタム モデルの学習に5枚以上のラベル付きの文書が要ること。様式の違いが15ほどまでなら1つのデータセットにまとめ、超えるなら複数のモデルを組み合わせること。行の数が変わる表では、見本にも行の数の違う文書を入れること。ページをまたぐ表は1つの表としてラベルを付け、1ページの見本と複数ページの見本を入れること | Microsoft Learn: Best practices for labeling custom models | 2026-10-29 |
構造化出力が output_config.format に json_schema を渡して使えること。object に additionalProperties: false を付けること。minimum・maximum・minLength・maxLength がスキーマとして送れず SDK が説明文へ移すこと。minItems が 0 と 1 だけであること | Claude Docs: Structured outputs | 2026-10-29 |
| JIS A 1221 が2020年10月26日に改正され、試験の名称がスウェーデン式サウンディング試験からスクリューウエイト貫入試験に変わったこと。Wsw が静的貫入最小荷重、Nsw が換算半回転数と定義されたこと。Wsw の値が 50・150・250・500・750・1000N 以外も可とされたこと | 日本建築総合試験所: JIS A 1221 の改正と性能証明での取り扱いについて(2021年1月) | 2026-10-29 |
地盤の評価、許容応力度の算定、改良の要否は、技術者が記録と現場の状況を見て判断してください。 本記事は公開されている製品の仕様と資料で確認できた範囲だけを扱っています。JIS A 1221 の本文は確認していないため、試験の手順に関わる確かめの決まりは、自社の試験の手順書に合わせて決めてください。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-2239)についてのご相談はこちらから。
