Media > AI活用ユースケース > 法務 > 協力会社から届く再下請負通知書を読み取り、施工体制台帳の項目にそろえて、許可業種の食い違いと記載漏れを拾う

協力会社から届く再下請負通知書を読み取り、施工体制台帳の項目にそろえて、許可業種の食い違いと記載漏れを拾う

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

協力会社から届く再下請負通知書を読み取り、施工体制台帳の項目にそろえて書き出します。あわせて、担当工事の内容と許可業種の食い違い、許可の更新日、必須項目の空欄を規則で照らし、確認が要る通知書だけを担当者に回します。

サマリー
生成AI
Azure OpenAI Service/Claude/Gemini
AIサービス
AWS Textract/Azure AI/Google Document AI
対象業界
建設/製造
対象部門
法務/総務
対象業務
データ入力・転記/内容確認・チェック
主な課題
人手が足りない/入力作業が多い/確認ミスが多い
AIで行う処理
読み取り(OCR)
主な効果
入力漏れ削減/品質標準化/工数削減
導入難易度
★★★☆☆
実装レベル
本格構成
費用感
API連携(中)
人間の確認
必須
現在工数
100h/月
AI導入後
24h/月
想定削減
76%
年間削減
912h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 現場の工事事務が再下請負通知書を受け取り、紙はスキャンして本社の共有フォルダに入れる
  2. 本社の担当者が1件ずつ開き、再下請負人の会社名・住所・許可番号・許可業種・許可の更新日を読む
  3. 工事名称・工事内容・工期・契約日、主任技術者の氏名と資格、専任か非専任か、健康保険等の加入状況を読む
  4. それぞれを、その現場の施工体制台帳のスプレッドシートの該当する欄へ写す
  5. 担当工事の内容と許可業種を見比べ、合っているかを経験で判断する
  6. 許可の更新日から5年を数え、工期のうちに許可が切れないかを見る
  7. 空欄や読めない箇所があれば、一次下請へ電話かメールで問い合わせる
  8. 施工体系図に会社名と工事内容を書き足す
導入後(After)
  1. 人現場の工事事務が、紙はスキャンし、PDFと写真はそのまま、本社の受付フォルダに保存する(ファイル名に現場コードを付ける)
  2. 自動保存をきっかけに処理が動き、形式・ページ数・画像の大きさを確かめる
  3. 自動OCRが通知書の文字・表・キーと値の組・チェックボックスの状態と、それぞれの信頼度を返す
  4. 自動生成AIが、読み取り結果を施工体制台帳の項目に並べ直し、値ごとに根拠の文字列を付けて返す
  5. 自動規則で照らす。必須項目の空欄、許可業種と担当工事の対応表との照合、許可の更新日からの5年と工期の比較、協力会社名簿との照合
  6. 自動照らした結果から `ok` / `needs_inquiry` / `needs_human` を機械的に決め、確認の一覧に載せる
  7. 自動`needs_inquiry` のものについて、一次下請への問い合わせ文の下書きを作る
  8. 人担当者が `needs_inquiry` と `needs_human` のものを開き、元の通知書と見比べて確かめる
  9. 人問い合わせ文を直して送る。許可業種の食い違いは、法務の担当と相談して扱いを決める
  10. 【人/自動】 確かめたものだけを、施工体制台帳と施工体系図のスプレッドシートへ書き込む
各工程の詳しい説明を読む
  1. 現場の工事事務が再下請負通知書を受け取り、紙はスキャンして本社の共有フォルダに入れる
  2. 本社の担当者が1件ずつ開き、再下請負人の会社名・住所・許可番号・許可業種・許可の更新日を読む
  3. 工事名称・工事内容・工期・契約日、主任技術者の氏名と資格、専任か非専任か、健康保険等の加入状況を読む
  4. それぞれを、その現場の施工体制台帳のスプレッドシートの該当する欄へ写す
  5. 担当工事の内容と許可業種を見比べ、合っているかを経験で判断する
  6. 許可の更新日から5年を数え、工期のうちに許可が切れないかを見る
  7. 空欄や読めない箇所があれば、一次下請へ電話かメールで問い合わせる
  8. 施工体系図に会社名と工事内容を書き足す

(a)転記がいちばん重い。 一通の通知書に、会社・工事・技術者・保険・外国人の従事の状況まで数十の欄があり、様式が協力会社ごとに違うので、目で探す場所が毎回変わります。

