Media > AI活用ユースケース > 総務 > 建設現場で新規入場者が手書きするアンケートを読み取って入場者台帳に登録し、資格の未記入と健康状態の要確認をその日のうちに拾う

建設現場で新規入場者が手書きするアンケートを読み取って入場者台帳に登録し、資格の未記入と健康状態の要確認をその日のうちに拾う

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

新規入場者教育の場で作業員が手書きしたアンケートを、Azure AI Document Intelligence で読み取って入場者台帳に登録します。資格の欄の未記入と、血圧・服薬などの健康状態の要確認を、教育が終わる前に安全担当へ返します。

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

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

導入前(Before)
  1. 新規入場者教育の最後に、作業員がアンケートを手書きで記入して提出する
  2. 安全担当がざっと目を通し、空欄が目についたものだけその場で聞く
  3. 教育の後、工事事務の担当がアンケートを1枚ずつ見ながら、入場者台帳に打ち込む
  4. 資格の欄を、協力会社から事前に届いた作業員名簿と見比べる
  5. 健康状態の欄で気になるもの(高い血圧、服薬あり、寝不足)を付箋でメモする
  6. メモを安全担当に渡す。安全担当が職長を通じて本人に声をかける
  7. 紙のアンケートを現場ごとのファイルに綴じる
導入後(After)
  1. 人新規入場者教育の最後に、作業員がアンケートを記入して提出する(今までと同じ)
  2. 人工事事務の担当が、教育が終わる前に、提出された分をまとめて複合機でスキャンする
  3. 自動スキャンの保存をきっかけに、中継の処理がアンケートを1枚ずつに分け、Azure AI Document Intelligence のカスタムモデルで読み取る
  4. 自動欄ごとに、値と信頼度から `filled` / `blank` / `unreadable` を付ける
  5. 自動資格の記入を正規化し、作業員名簿と照らす。名簿にあってアンケートに無い資格、チェックだけで番号の無い資格を拾う
  6. 自動健康状態の欄を、全社で決めた規則に当てて `ok` / `ask` を付ける
  7. 自動安全担当のタブレットに、要確認の一覧(`blank` / `unreadable` / `ask`)を返す
  8. 人安全担当が、教育の場に残っている作業員に声をかけ、聞き取ってその場で直す
  9. 自動直した結果を入場者台帳に登録する
各工程の詳しい説明を読む
  1. 新規入場者教育の最後に、作業員がアンケートを手書きで記入して提出する
  2. 安全担当がざっと目を通し、空欄が目についたものだけその場で聞く
  3. 教育の後、工事事務の担当がアンケートを1枚ずつ見ながら、入場者台帳に打ち込む
  4. 資格の欄を、協力会社から事前に届いた作業員名簿と見比べる
  5. 健康状態の欄で気になるもの(高い血圧、服薬あり、寝不足)を付箋でメモする
  6. メモを安全担当に渡す。安全担当が職長を通じて本人に声をかける
  7. 紙のアンケートを現場ごとのファイルに綴じる

(a)要確認に気づくのが遅い。 打ち込みが昼過ぎになれば、作業員は朝から高所や重機の作業に就いています。「前夜ほとんど寝ていない」「血圧の薬を飲み忘れた」は、朝のうちに分からないと意味がありません。

(b)空欄が打ち込みで流れる。 打ち込む担当は、台帳の列を埋めることに集中しています。資格の番号の欄が空でも、チェックが付いていれば「保有」として打ち込まれ、番号が無いことは誰も見ません。

(c)字が読めない。 現場で、立ったまま、手袋を外したばかりの手で書くアンケートです。電話番号の数字が1か7か、生年月日の年が読めないことが毎日あります。 読めない欄は空欄のまま打ち込まれるか、推測で埋められます。

(d)名簿との食い違いが拾われない。 協力会社が事前に出した名簿には「玉掛け技能講習」とあるのに、本人のアンケートには資格の記入が無い。どちらが正しいのかは、本人に聞いて原本を見るまで分かりません。 打ち込みの担当は名簿を横に置いていても、全員分を見比べる時間はありません。

