動物病院で獣医師が手書きする診療記録と処置の伝票を読み取り、会計の入力にそろえて、処置・投薬・検査の会計漏れを拾う
動物病院で獣医師が手書きする処置の伝票と診療記録を読み取り、処置・投薬・検査の項目を会計の項目にそろえた入力の下書きにします。診療記録にあるのに伝票や会計に無い項目を、会計の前と閉院後に拾います。
- 生成AI
- Azure OpenAI Service/Claude
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 連携・自動化
- Python
- 対象業界
- その他
- 対象部門
- 経理
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- 人手が足りない/入力作業が多い/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/工数削減/機会損失防止
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 診察が終わると、診療記録と処置の伝票が受付に回る
- 受付が伝票のチェックと数量を見て、電子カルテの会計に1項目ずつ入力する
- 余白に手書きされた処置は、会計の項目のどれに当たるかを探して入力する
- 読めない字や分からない略語は、獣医師に聞きに行く
- 精算する
- 閉院後、その日の伝票と会計の明細を見比べ、入力の漏れがないかを確かめる(できる日だけ)
- 診療記録は、看護師が後で電子カルテに転記する
- 人診察が終わると、受付が処置の伝票と診療記録を卓上のスキャナーに通す
- 自動保存をきっかけに処理が動き、伝票はカスタム テンプレート モデル、診療記録はレイアウト モデルで読み取る
- 自動伝票のチェックと数量、余白の手書き、診療記録の処置・投薬・検査の記載を、略語の対応表で会計の項目コードに当てる
- 自動会計の入力の下書き(項目コードと数量)と、「記録にあるが伝票に無い」項目の一覧を受付の画面に出す
- 人受付が下書きを見て電子カルテの会計に入力し、「記録にあるが伝票に無い」項目は獣医師に確かめる
- 人精算する
- 自動閉院後、電子カルテから書き出したその日の会計の明細と、全件の下書きを突き合わせ、下書きにあるのに会計に無い項目を一覧にする
- 人会計の担当が一覧を見て、漏れであれば翌日の追加の精算や次回の来院時の精算の段取りをする
各工程の詳しい説明を読む
- 診察が終わると、診療記録と処置の伝票が受付に回る
- 受付が伝票のチェックと数量を見て、電子カルテの会計に1項目ずつ入力する
- 余白に手書きされた処置は、会計の項目のどれに当たるかを探して入力する
- 読めない字や分からない略語は、獣医師に聞きに行く
- 精算する
- 閉院後、その日の伝票と会計の明細を見比べ、入力の漏れがないかを確かめる(できる日だけ)
- 診療記録は、看護師が後で電子カルテに転記する
(a)伝票を見ての入力が多い。 1枚に5〜10項目のチェックがあり、1項目ずつ会計の項目を探して入力します。 余白の手書きの処置は、どの項目に当たるかを探すところから始まります。
(b)伝票のチェックの付け忘れは、誰にも見えない。 獣医師が処置をしても、伝票にチェックが無ければ会計に入りません。 診療記録には書いてあるので、照らせば分かるのですが、2番目の時点で記録を読む人はいません。
(c)聞きに行くと、獣医師の診察が止まる。 4番目は、次の診察に入った獣医師を呼び止めることになります。聞くのをためらって、分からないまま入力しないことも起きます。
(d)閉院後の見直しは続かない。 6番目は、遅くまで診療が続いた日には省かれます。省かれる日ほど処置が多く、会計漏れが起きやすい日です。
- 【人】 診察が終わると、受付が処置の伝票と診療記録を卓上のスキャナーに通す
- 【自動】 保存をきっかけに処理が動き、伝票はカスタム テンプレート モデル、診療記録はレイアウト モデルで読み取る
- 【自動】 伝票のチェックと数量、余白の手書き、診療記録の処置・投薬・検査の記載を、略語の対応表で会計の項目コードに当てる
- 【自動】 会計の入力の下書き(項目コードと数量)と、「記録にあるが伝票に無い」項目の一覧を受付の画面に出す
- 【人】 受付が下書きを見て電子カルテの会計に入力し、「記録にあるが伝票に無い」項目は獣医師に確かめる
- 【人】 精算する
- 【自動】 閉院後、電子カルテから書き出したその日の会計の明細と、全件の下書きを突き合わせ、下書きにあるのに会計に無い項目を一覧にする
- 【人】 会計の担当が一覧を見て、漏れであれば翌日の追加の精算や次回の来院時の精算の段取りをする
5番目が、この設計の分かれ目です。 「記録にあるが伝票に無い」項目を、会計の前に獣医師に確かめます。 精算した後に気づくと、飼い主に追加の支払いを頼むことになります。
7番目を閉院後に自動で回しているのも、意図してのことです。 受付は混んでいる時間に下書きを見落とすことがあります。その日のうちに全件を機械で突き合わせれば、見落としは翌朝には分かります。 いまは半分の日しか行えていない見直しが、毎日行われます。
02今回想定するシステム構成
処置の伝票(チェック・数量・余白の手書き)と診療記録(手書き) │ 受付の卓上スキャナー ▼【トリガー】共有フォルダ(Azure Blob Storage)への保存 Azure Functions ├──▶ 伝票:Azure AI Document Intelligence(カスタム テンプレート モデル) │ チェック・数量・余白の欄を信頼度つきで返す ├──▶ 記録:Azure AI Document Intelligence(レイアウト モデル) │ 手書きの文字を行ごとに信頼度つきで返す ▼ Azure OpenAI(構造化出力) │ 診療記録から処置・投薬・検査の記載を抜き出す ▼ Azure Functions(Python) │ 略語の対応表で会計の項目コードに当て、伝票と記録を突き合わせる ▼ 受付の画面:会計の入力の下書き+「記録にあるが伝票に無い」項目 ▼【閉院後】電子カルテの会計の明細(CSV)との突き合わせ 会計漏れの候補の一覧 → 会計の担当
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Azure AI Document Intelligence(カスタム テンプレート モデルとレイアウト モデル) | Google Document AI(Form Parser)、AWS Textract(英文の書類に限る。日本語の伝票には使えない) |
| 生成AI | Azure OpenAI(Microsoft Foundry)(診療記録からの処置・投薬・検査の抜き出し。構造化出力) | Claude API |
| 差異計算 | 伝票・記録・会計の明細の突き合わせ(Python。Azure Functions で動かす) | ─ |
| 連携 | Azure Functions(保存を起点に読み取りを呼び、結果を画面に返す) | Azure Logic Apps |
| 保管 | Azure Blob Storage(伝票と記録の画像、読み取りの結果) | 院内のファイルサーバー |
電子カルテは、新しく足すものではありません。 この構成からは書き込まず、受付が下書きを見て会計に入力し、閉院後に会計の明細を書き出して突き合わせます。最初の準備は、略語と会計の項目コードの対応表を作ることです。
伝票と診療記録で、読み取りの方法を分けます。 伝票は項目の位置が決まった書式で、チェックの有無と数量の欄を位置で取るのに向きます。診療記録は自由に書く紙で、位置ではなく文字の中身から処置を探す必要があります。
| 書類 | 読み取りのモデル | 理由 |
|---|---|---|
| 処置の伝票 | カスタム テンプレート モデル | 決まった書式で、チェック(選択マーク)と数量の欄を位置で取れる |
| 診療記録 | レイアウト モデル | 書式が自由。手書きの文字を行ごとに取り、中身は生成AIで読む |
カスタム テンプレート モデルは、公式の説明では、決まった見た目の書式から、ラベルを付けたキーと値、選択マーク、表、署名を取り出すモデルです。日本語の手書きにも対応しています。伝票の書式が変われば精度が落ちるため、書式を変えたら学習し直します。
レイアウト モデルは、文字・表・選択マークを取り出すモデルで、こちらも日本語の手書きに対応しています。
03どうやって実装するのか
処理の起点を決める
受付が伝票と診療記録をスキャナーに通し、共有フォルダに保存されたことを起点にします。 会計の前に下書きを出したいので、1枚ずつ、届いたらすぐに処理します。 まとめて処理すると、会計に間に合いません。
スキャンは、伝票と診療記録を1組にして、伝票が先になる順で通します。スキャナーの設定で、ファイル名に日時と診察券の番号(バーコードを伝票に貼る場合はその番号)を入れます。 番号で同じ診察の伝票と記録を結び付けるためです。
閉院後の突き合わせは、電子カルテから会計の明細の CSV を書き出し、決めたフォルダに置いたことを起点にします。 書き出しは受付の最後の作業として手で行います。電子カルテから自動で取り出せる口があれば、それを使います。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 処置の伝票の画像 | チェック、数量、余白の手書き、獣医師名、診察券の番号 | 共有フォルダ |
| 診療記録の画像 | 獣医師が手書きした所見・処置・処方 | 共有フォルダ |
| 読み取りの結果 | 伝票の欄の値と選択マークの状態、記録の文字の行、それぞれの信頼度 | Azure AI Document Intelligence |
| 略語の対応表 | 書き方(「SC」「皮下」「補液」など)と、会計の項目コード、単位 | 院内で作る一覧 |
| 会計の項目の一覧 | 項目コード、項目名、単位、伝票のどの欄に当たるか | 電子カルテの会計の設定 |
| 会計の明細 | その日の診察ごとの会計の項目と数量 | 電子カルテから書き出した CSV |
質を決めるのは、略語の対応表です。 「SC」「皮下」「補液」「sub-Q」が同じ処置なら、4つの書き方を1つの項目コードに当てる行を作ります。対応表に無い書き方は、項目に当たらずに人へ回ります。
最初の対応表は、過去の診療記録から作ります。 獣医師4名がそれぞれ1週間分の記録を見て、自分の書き方を書き出すのが早道です。 獣医師ごとの癖を、本人がいちばん知っています。
データの取得方法を決める
伝票は、学習させたカスタム テンプレート モデルで読み取ります。伝票の各項目のチェックの欄を選択マークのラベル、数量の欄を文字のラベルとして学習させます。
| 取るもの | どの欄から | 何に使うか |
|---|---|---|
| 項目ごとのチェック | 選択マークのラベル(選択・未選択と信頼度) | 行った処置の一覧 |
| 数量・薬の量 | 項目の横の数量の欄(手書き) | 会計の数量 |
| 余白の手書き | 余白の領域のラベル | 伝票に無い処置の手がかり |
| 獣医師名・診察券の番号 | 書式の決まった欄 | 記録との結び付けと問い合わせ先 |
診療記録は、レイアウト モデルで文字の行と単語を信頼度つきで取ります。行の並びをそのまま生成AIに渡し、処置・投薬・検査の記載だけを抜き出させます。
信頼度の扱いを決めておきます。 公式の説明では、分析の結果は単語・キーと値・選択マーク・署名などに0から1の推定の信頼度を返し、正確さが重要な場面では、信頼度で自動で受け入れるか人の確認に回すかを決められるとされています。カスタム モデルでは、欄の信頼度と、その欄の文字や選択マークの読み取りの信頼度の両方を見ることが勧められています。
| 欄 | 見る信頼度 | 人に回す条件 |
|---|---|---|
| チェックの欄 | 欄の信頼度と選択マークの信頼度 | どちらかが決めた値を下回る |
| 数量の欄 | 欄の信頼度と単語の信頼度 | どちらかが決めた値を下回る |
| 診療記録の行 | 単語の信頼度 | 処置らしい語の単語の信頼度が低い |
閾値は最初から決めず、最小構成で30枚を読み、目で確かめた結果から決めます。 数量の欄は会計の金額に直結するので、チェックの欄より閾値を高くします。
AIへ渡す前に整形する
- 形式の確認 … PDF か画像(JPEG/JPG、PNG、BMP、TIFF、HEIF)であることを確かめます
- 画像の寸法の確認 … 50×50 ピクセルから10,000×10,000 ピクセルの間である必要があります
- 文字の大きさの確認 … 読み取る文字の高さの下限は、1024×768 の画像で12ピクセルです。150dpi で約8ポイントにあたるので、スキャナーは300dpi に設定します
- 伝票と記録の組み分け … ファイル名の診察券の番号と時刻で、同じ診察の伝票と記録を1組にします
- 向きの確認 … 伝票が逆さに通されていないかを確かめます。テンプレート モデルは書式の見た目に頼るので、向きの違いで欄を外します
- 重複の確認 … 同じ番号・同じ時刻の伝票が既にあれば、通し直しか重複かを受付に聞きます
3番目を軽く見ないでください。 獣医師の数量の書き込みは小さく、「0.5」と「5」の違いは小数点1つです。 解像度が足りないと、点が消えて10倍の数量が下書きに入ります。
AIに処理させる
Azure AI Document Intelligence にさせるのは、伝票と記録の文字とチェックを読み取ることです。 そのうえで、Azure OpenAI に診療記録の文字の行を渡し、次のことをさせます。
| させること | 中身 | 判断できないときの扱い |
|---|---|---|
| 処置の記載の抜き出し | 補液・注射・処置・手技の記載と、量・回数 | 読めない語は unreadable |
| 投薬の記載の抜き出し | 処方した薬の名前と量、日数 | 薬の名前が読めなければ unreadable |
| 検査の記載の抜き出し | 血液検査・画像検査・尿検査などの記載 | 検査の種類が決まらなければ ambiguous |
| 予定の区別 | 今日行ったのか、次回の予定か、提案しただけか | 決められなければ unclear |
| 根拠 | 抜き出した記載の行の番号と、その行の原文 | 番号の無い抜き出しは出さない |
4行目の「予定の区別」が、この構成でいちばん大事なところです。 診療記録には「次回 エコー」「飼い主と相談の上 血液検査を検討」のように、今日は行っていない処置も書かれています。 これを今日の会計漏れとして出すと、受付は行っていない処置を請求しかけます。
| させないこと | 理由 |
|---|---|
| 会計の項目コードへの当てはめ | 対応表で機械的に行う。生成AIに当てさせると、似た項目に寄せる |
| 請求すべきかの判断 | 獣医師と会計の担当が決める |
| 薬の量の計算や、用量の当否の判断 | 診療の内容は獣医師の判断。書かれた量を写すだけ |
| 読めない字を前後から推し量って埋めること | unreadable のまま人に回す |
| 伝票の側の読み取りのやり直し | 伝票はテンプレート モデルの結果をそのまま使う |
1行目を生成AIにさせないのは、項目コードが会計そのものだからです。 「皮下補液」を「静脈点滴」のコードに当てれば、金額が変わります。当てはめは対応表という決まった表で行い、当たらないものは人へ回します。
指示内容を固定する
あなたは動物病院で、獣医師が手書きした診療記録から、
今日行った処置・投薬・検査の記載を抜き出す係です。
渡した文字の行だけを見てください。推測で埋めないでください。
【やること】
文字の行から、処置・投薬・検査にあたる記載を1件ずつ抜き出す。
それぞれについて、次を付ける。
- category ... procedure(処置)/ medication(投薬・処方)/ test(検査)
- written .... 記録に書かれたとおりの言葉(略語のまま。直さない)
- amount ..... 書かれた量・回数・日数(書かれたとおり。単位も写す)
- timing ..... done_today(今日行った)/ planned(次回以降の予定)/
proposed(提案・検討)/ unclear(決められない)
- status ..... ok / unreadable(字が読めない)/ ambiguous(種類が決まらない)
- line_no .... 根拠の行の番号
【厳守事項】
- written は記録の言葉をそのまま写すこと。正式な名前に言い換えないこと。
「SC」を「皮下補液」に、「CBC」を「血液検査」に直さないこと。
- 量は書かれたとおりに写すこと。計算しない、単位を変えない、
体重から量を出さないこと。
- 「次回」「予定」「検討」「様子を見て」などの言葉が付いた記載は、
done_today にしないこと。
- 単語の信頼度が低い語({low_conf_words} に並べたもの)を含む記載は、
status を unreadable とし、読めた部分だけを written に写すこと。
- 字が読めない記載を、前後の文脈から推し量って埋めないこと。
- 所見・診断・飼い主への説明は抜き出さないこと。
- 請求すべきか、会計の項目のどれに当たるかは書かないこと。
- 根拠の行の番号を必ず付けること。番号を付けられない記載は出さないこと。
【文字の行(行の番号つき)】{lines}
【信頼度の低い語】{low_conf_words}
「略語のまま、言い換えない」を明記しないと、正式な名前に直します。 直された言葉は対応表に当たらず、当たったとしても、獣医師の書いた言葉が記録から消えます。 当てはめは対応表に任せるので、生成AIの仕事は書かれた言葉を正確に写すことです。
「次回」「検討」の言葉を例で挙げているのも同じ理由です。 何も言わなければ、記録に書かれた処置を全部 done_today で返します。
出力形式を固定する
Azure OpenAI の構造化出力で抜き出しを受け取り、Python で伝票・対応表と突き合わせた結果を次の形にまとめます。
{
"visit_id": "20261014-0815-C10423",
"vet": "獣医師B",
"slip_items": [
{ "code": "T-0102", "name": "皮下補液", "checked": true, "amount": "150ml",
"confidence": 0, "status": "ok | low_confidence" }
],
"chart_items": [
{ "written": "SC 150", "category": "procedure", "timing": "done_today",
"mapped_code": "T-0102", "map_status": "mapped | not_in_table",
"status": "ok | unreadable | ambiguous", "line_no": 7 }
],
"diffs": [
{ "type": "chart_only | slip_only | amount_mismatch",
"code": "", "detail": "", "line_no": 0 }
],
"draft_lines": [ { "code": "T-0102", "qty": "150ml", "source": "slip | chart" } ]
}
1つ目の理由は、伝票と記録を別々に持ち、差を diffs に出せることです。
type | 意味 | 受付の扱い |
|---|---|---|
chart_only | 記録に今日行ったとあるが、伝票にチェックが無い | 会計の前に獣医師に確かめる |
slip_only | 伝票にチェックがあるが、記録に記載が無い | 会計は伝票どおり。記録の書き漏れの可能性を獣医師に伝える |
amount_mismatch | 伝票と記録で量が違う | 獣医師に確かめる |
2つ目は、map_status で対応表の穴が見えることです。 not_in_table の書き方は、対応表に足す候補です。毎週数えて、上位から対応表に足します。
閉院後の突き合わせは、draft_lines と会計の明細の CSV を診察ごとに比べます。 下書きにあって会計に無い項目が、会計漏れの候補です。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 共有フォルダ(Blob Storage) | 保存を起点に Azure Functions を動かす | 伝票と記録の受け付け |
| Azure AI Document Intelligence | API呼び出し | 伝票と記録の読み取り |
| Azure OpenAI | API呼び出し(構造化出力) | 記録からの処置・投薬・検査の抜き出し |
| 受付の画面 | Azure Functions からの表示 | 下書きと diffs |
| 電子カルテ | 書き込まない。会計の明細の CSV を読むだけ | 閉院後の突き合わせ |
電子カルテの会計に自動で入れないのは、会計が飼い主への請求そのものだからです。 読み取りの誤りや対応表の誤りがそのまま請求に入ると、飼い主との信頼を損ねます。 受付が下書きを見て入力し、獣医師が確かめた項目だけを足します。
人が確認する
chart_onlyを会計の前に獣医師に確かめる … 受付の画面から、診療記録の該当の行の画像を獣医師の端末に送ります- 信頼度の低い欄を画像で見る … 特に数量の欄の小数点を確かめます
- 下書きを会計に入力する … 対応表に当たった項目は、コードと数量を写すだけです
- 閉院後の会計漏れの候補を見る … 会計の担当が翌朝に一覧を見て、漏れか、意図して請求しなかったものかを獣医師に確かめます
1番目は、獣医師の手を止めない形にします。 受付が診察室まで聞きに行くのではなく、該当の行の画像と「この処置は今日の会計に入れますか」の問いを端末に送り、獣医師は診察の合間に「入れる/入れない」を押すだけにします。返事が来るまで、その飼い主の精算は待ってもらいます。
4番目で「意図して請求しなかった」を分けるのが大事です。 再診のサービス、院内で決めた割引、獣医師の判断で請求しない処置があります。漏れと決めつけずに、獣医師の判断を記録に残します。
例外に対処する
| 起きること | 対応 |
|---|---|
| 伝票の書式が古い版 | テンプレートに当たらず欄を外す。古い版の在庫を処分し、版ごとにモデルを分ける |
| 伝票と記録の組が合わない | 番号と時刻で結べなければ、受付の画面で組を選ばせる |
| 余白の手書きが対応表に当たらない | not_in_table で人へ。対応表に足す候補に入れる |
| 数量の小数点が読めない | low_confidence で人へ。画像で確かめる |
| 診療記録の行が多く、2枚にわたる | 2枚を1組として読む。ページの順は番号で決める |
| 入院・手術の記録 | 1日で終わらない。この構成の対象から外し、入院の会計の手順で扱う |
| 会計の明細の CSV が置かれない | 閉院後の突き合わせが動かない。翌朝に担当に知らせる |
| 獣医師の返事が来ないまま精算する | chart_only を「未確認」のまま残し、翌朝の会計漏れの候補に必ず載せる |
1行目は、導入の後に必ず起きます。 伝票の版を変えたのに古い伝票が引き出しに残っていると、その伝票だけ欄がずれて読み取りが外れます。 テンプレートのモデルは見た目に頼るので、版を変えるときは古い紙を処分し、新しい版でモデルを学習し直します。
記録を残す
- 伝票と記録の画像と、スキャンした日時
- 読み取りの結果の JSON(欄の値・選択マークの状態・信頼度・文字の行)
- 生成AIの抜き出しの結果と、対応表での当てはめの結果(そのときの対応表の版)
diffsと、受付・獣医師がどう扱ったか(請求した/請求しない/記録の書き漏れ)- 閉院後の会計漏れの候補と、翌日の扱い
- 獣医師ごとの
chart_onlyの件数と、not_in_tableの書き方の一覧
3つ目で「そのときの対応表の版」を残すのは、対応表が毎週変わるからです。 同じ「SC」が、ある週は当たらず、翌週は当たるようになります。どの版で当てたかが残っていないと、過去の会計漏れの候補を見直すときに、なぜ出たのか、なぜ出なかったのかが分かりません。
最後の行は、獣医師への声かけの材料になります。 chart_only が多い獣医師は、伝票のチェックを付け忘れやすい人です。責めるためではなく、伝票の項目の並びが使いにくいのかを聞くために使います。
04実装レベルの3段階
最小構成は、確かめるための段階です。 半自動化で、1件3分が2分程度になります。 会計の項目を探す作業は下書きに置き換わりますが、記録との照らし合わせと閉院後の見直しは手で残ります。 本格構成で1.2分になり、この段階が本記事の想定です。 差が大きいのは、閉院後の見直しが全件、機械で行われるからです。 段階を飛ばさないでください。 半自動化の1か月で、対応表の穴と、読みにくい欄が先に分かります。そこを直してから記録の抜き出しを足すほうが、chart_only の空振りが減ります。
05工数削減シミュレーション
導入後 1,500件 × 1.2分 ÷ 60 = 30 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 獣医師が複数いて1日に数十頭を診る動物病院で、診察室では紙の診療記録と処置の伝票に手書きし、受付が伝票を見て電子カルテ・会計に入力している場合。処置や検査が多い日に、伝票のチェックの付け忘れや入力の漏れで会計が少なくなっていると感じている病院。処置の伝票の書式が院内で決まっていて、項目に会計の項目コードを対応付けられる病院。
- 獣医師が診察室で電子カルテに直接入力していて、紙の記録や伝票が無い場合。1日の診療が10頭前後で、受付が伝票と記録を目で照らせば足りる場合。処置の伝票の書式が獣医師ごとに違い、決まった書式にそろえる予定が無い場合。なお、どの処置や薬を請求するかの最終的な判断、薬の用量や診療の内容の当否は、この構成では判断しません。
07最小構成で試す方法
- 先月の処置の伝票と診療記録から30組を選ぶ(会計漏れがあったと分かっている組を数組入れる)
- Document Intelligence Studio でレイアウト モデルを開き、30組を読み取らせる
- 伝票のチェックと数量、記録の手書きの文字が読めているかを目で確かめる
- 記録の文字を手元の生成AIの画面に貼り、第7章の指示で処置・投薬・検査を抜き出させる
- 抜き出した結果と伝票を手で見比べ、当時の会計漏れが
chart_onlyとして出るかを確かめる
30組は必ずやってください。 カスタム テンプレート モデルを学習させる前に、「この病院の獣医師の手書きが読めるか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 手書きが読め、当時の会計漏れが出た | 伝票のテンプレート モデルの学習と連携に進む |
| 略語の言い換えや予定の取り違えが出た | 指示の書き方で直る。構成は有効 |
| 特定の獣医師の手書きが読めない | 書き方の相談が先。 数量の欄だけでも楷書で書いてもらう |
3行目が出ることは珍しくありません。 失敗ではなく、受付が獣医師に聞きに行っていた理由が1つ分かったということです。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 「次回」の処置が会計漏れとして出る | 予定の区別を指示に書き、done_today だけを突き合わせる |
| 略語が正式名に言い換えられる | 言い換えを禁じ、当てはめは対応表で行う |
| 数量の小数点が消える | 300dpi でスキャンし、数量の欄は信頼度で人へ |
| 生成AIが似た項目コードに寄せる | コードの当てはめを生成AIにさせない |
| 伝票の版が混ざる | 古い版を処分し、版を変えたら学習し直す |
| 伝票と記録の組がずれる | 診察券の番号を伝票に入れる。バーコードを貼る |
| 請求しなかった処置が漏れとして毎日出る | 獣医師の判断を記録し、同じ処置の扱いを院内で決める |
| 対応表が更新されない | not_in_table を毎週数え、上位から足す |
| 入院・手術の会計が混ざる | この構成の対象から外す |
| 下書きが電子カルテに自動で入る | 入れない。 受付が写す |
上の2行が、この構成の失敗のほとんどです。 どちらも、生成AIが記録を「読みやすく直そう」とすることから起きます。直させずに写させることが、会計の正確さを守ります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 飼い主の氏名・連絡先(伝票や記録に書かれている場合)、動物の診療の内容、処方した薬、会計の金額です。
- 生成AIに渡すのは診療記録の文字の行だけにする … 飼い主の氏名・住所・電話番号は渡しません。記録の上部の飼い主の欄は、読み取りの後に切り落としてから渡します
- 会計を自動で確定させない … 下書きと一覧までです。請求の内容は受付と獣医師が決めます
- 診療の内容を判断させない … 薬の量の当否や処置の妥当性は、獣医師の判断です。 書かれた量を写すだけにします
- 画像の保存期間を決める … 診療記録の原本の保存は院内の決まりに従い、読み取りに使った画像と結果の保存期間を別に決めます
- 獣医師ごとの集計の使い方を決める …
chart_onlyの件数は、伝票の使いにくさを見つけるために使い、人の評価に使わないことを院内で決めておきます
誤りが起きた場合のリスクは、行っていない処置を請求しかけることと、行った処置を請求し損ねることの2つです。 前者は予定と実施を混ぜると起き、後者は対応表の穴と読み取りの誤りで起きます。どちらも、会計の前に人が確かめる設計で防ぎます。
10まず何から始めるか
1週目:略語の対応表を作る
獣医師4名に、自分の1週間分の診療記録から処置・投薬・検査の書き方を書き出してもらいます。 それを会計の項目コードに当てて、対応表の最初の版にします。
2週目:30組で試す
Document Intelligence Studio で伝票と記録を読み取り、記録の文字を生成AIに貼って抜き出させます。手書きが読めるか、予定の処置を今日の処置と取り違えていないかを最優先で見ます。
3週目:伝票の書式をそろえ、テンプレート モデルを学習させる
伝票の書式を1つに決め、古い版を処分します。 新しい版の伝票に Studio でラベルを付け、カスタム テンプレート モデルを学習させます。スキャナーを300dpi に設定します。
4週目:スキャンから下書きまでをつなぐ
保存を起点に伝票を読み取り、会計の入力の下書きを受付の画面に出すところまで作ります。この時点では記録の抜き出しを入れず、伝票の下書きだけを使います。
2か月目: 診療記録の抜き出しと diffs を足し、chart_only を会計の前に獣医師に確かめる運用を始めます。3か月目以降: 閉院後の会計の明細との突き合わせを足し、1件3分が何分になったかを実測します。not_in_table の書き方を対応表に足し、会計漏れの候補の空振りが減った時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| Read と Layout のモデル(v4.0)が日本語の印刷文字と手書き文字に対応していること。Layout が文字・表・選択マーク(チェックボックスなど)を取り出すこと | Microsoft Learn: Language and locale support for Read and Layout | 2026-10-14 |
| カスタム テンプレート モデルとカスタム ニューラル モデル(v4.0)が日本語の手書き文字に対応していること | Microsoft Learn: Language and locale support for custom models | 2026-10-14 |
| カスタム テンプレート モデルが決まった見た目の書式から、ラベルを付けたキーと値・選択マーク・表・署名を取り出し、書式が変わると精度が落ちること。入力が PDF と画像(JPEG/JPG、PNG、BMP、TIFF、HEIF)であること。画像が50×50から10,000×10,000ピクセル、文字の高さの下限が1024×768で12ピクセル(150dpiで約8ポイント)であること。学習データの上限がテンプレートで500ページ・50MBであること | Microsoft Learn: Custom template document model | 2026-10-14 |
| 分析の結果が単語・キーと値・選択マーク・署名などに0から1の推定の信頼度を返し、正確さが重要な場面では信頼度で自動受け入れか人の確認かを決められること。カスタム モデルでは欄の信頼度と、文字や選択マークの読み取りの信頼度を合わせて見ること | Microsoft Learn: Interpret and improve model accuracy and confidence scores | 2026-10-14 |
構造化出力が渡した JSON Schema にモデルを従わせること。すべての項目を必須にし additionalProperties を false にする必要があること | Microsoft Learn: How to use structured outputs with Azure OpenAI in Microsoft Foundry Models | 2026-10-14 |
どの処置や薬を請求するか、薬の量や診療の内容が適切かは、獣医師と病院の会計の担当が判断してください。 本記事は上記の公開情報で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1517)についてのご相談はこちらから。