(b)許可業種の照合が人によって違う。 担当工事と許可業種の組み合わせを問題と見るかどうかが、担当者によって分かれます。照合の物差しが頭の中にあり、書かれた基準がありません。

(c)許可の期限を数えていない。 許可の有効期間は5年で、更新しなければ失効します。通知書に書かれた許可(更新)年月日から期限を数えて工期と比べる作業は、忙しい月には省かれます。 気づくのは、発注者の検査で台帳を見られたときです。

(d)空欄が後から見つかる。 「専任」「非専任」のどちらにも印が無いといった記載漏れは、空欄のまま写してしまい、台帳を点検したときに初めて見つかります。

  1. 【人】 現場の工事事務が、紙はスキャンし、PDFと写真はそのまま、本社の受付フォルダに保存する(ファイル名に現場コードを付ける)
  2. 【自動】 保存をきっかけに処理が動き、形式・ページ数・画像の大きさを確かめる
  3. 【自動】 OCRが通知書の文字・表・キーと値の組・チェックボックスの状態と、それぞれの信頼度を返す
  4. 【自動】 生成AIが、読み取り結果を施工体制台帳の項目に並べ直し、値ごとに根拠の文字列を付けて返す
  5. 【自動】 規則で照らす。必須項目の空欄、許可業種と担当工事の対応表との照合、許可の更新日からの5年と工期の比較、協力会社名簿との照合
  6. 【自動】 照らした結果から ok / needs_inquiry / needs_human を機械的に決め、確認の一覧に載せる
  7. 【自動】 needs_inquiry のものについて、一次下請への問い合わせ文の下書きを作る
  8. 【人】 担当者が needs_inquiry と needs_human のものを開き、元の通知書と見比べて確かめる
  9. 【人】 問い合わせ文を直して送る。許可業種の食い違いは、法務の担当と相談して扱いを決める
  10. 【人/自動】 確かめたものだけを、施工体制台帳と施工体系図のスプレッドシートへ書き込む

8番目が分かれ目です。人が見るのは全件ではありません。 ok のものは一覧で会社名と工事内容を流し見るだけにし、照らした結果に引っかかったものに時間を使います。

10番目で台帳へ書き込むのを人の確認の後にしているのは、読み違いがそのまま台帳に載ると、元請が誤った台帳を現場に備えていたことになるからです。

02今回想定するシステム構成

構成図
再下請負通知書(紙をスキャン・PDF・写真)
   ▼【トリガー】受付フォルダ(Azure Blob Storage のコンテナー)への保存
Azure Functions ── 形式・ページ数・画像の大きさの確認、現場コードの取り出し
   ▼
Azure AI Document Intelligence(レイアウトモデル、キーと値の組を有効化)
   │   文字・表・キーと値の組・チェックボックスの状態・信頼度
   ▼
Azure OpenAI ── 施工体制台帳の項目への並べ直し(構造化出力)
   ▼
Azure Functions ── 規則で照らす
   │   ① 必須項目の空欄   ② 許可業種と担当工事の対応表
   │   ③ 許可の更新日からの5年と工期   ④ 協力会社名簿との照合
   ▼
確認の一覧(ok / needs_inquiry / needs_human)
   ▼
【担当者が確認】──▶ 施工体制台帳・施工体系図のスプレッドシート
             └─▶ 一次下請への問い合わせ(下書きを人が送る)
役割想定する製品代替候補
OCRAzure AI Document Intelligence(レイアウトモデル prebuilt-layout)Google Document AI(Form Parser)、AWS Textract(英文の書類に限る)
生成AIAzure OpenAI(Microsoft Foundry)(施工体制台帳の項目への並べ直し)Claude API、Gemini API
連携Azure Functions(保存を起点に処理を動かし、規則で照らす)Azure Logic Apps
保管Azure Blob Storage(通知書の原本と読み取り結果)社内のファイルサーバー

施工体制台帳と協力会社の名簿は、新しく足すものではありません。 台帳を建設キャリアアップシステムや民間のシステムで作っている会社では書き込む先がそちらに変わり、その入出力は利用環境に応じた個別の作りになります。