(e)見るところが現場で違う。 血圧の値をどこから要確認とするか、健康診断の受診からの期間をどう見るか。全社で決めてあっても、担当者の目で見ている限り、現場ごとにばらつきます。

  1. 【人】 新規入場者教育の最後に、作業員がアンケートを記入して提出する(今までと同じ)
  2. 【人】 工事事務の担当が、教育が終わる前に、提出された分をまとめて複合機でスキャンする
  3. 【自動】 スキャンの保存をきっかけに、中継の処理がアンケートを1枚ずつに分け、Azure AI Document Intelligence のカスタムモデルで読み取る
  4. 【自動】 欄ごとに、値と信頼度から filled / blank / unreadable を付ける
  5. 【自動】 資格の記入を正規化し、作業員名簿と照らす。名簿にあってアンケートに無い資格、チェックだけで番号の無い資格を拾う
  6. 【自動】 健康状態の欄を、全社で決めた規則に当てて ok / ask を付ける
  7. 【自動】 安全担当のタブレットに、要確認の一覧(blank / unreadable / ask)を返す
  8. 【人】 安全担当が、教育の場に残っている作業員に声をかけ、聞き取ってその場で直す
  9. 【自動】 直した結果を入場者台帳に登録する

8番目が、この設計の分かれ目です。 要確認の一覧が、作業員がまだ教育の場にいるうちに届くことが肝です。一覧が昼過ぎに届くなら、今の打ち込みと変わりません。 スキャンから一覧までを数分で返す設計にします。

6番目を規則にしているのも、意図してのことです。 健康状態の申告を読んで「この人は作業に就かせないほうがよい」と言わせる設計にはしません。声をかけるかどうかの線を全社の規則として持ち、その先は人が本人と話して決めます。

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

構成図
新規入場者アンケート(手書き・全社共通の様式)
   │  複合機でスキャン
   ▼【トリガー】共有フォルダへのPDFの保存
Azure Functions(中継の処理)
   ├──▶ 1枚ずつに分割、向きと解像度の確認
   ▼
Azure AI Document Intelligence(カスタムテンプレートモデル)
   │   欄ごとの値、チェック欄の状態、信頼度
   ▼
Azure Functions ── filled / blank / unreadable の判定
   ├──▶ Azure OpenAI ── 資格名の書き方のゆれを正規化
   ├──▶ 作業員名簿と照合
   └──▶ 健康状態の規則(ok / ask)
   ▼
安全担当のタブレットへ要確認の一覧
   ▼【人が本人に確認・修正】
入場者台帳へ登録
役割想定する製品代替候補
OCRAzure AI Document Intelligence(カスタムテンプレートモデル)Google Document AI(Form Parser)
生成AIAzure OpenAI(Microsoft Foundry)(資格名の正規化だけに使う)Claude API、Gemini API
連携Azure Functions(分割、判定、照合、登録)Azure Logic Apps
台帳既存の入場者台帳―
保管Azure Blob Storage(スキャンと読み取り結果の控え)社内のファイルサーバー

入場者台帳と作業員名簿は、新しく足すものではありません。 足すのは読み取りと中継の処理です。最初の準備は、全社共通の様式で書かれた記入済みのアンケートを集め、欄の位置にラベルを付けることです。

読み取りには、カスタムテンプレートモデルを使います。 欄の位置が決まった様式から、ラベルを付けたキーと値、チェック欄、表、署名を取り出すモデルで、見た目の様式が決まった書類に向くとされています。手書きの日本語は、カスタムテンプレートモデルの手書きの対応言語に入っています。

入力はPDFと画像(JPEG/JPG、PNG、BMP、TIFF、HEIF)です。 PDFとTIFFは2,000ページまで、有料(S0)レベルで500MBまでです。画像は50×50から10,000×10,000ピクセルの間で、抽出する文字の高さは1024×768の画像で12ピクセル以上が必要です。150dpiでおよそ8ポイントの文字に当たります。

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

