受付に置いた手書きの来訪者受付簿を読み取って入退館の記録にそろえ、退館時刻の記入漏れと入館証の未返却をその日のうちに総務へ返す
受付と守衛所に置いた手書きの来訪者受付簿をスキャンして読み取り、入退館の記録にそろえます。退館時刻の書かれていない行と、返却の印が無い入館証を、その日のうちに総務へ知らせます。
- 生成AI
- Azure OpenAI Service/Claude
- AIサービス
- Azure AI/Google Document AI
- 対象業界
- IT・SaaS/その他/不動産/製造
- 対象部門
- 総務
- 対象業務
- データ入力・転記/台帳・マスタ管理
- 主な課題
- 入力作業が多い/期限・対応漏れが起きる/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 来訪者が受付簿に来訪日・入館時刻・氏名・会社名・訪問先を書く
- 受付が入館証を渡し、その番号を受付簿に書く
- 来訪者が帰るときに退館時刻を書き、受付が入館証を受け取って返却の欄に印を付ける
- 翌朝、総務が前日の受付簿を集め、1行ずつ表計算に打ち直す
- 退館時刻の欄が空の行と、返却の印が無い行に色を付ける
- 入館証の貸出台帳を開き、色を付けた行の入館証番号が戻っているかを確かめる
- 戻っていない入館証について、訪問先の社員に来訪者への確認をメールで頼む
- 人受付と守衛所が、受付を閉める時刻に当日の受付簿を複合機でスキャンする
- 自動スキャンしたPDFが保管場所に届いたことをきっかけに処理が動き、ページ数と画像の大きさを確かめる
- 自動OCRが受付簿の表、手書きの文字、返却の欄の印、単語ごとの信頼度を返す
- 自動プログラムが表の行を記録の項目に組み立て、時刻と入館証番号の形を確かめる
- 自動生成AIが、訪問先の欄の文字を社内の部署と担当者の候補に結びつける
- 自動退館時刻と返却の欄を確かめ、入館証の貸出の状況と突き合わせる
- 自動記入漏れ・未返却・読めない欄に印を付け、入退館の記録に行を足して総務に知らせる
- 人総務が印の付いた行だけを開き、受付簿の画像と見比べる
- 人入館証が戻っていないと確かめたら、訪問先の社員に当日中に来訪者への確認を頼む
各工程の詳しい説明を読む
- 来訪者が受付簿に来訪日・入館時刻・氏名・会社名・訪問先を書く
- 受付が入館証を渡し、その番号を受付簿に書く
- 来訪者が帰るときに退館時刻を書き、受付が入館証を受け取って返却の欄に印を付ける
- 翌朝、総務が前日の受付簿を集め、1行ずつ表計算に打ち直す
- 退館時刻の欄が空の行と、返却の印が無い行に色を付ける
- 入館証の貸出台帳を開き、色を付けた行の入館証番号が戻っているかを確かめる
- 戻っていない入館証について、訪問先の社員に来訪者への確認をメールで頼む
(a)気づくのが翌日以降になる。 4番が翌朝なので、入館証が戻っていないことに気づくのは来訪者が帰った後の翌日です。来訪者の会社に連絡しても、本人がどこに置いたか覚えていません。 当日のうちなら、まだ帰りの電車の中にいるかもしれません。
(b)書いた人の字を、別の人が読む。 受付簿の字は来訪者のものです。会社名の略し方、訪問先の書き方、時刻の書き方が行ごとに違います。「佐藤」と書かれた訪問先が、社内に5人いることもあります。 打ち直す総務の担当は、訪問先を特定するために部署の一覧と見比べます。
(c)空欄の意味が人によって違う。 退館時刻が空で返却の印がある行は、書き忘れただけで入館証は戻っています。退館時刻があって返却の印が無い行は、受付が印を付け忘れたのか、入館証が戻っていないのか、紙からは分かりません。 担当者によって、問い合わせる・問い合わせないが分かれます。
(d)全ページの打ち直しは続かない。 80ページを3名で打ち直すと、1ページ30分で月40時間です。繁忙期には打ち直しが数日分たまり、その間は入館証の確認も止まります。
- 【人】 受付と守衛所が、受付を閉める時刻に当日の受付簿を複合機でスキャンする
- 【自動】 スキャンしたPDFが保管場所に届いたことをきっかけに処理が動き、ページ数と画像の大きさを確かめる
- 【自動】 OCRが受付簿の表、手書きの文字、返却の欄の印、単語ごとの信頼度を返す
- 【自動】 プログラムが表の行を記録の項目に組み立て、時刻と入館証番号の形を確かめる
- 【自動】 生成AIが、訪問先の欄の文字を社内の部署と担当者の候補に結びつける
- 【自動】 退館時刻と返却の欄を確かめ、入館証の貸出の状況と突き合わせる
- 【自動】 記入漏れ・未返却・読めない欄に印を付け、入退館の記録に行を足して総務に知らせる
- 【人】 総務が印の付いた行だけを開き、受付簿の画像と見比べる
- 【人】 入館証が戻っていないと確かめたら、訪問先の社員に当日中に来訪者への確認を頼む
8番目が、この設計の分かれ目です。人が見るのは全行ではありません。 退館時刻と返却の印がそろった行は記録に入るだけで、人は印の付いた行にだけ時間を使います。 全行を人が見直す設計にすると、40.0時間はほとんど減りません。
1番目を「受付を閉める時刻」にしているのも、意図してのことです。 翌朝のスキャンでは、9番目の問い合わせが翌日になり、今の業務と変わりません。入館証の確認を当日に終えることが、この構成のいちばんの価値です。
02今回想定するシステム構成
来訪者受付簿(手書き・1ページ20行) │ 受付を閉める時刻に複合機でスキャン ▼【トリガー】保管場所へのPDFの保存 Azure Functions ├──▶ ページ数・画像の大きさの確認 ▼ Azure AI Document Intelligence(レイアウトモデル) │ 表のセル・手書きの文字・選択の印・単語ごとの信頼度 ▼ Azure Functions ── 行の組み立て、時刻と番号の形の確認 ▼ Azure OpenAI ── 訪問先の欄だけを部署と担当者の候補に結びつける ▼ Azure Functions ── 退館時刻と返却の確認、入館証の貸出状況との突き合わせ ▼ 入退館の記録(行の追加)+総務への通知 ▼ 【人が印の付いた行だけ確認】→ 訪問先の社員へ当日中に確認を依頼
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Azure AI Document Intelligence(レイアウトモデル) | Google Document AI(Form Parser) |
| 生成AI | Azure OpenAI(Microsoft Foundry)(訪問先の欄を部署と担当者の候補に結びつける) | Claude API |
| 連携 | Azure Functions(行の組み立て、欄の確認、入館証の突き合わせ、記録への書き込み) | Azure Logic Apps |
| 保管 | SharePoint のドキュメントライブラリ(受付簿のスキャン) | Azure Blob Storage |
入館証の貸出台帳は、紙から表に移します。 番号・保管場所・状態(手元/貸出中/紛失)の3列だけの表です。これがこの構成の最初の準備作業で、ここだけは新しく作ります。 社内の部署と社員の一覧は、人事から毎月受け取っているものを読むだけです。
土台になるのは、Azure AI Document Intelligence のレイアウトモデルです。 テキスト、テーブル、選択マーク、ドキュメントの構造を抽出するモデルで、手書きのテキストの対応言語に日本語(ja)が含まれています(v4.0 のレイアウトモデル)。受付簿は罫線で区切られた表なので、行と列の位置がそのまま記録の行と項目になります。
この構成で効くのは、3つの返り値です。 1つ目は表のセルで、rowIndex と columnIndex、見出しのセルかどうかを示す kind(columnHeader)が返ります。2つ目は単語ごとの confidence で、手書きの時刻や番号を読めたかどうかの根拠になります。3つ目は選択マークで、返却の欄のチェックの枠が selected / unselected として信頼度とともに返ります。返却の印を、文字としてではなく印として読めます。
データの扱いも確かめておきます。 公式のページでは、受信データはリソースを作成したのと同じリージョンで処理され、送信された入力データと分析結果は、分析の完了から24時間で自動的に削除されるとされています。それより前に消すための Delete Analyze Result の API もあります。
03どうやって実装するのか
処理の起点を決める
保管場所に受付簿のPDFが置かれたことを起点にします。 受付と守衛所の複合機に「受付簿」というスキャンの宛先を1つ登録し、押せば決まったフォルダに保存されるようにします。ファイル名には、場所(本社/工場)とスキャンの日時を入れます。
スキャンは、受付を閉める時刻に1回行います。 本社受付なら18時、工場の守衛所なら最後の来訪者が帰る時刻です。ページが埋まるたびにスキャンする運用にはしません。 途中のページでは退館時刻がまだ空なのが当然で、未退館と記入漏れを区別できないからです。
夜間の来訪がある守衛所は、翌朝の始業前にもう1回スキャンします。 処理が終わったPDFは処理済みのフォルダへ移し、移すのは成功したときだけにします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 受付簿のPDF | 1日分のページ。場所とスキャンの日時 | 保管場所 |
| 読み取り結果 | 表のセル、手書きの文字、返却の欄の印、単語ごとの信頼度 | Azure AI Document Intelligence |
| 入館証の一覧 | 番号、保管場所(本社/工場)、状態(手元/貸出中/紛失) | 総務が作る入館証の表 |
| 部署と社員の一覧 | 部署名、階、社員の氏名、内線、メールアドレス | 人事から受け取る一覧(読み取りのみ) |
| 当日の手元の入館証 | 受付を閉める時刻に、受付が数えた手元のカードの番号 | 受付が入力する簡単なフォーム |
質を決めるのは、いちばん下の1つです。 受付簿の返却の印は、受付が付け忘れることがあります。手元にあるカードの番号を受付が数えて入れれば、印が無くても実物が戻っていることを確かめられます。 50枚を数える作業は数分で終わり、紙の印より確かです。
部署と社員の一覧は、訪問先を結びつけるためだけに使います。 一覧そのものを記録に書き写すことはしません。
データの取得方法を決める
読み取りは、レイアウトモデル(prebuilt-layout)を呼ぶだけです。表のセルの位置をそのまま使うので、出力の形式は既定のままで足ります。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 表とセル | tables(rowIndex/columnIndex/kind) | 行と項目の位置を決める |
| 単語ごとの信頼度 | pages の words(confidence) | 時刻・入館証番号・会社名を読めたかの判定 |
| 手書きかどうか | styles(isHandwritten) | 様式に印刷された見出しと、書き込まれた値を分ける |
| 選択の印 | selectionMarks(selected/unselected) | 返却の欄 |
列の対応は、見出しのセルで決めます。 kind が columnHeader のセルの文字(「入館時刻」「訪問先」「入館証No.」など)から、列番号と記録の項目の対応を作ります。様式が同じなら対応は毎回同じですが、様式を改めたときに気づけるよう、毎回見出しから決めます。
時刻と番号の信頼度は、セルではなく単語で見ます。 信頼度は単語ごとに返るので、セルの範囲に入る単語の信頼度のうち、いちばん低いものをそのセルの信頼度として扱います。「13:45」の「4」だけが怪しいとき、平均を取ると埋もれます。
返却の印は、セルの範囲に入る選択マークで見ます。 返却の欄に選択マークが1つあり、その状態が selected なら返却の印ありです。選択マークが見つからない、または信頼度が低いときは、印の有無を決めません。
AIへ渡す前に整形する
- ページ数の確認 … 1日分のPDFのページ数と、受付が記入した「本日の使用ページ数」が合うかを確かめます。合わなければ、スキャンし忘れたページがあります
- 画像の大きさの確認 … 画像は50×50ピクセルから10,000×10,000ピクセルの間である必要があります。複合機の既定の設定なら収まります
- 文字の大きさの確認 … 抽出するテキストの最小の高さは、1024×768ピクセルの画像で12ピクセルとされ、150dpiで約8ポイントの文字に当たります。受付簿の欄は狭く、小さく書く人が多いので、スキャンの解像度を上げておきます
- 空行の除外 … 氏名・会社名・入館時刻のすべてに手書きの文字が無い行は、使っていない行として外します
- 続きの行の判定 … 「同上」「〃」や、会社名だけが書かれて氏名が空の行は、前の行の同行者として扱います
- 重複の検知 … 同じ場所・同じ日のPDFが2回届いたら、新しいほうを使い、古いほうの結果を取り消します
3番目を軽く見ないでください。 時刻と入館証番号は、欄が狭いぶん小さく書かれます。解像度が足りないだけの欄は、「書かれていない」と区別がつきません。
AIに処理させる
させるのは、訪問先の欄の書き方を、社内の部署と担当者の候補に結びつけることだけです。 読み取り・行の組み立て・欄の確認・入館証の突き合わせは、OCRとプログラムが行います。
| させること | 中身 |
|---|---|
| 部署の特定 | 「設計」「2F技術」「品証」のような書き方を、部署の一覧の正式名に結びつける |
| 担当者の候補 | 書かれた姓と部署から、社員の一覧の候補を挙げる。1人に決まらないときは候補を並べる |
| 根拠の写し | 結びつけに使った文字列を、そのまま写す |
| 結びつけの確かさ | exact(部署と氏名が一意に決まる)/candidates(候補が2人以上)/dept_only(部署だけ決まる)/none(決まらない)を付ける |
| させないこと | 理由 |
|---|---|
| 来訪者の氏名・会社名の扱い | そもそも渡さない。 訪問先の欄の文字だけを渡す |
| 候補が複数のときに1人に決めること | 違う社員に問い合わせると、来訪の事実が無関係な人に伝わる |
| 一覧に無い部署・社員を作ること | 組織変更の前の部署名でも、一覧に無ければ none にする |
| 退館の有無や入館証の判断 | プログラムが欄と実物の番号で決める |
2行目がいちばん起きやすい失敗です。 「佐藤」と書かれた訪問先に、同じ部署の佐藤さんが2人いると、生成AIはどちらか1人を選んで返します。選ばれた佐藤さんに入館証の問い合わせが届き、もう1人の来客の話が筒抜けになります。
指示内容を固定する
あなたは製造業の総務課で、来訪者受付簿の「訪問先」の欄に書かれた
文字を、社内の部署と担当者に結びつける担当です。
渡された訪問先の文字と、部署と社員の一覧だけを見て作業してください。
【やること】
1. 訪問先の文字から、部署の一覧にある部署を1つ選ぶ
2. 書かれた姓(または氏名)と部署から、社員の一覧の候補を挙げる
3. 結びつけの確かさを、次の4つから1つ選ぶ
- exact ....... 部署と担当者が1人に決まる
- candidates .. 担当者の候補が2人以上いる
- dept_only ... 部署は決まるが、担当者が書かれていない、または一覧にいない
- none ........ 部署も決まらない
4. 結びつけの根拠にした文字列を、そのまま写す
【厳守事項】
- 候補が2人以上いるときは、1人に絞らずに全員を candidates に並べてください。
役職や入社年などで推し量って選ばないでください。
- 一覧に無い部署名・社員名を作らないでください。
古い部署名で書かれていて一覧に無ければ none にしてください。
- 「様」「さん」「課長」などの敬称・役職は、氏名の一部として扱わないでください。
- 階(「2F」など)は手がかりとして使ってよいですが、階だけで部署を決めないでください。
- 読み取りの信頼度が低いと印の付いた文字は、似た社員名に読み替えないでください。
その場合は none にしてください。
- 訪問の目的や来訪者について推し量ったことを書かないでください。
【訪問先の欄の文字(行番号付き)】{visit_to_cells}
【部署の一覧(部署名・階)】{departments}
【社員の一覧(部署・氏名)】{employees}
「1人に絞らない」を明記しないと、必ず1人を選びます。 一覧に候補が2人いても、生成AIは答えを1つにまとめようとします。candidates を返すことを、正しい答えの1つとして指示に書いておきます。
来訪者の氏名と会社名をこの指示に入れていないのは、設計で決めたことです。 結びつけに要るのは訪問先の欄だけで、来訪者の情報を渡さなくても仕事が成り立ちます。
出力形式を固定する
生成AIからは、行ごとの結びつけを次の形のJSONで受け取ります。 Azure OpenAI の構造化出力で、response_format に json_schema を strict: true で渡し、形を固定します。すべての項目を必須にし、additionalProperties を false にする必要があるので、決まらない項目も空文字で返させます。
{
"rows": [
{ "row": 3, "dept": "設計部", "match": "exact",
"candidates": ["設計部 佐藤 健"], "evidence": "2F 設計 佐藤様" },
{ "row": 7, "dept": "品質保証部", "match": "candidates",
"candidates": ["品質保証部 鈴木 一郎", "品質保証部 鈴木 恵"],
"evidence": "品証 鈴木" }
]
}
プログラムは、これに読み取り結果と欄の確認の結果を合わせ、記録の1行を次の形にします。
{
"site": "本社",
"date": "2026-10-08",
"row": 7,
"visitor_name": "(読み取りのまま)",
"company": "(読み取りのまま)",
"visit_to": { "dept": "品質保証部", "match": "candidates" },
"time_in": "13:10",
"time_out": "",
"badge_no": "27",
"returned_mark": "unselected",
"badge_status": "not_returned",
"flags": ["time_out_blank", "badge_not_returned"],
"low_conf_fields": []
}
1つ目の理由は、欄の状態を項目ごとに分けて持てることです。 退館時刻は ""(書かれていない)と、low_conf_fields に入る「読めない」を分けます。time_out_blank は書かれていないときだけ付き、読めないときは time_out_unreadable が付きます。
2つ目は、入館証の状態を印と実物の両方から決められることです。
| 返却の印 | 手元の入館証に番号があるか | badge_status |
|---|---|---|
selected | ある | returned |
unselected | ある | returned(印の付け忘れ。受付に知らせる) |
selected | ない | mismatch(印はあるが実物が無い。最優先で確かめる) |
unselected | ない | not_returned |
| 決まらない | どちらでも | 手元の番号で決め、returned_mark_unknown を付ける |
3行目がいちばん重い行です。 印が付いているのに実物が無いのは、別の番号のカードを受け取ったか、受け取った後に無くなったかです。紙の印だけを見ていた運用では、見つけられなかった型です。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| SharePoint の保管場所 | ファイルの保存のイベント | 受付簿のPDFの到着を検知する |
| Azure AI Document Intelligence | REST API | 表・手書きの文字・選択の印・信頼度の読み取り |
| Azure OpenAI | Chat Completions API(構造化出力) | 訪問先の欄の結びつけ |
| 部署と社員の一覧 | 読み取りのみ | 部署名・社員名・メールアドレスを引く |
| 入館証の表 | 読み取りと状態の更新 | 貸出中・返却済み・紛失の状態を記録する |
| 入退館の記録 | 行の追加 | 受付簿の1行を記録の1行にする |
| 総務への通知 | メールまたはチャット | not_returned・mismatch・記入漏れの件数と一覧 |
入退館の記録へは「行の追加」だけにします。 総務が直した内容は別の列に残し、読み取ったときの値は消しません。
訪問先の社員へは、この構成から直接は送りません。 問い合わせは総務が内容を確かめてから送ります。来訪の事実を、確かめる前に社内に広げないためです。
人が確認する
人が見るのは、印の付いた行だけです。 一覧には、受付簿の該当の行を切り出した画像を並べて出します。
mismatchを最優先で確かめる … 受付と守衛所に電話し、カードの箱を見てもらいますnot_returnedの訪問先を確かめる …matchがexactならその社員に、candidatesなら部署の代表に問い合わせます- 読めない欄を直す …
low_conf_fieldsに入った欄を画像と見比べて直します - 印の付け忘れを受付に伝える …
unselectedで実物が戻っていた行は、まとめて週に1回伝えます - 直した記録を残す … どの欄を何から何に直したかが自動で記録されます
1番目と2番目を当日中に終えることが目標です。 3番目以降は翌日でもかまいません。
目標は、80ページをならして1ページ6分です。 1ページ20行のうち印の付く行が数行という想定です。
例外に対処する
| 起きること | 対応 |
|---|---|
| 見出しのセルが読めず列が決まらない | そのページは処理せず人へ。列を推し量って当てはめない |
| 1行の文字が隣の行にはみ出している | セルの範囲が重なる行に review_needed を付けて人へ |
| 取り消し線で書き直された欄 | 両方の文字が読まれることがある。その欄を読めない欄として扱う |
| 入館証番号が入館証の表に無い | unknown_badge で人へ。似た番号に読み替えない |
| 同じ入館証番号が、同じ日に2回貸し出されている | 1回目の返却を確かめてから2回目を扱う |
| ページ数が「本日の使用ページ数」と合わない | 受付にスキャンし忘れを知らせる |
| 当日の手元の入館証が入力されていない | 返却の印だけで決め、badge_count_missing を付ける |
| OCRや生成AIが応答しない | PDFを保管場所に残し、次の回にやり直す |
記録を残す
- 受付簿のPDFと、場所・スキャンの日時
- Document Intelligence が返したJSON(分析結果は24時間で消えるので、自社の保管場所に残します)
- 生成AIに渡した訪問先の欄の文字と、返ってきたJSON
- 欄の確認と入館証の突き合わせの結果(
flags、badge_status) - 人が直した記録(直す前の値、直した後の値、その欄の信頼度、直した人)
- 入館証の状態の変化(貸出、返却、紛失)と日時
2つ目は、自社で残さないと後から見られません。 入力データと分析結果は24時間で自動的に削除されるので、読み取りの誤りを後から調べるには、その場で取り出して残す必要があります。
保存期間は、受付簿そのものの保存期間に合わせます。 来訪者の氏名と会社名を含む記録なので、PDFも読み取り結果も、同じ期間が過ぎたら一緒に消します。
04実装レベルの3段階
最小構成では毎日は回りません。 1ページずつ貼り付けるので、確かめるための段階です。 半自動化で、1ページ30分が12分程度になります。 打ち直しは自動になりますが、訪問先の特定と入館証の突き合わせが残ります。本格構成で6分になり、この段階が本記事の想定です。 差が大きいのは、訪問先を社員の一覧と見比べる作業が、1行ずつの手作業だからです。
05工数削減シミュレーション
導入後 80件 × 6分 ÷ 60 = 8 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 本社の受付や工場の守衛所に紙の来訪者受付簿を置き、来訪者に氏名・会社名・訪問先を手書きしてもらっている会社。番号付きの入館証を貸し出しており、返却の確認と受付簿の転記を総務が毎日手で行っている場合。受付簿を複合機でスキャンできる場合。
- 来訪者がひと月に数十名で、受付簿を目で見て確かめても間に合う場合。来訪の受付を事前登録の仕組みやタブレットの受付に移しており、入退館の記録が最初からデータで残る場合(その仕組みの記録を使うほうが確実です)。なお、入館証を返さなかった来訪者への連絡のしかたと、入館を断るかどうかの判断は、この構成では代替できません。
07最小構成で試す方法
- 先月の受付簿から10日分(本社と工場で約40ページ)を選ぶ(うち数日は、入館証が戻らなかった日を入れる)
- 40ページをスキャンしてPDFにする
- 手元のAIサービスの画面に1ページずつ貼り付け、「この受付簿の各行の入館時刻、退館時刻、入館証番号、返却の欄の印の有無を表にしてください。書かれていない欄と読めない欄を分けてください。推測で埋めないでください」と指示する
- 出てきた表を、当時の打ち直しの結果と突き合わせる
- 入館証が戻らなかった日に、その行が拾えているかを見る
来訪者の氏名と会社名は、試す段階でも塗りつぶしてから貼ります。 確かめたいのは時刻・番号・印の読み取りで、氏名は要りません。
| 出てきた内容 | 判断 |
|---|---|
| 時刻と番号がほぼ読めた | OCRと入館証の表の連携に進む |
| 書かれていない欄を前後の行から埋めた | 指示の書き方で直る。構成は有効 |
| 時刻や番号が読めない行が多い | スキャンの解像度と受付簿の欄の幅が先。 AIの問題ではない |
3行目が出たら、受付簿の様式を見直す機会です。 時刻と番号の欄を広げるだけで、読み取りも目視も楽になります。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 退館時刻の空欄と、読めない欄が混ざる | 単語の信頼度で分ける。 混ぜると、退館を書いた来訪者のことで問い合わせる |
| 返却の印の付け忘れで未返却が増える | 手元のカードの番号と突き合わせる。 印だけで決めない |
| 訪問先の候補が複数のときに1人に決める | 指示で candidates を許し、部署の代表に問い合わせる |
| 途中のページで退館時刻が空なのは当然 | 受付を閉める時刻に1回だけスキャンする |
| 「同上」「〃」の行が別の来訪者になる | 前の行の同行者として扱う |
| 取り消し線の欄が2つの値で読まれる | 読めない欄として人へ |
| 字が小さくて時刻が読めない | 1024×768の画像で12ピクセルが下限。解像度を上げ、欄を広げる |
| 分析結果が後から見られない | 24時間で自動的に削除される。 その場で自社に残す |
| 来訪者の氏名まで生成AIに渡してしまう | 訪問先の欄だけを渡す。 行番号で戻す |
| 問い合わせのメールが自動で飛ぶ | 総務が確かめてから送る。来訪の事実を広げない |
上の2行が、この構成の失敗のほとんどです。 どちらも「欄が空に見える」ことから出発しています。判定の根拠を、信頼度と実物の番号に置いてあるかどうかで、運用に乗るかが決まります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 来訪者の氏名と会社名、訪問先の社員の氏名、入館と退館の時刻、入館証の番号です。採用の面接に来た応募者の氏名も含まれます。
- 生成AIに渡す範囲を、訪問先の欄に限る … 来訪者の氏名と会社名は渡しません。行番号で結果を戻せば、それで足ります
- 処理の地域と保管の期間を決める … OCRの受信データは、リソースを作成したのと同じリージョンで処理されます。リソースの地域を決め、自社に残す記録の保存期間を受付簿の保存期間に合わせます
- 問い合わせを自動で送らない … 来訪の事実は、訪問先以外の社員に知られたくないことがあります。特に採用の面接は、社内でも知る人を限ります
- 入退館の記録の閲覧者を絞る … 総務と、必要なときの訪問先だけにします。誰がいつ来たかの一覧は、取引の状況そのものです
- 元の受付簿を原本として残す … 入退館の確認に使うのは、読み取り結果ではなく受付簿の画像と紙です。記録は、それを探すための索引です
誤りが起きた場合のリスクは、戻っている入館証を戻っていないと扱うことと、戻っていない入館証を見落とすことの2つです。 前者は印の付け忘れを未返却と扱うと起き、後者は印だけを信じて実物を数えないと起きます。どちらも、手元のカードの番号と突き合わせることで守ります。
10まず何から始めるか
1週目:入館証の貸出台帳を表にする
本社と工場の入館証を全部数え、番号・保管場所・状態の3列の表を作ります。今どれが貸出中で、どれが行方不明かが、ここで初めて分かることがあります。
2週目:10日分で試す
先月の受付簿から10日分を選び、氏名と会社名を塗りつぶしてから手元のAIサービスで読ませます。時刻と入館証番号が読めているかと、空欄を埋めていないかを最優先で見ます。
3週目:閉める時刻の手順を決める
受付と守衛所に、閉める時刻のスキャンと、手元のカードの番号の入力を頼みます。委託の警備員にも同じ手順を渡し、1週間続けてもらいます。
4週目:スキャンから記録までをつなぐ
保管場所を見張り、OCRを呼び、行を入退館の記録に書き出すところまで作ります。この時点では訪問先の結びつけをせず、記入漏れと手元の番号の突き合わせだけを見ます。
2か月目: 訪問先の結びつけと通知を足し、not_returned と mismatch の件数を毎週数えます。3か月目以降: 1ページ30分が何分になったかを実測します。入館証の未返却が当日中に片付くようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
レイアウトモデルがテキスト・テーブル・選択マーク・構造を抽出すること。画像が50×50〜10,000×10,000ピクセル、テキストの最小高さが1024×768で12ピクセル(150dpiで約8ポイント)であること。単語ごとの confidence、styles の isHandwritten、選択マークの selected/unselected と信頼度、表のセルの rowIndex/columnIndex/kind(columnHeader)が返ること | Microsoft Learn: ドキュメント レイアウト分析 | 2026-10-09 |
v4.0 のレイアウトモデルで、手書きのテキストの対応言語に日本語(ja)が含まれること | Microsoft Learn: 読み取りとレイアウトの言語とロケールのサポート | 2026-10-09 |
| 受信データがリソースを作成したのと同じリージョンで処理されること。送信された入力データと分析結果が分析の完了から24時間で自動的に削除されること。それより前に削除する Delete Analyze Result の API があること | Microsoft Learn: ドキュメント インテリジェンスのデータ、プライバシー、セキュリティ | 2026-10-09 |
Chat Completions API で response_format に json_schema を strict: true で渡すこと。すべてのフィールドを必須にし、additionalProperties を false にする必要があること | Microsoft Learn: Azure OpenAI で構造化出力を使用する方法 | 2026-10-09 |
来訪者の情報をどの範囲で、どれだけの期間残すかは、自社の個人情報の取り扱いの規程に沿って決めてください。 本記事は公開仕様で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1198)についてのご相談はこちらから。