読み取りの土台は、Azure AI Document Intelligence のレイアウトモデルです。 テキスト、表、選択マーク、文書の構造を抽出し、選択マークについては「選択されている/されていない」の状態と信頼度を返します。 再下請負通知書には、大臣と知事、特定と一般、専任と非専任、加入と未加入と適用除外、外国人の従事の有と無と、印を付けて答える欄がいくつもあります。 これを文字ではなく状態として受け取れることが効きます。

日本語の印刷の文字と手書きの文字を、どちらも読めます。 レイアウトモデルの対応言語には、印刷・手書きの両方に日本語が入っています。協力会社が手書きで埋めた通知書も対象になり、行ごとに手書きかどうかを信頼度つきで返すので、手書きの欄だけを確認に回せます。

キーと値の組は、features=keyValuePairs を付けて取ります。 様式が協力会社ごとに違っても、「項目名の隣に何が書かれているか」という形で受け取れるので、後段の並べ直しが安定します。

03どうやって実装するのか

Step1

処理の起点を決める

受付フォルダにファイルが保存されたことを起点にします。 着工の前後に固まって届くため、1日1回の定時実行にはしません。まとめて処理すると、照らした結果が出るのが翌日になり、二次下請が現場に入った後で記載漏れに気づくことになります。

ファイル名の先頭に現場コードを付けることを、現場の工事事務との取り決めにします。工事名称から推定すると、同じ発注者の工事が複数あるときに取り違えます。

処理が終わったファイルは処理済みのフォルダへ移します。移すのは確認の一覧に載せ終えたときだけにし、受付フォルダに残る数を未処理の数とします。

Step2

入力データを集める

データ中身取得元
再下請負通知書PDF・画像。受け取った日時と経路、現場コード受付フォルダ
読み取り結果文字、表のセル、キーと値の組、選択マークの状態、信頼度Azure AI Document Intelligence
協力会社の名簿会社名、許可番号、許可業種、大臣・知事、特定・一般、許可の更新日本社の名簿
現場の情報現場コード、工事名称、工期、一次下請の一覧施工体制台帳のスプレッドシート
許可業種と担当工事の対応表「担当工事内容」に現れる言葉と、対応する許可業種自社で用意する一覧

質を決めるのは、いちばん下の対応表です。 建設工事は2つの一式工事と27の専門工事の計29の種類に分かれ、許可はこの種類ごとに取ります。ところが通知書の「担当工事内容」には「LGS・ボード貼り」「空調ダクト」のような現場の言葉が書かれます。現場の言葉と29の業種をつなぐ表が無ければ、照合そのものができません。

協力会社の名簿は「照合の相手」として持ちます。 許可番号が名簿と違っても、どちらが正しいかは分かりません。違うという事実を出し、人が許可通知書の写しで確かめます。

Step3

データの取得方法を決める

読み取りは、Azure Functions からレイアウトモデルを呼ぶだけです。このとき features=keyValuePairs を付け、出力を Markdown 形式(outputContentFormat=markdown)で受け取ります。 Markdown では表が HTML の表として表され、結合されたセルや複数行の見出しも崩れずに残ります。

取るものどこから何に使うか
全文の Markdowncontent生成AIへ渡す本体。表と見出しの構造を保つ
キーと値の組keyValuePairs「許可番号」「工期」など項目名と値の対応
選択マークpages の selectionMarks(state と confidence)大臣・知事、専任・非専任、保険の加入状況、外国人の従事の有無
手書きの判定styles の isHandwritten手書きの欄を確認に回す
単語の信頼度pages の words の confidence許可番号・日付の読み違いの疑い

許可番号と日付は、単語の信頼度を必ず持ち回します。 「第12345号」の一桁の読み違いは、文字としては自然に見えるので、生成AIの段では気づけません。信頼度が低い単語を含む値には、後段で印を付けます。

Step4