Step1

処理の起点を決める

スキャンしたPDFが共有フォルダに保存されたことを起点にします。 工事事務の担当は、教育の最後の説明が続いている間に、提出された分をまとめて複合機に通します。1回のスキャンに10枚前後が入る想定です。

複合機の保存先は、現場ごとのフォルダにします。フォルダ名に現場のコードを入れ、どの現場の入場者かをファイルの置き場所で決めます。 アンケートに現場名を書かせても、略称や書き間違いで照合できないことがあります。

一覧はスキャンから5分以内に返すことを目標にします。 それより遅れると、作業員は教育の場を離れて現場に散ります。処理が混んで遅れたときは、一覧の画面に「処理中」と枚数を出します。

Step2

入力データを集める

データ中身取得元
アンケートのスキャン1回のスキャンにまとめて入った複数枚のPDF現場ごとの共有フォルダ
読み取り結果欄ごとの値、チェック欄の状態、欄ごと・単語ごとの信頼度、書類の種類の信頼度Azure AI Document Intelligence
作業員名簿協力会社から事前に届いた名簿(氏名、生年月日、職種、保有資格)作業員名簿の受付の仕組み
資格の一覧全社で使う資格の正式名と、書き方のゆれ(「玉掛」「玉掛け技能講習」など)安全部門で用意する一覧
健康状態の規則声をかける線(血圧の値、服薬、睡眠、受診からの月数)安全衛生委員会で決めた表

質を決めるのは、下の2つです。 資格の一覧に書き方のゆれが無ければ、「玉掛」と「玉掛け」が別の資格として扱われ、名簿との照合で食い違いが毎回出ます。 規則の表が無ければ、要確認の線が担当者の目に戻ってしまいます。

作業員名簿は、照合のためだけに使います。 アンケートの空欄を名簿の値で埋めることはしません。本人が書かなかったことは、本人に確かめます。

Step3

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

読み取りは、中継の処理からカスタムテンプレートモデルを呼びます。モデルは、全社共通の様式で書かれた記入済みのアンケートにラベルを付けて学習させたものです。

取るものどこから何に使うか
欄ごとの値documents[].fields台帳の各列の値
欄ごとの信頼度各フィールドの confidenceblank と unreadable の区別
単語ごとの信頼度pages[].words電話番号や生年月日の数字の読み違いの検出
チェック欄の状態と信頼度pages[].selectionMarks資格のチェックと、健康状態の「はい/いいえ」
書類の種類の信頼度書類の種類の confidence様式違いの紙(古い版、他社の様式)の検出

チェック欄は、状態と信頼度の両方を見ます。 公式の説明では、ラベルを付けた欄がチェック欄のときは、欄の選択とチェック欄の信頼度を合わせたものが全体の信頼度をよく表すとされています。チェックが薄い、枠からはみ出しているものは、信頼度が下がって unreadable に回ります。

書類の種類の信頼度は、様式の版の違いを拾うのに使います。 現場に古い版のアンケートが残っていると、欄の位置がずれて値が隣の欄に入ります。この信頼度が低い紙は、欄ごとの値を使わずに全体を人に回します。

呼び出しは、学習させたモデルのIDを指定して1ファイルずつ送ります。

POST {endpoint}/documentintelligence/documentModels/{モデルID}:analyze?api-version=2024-11-30
本文: 1枚分に分けたPDF(またはその保存先のURL)
戻り: 処理の受付。結果は Operation-Location のURLを問い合わせて受け取る

モデルIDには版を入れます。 様式を改定したら新しいモデルを学習させ、questionnaire-v3 のように別のIDにします。古い版の紙が届いたときに、古いモデルで読み直せるようにするためです。

作業員名簿は、氏名と生年月日で引きます。ふりがなの欄があれば、それも照合に使います。 手書きの漢字の氏名は読み違いが起きやすく、生年月日と組み合わせないと別人に当たります。

Step4

