ガラス工事の会社が採寸の手書きのシートを読み取り、ガラスの種類・寸法ごとの発注の明細を作る
職人が現場で書くガラスの採寸のシートを読み取り、窓ごとの品種・厚さ・幅と高さ・枚数・加工を、仕入先の問屋ごと・品種ごとの発注の明細にそろえます。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 連携・自動化
- Google Apps Script/Python
- 対象業界
- その他/不動産/建設
- 対象部門
- 購買
- 対象業務
- データ入力・転記/書類作成
- 主な課題
- 人手が足りない/入力作業が多い/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 職人が現場で採寸し、シートを書く
- 事務所に戻るか、シートを撮って事務所に送る
- 購買の担当がシートを見て、品種ごとにどの問屋に頼むかを決める
- 問屋の発注書のひな形に、品番、幅、高さ、枚数、加工を1行ずつ書き写す
- 複層ガラスは、外側と内側のガラスと空気の層の厚さを、問屋の品番の書き方に直して書く
- 問屋にFAXかメールで送る
- 届いたガラスを、発注書と見比べて受け取る
- 人職人が現場で採寸し、シートを書く(様式は第7章のとおり少し直す)
- 人職人が採寸を終えたらその場でシートを撮り、共有フォルダの受付の場所に保存する
- 自動1時間ごとに Python の処理が動き、受付の場所の新しいシートを Document AI で読み取る
- 自動ガラスの表の行ごとに、幅と高さと枚数の書式、品種ごとの寸法の範囲を規則で確かめる
- 自動生成AIが品種の書き方を品番の一覧の候補に当て、複層ガラスの構成を部分に分ける
- 自動品番から頼む問屋を決め、問屋ごとの発注の明細に行を並べる。確認の要る行には印を付ける
- 人購買の担当が印の付いた行だけを見て、必要なら職人に電話で確かめ、明細を確定する
- 人購買の担当が確定した明細を、問屋の締めまでに送る
- 自動届いたガラスの受け取りのときに、明細の行を受け取り済みにする一覧を作る
各工程の詳しい説明を読む
- 職人が現場で採寸し、シートを書く
- 事務所に戻るか、シートを撮って事務所に送る
- 購買の担当がシートを見て、品種ごとにどの問屋に頼むかを決める
- 問屋の発注書のひな形に、品番、幅、高さ、枚数、加工を1行ずつ書き写す
- 複層ガラスは、外側と内側のガラスと空気の層の厚さを、問屋の品番の書き方に直して書く
- 問屋にFAXかメールで送る
- 届いたガラスを、発注書と見比べて受け取る
(a)書き写しに時間がかかる。 4番と5番は、1枚のシートに窓が10か所あれば10行です。断熱の入れ替えの工事では、1軒で20行を超えることもあります。 問屋ごとに発注書の形が違うので、同じシートの行を2つの発注書に分けて書きます。
(b)寸法を写し違える。 「812」と「821」、「1,183」と「1,138」。写し違いは、届いたガラスを当ててみるまで分かりません。 小さく切られたものは使えず、大きく切られたものは問屋に切り直しを頼むことになります。
(c)品種の書き方がそろわない。 「かすみ」「型4」「チェッカー」は職人によって呼び方が違い、同じ呼び方でも問屋の品番は1つとは限りません。 購買の担当はそのたびに職人に電話をします。
(d)複層ガラスの構成が欠ける。 「ペア」とだけ書かれた行や、空気の層の厚さが無い行があります。サッシの溝に入る厚さの合計が決まっているので、構成が違えば入りません。 購買の担当は、似た窓の前の発注を見て埋めることがあります。
(e)問屋の締めに間に合わない。 職人が戻ってくるのは夕方が多く、午後の締めまでに書き写しが終わらない日があります。 急ぎの割れ替えの仕事ほど、1日の遅れが仮のふさぎの日数として残ります。
- 【人】 職人が現場で採寸し、シートを書く(様式は第7章のとおり少し直す)
- 【人】 職人が採寸を終えたらその場でシートを撮り、共有フォルダの受付の場所に保存する
- 【自動】 1時間ごとに Python の処理が動き、受付の場所の新しいシートを Document AI で読み取る
- 【自動】 ガラスの表の行ごとに、幅と高さと枚数の書式、品種ごとの寸法の範囲を規則で確かめる
- 【自動】 生成AIが品種の書き方を品番の一覧の候補に当て、複層ガラスの構成を部分に分ける
- 【自動】 品番から頼む問屋を決め、問屋ごとの発注の明細に行を並べる。確認の要る行には印を付ける
- 【人】 購買の担当が印の付いた行だけを見て、必要なら職人に電話で確かめ、明細を確定する
- 【人】 購買の担当が確定した明細を、問屋の締めまでに送る
- 【自動】 届いたガラスの受け取りのときに、明細の行を受け取り済みにする一覧を作る
7番目が、この設計の分かれ目です。 購買の担当が見るのは全行ではなく、品番の決まらない行、複層ガラスの構成の欠けた行、寸法の疑わしい行だけです。印の無い行は、読み取った寸法と決まった品番がそのまま明細に入ります。
2番目で、シートがその場で届くようにします。 職人が事務所に戻るのを待たずに読み取りが始まるので、午前の採寸の分は、午後の締めの前に明細になっています。
02今回想定するシステム構成
採寸のシート(A4・1現場1枚。手書きの上の欄とガラスの表) │ 職人が採寸を終えたらスマートフォンで撮る ▼【トリガー】8時〜18時の1時間ごとに Python の処理が動く Python(取り込みの処理) ├──▶ 1枚1ファイル、向き、ピンぼけの確認 ▼ Google Document AI(Form Parser) │ 上の欄のキーと値、ガラスの表の行とセル、急ぎのチェック ▼ Python ── 寸法と枚数の書式、品種ごとの寸法の範囲 ▼ Claude API(構造化出力)── 品種の書き方を品番の候補に当てる、複層ガラスの構成を分ける ▼ Python ── 問屋ごとの発注の明細、購買の担当への確認の一覧 ▼ 【購買の担当が印の付いた行だけ確かめて送る】 ▼ Python ── 受け取りの一覧
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Google Document AI(Form Parser) | Azure AI Document Intelligence(レイアウト モデル)、AWS Textract(英文の書類に限る。日本語のシートには使えない) |
| 生成AI | Claude API(品種の書き方の当て方と複層ガラスの構成の分け方。構造化出力) | OpenAI API、Gemini API |
| 連携 | Python(読み取りの呼び出し、品番の一覧の参照、明細の作成) | Google Apps Script |
| 集計 | Python(問屋ごと・品種ごとの行の並べ替えと枚数の合計) | Google Apps Script |
| 保管 | 社内の共有フォルダ(シートの画像、発注の明細、受け取りの一覧) | Google ドライブ |
品番の一覧と問屋の発注書のひな形は、いま使っているものです。 足すのは2つの列と1つの表です。品番の一覧に「職人がよく書く呼び方」の列と「頼む問屋」の列を足し、品種ごとに問屋が受けられる寸法の範囲の表を作ります。範囲の表は、問屋の資料から購買の担当が写します。
土台は Document AI の Form Parser です。 公式の説明では、Form Parser はキーと値のペア、表、チェックボックスを取り出し、学習済みで追加の学習はできないとされています。公式のプロセッサ一覧では、日本語(ja)は手書きに対応する言語に入っています。シートの上の欄はキーと値のペア、ガラスの表は表、急ぎかどうかはチェックボックスとして読みます。
処理する場所に、日本のリージョンはありません。 Form Parser の対応リージョンは us・eu、シンガポール(asia-southeast1)などです。シートには現場の名前が載り、住まいの割れ替えでは住所が書かれることもあります。住所はシートの上の欄から外し、受付の番号だけを書く様式にすると、 国外で処理する情報を減らせます。
03どうやって実装するのか
処理の起点を決める
朝8時から夕方18時まで、1時間ごとに Python の処理が動きます。 動かす先は事務所のパソコンで、決まった時刻に処理を呼ぶ仕組みで足ります。1日に1回の処理にしないのは、問屋の締めがあるからです。 午前の採寸の分が昼過ぎに明細になれば、その日の締めに間に合います。
シートを撮って置くのは、職人の仕事にします。採寸を終えたらその場で撮り、共有フォルダの受付の場所に保存します。 ファイル名の先頭に受付の番号を付けます。撮った後で書き足したときは、撮り直して同じ受付の番号で保存します。 処理は同じ受付の番号の新しいほうを使い、古いほうは保留にします。
処理の終わったシートは月ごとのフォルダへ移し、移すのは明細に行を並べ終えたときだけにします。 受付の場所に残っているシートが、そのまま明細になっていない採寸です。
急ぎに印の付いたシートは、読み取りが終わったときに購買の担当に知らせます。 急ぎの割れ替えは、次の1時間を待たずに確認に入れるようにします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| シートの画像 | 採寸の日、受付の番号、現場の名前、採寸した職人。行ごとに窓の場所、品種、厚さ、幅、高さ、枚数、加工。急ぎのチェック。備考 | 受付の場所 |
| 読み取り結果 | キーと値のペア、表の行とセル、チェックボックスの状態、文字の位置 | Document AI |
| 品番の一覧 | 品番、品種、厚さ、複層ガラスの構成、呼び方、頼む問屋 | 購買の担当の表 |
| 寸法の範囲の表 | 品種ごとに問屋が受けられる幅と高さの最小と最大 | 問屋の資料から写した表 |
| 工事の受付の台帳 | 受付の番号、現場の名前、急ぎかどうか、見積の番号 | 営業の表 |
質を決めるのは、品番の一覧の「呼び方」の列です。 職人が書く品種の書き方は、人ごとにほぼ決まっています。「透明」「FL」「フロート」、「かすみ」「型」「型板」を一覧に入れておくと、多くの行が生成AIに頼らずに品番に決まります。 決まらない行だけを生成AIの候補探しに回します。
寸法の範囲の表は、問屋の資料から写します。 品種によって切れる大きさに限りがあり、範囲の外の寸法は、写し違いか、そもそも1枚では作れない窓かのどちらかです。 どちらにしても、発注の前に購買の担当が気づく必要があります。
生成AIに渡すのは、品種と厚さの欄と備考の文字だけです。 現場の名前と受付の番号、寸法は渡しません。品番の当て方に寸法は要りません。
データの取得方法を決める
読み取りは、Python から Document AI の REST の process のメソッドを呼びます。公式の説明では、processors/PROCESSOR_ID:process に、画像を base64 にした内容を付けて送ります。版を固定したいときは processorVersions の下の :process に送り、 版を変える前に第8章の30枚で読み比べます。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 採寸の日・受付の番号・職人 | pages[].formFields の fieldName と fieldValue | 明細の宛先と工事の受付の台帳とのつなぎ |
| ガラスの行 | pages[].tables[] の headerRows と bodyRows | 窓の場所・品種・厚さ・寸法・枚数・加工 |
| 急ぎのチェック | formFields の fieldValue の valueType | 知らせの要否 |
| 文字の位置 | textAnchor の startIndex と endIndex | 疑いのあるセルの画像の切り出し |
急ぎの欄は、印の有無を値で受け取ります。 公式の説明では、印の付いたチェックボックスは valueType が filled_checkbox、付いていないものは unfilled_checkbox で返ります。読み取りに迷ったときは、急ぎの側に倒します。 急ぎでない仕事を急いでも困ることは少ないからです。
表はセルを結合しない様式にします。 公式の説明では、Form Parser の表の取り出しは行や列をまたぐセルの無い表が対象で、rowSpan と colSpan は常に1になります。同じ窓の上下2枚のガラスを1つのセルでまとめて書いていれば、行を2つに分け、窓の場所に「上」「下」を書く形にします。
幅と高さは、別の列にします。 「812×1183」と1つの欄に書くと、「×」が読み取りで落ちて1つの数字になります。列を分ければ、桁の数と範囲の表で確かめられます。 単位はミリに決め、列の見出しに書いておきます。
空いたセルは、空として扱います。 公式の説明では、Form Parser は値の入っていないキーと値のペアを確実には読めないとされています。厚さの欄が空の行は、品種の一覧のよくある厚さで埋めずに、確認に回します。
AIへ渡す前に整形する
- 1枚1ファイルの確認 … 公式のプロセッサ一覧では、Form Parser の同期の処理は1回15ページまでです。シートは1現場1ファイルにします
- 向きと傾きの確認 … 横向きや斜めに撮られた画像は、向きを直してから送ります
- ピンぼけの確認 … 画像の鋭さを測り、一定より低いものは読み取りに送らず、職人に撮り直しを頼みます
- 「〃」の引き継ぎ … 品種と厚さの「〃」は、上の行の値で埋め、埋めたことを行に残します
- 寸法の書式の確かめ … 幅と高さが整数のミリとして読め、桁の数が3桁か4桁かを見ます
- 範囲の確かめ … 品番が決まった行について、寸法の範囲の表の外なら印を付けます
- 同じ窓のそろいの確かめ … 窓の場所に「左」「右」がある行で、幅か高さが大きく違えば印を付けます
7番目が、写し違いと読み違いを拾う確かめです。 引き違いの窓の左と右のガラスは、ふつうはほぼ同じ寸法です。片方だけ「1,138」なら、読み取りか書き方の誤りを疑えます。 本当に左右で違う窓もあるので、直さずに印を付けて購買の担当に回します。
寸法を規則で直すことはしません。 左に合わせて右を「1,183」にすると、本当に違う窓に合わないガラスが届きます。 疑いの印を付け、職人に確かめます。
AIに処理させる
寸法の確かめ、範囲の確かめ、問屋の決定、並べ替えは、Python の規則で行います。 生成AIには、品番の一覧の呼び方で決まらなかった品種の書き方を候補に当てる仕事と、複層ガラスの書き方を部分に分ける仕事だけを渡します。
| 規則で見るもの | 印を付ける条件 |
|---|---|
| 寸法の書式 | 整数のミリとして読めない、または桁の数が合わない |
| 寸法の範囲 | 品種ごとの範囲の表の外 |
| 同じ窓のそろい | 左と右で幅か高さが大きく違う |
| 品番 | 呼び方の一覧でも生成AIの候補でも1つに決まらない |
| 複層ガラスの構成 | 外側・空気の層・内側のどれかが欠けている |
| 枚数 | 0、または窓の場所の数と合わない |
| 生成AIにさせること | 中身 |
|---|---|
| 品種の書き方の当て方 | 品番の一覧から候補を最大3つ、根拠にした語とともに返す |
| 決まったかの区別 | 候補が1つで、品種と厚さの両方が一覧の語と同じときだけ matched |
| 複層ガラスの分け方 | 書き方を外側のガラス・空気の層・内側のガラスに分け、書かれていない部分は missing にする |
複層ガラスの分け方では、書かれていない部分を埋めさせません。 「ペア3-3」とあれば、空気の層は missing です。よくある空気の層の厚さで埋めると、サッシの溝に入らない厚さの合計になることがあります。 欠けた行は購買の担当が職人に確かめます。
| させないこと | 理由 |
|---|---|
| 品番の決めつけ | 同じ呼び方で品番が2つあることがある |
| 欠けた構成の補完 | サッシの溝に合わない厚さになりうる |
| 寸法の補正 | 疑いの印を付け、職人に確かめる |
| 問屋の決定 | 品番の一覧の列から Python が決める |
| 品種の選び直し | 安全や断熱の性能の判断は職人と営業が行う |
5行目が見落としやすい点です。 生成AIに品種の書き方を渡すと、窓の場所を見て「浴室なら型板のほうがよい」のような選び直しを書き添えることがあります。 採寸のシートの品種は、職人とお客様が決めたものです。当て方だけをさせ、選び直しは書かせません。
指示内容を固定する
あなたはガラス工事の会社の購買の補助です。
採寸のシートに書かれた「品種」と「厚さ」の欄を、品番の一覧に当ててください。
複層ガラスの書き方は、部分に分けてください。
【渡すもの】
- 品種の欄の文字と、厚さの欄の文字(1行分)
- 品番の一覧:品番、品種、厚さ、複層ガラスの構成、呼び方
【品種の当て方】
- 品種と厚さの両方が、一覧の品種か呼び方と同じ語で書かれていて、
候補が1つなら status を matched に。
- 候補が2つ以上、または厚さが書かれていなければ status を candidates にし、
候補を最大3つ返す。
- 厚さの違う品番を同じものとして扱わない。
- 候補ごとに、根拠にした語を evidence に写す。
【複層ガラスの分け方】
- 「ペア」「複層」「3-12-3」「FL3+A12+FL3」のような書き方を、
outer(外側のガラス)、gap(空気の層)、inner(内側のガラス)に分ける。
- 書かれていない部分は missing にする。よくある厚さで埋めない。
- Low-E などの膜の種類が書かれていれば coating に写す。書かれていなければ空にする。
【厳守事項】
- 一覧に無い品番を返さない。書かれていない厚さを補わない。
- 品種を選び直さない。性能や使う場所の向き不向きについて何も書かない。
- 読めない文字は「?」のまま残す。
【品種】{glass_text}
【厚さ】{thickness_text}
【品番の一覧】{glass_master}
「よくある厚さで埋めない」を明記しないと、空気の層を埋めます。 「ペア3-3」は、職人には分かっていても書き忘れた行です。生成AIは、その書き忘れを、それらしい数字で埋めてしまいます。 埋めた数字が合っていても、確かめる機会が消えることが問題です。
構造化出力で、答えの形を固定します。 公式の説明では、Claude API の構造化出力は output_config.format に type: "json_schema" でスキーマを渡し、オブジェクトには additionalProperties: false が要ります。status は enum で決まった値に限ります。厚さの数の範囲は、スキーマではなく Python の側で確かめます。 公式の説明では、数値の minimum や maximum の制約は使えません。
出力形式を固定する
{
"status": "candidates",
"candidates": [
{ "code": "PG-3A12-3", "name": "複層 透明3+空気12+透明3", "evidence": "ペア3-3" },
{ "code": "PG-3A6-3", "name": "複層 透明3+空気6+透明3", "evidence": "ペア3-3" }
],
"insulated": {
"outer": "3",
"gap": "missing",
"inner": "3",
"coating": ""
}
}
Python は、この JSON と規則の結果を合わせて、発注の明細の行を作ります。
| 明細の列 | 入る値 | 出どころ |
|---|---|---|
| 受付の番号・窓の場所 | シートの値 | 読み取り |
| 品番・品種・厚さ | 決まった品番。決まらなければ空と候補 | 一覧とプロンプト |
| 幅・高さ・枚数 | シートの値 | 読み取り |
| 加工 | 面取り・穴あけなど | 読み取り |
| 面積 | 幅×高さ×枚数 | Python |
| 頼む問屋 | 品番の一覧の列 | Python |
| 確認の印 | 印の理由 | Python |
問屋ごとの明細は、同じ行を問屋と品番の順に並べ替えて作ります。
【発注明細】 問屋:〇〇硝子店 締め:15時 作成:10月28日 11:05
品番 FL5(透明 5mm)
R-26-1041 1階 居間 掃き出し 左 幅 812 高さ 1,883 1枚 糸面
R-26-1041 1階 居間 掃き出し 右 幅 812 高さ 1,883 1枚 糸面
品番 KS4(型板 4mm)
R-26-1047 浴室 上 幅 590 高さ 720 1枚
確認待ち:R-26-1052 2行(品番未定 1、寸法のそろい 1)
確認待ちの行は、明細に入れずに件数だけ書きます。 確認が済んだら、次の処理で明細に入ります。同じ受付の番号の行が2つの明細に分かれても、受付の番号で引けば1つの現場の分がそろいます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受付の場所 | 1時間ごとの処理が読む | 未処理のシートを集める |
| Document AI | REST の process | シートを読み取る |
| 品番の一覧・範囲の表・工事の受付の台帳 | ファイルの読み取り | 品番、問屋、範囲、急ぎ |
| Claude API | REST | 品種の当て方と複層ガラスの分け方 |
| 発注の明細 | 問屋ごとのひな形に行を入れたファイル | 購買の担当が確かめて送る |
| 受け取りの一覧 | ファイルの作成 | 届いたガラスの検品 |
問屋には、仕組みから送りません。 明細を購買の担当が開き、確かめて、いまの方法でFAXかメールで送ります。問屋が受けた後の変更は、切る前でなければ難しいからです。 送る前の確認を、人の手に残します。
工事の受付の台帳は、読むだけにします。 受付の番号から現場と急ぎかどうかを引きますが、台帳に発注の済んだことを書き込むのは購買の担当です。
人が確認する
購買の担当は、確認の一覧だけを見ます。
- 急ぎのシートの行を先に見る … 締めに間に合わせるため、急ぎの印の付いたシートから見ます
- 品番の決まらない行を見る … 候補から選ぶか、職人に電話で聞きます。新しい呼び方なら、品番の一覧に足します
- 複層ガラスの構成の欠けた行を見る … 職人に聞きます。前の発注から埋めません
- 寸法の疑わしい行を見る … 切り出したセルの画像を見て、読み違いか書き違いかを確かめます。書き違いなら職人に聞きます
直したときは、直した人と理由を明細の行に残します。 シートの画像はそのまま残し、どの値を何から何に直したかが後から追えるようにします。
届いたガラスの検品は、いまのまま人が行います。 受け取りの一覧には明細の寸法が載るので、検品の担当はシートを探さずに、届いたガラスを一覧と見比べられます。
目標は、300件をならして1件3分です。 印の付く行が1枚に1行前後という想定で、それより多い月は、シートの書き方か品番の一覧の呼び方を職人と見直します。
例外に対処する
| 起きること | 対応 |
|---|---|
| 画像がピンぼけ・影で読めない | 読み取りに送らず、職人に撮り直しを頼む |
| 同じ受付の番号のシートが2枚 | 新しいほうを使い、古いほうを保留にして職人に確かめる |
| 品番の一覧に無い品種 | 候補を返さず、購買の担当が一覧に足してから明細に入れる |
| 範囲の表の外の寸法 | 明細に入れず、1枚で作れるかを問屋に確かめる |
| 受付の番号が台帳に無い | 明細に入れず、営業に受付の登録を確かめる |
| Document AI が応答しない | 受付の場所に残し、次の1時間に再び読む |
4行目は、写し違いのこともあれば、本当に大きな窓のこともあります。 どちらにしても、問屋に送る前に分かれば、作り直しにはなりません。
記録を残す
- シートの画像と、撮った日時・撮った職人
- Document AI が返した JSON の全文と、使ったプロセッサの版
- 規則の結果、生成AIの当て方と分け方、そのとき参照した品番の一覧と範囲の表の版
- 購買の担当が直した記録 … どの値を、何から何に、なぜ直したか
- 問屋に送った明細の版と、送った日時
- 届いたガラスの受け取りの記録と、寸法が違っていたときの記録
最後の行は、作り直しの原因を分けるためです。 寸法が違っていたとき、シートの書き違いか、読み違いか、問屋の切り違いかを、シートの画像と明細の版と受け取りの記録から追えます。
04実装レベルの3段階
半自動化で、1件12分が3分になります。この段階が本記事の想定です。 問屋と品番を決める作業、寸法の書き写し、書き写した後の見比べが無くなり、購買の担当は印の付いた行を見るだけになります。 本格構成は、問屋ごとの受け取りの形がそろってからにします。 問屋によって発注の受け方がFAXかメールか受注の画面かで違ううちは、送信の準備を自動にしても、結局は購買の担当が形を直すことになります。 半自動化の間に、2つの数を毎週数えておきます。 品番が決まらずに回った行の数と、寸法の疑いで職人に聞いた行の数です。前者が減らなければ品番の一覧の呼び方が足りず、後者が減らなければシートの書き方を職人と見直す必要があります。 どちらも仕組みではなく、一覧とシートで減ります。
05工数削減シミュレーション
導入後 300件 × 3分 ÷ 60 = 15 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 割れたガラスの入れ替えと、断熱や防犯のためのガラスの入れ替えを請け負い、職人が現場で紙の採寸のシートに窓ごとの寸法と品種を書き、事務所で購買の担当がそれを問屋の発注書に書き直しているガラス工事の会社。採寸が月に数百件あり、問屋の締めの時刻に発注が間に合わない日がある場合。寸法の写し違いで、切ったガラスが入らずに作り直したことがある場合。
- 採寸をタブレットで入れ、問屋の受注の仕組みに直接流している会社。採寸が月に数十件で、職人が自分で問屋に電話で頼んで足りている会社。ビルのカーテンウォールのように、図面から数量を拾う工事が中心の会社。なお、ガラスの品種の選び方、安全や断熱の性能の判断、サッシに合うかの最終の確認は、この構成では代替できません。
07最小構成で試す方法
- 先月のシートから30枚を選ぶ(複層ガラスの行があるシートと、品種の書き方が職人によって違うシートを入れる)
- その30枚について、当時問屋に送った発注書を出しておく
- シートの画像から現場の名前を黒く塗り、手元のAIサービスの画面に1枚ずつ貼り付ける
- 「このシートのガラスの表を、窓の場所・品種・厚さ・幅・高さ・枚数・加工の列で書き出してください。品種は次の品番の一覧から候補を選び、決まらなければ候補を並べてください。複層ガラスで書かれていない厚さは埋めないでください」と指示し、品番の一覧も貼る
- 出てきた表を、当時の発注書と1行ずつ突き合わせる
30枚は必ずやってください。 組む前に、「手書きの寸法が表として読めるか」と「品種の書き方を一覧に当てられるか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 寸法と品番が当時の発注書と合った | Form Parser と品番の一覧の連携に進む |
| 複層ガラスの空気の層を埋めた | 指示の書き方で直る。構成は有効 |
| 「812×1183」が1つの数字になる | 様式が先。 幅と高さの列を分ける |
3行目は失敗ではありません。 いまのシートの書き方が、人には読めても読み取りには向かないことが分かったということです。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 「812×1183」が1つの数字になる | 幅と高さを別の列にする |
| 上下2枚を1つのセルでまとめている | 結合したセルは読めない。 行を分ける |
| 空いた厚さの欄がよくある厚さで埋まる | 空は空として確認に回す |
| 寸法を左右の値に合わせて直す | 直さない。 疑いの印を付けて聞く |
| 撮り直しで同じシートが2回入る | 同じ受付の番号は新しいほうだけ使う |
| 複層ガラスの空気の層を埋める | 書かれていない部分は missing と指示に書く |
| 生成AIが品種を選び直す | 性能や向き不向きを書かないと指示に書く |
| 厚さの違う品番に寄せる | 厚さの違う品番を同じに扱わないと指示に書く |
上の5行は、シートの様式と撮り方から出る失敗です。 直すのは仕組みより先に、シートです。
下の3行は、決めていないことを決めてしまうことから出る失敗です。 複層ガラスの構成も品種も、職人とお客様が決めたものを写すだけにしておけば、届いたガラスが違うということは起きにくくなります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 現場の名前と受付の番号、窓の場所、ガラスの品種と寸法、採寸した職人の名前です。住まいの割れ替えでは、住所が書かれることがあります。
- 国外のリージョンで処理することを整理する … Form Parser の対応リージョンに日本はありません。住所の欄をシートから外し、受付の番号で現場を引く様式にしてから本番のシートを回します
- 生成AIに渡す範囲を絞る … 品種と厚さの欄の文字、品番の一覧だけを渡し、現場の名前と寸法は渡しません
- 品種と性能を仕組みで決めない … 安全や断熱の性能、使う場所の向き不向きは、職人と営業がお客様と決めます。 仕組みは書かれた品種を品番に当てるだけです
- 問屋への送信を人に残す … 切った後の変更は難しいので、送る前の確認は購買の担当が行います
- シートを元の記録として残す … 直しは明細の行の側で行い、シートの画像と直した記録を両方残します
2つ目で寸法を渡さないのは、品番の当て方に寸法が要らないからです。 渡すものを当て方に要る欄だけに絞っておけば、生成AIが寸法を見て品種を選び直す余地も無くなります。
誤りが起きた場合のリスクは、寸法の違うガラスを切らせることと、構成の違う複層ガラスを頼むことの2つです。 前者は寸法を直すと起き、後者は欠けた構成を埋めると起きます。どちらも、決まらないものを決めずに購買の担当へ回すことで防ぎます。
10まず何から始めるか
1週目:様式を直す
シートの幅と高さを2列にし、上下の窓を行で分け、セルの結合を無くします。住所の欄を受付の番号に替えます。職人と、採寸を終えたらその場で撮る決まりを取り決めます。
2週目:30枚で試し、一覧を作る
先月のシートを30枚選び、現場の名前を塗ったうえで手元のAIサービスで読み取りと品番の当て方をさせます。複層ガラスの欠けた構成を埋めていないかを最優先で見ます。 あわせて、30枚に出てきた品種の書き方を品番の一覧の呼び方に入れます。
3週目:寸法の範囲の表と、問屋の列を作る
問屋の資料から、品種ごとの寸法の範囲を写します。品番の一覧に頼む問屋の列を足します。国外で処理することの扱いも、この週に決めます。
4週目:1時間ごとの処理から明細までをつなぐ
Python で受付の場所を読み、Form Parser を呼び、品番を当てて問屋ごとの明細を作るところまで作ります。この時点では購買の担当のいまの発注書と並べ、行と寸法が合うかを見ます。
2か月目: 明細をそのまま問屋に送り始め、受け取りの一覧を足します。3か月目以降: 1件12分が何分になったかを実測します。写し違いによる作り直しが1か月続けて起きなかった時点で、この構成は運用に乗ったと言えます。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
Form Parser の言語の表で、日本語(ja)が手書きに対応とされていること。Form Parser の同期の処理が15ページまでであること。対応リージョンが us・eu・asia-southeast1 などで、日本が含まれないこと | Google Cloud: Processor list | 2026-10-28 |
| Form Parser がキーと値のペア・表・チェックボックスを取り出し、学習済みで追加の学習ができないこと。表の取り出しが行や列をまたぐセルの無い表に限られること。値の入っていないキーと値のペアを確実には読めないこと | Google Cloud: Form Parser | 2026-10-28 |
フォームの項目が formFields の fieldName と fieldValue で返ること。チェックボックスの状態が valueType に filled_checkbox/unfilled_checkbox で返ること。表が headerRows と bodyRows で表され、rowSpan と colSpan が常に1であること。文字の位置が textAnchor で示されること | Google Cloud: Handle the processing response | 2026-10-28 |
オンラインの処理を processors/PROCESSOR_ID:process に送り、画像を base64 にした内容を渡すこと。プロセッサの版の processorVersions の :process に送れること | Google Cloud: Send a processing request | 2026-10-28 |
Claude API の構造化出力を output_config.format に type: "json_schema" で指定すること。オブジェクトに additionalProperties: false が要ること。数値の minimum・maximum の制約が使えないこと | Claude Platform Docs: Structured outputs | 2026-10-28 |
ガラスの品種の選び方、切れる寸法の範囲、複層ガラスの構成は、問屋とメーカーの資料で確かめてください。 本記事は上の公式の情報で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-2164)についてのご相談はこちらから。