AIへ渡す前に整形する

  1. 形式の確認 … PDFまたは画像(JPEG、PNG、BMP、TIFF、HEIF)であることを確かめます。スマートフォンの写真はそのまま受け付けます
  2. ページ数とサイズ … PDFとTIFFは最大2,000ページ、有料(S0)レベルで500MBが上限です。通知書の束をまとめてスキャンしたものは、通知書ごとに分けます
  3. 画像の大きさ … 50×50ピクセルから10,000×10,000ピクセルの間である必要があります
  4. 文字の大きさ … 抽出できる文字の最小の高さは、1024×768の画像で12ピクセルです。150dpiで約8ポイントの文字に当たります。細かい欄の多い様式は、スキャンの解像度を上げます
  5. パスワードの解除 … パスワードでロックされたPDFは、提出前に解除が必要です
  6. 添付書類の切り分け … 通知書には下請契約の書面の写しを添付することとされています。通知書の本体と契約書面の写しをページで分け、契約書面は読み取りの対象から外します
  7. 重複の検知 … 同じ現場・同じ再下請負人・同じ契約日のものが直近にあれば、変更の届けか重複かを判定する印を付けます

6番目を省かないでください。 契約書面の写しには、工事名や工期が通知書とは違う書き方で出てきます。両方を一緒に読ませると、契約書の側の値を通知書の値として拾います。

Step5

AIに処理させる

させるのは、読み取り結果を施工体制台帳の項目に並べ直し、値ごとに根拠の文字列と読み取りの状態を付けることだけです。 項目は、建設業法施行規則が再下請負通知書の記載事項として定める範囲に合わせます。

項目のまとまり中身読み取れないときの扱い
通知する会社商号・名称、住所、許可番号空欄は missing
通知する会社が請けた工事工事名称、注文者、注文者との契約日現場コードの工事と食い違えば conflict
再下請負人商号・名称、住所、許可番号、許可業種、健康保険等の加入状況印が無ければ missing、印が二つなら ambiguous
再下請負人の工事工事名称・内容、工期、契約日日付として解釈できなければ unreadable
技術者主任技術者の氏名・資格・専任の別、専門技術者資格の欄が空なら missing
現場の担当者現場代理人、監督員、安全衛生責任者様式に欄が無ければ not_in_form
外国人の従事一号特定技能外国人・外国人技能実習生の従事の有無印が無ければ missing

右端の列の区別が、この構成でいちばん大事です。 missing と not_in_form は一次下請に問い合わせるもの、unreadable は自社でスキャンし直すものです。混ぜると、紙が汚れていただけの通知書のために一次下請へ電話をかけることになります。

させないこと理由
許可業種が合っているかの結論許可が要らない小さな工事もあり、通知書だけでは判断できない
許可番号の補完・修正それらしい番号に直すと、読み違いが隠れる
名簿からの値の補充通知書に書かれていない事実を、書かれていたことにしてしまう
許可の期限の計算日付の計算は規則の側で行う
空欄の推測「専任のはず」と埋めると、問い合わせるべき空欄が消える

3行目がいちばん起きやすい失敗です。 名簿を渡すと、生成AIは名簿の許可番号で空欄を埋めます。名簿は生成AIに渡さず、照合は規則の段で行います。

Step6

指示内容を固定する

あなたは建設会社の工事事務で、協力会社から届いた再下請負通知書を
施工体制台帳の項目に写す係です。
OCRが返した読み取り結果だけを見て、指定の項目に値を入れてください。

【入れる項目】
1. 通知する会社:商号・名称、住所、許可番号
2. 通知する会社が請けた工事:工事名称、注文者、注文者との契約日
3. 再下請負人:商号・名称、住所、許可番号、許可業種、
   大臣・知事の別、特定・一般の別、許可(更新)年月日、
   健康保険・厚生年金保険・雇用保険の加入状況
4. 再下請負人の工事:工事名称・担当工事内容、工期(自・至)、契約日
5. 技術者:主任技術者の氏名・資格内容・専任か非専任か、専門技術者
6. 現場の担当者:現場代理人、監督員、安全衛生責任者
7. 外国人の従事:一号特定技能外国人、外国人技能実習生の従事の有無

【status の選び方】
- ok ........... 値が読み取れており、その項目として解釈できる
- missing ...... 欄はあるが値が無い。印を付ける欄で、どれにも印が無い
- not_in_form .. この様式にその欄がそもそも無い
- unreadable ... 文字は検出されているが、値として確定できない
- ambiguous .... 候補が複数ある。印を付ける欄で、二つ以上に印がある
迷ったときに ok を選ばないでください。

【厳守事項】
- 書かれていない値を推測で埋めないでください。記載がなければ
  value を空にし、status を missing にしてください。
- 「許可番号」という項目名があっても、値が空なら missing です。
- 許可番号・日付は、読み取った文字列をそのまま value に入れてください。
  桁を補う、和暦と西暦を直す、それらしい番号にすることをしないでください。