AIへ渡す前に整形する

  1. 1枚ずつに分ける … まとめてスキャンしたPDFを、ページごとのファイルに分けます。様式が両面なら2ページで1件にします
  2. 向きを直す … 逆さに入った紙を正しい向きに回します
  3. 解像度を確かめる … 文字の高さの下限を下回らないよう、複合機の設定を200dpi以上に固定します。下回るファイルはスキャンし直しを促します
  4. 白紙と別の紙を除く … 教育資料や白紙が混ざっていれば、書類の種類の信頼度で除きます
  5. 重複を除く … 同じ氏名と生年月日が同じ日に2件あれば、後のものに印を付けます
  6. パスワードを確かめる … 複合機の設定でPDFに鍵が掛かっていると読めません。鍵を掛けない設定にします

3番目を軽く見ないでください。 現場の複合機は、既定で文字が小さめに出る設定になっていることがあります。解像度が足りないだけの紙は、「書いていない」と区別がつきません。

Step5

AIに処理させる

読み取りは Document Intelligence に、判定は規則に、生成AIには資格名の正規化だけをさせます。

段階誰が行うか内容
欄の読み取りDocument Intelligence値、チェックの状態、信頼度を返す
記入の区分中継の処理(規則)値が無く信頼度が高ければ blank、値はあるが信頼度が低ければ unreadable
資格名の正規化Azure OpenAI手書きで書かれた資格名を、資格の一覧の正式名に当てる
名簿との照合中継の処理(規則)名簿にあってアンケートに無い資格、チェックだけで番号の無い資格を拾う
健康状態の判定中継の処理(規則)全社の表に当てて ok / ask

空の欄の扱いは、信頼度の性質に合わせます。 公式の説明では、学習データで空であることが多い欄は、値が無いときに高い信頼度で空と返るとされています。つまり、空で信頼度が高い欄は「書いていない」、空でも信頼度が低い欄は「書いたかもしれないが読めない」です。この区別のために、学習用のアンケートには空欄のあるものを混ぜておきます。

健康状態の規則は、たとえば次のような表にします。値は例で、自社の安全衛生委員会が決めるものです。

rule_id欄声をかける条件
H-01血圧上か下のどちらかが、委員会で決めた値以上
H-02服薬「あり」にチェックがあり、当日の服薬の欄が空
H-03前夜の睡眠「よく眠れなかった」にチェック
H-04健康診断最後に受けた月から、委員会で決めた月数を超えている
H-05持病「あり」にチェックがあり、内容の欄が空

規則の表に無い組み合わせは ask にしません。 表に無いものまで拾い始めると、声をかける相手が増えすぎて、教育の場で片づかなくなります。表を変えたいときは委員会で変えます。

生成AIを使うのは、資格の欄の自由記述だけです。 チェック欄の外に「その他」として「玉掛」「ガス溶接」「職長教育」のように書かれた文字を、資格の一覧の正式名に当てます。

させないこと理由
空欄を名簿の値で埋める本人の申告ではなくなる
読めない数字を推測で埋める電話番号の1けたの誤りで、緊急時に連絡がつかない
健康状態から就業の可否を言う安全担当と職長が本人と話して決める
資格の一覧に無い資格を作る正規化できないものは、そのまま人に回す
資格を持っているかの真偽を判断する免許証や修了証の原本で確かめる

2行目が、この構成でいちばん重い失敗です。 緊急連絡先の電話番号は、事故が起きたときに初めて使われます。読めなかった数字は読めなかったとして返し、その場で本人に書き直してもらいます。

Step6

指示内容を固定する

資格名の正規化に使う指示です。

あなたは建設会社の安全部門で、新規入場者アンケートの資格の欄に
手書きで書かれた資格名を、社内の資格の一覧の正式名に当てる立場です。

【やること】
- 読み取った文字列1つごとに、資格の一覧のどれに当たるかを選んでください。
- 当たるものが1つに決まらないときは、候補をすべて candidates に並べ、
  official_name を null にしてください。
- 資格の一覧に無いものは official_name を null にし、
  not_in_master を true にしてください。

【厳守事項】
- 資格の一覧に無い名前を作らないでください。
- 「技能講習」「特別教育」「免許」の区別を勝手に補わないでください。
  たとえば「フォークリフト」とだけ書かれていたら、
  技能講習と特別教育の両方を candidates に並べてください。
- 読み取った文字列の誤字を推測で直しすぎないでください。
  1文字違いで別の資格に当たる場合は、候補を並べてください。
- その人が資格を持っているかどうかは判断しないでください。
- 資格の番号は扱いません。番号の欄は別に処理します。

【資格の一覧】{qualification_master}
【読み取った文字列】{raw_texts}

「技能講習と特別教育の区別を補わない」を明記するのが要です。 フォークリフトや小型移動式クレーンは、機械の大きさによって技能講習か特別教育かが分かれ、どちらを持っているかで就ける作業が違います。 「フォークリフト」とだけ書かれた申告を、どちらか一方に寄せてはいけません。労働安全衛生法では、政令で定める業務は免許を受けた者や技能講習を修了した者などでなければ就かせてはならず、就く者は資格を証する書面を携帯していなければならないとされています。区別がつかない申告は、原本を見て決めます。

Step7

出力形式を固定する

中継の処理が組み立てる、1件分の結果は次の形です。 資格名の正規化の部分は、Azure OpenAI の構造化出力で受け取ります。構造化出力では、すべての項目を必須にし、決まらないものは null との共用体型で表し、オブジェクトに additionalProperties: false を付けます。

{
  "site_code": "S-0217",
  "scan_id": "20261007-0815-03",
  "doc_type_confidence": 0.97,
  "fields": [
    { "name": "emergency_phone", "value": "090-12?4-5678", "confidence": 0.41,
      "status": "filled | blank | unreadable" }
  ],
  "qualifications": [
    { "raw": "フォークリフト", "official_name": null,
      "candidates": ["フォークリフト運転技能講習", "フォークリフト運転特別教育"],
      "checked": true, "number_written": false, "roster_match": "in_roster | not_in_roster" }
  ],
  "health": [
    { "item": "blood_pressure", "value": "165/98", "rule": "ask", "rule_id": "H-01" }
  ],
  "summary": { "blank": 1, "unreadable": 1, "qualification_issues": 1, "health_ask": 1 }
}

1つ目の理由は、status を規則で決められることです。 blank と unreadable は、値の有無と信頼度から機械で決まります。しきい値は全社で1つに決め、現場ごとに変えません。

2つ目は、rule_id で判定の根拠を示せることです。 健康状態の ask には、どの規則に当たったかを付けます。安全担当が本人に声をかけるとき、「会社の決まりで、血圧がこの値以上の方には確認しています」と言えます。 担当者の印象で呼び止められたと受け取られずに済みます。

3つ目は、summary で一覧の並べ方を決められることです。 要確認の多い人を上に並べ、限られた時間で先に声をかけます。

Step8

システムへ連携する

つなぎ先方式内容
現場ごとの共有フォルダ保存のトリガースキャンしたPDFを受け取る
Azure AI Document IntelligenceAPI呼び出し欄ごとの値、チェックの状態、信頼度を返す
Azure OpenAIChat Completions API(構造化出力)資格名の正規化
作業員名簿の受付の仕組み書き出しファイルの読み取り氏名・生年月日・保有資格を引く
安全担当のタブレット一覧の画面要確認の一覧を出し、聞き取った結果を受け取る
入場者台帳行の追加確認済みの値を登録する

入場者台帳への登録は、安全担当が確認を終えたものだけです。 要確認の無いアンケートは、一覧で件数だけ見て登録します。unreadable が残ったまま台帳に入れることはしません。

作業員名簿へは書き戻しません。 アンケートと名簿が食い違っても、名簿を直すのは協力会社への確認を経てからです。

Step9