- 印を付ける欄は、selection_marks の state だけを根拠にしてください。
  文字の並びから、どちらに印があるかを推測しないでください。
- 下請契約の書面の写しのページに書かれた値は使わないでください。
- 許可業種が担当工事に合っているか、許可が有効かは書かないでください。
- evidence には、根拠にした文字列をそのまま写してください。
- 再下請負人が複数社ある場合は、会社ごとに subcontractors の要素を分けてください。

【現場コード】{site_code}
【読み取り結果(Markdown)】{layout_markdown}
【キーと値の組】{key_value_pairs}
【選択マーク】{selection_marks}

「印を付ける欄は state だけを根拠にする」を明記しないと、文字から推測します。 作成例の様式では「専 任 非専任」のように選択肢が並んで印刷されており、何も言わなければ先に書かれている「専任」を値として拾うことがあります。

「和暦と西暦を直さない」のは、直した値では人が通知書と見比べるときに探せなくなるからです。 換算は規則の段で行います。

Step7

出力形式を固定する

Azure OpenAI の構造化出力で、次の形のJSONを返させます。

{
  "notice_id": "",
  "site_code": "",
  "notifier": {
    "name": { "value": "", "status": "ok", "evidence": "" },
    "permit_no": { "value": "", "status": "ok", "evidence": "" }
  },
  "subcontractors": [
    {
      "name": { "value": "", "status": "ok", "evidence": "" },
      "permit_no": { "value": "", "status": "ok", "evidence": "" },
      "permit_trade": { "value": "", "status": "ok", "evidence": "" },
      "permit_date": { "value": "", "status": "ok", "evidence": "" },
      "work_content": { "value": "", "status": "ok", "evidence": "" },
      "period_from": { "value": "", "status": "ok", "evidence": "" },
      "period_to": { "value": "", "status": "ok", "evidence": "" },
      "chief_engineer": { "value": "", "status": "ok", "evidence": "" },
      "full_time": { "value": "", "status": "ok", "evidence": "" },
      "health_insurance": { "value": "", "status": "ok", "evidence": "" },
      "foreign_workers": { "value": "", "status": "ok", "evidence": "" }
    }
  ]
}

status は5つの値の列挙にします。ここでは項目の一部を抜き出しています。

構造化出力では、すべての項目を必須にし、オブジェクトに additionalProperties: false を付けます。 値が無い項目も省略させず、空の値と missing を必ず返させます。 pattern のような制約は使えないため、許可番号の桁数や日付の形の検査は規則の段で行います。

規則の段では、次の表で verdict を決めます。

照らす内容結果
必須項目のどれかが missingneeds_inquiry(一次下請へ問い合わせ)
どれかが unreadable / ambiguous、または許可番号・日付の単語の信頼度が低いneeds_human
担当工事内容が対応表のどの業種にも当たらない、または許可業種と食い違うneeds_human(法務の担当が見る)
許可(更新)年月日から5年の日が、工期の終わりより前needs_human(更新の状況を確かめる)
許可番号が協力会社の名簿の番号と違うneeds_human
上のどれにも当たらないok

AIの出力と規則の判定を別の層に置くのが要点です。 基準を変えても、直すのは規則だけで、過去の読み取り結果から判定をやり直せます。

Step8

システムへ連携する

つなぎ先方式内容
受付フォルダ(Azure Blob Storage)保存を起点に Azure Functions を動かす新しい通知書を検知する
Azure AI Document IntelligenceAPI呼び出し文字・表・キーと値の組・選択マーク・信頼度を返す
Azure OpenAIAPI呼び出し(構造化出力)施工体制台帳の項目への並べ直し
協力会社の名簿読み取りのみ許可番号・許可業種・更新日を引く
施工体制台帳・施工体系図人が確かめた後に書き込む確定した値だけを反映する

名簿へは書き込みません。 通知書で初めて出てきた二次下請の会社も、名簿に載せるかどうかは、許可通知書の写しを確かめた人が決めます。 自動で載せると、読み違えた許可番号が名簿の正しい値として残り、以後の照合の相手になってしまいます。

Step9

人が確認する