人が確認する

  1. unreadable を先に見る … 多くは紙を見れば読めます。緊急連絡先と生年月日は、読めても本人に読み上げてもらいます
  2. blank を本人に聞く … 資格の番号、緊急連絡先、健診の受診月の空欄は、その場で書き足してもらいます
  3. 資格の食い違いを確かめる … 名簿にあってアンケートに無い資格、チェックだけで番号の無い資格は、免許証や修了証の原本を見せてもらいます
  4. 健康状態の ask の人と話す … 血圧、服薬、睡眠について本人と話し、職長と作業の割り当てを相談します
  5. 聞き取った結果を画面で直して確定する

4番目は、判定ではなく会話です。 ask は「声をかける」という意味で、「作業させない」という意味ではありません。本人が服薬を済ませていれば、それで終わることも多いのです。

目標は、600件をならして1件2分です。 要確認の無いアンケートは一覧で確かめて数十秒、要確認のある人には声をかけて数分という想定です。

Step10

例外に対処する

起きること対応
書類の種類の信頼度が低い古い版の様式か別の紙。欄ごとの値を使わず、全体を人に回す
文字の高さが下限を下回る複合機の設定を見直し、スキャンし直す
パスワード付きのPDF鍵を外す必要がある。複合機の設定を直す
名簿に該当者がいない名簿の未提出か、氏名の読み違い。ふりがなと生年月日で引き直し、それでも無ければ協力会社に確認
資格名が一覧に無いnot_in_master として人に回す。一覧に足すかは安全部門が決める
1人が2枚書いた後のものを採り、前のものに印を付けて残す
外国人の作業員が母語で書いた読み取りの対象外として人に回す。母語の様式を用意するかを検討する
Document Intelligence が応答しない共有フォルダに残し、再実行する。一覧には「未処理」と出す

上の2行が、運用の初めに多く出ます。 現場に残っている古い様式と、複合機の設定のばらつきです。どちらもAIの問題ではなく、紙と機械の側をそろえる話です。

Step11

記録を残す

  • スキャンしたPDFと、現場・日時
  • Document Intelligence が返したJSONの全文(欄ごと・単語ごとの信頼度を含む)
  • 資格名の正規化の入出力
  • 判定の結果と、そのとき使った規則の版
  • 安全担当が直した差分 … どの欄を、何から何に直したか
  • 健康状態の ask について、声をかけた結果(作業の割り当てを変えたか)

規則の版を残すのは、線が後から変わるためです。 血圧の線を変えたら、過去の ask の意味も変わります。当時の線が残っていないと、事故の後に振り返れません。

直した差分は、モデルの学習データを足す材料です。 特定の欄で unreadable が続くなら、その欄の記入例を学習に足すか、様式の欄を広げます。

04実装レベルの3段階

最小構成:Studio で読み取りを試し、結果を手で台帳に写す / 読み取りの確認
半自動化:上記+スキャンを起点に読み取り、`blank` / `unreadable` の一覧を出す / 読み取りと記入の区分
本格構成:上記+資格名の正規化、名簿との照合、健康状態の規則、安全担当の画面、台帳への登録まで行う / 受付から台帳への登録までの全体

最小構成では、件数がさばけません。 確かめるための段階です。 半自動化で、1件7分が4分程度になります。 打ち込みは無くなりますが、名簿との見比べと健康状態のメモが手作業で残ります。本格構成で2分になり、この段階が本記事の想定です。 差が大きいのは、名簿との照合と健康状態の判定が規則で済むと、人は声をかける相手を探す必要がなくなるからです。 段階を飛ばさないでください。 半自動化で1か月回すと、unreadable の多い欄と、古い様式の残っている現場が先に分かります。そこを直してから名簿との照合と健康状態の規則を入れるほうが、教育の場で聞き返す人数が落ち着きます。 最初から全部を入れると、読み取りの問題と規則の線の問題が同じ一覧に混ざり、どちらを直せばよいかが分からなくなります。

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

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

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

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

AI活用について相談する

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