人が開くのは needs_inquiry と needs_human のものだけです。 ok のものは一覧で会社名・担当工事・工期を流し見て確定します。全件を開くと、第10章の24.0時間には収まりません。

  1. needs_human の許可業種の食い違いを先に見る … 法務の担当が、対応表の不足なのか、許可の範囲の問題なのかを分けます。許可が要らない小さな工事かどうかは、一次下請に請負代金の規模を確かめないと分かりません
  2. 許可の期限が工期中に来るものを確かめる … 更新後の許可通知書の写しをもらいます
  3. unreadable と信頼度の低い番号を元の通知書で見る … 多くはスキャンのし直しで解決します
  4. needs_inquiry の問い合わせ文を直して送る … 送信は人が行います
  5. 判定を覆したら記録する … どの項目を、どちらに変えたかを残します

1番目の結果を「違反の疑い」として扱わないでください。 言えるのは、対応表と通知書の言葉がつながらなかったということだけです。

Step10

例外に対処する

起きること対応
様式が作成例と大きく違うキーと値の組で拾える範囲を使い、拾えない項目は not_in_form。同じ協力会社から続くなら、作成例の様式を案内する
印が手書きの丸で付けられている選択マークとして検出されないことがある。選択の欄が missing になったら、元の画像で丸を確かめる
再下請負人が複数社並ぶ会社ごとに要素を分ける。ページの継ぎ目で会社が分かれていないかを確かめる
下請契約の書面の写しが混ざるページで切り分け、契約書面は読み取りの対象から外す
変更の届け(技術者の交代・工期の延長)前回の届けと突き合わせ、変わった項目だけを確認の一覧に出す
読み取りの呼び出しが失敗する受付フォルダに残す。処理済みへ移すのは一覧に載せ終えたときだけ
許可業種の対応表に無い工事内容needs_human。法務の担当が業種を割り当て、対応表に足す

最後の行が、運用が育つかどうかの分かれ目です。 対応表に足すたびに、同じ言葉の通知書は次から ok で流れます。needs_human が減らないなら、対応表の言葉の粒度が細かすぎます。

Step11

記録を残す

  • 元の通知書ファイルと、受け取った日時・経路・現場コード
  • レイアウトモデルが返したJSONの全文(文字、表、キーと値の組、選択マーク、信頼度)
  • 生成AIが返した項目の値と status・evidence
  • 規則で照らした結果と verdict、そのとき使った対応表と名簿の版
  • 人が値や判定を覆した記録 … どの項目を、どちらに変えたか
  • 問い合わせを送った日時と、返ってきた回答・差し替えの通知書との対応
  • 台帳へ確定した値と、確定した人・日時

4番目で「そのときの対応表の版」を残すのは、対応表が育っていくためです。 半年前に ok で流れた通知書が、いまの対応表では needs_human になることがあります。当時の基準が残っていないと、過去の台帳を見直す範囲が決まりません。

04実装レベルの3段階

最小構成:通知書を手でAIの画面に貼り、台帳の項目の表を作らせる / 1件ごとの読み取りと表づくり
半自動化:上記+OCRのAPIと構造化出力で項目を取り出し、確認の一覧に書き出す / 読み取りと項目への並べ直し、空欄の検出
本格構成:上記+受付フォルダを起点に自動で動かし、対応表・名簿・許可の期限で照らし、問い合わせ文の下書きまで出す / 読み取りから照合、問い合わせ先の洗い出しまで

最小構成では件数がさばけません。 1件ずつ貼り付けるので、月240件には使えません。読めるかどうかを確かめる段階です。 半自動化で、1件25分が12分程度になります。 転記はほぼ無くなりますが、許可業種・期限・名簿との照合は人が残ります。本格構成で6分になり、この段階が本記事の想定です。 差が大きいのは、照合が対応表と規則に移り、人が見るのが引っかかったものだけになるからです。 段階を飛ばさないでください。 半自動化の一覧を2か月見ると、対応表に足すべき言葉が先に分かります。対応表を育ててから本格構成に進むほうが、needs_human に埋もれずに済みます。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
5 名
月間件数
240 件
1件あたり現在時間
25 分
1件あたり導入後時間
6 分
現在  240件 × 25分 ÷ 60 = 100 時間/月
導入後 240件 × 6分 ÷ 60 = 24 時間/月
月間削減時間
76h
削減率
76%
年間削減時間
912h
年間金額換算(時間単価3,500円)
319万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. 施工体制台帳を作成する現場を常時いくつも抱え、一次・二次の協力会社から再下請負通知書を月に数百件受け取る総合建設会社や設備工事の元請。通知書が国土交通省の作成例どおりの様式と、協力会社ごとの独自の様式で混在して紙やPDFで届き、工事事務の担当者が施工体制台帳と施工体系図へ手で写している場合。許可業種の照合や許可の更新日の確認が担当者の経験に頼っている場合。
向いていない
  1. 協力会社とのやり取りを建設キャリアアップシステムや民間の施工管理システムに統一しており、再下請負通知の内容がすでにデータで届いている場合。施工体制台帳を作る現場が年に数件しかない場合。なお、協力会社が建設業の許可を要するかどうか、許可業種が工事内容に合っているかどうかの判断は、この構成では代替できません。