向いている
  1. 複数の現場を持つ元請の建設会社で、新規入場者教育のたびに作業員が紙のアンケートを手書きし、現場事務所の担当がそれを入場者台帳に打ち込んでいる場合。アンケートの様式が全現場で共通に決まっている場合。資格の記入漏れや、血圧・服薬などの健康状態の申告が、台帳に打ち込まれた後で誰にも見られていない場合。プラントや工場の構内工事で、外部の作業者を毎月受け入れている製造業。
向いていない
  1. 新規入場者が月に数人の現場。アンケートの様式が現場ごと・協力会社ごとにばらばらで、共通の様式にそろえられない場合(先に様式を統一する)。入場の受付をすでにタブレットや作業員のスマートフォンからの入力に切り替えている場合。なお、作業員を就業させてよいか、健康状態から作業を制限するかの判断はこの構成では行いません。

07最小構成で試す方法

  1. 先月のアンケートから30枚を選ぶ(空欄のあるもの、字の読みにくいものを必ず入れる。氏名と電話番号は黒塗りにする)
  2. Document Intelligence Studio でレイアウトモデルに通し、欄の値とチェックの状態がどこまで取れるかを見る
  3. 同じ30枚から5枚以上にラベルを付けてカスタムテンプレートモデルを学習させ、残りで試す
  4. 当時の台帳への打ち込みと並べ、空欄と読めない欄が分かれて出たかを最初に見る
  5. 健康状態の欄を、全社の規則に手で当てて、ask になる枚数を数える

4番目を必ず見てください。 空欄が blank、かすれた欄が unreadable に分かれて出るなら、この構成は使えます。

出てきた内容判断
空欄と読めない欄が分かれて出た中継の処理と一覧の画面を作る段階に進む
空欄が高い信頼度で返らない学習データに空欄のあるアンケートを足して試し直す
欄の値が隣の欄に入る様式の版が混ざっている。 版をそろえるのが先

3行目は、現場の紙の管理の問題です。 様式を改定したのに古い版が現場に残っていると起きます。AIの精度を上げる前に、古い様式を回収してください。

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

問題対策
空欄と読めない欄が混ざる値の有無と信頼度で分ける。 学習データに空欄のある紙を入れる
読めない数字を推測で埋める埋めずに unreadable で返し、本人に書き直してもらう
空欄を名簿の値で埋める名簿は照合だけに使う
「フォークリフト」を一方の資格に寄せる技能講習と特別教育の両方を候補に並べ、原本で決める
古い版の様式で値が隣の欄に入る書類の種類の信頼度で検出し、古い様式を回収する
複合機の解像度が足りない200dpi以上に固定し、現場ごとに確かめる
一覧が届くのが遅いスキャンから5分以内を目標にし、処理中の枚数を出す
ask が「作業させない」と受け取られる声をかける線であることを全員に説明し、rule_id を示す
氏名の読み違いで名簿に当たらないふりがなと生年月日で引く
外国人の作業員の申告が読めない母語の様式を用意するかを検討する
規則の線が現場ごとに書き換えられる規則の表は全社で1つにし、版を付けて管理する
学習に使ったアンケートの個人情報が残るラベル付けの後、学習用の控えの扱いを決めておく

表の最後の2行は、運用が広がってから効いてきます。 現場の判断で線を下げると、その現場だけ ask が増え、本社から見て現場の比較ができなくなります。

上の2行が、この構成の失敗のほとんどです。 どちらも「紙の上では空に見える」ことから始まります。判定の根拠を信頼度という数値に置いてあるかどうかで、運用に乗るかが決まります。

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

この構成で扱うデータ: 作業員の氏名、生年月日、緊急連絡先、保有資格、そして血圧・持病・服薬などの健康状態の申告です。病歴に当たる申告は、要配慮個人情報に当たるものを含みます。

  1. 健康状態の申告の利用目的を示す … アンケートの様式に、何のために聞き、誰が見るかを書いておきます
  2. 健康状態を見られる人を絞る … 一覧の健康状態の欄は、安全担当と職長だけが見られるようにします。工事事務の担当や協力会社には見せません
  3. 生成AIに健康状態を渡さない … 生成AIに渡すのは資格の欄の文字列だけです。健康状態の判定は規則で行い、外へ出しません
  4. 就業の可否をAIに決めさせない … ask は声をかける線です。作業の制限は、安全担当と職長が本人と話して決めます
  5. 紙の原本の扱いを決める … スキャンした後の紙を、どこにいつまで保管し、いつ廃棄するかを決めます
  6. 台帳の保存期間を決める … 工期が終わった現場の入場者台帳を、いつまで残すかを決めます