07最小構成で試す方法

  1. 過去3か月の再下請負通知書から20件を選ぶ(作成例の様式と独自の様式を半々、手書きのものを数件入れる)
  2. その20件を当時どう台帳に写したかを、施工体制台帳から書き出しておく
  3. 手元のAIサービスの画面に、通知書のPDFを1件ずつ貼り付ける
  4. 「この再下請負通知書から、再下請負人の会社名、許可番号、許可業種、許可(更新)年月日、担当工事内容、工期、主任技術者の氏名と専任の別、健康保険等の加入状況を表にしてください。書かれていない欄は空欄にし、推測で埋めないでください。印が付いている選択肢だけを値にしてください」と指示する
  5. 出てきた表を、当時の台帳と1項目ずつ突き合わせる

組む前に、自社に届く様式で選択の欄が読めるのかを確かめます。

出てきた内容判断
当時の台帳と同じ値が出たOCRの段を組む構成に進む
印の無い選択肢を値にしたOCRの選択マークを使えば直る。構成は有効
手書きの丸が読めず、選択の欄が空になる様式の側の問題。作成例の様式への切り替えを協力会社に頼む

3行目は失敗ではなく、どの協力会社の通知書に時間がかかっていたのかが分かったということです。

08実装時につまずきやすいポイント

問題対策
印の無い選択肢を値にする選択マークの state だけを根拠にすると指示し、文字からの推測を禁じる
手書きの丸が選択マークにならない選択の欄が missing になったら元の画像を見る。作成例の様式への切り替えを頼む
名簿の許可番号で空欄を埋める名簿を生成AIに渡さない。 照合は規則の段で行う
契約書面の写しの値を拾うページで切り分け、契約書面は読み取りの対象から外す
許可番号の一桁の読み違い単語の信頼度を持ち回し、低いものは needs_human にする
照合の結果を違反として扱う許可が要らない小さな工事もある。 結論は人が出す
許可の期限を数え間違える有効期間は5年。日付の計算は規則で行い、生成AIにさせない
現場を取り違える現場コードをファイル名に付け、工事名称から推定しない
台帳へ自動で書き込む人が確定したものだけを書き込む

上の3行が、この構成の失敗のほとんどです。 どれも「書かれていない値をどこかから持ってきて埋める」形で、問い合わせるべき空欄が消えることが問題です。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 協力会社の商号・住所・許可番号、技術者の氏名と資格、社会保険の加入状況、外国人の従事の有無。添付される下請契約の書面の写しには、公共工事では請負代金の額も含まれます。

  1. 契約書面の写しを外部へ渡さない … 読み取りの対象は通知書の本体だけにし、契約書面のページは切り分けて保管だけにします。 金額の情報を生成AIに渡す理由がありません
  2. 個人の情報を項目に必要な範囲に限る … 技術者の氏名と資格は台帳に要る情報ですが、資格者証の写しなどの添付があれば、読み取りの対象から外します
  3. 照合の結果を協力会社の評価に使わない … needs_human が多い会社は、様式が違うか手書きが多いだけのことがほとんどです。取引の判断に流用しないでください
  4. 許可に関わる判断を代替しない … 許可業種が工事内容に合っているか、許可が要る工事かどうかは、法務の担当と、必要なら許可行政庁に確かめることです。 この構成が出すのは、照合できたかどうかという事実だけです
  5. 原本の保存の方法を先に決める … 施工体制台帳と添付書類は、スキャンしたファイルの記録で代えることもできるとされています。紙・PDF・読み取り結果のどれを原本とするかを、運用の前に決めてください

誤りが起きた場合のリスクは、読み違えた値が台帳に載ることと、問題のある再下請を見落とすことの2つです。 前者は人の確定で、後者は「照合できなかったもの」を必ず人に回すことで防ぎます。

10まず何から始めるか

1週目:許可業種と担当工事の対応表をつくる

過去1年の施工体制台帳から「担当工事内容」の言葉を集め、法務の担当が29の業種を割り当てます。出現の多い上位100語から始めます。

2週目:20件で試す

第8章の手順で20件を試し、印の無い選択肢を値にしていないか、空欄を埋めていないかを最優先で見ます。

3週目:現場コードの取り決めと受付フォルダ

全現場にファイル名の現場コードを頼み、作成例の様式を一次下請に案内します。

4週目:受付フォルダから確認の一覧までをつなぐ

Azure Functions でレイアウトモデルと構造化出力を呼び、確認の一覧に書き出すところまで作ります。この時点では verdict を出さず、項目の値と status だけを見ます。

2か月目: 対応表・名簿・許可の期限による照合を足し、verdict を出します。needs_human の件数と理由を毎週数えます。3か月目以降: 問い合わせ文の下書きを足し、1件25分が何分になったかを実測します。対応表に足す言葉が週に数語まで減った時点で、この構成は完成です。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-10-07/最終更新:2026-10-07
確認した内容情報源確認日
再下請負通知書の記載事項(再下請負通知人と再下請負人の商号・住所・許可番号・許可業種、工事の名称・内容・工期・契約日、主任技術者、健康保険等の加入状況、一号特定技能外国人と外国人技能実習生の従事の状況など。第14条の4第1項・第14条の2第1項)。請け負わせる都度、遅滞なく書面で通知すること。下請契約の書面の写しを添付し、公共工事以外では請負代金の額の部分を除くこと。施工体制台帳と添付書類はスキャンしたファイルの記録で代えられること(第14条の2第3項・第4項)e-Gov法令API: 建設業法施行規則2026-10-07
国土交通省が施工体制台帳・施工体系図・再下請負通知書・作業員名簿の作成例を掲載していること。法令上の記載事項が網羅されていれば作成例以外の様式も利用できること。施工体制台帳等を建設キャリアアップシステムで作成できること。作成例の再下請負通知書に、大臣・知事、特定・一般、専任・非専任、保険の加入・未加入・適用除外、外国人の従事の有無を選ぶ欄があること国土交通省: 施工体制台帳、施工体系図等2026-10-07
建設業の許可が建設工事の種類ごとに行われ、2つの一式工事と27の専門工事の計29の種類に分かれること。軽微な建設工事(建築一式工事以外は1件500万円未満など)のみを請け負う場合は許可を要しないこと。許可の有効期間が5年であること国土交通省: 建設業の許可とは2026-10-07
レイアウトモデル(prebuilt-layout)がテキスト・表・選択マーク・文書の構造を抽出し、選択マークの状態(selected/unselected)と信頼度、行ごとの手書きの判定を返すこと。Markdown 形式で出力でき、表が HTML の表で表されること。PDFとTIFFが最大2,000ページ(Freeは2ページ)、S0で500MB、画像が50×50〜10,000×10,000ピクセル、文字の最小高さが1024×768で12ピクセルであること。パスワード付きPDFは解除が必要なことMicrosoft Learn: ドキュメント レイアウト分析2026-10-07
レイアウトモデルの印刷の文字と手書きの文字の対応言語に日本語が含まれること。キーと値の組をレイアウトモデルに features=keyValuePairs を指定して取ることMicrosoft Learn: Language support for Read and Layout2026-10-07
構造化出力がJSONスキーマに従わせる機能で、すべての項目を必須にし、オブジェクトに additionalProperties: false を付けること。文字列の pattern や数値の minimum・maximum などが使えないことMicrosoft Learn: Structured outputs (Azure OpenAI in Microsoft Foundry)2026-10-07

許可業種の扱いや、許可を要する工事かどうかは、自社の法務の担当と許可行政庁の案内に従ってください。 本記事は国土交通省のページと建設業法施行規則で確認できた範囲だけを扱っています。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-0666)についてのご相談はこちらから。

AI活用について相談する
目次