誤りが起きた場合のリスクは、資格の無い人を作業に就かせることと、緊急時に連絡がつかないことの2つです。 前者は資格名の推測から、後者は読めない数字の推測から起きます。どちらも推測を禁じ、本人に確かめる設計で防ぎます。

10まず何から始めるか

1週目:様式をそろえる

全社のアンケートの様式の版を確かめ、古い版を現場から回収します。 あわせて、健康状態の申告の利用目的の書きぶりを見直します。

2週目:30枚で試す

先月のアンケートから30枚を選び、氏名と電話番号を黒塗りにして Studio で読み取ります。空欄と読めない欄が分かれて出るかを最優先で見ます。

3週目:規則と資格の一覧を決める

安全衛生委員会で、健康状態の声をかける線を表にします。 安全部門で、資格の正式名と書き方のゆれの一覧を作ります。

4週目:1つの現場でつなぐ

1つの現場の共有フォルダを起点に、読み取りと blank / unreadable の一覧までを作ります。この時点では健康状態の判定を入れず、一覧が教育の場に間に合うかを見ます。

2か月目: 資格名の正規化、名簿との照合、健康状態の規則を足し、ask の件数を現場ごとに数えます。3か月目以降: 全現場に広げ、1件7分が何分になったかを実測します。unreadable の多い欄を様式の側で直し、要確認が教育の場で片づくようになった時点で、この構成は完成です。


11関連ユースケース

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

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

技術仕様確認日:2026-10-07/最終更新:2026-10-07
確認した内容情報源確認日
カスタムテンプレートモデルがラベルを付けたキーと値、チェック欄、表、領域、署名を取り出し、見た目の様式が決まった書類に向くこと。様式の違いごとに5枚以上の学習が目安であること。入力がPDFと画像(JPEG/JPG、PNG、BMP、TIFF、HEIF)であること。PDFとTIFFが2,000ページまで、S0で500MBまでであること。画像が50×50から10,000×10,000ピクセル、文字の高さが1024×768の画像で12ピクセル以上(150dpiで約8ポイント)であること。パスワード付きのPDFは鍵を外す必要があることMicrosoft Learn: Custom template document model2026-10-07
カスタムテンプレートモデルとカスタムニューラルモデルの手書きの対応言語に日本語が含まれることMicrosoft Learn: Language and locale support for custom models2026-10-07
欄ごとの信頼度が0から1の確率の推定であり、人の確認に回すかを決めるのに使えること。書類の種類の信頼度、欄ごと・単語ごと・チェック欄の信頼度があること。チェック欄の欄では、欄の選択とチェック欄の信頼度を合わせたものが全体の信頼度をよく表すこと。学習データで空であることが多い欄は、値が無いとき高い信頼度で空と返ることMicrosoft Learn: Interpret and improve model accuracy and confidence scores2026-10-07
構造化出力でモデルが指定したJSONスキーマに従うこと。すべての項目を必須にし、決まらないものは null との共用体型で表すこと。additionalProperties: false が必要なことMicrosoft Learn: Azure OpenAI で構造化出力を使用する方法2026-10-07
政令で定める業務には、免許を受けた者、技能講習を修了した者その他の資格を有する者でなければ就かせてはならないこと。就く者は免許証その他資格を証する書面を携帯していなければならないこと(第61条)e-Gov法令検索(法令API): 労働安全衛生法 第61条2026-10-07

作業員を就業させてよいか、どの作業にどの資格が要るかは、元請の安全担当と職長が、法令と原本に基づいて判断してください。 本記事は公開仕様で確認できた範囲だけを扱っています。

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

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

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

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