研究所の手書きの実験ノートを毎月読み取り、日付・試料番号・条件・結果を電子の実験記録にそろえて、署名と確認者の欠けを拾う
研究所の手書きの実験ノートを毎月スキャンして読み取り、日付・試料番号・実験の条件・結果を電子の実験記録の項目にそろえて登録します。あわせて、実施者の署名と確認者の署名・確認日の欠けを拾います。
- 生成AI
- Azure OpenAI Service/Claude
- AIサービス
- Azure AI/Google Document AI
- 対象業界
- 医療/製造
- 対象部門
- 研究開発
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- 入力作業が多い/情報が見つからない/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/工数削減/検索時間短縮
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 月末に研究者からノートを集め、その月に書かれたページをスキャンする
- ページの画像を開き、日付・テーマ番号・試料番号を電子の記録に打ち込む
- 本文から、実験の条件(温度、時間、試薬と量など)と結果を読み、記録の項目に打ち込む
- 試料番号を試料の台帳と照らし、台帳に無い番号があれば研究者に聞く
- 実施者の署名、確認者の署名、確認日の欄を見て、空いていれば一覧にメモする
- 月の終わりに、署名の欠けの一覧を研究者と確認者に送る
- 人月末にノートの、その月に書かれたページをスキャンし、受付の保存場所(Azure Blob Storage)に入れる
- 自動保存をきっかけに処理が動き、形式・解像度・ページ数を確かめる
- 自動Azure AI Document Intelligence のカスタムニューラルモデルが、ページの欄の値・本文の表・署名の有無と、それぞれの信頼度を返す
- 自動生成AIが、本文の条件と結果を記録の項目(温度、時間、試薬と量、結果の要点)にそろえる
- 自動プログラムが、試料番号を試料の台帳と照らし、日付の形と、署名・確認者・確認日の欠けを判定する
- 自動信頼度の低い値と、台帳に無い試料番号に印を付けて、確認の一覧を作る
- 人研究補助の担当が、印の付いた値をページの画像と見比べて直す
- 自動確認が済んだページを電子の実験記録に登録し、署名の欠けの一覧を研究者と確認者に送る
各工程の詳しい説明を読む
- 月末に研究者からノートを集め、その月に書かれたページをスキャンする
- ページの画像を開き、日付・テーマ番号・試料番号を電子の記録に打ち込む
- 本文から、実験の条件(温度、時間、試薬と量など)と結果を読み、記録の項目に打ち込む
- 試料番号を試料の台帳と照らし、台帳に無い番号があれば研究者に聞く
- 実施者の署名、確認者の署名、確認日の欄を見て、空いていれば一覧にメモする
- 月の終わりに、署名の欠けの一覧を研究者と確認者に送る
(a)打ち直しの量が多い。 本文の手書きは研究者ごとに癖があり、「30℃」か「80℃」かを前後の行から判断することが毎日のようにあります。1ページ4分でも、600ページで月40時間です。
(b)署名の欠けに後から気づく。 打ち直しに追われると、5番目の確認は後回しになります。確認者の署名が無いまま数か月たったページが、知財部の調査のときに見つかります。 確認者が異動した後だと、確認を取り直すのが難しくなります。
(c)紙の中身を探せない。 打ち直しが終わるまで、ノートの内容は紙の中にしかありません。「去年、同じ試料をこの温度で処理したか」を調べるには、ノートを何冊もめくることになります。
(d)打ち直しの書き方がそろわない。 同じ「2時間」を、担当によって「2h」「120分」「2時間」と打ちます。記録の側で検索するときに、書き方の違いで漏れます。
(e)打ち直しが1か月遅れる。 月末に集めたノートを翌月に打ち直すので、電子の記録に載るのは実験から1〜2か月後です。同じテーマの別の研究者が先月の条件を調べたくても、その時点では記録にありません。 結局、本人に聞くか、ノートを借りに行くことになります。打ち直しが速くなれば、記録に載るまでの遅れも縮みます。
- 【人】 月末にノートの、その月に書かれたページをスキャンし、受付の保存場所(Azure Blob Storage)に入れる
- 【自動】 保存をきっかけに処理が動き、形式・解像度・ページ数を確かめる
- 【自動】 Azure AI Document Intelligence のカスタムニューラルモデルが、ページの欄の値・本文の表・署名の有無と、それぞれの信頼度を返す
- 【自動】 生成AIが、本文の条件と結果を記録の項目(温度、時間、試薬と量、結果の要点)にそろえる
- 【自動】 プログラムが、試料番号を試料の台帳と照らし、日付の形と、署名・確認者・確認日の欠けを判定する
- 【自動】 信頼度の低い値と、台帳に無い試料番号に印を付けて、確認の一覧を作る
- 【人】 研究補助の担当が、印の付いた値をページの画像と見比べて直す
- 【自動】 確認が済んだページを電子の実験記録に登録し、署名の欠けの一覧を研究者と確認者に送る
7番目で、担当者が見るのは印の付いた値だけです。 信頼度が高く、台帳と照らして合った値は、そのまま登録の候補になります。全ページの全項目を見直す設計にすると、②の時間がほとんど残ります。
5番目の署名の判定を、生成AIでなくプログラムに置くのは意図してのことです。 読み取りのモデルが返す「署名の欄に署名があるか」とその信頼度に、規則を当てるだけです。規則で決まることを生成AIに聞くと、判定の理由が説明できなくなります。
02今回想定するシステム構成
紙の実験ノート(その月に書かれたページ) │ 月末にスキャン ▼【トリガー】Azure Blob Storage への保存 Azure Functions ── 形式・解像度・ページ数の確認 ▼ Azure AI Document Intelligence(カスタムニューラルモデル) │ 日付・テーマ番号・試料番号・署名の有無・本文の表と、信頼度を返す ▼ Azure OpenAI ── 本文の条件と結果を記録の項目にそろえる(構造化出力) ▼ Azure Functions ── 試料の台帳との照合、署名・確認者・確認日の欠けの判定、印付け ▼ 【人が印の付いた値だけ確認】 ▼ 電子の実験記録へ登録 / 署名の欠けの一覧を研究者・確認者へ
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Azure AI Document Intelligence(カスタムニューラルモデル) | Google Document AI |
| 生成AI | Azure OpenAI(Microsoft Foundry)(条件と結果を記録の項目にそろえる) | Claude API |
| 連携 | Azure Functions(保存を起点に処理を動かし、照合と判定を行う) | Azure Logic Apps |
| 保管 | Azure Blob Storage(ページの画像と読み取り結果) | 研究所のファイルサーバー |
電子の実験記録と試料の台帳は、新しく足すものではありません。 この構成は記録の取り込み機能(CSV または API。製品による)に確認済みの行を渡すだけで、記録の側の作りは変えません。
土台は、Document Intelligence のカスタムニューラルモデルです。 自社のノートのページを学習させて、欄の値・表・署名を取り出すモデルを作ります。v4.0(2024-11-30 GA)のカスタムニューラルモデルは、署名の検出、表のセルの信頼度、重なった項目に対応しています。
日本語の手書きに対応していることが、この製品を選ぶ理由です。 カスタムニューラルモデルとカスタムテンプレートモデルは、どちらも手書きの文字の対応言語に日本語を含みます。研究者の手書きの本文を読む題材なので、手書きの日本語に対応していない読み取りは使えません。
テンプレートモデルではなくニューラルモデルにするのは、本文のばらつきのためです。 テンプレートモデルは決まった見た目の書式に強い一方、見た目が変わると精度が落ちます。ページの上下の欄は決まっていても、本文の書き方は研究者ごとに違います。 ニューラルモデルは、同じ情報を持ちながら見た目が違う文書に向いています。
署名の検出を正しく学習させるには、署名の欄に印を付けた見本が少なくとも5つ要ります。 署名のあるページと無いページの両方を混ぜて学習させます。
03どうやって実装するのか
処理の起点を決める
月末のスキャンで、受付の Blob Storage にページの画像が保存されたことを起点にします。 1ページずつ処理が動き、数分で読み取りと照合が終わります。月末にまとめてスキャンする運用は変えません。 ノートは研究者の手元にあるもので、毎日集めると実験の邪魔になるからです。
ただし、署名の欠けの一覧は月末を待たずに出せる形にしておきます。研究者が自分でページをスキャンして入れれば、その日のうちに欠けが分かります。確認者の署名は、実験の直後ほど取りやすいからです。
処理が終わったページは、処理済みの場所に移します。移すのは読み取りと照合が成功したときだけで、受付に残っている数が未処理の数になります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| ノートのページ | スキャンした画像(PDF または TIFF)。ノート番号とページ番号 | 受付の Blob Storage |
| 読み取り結果 | 欄の値(日付、テーマ番号、試料番号、確認日)、本文の表、署名の有無、それぞれの信頼度 | Document Intelligence |
| 試料の台帳 | 試料番号、テーマ番号、作成日、作成者 | 試料の台帳 |
| ノートの持ち主の一覧 | ノート番号、研究者、確認者、テーマ番号 | 研究管理グループの一覧 |
| 記録の項目の定義 | 温度・時間・試薬・量・結果の要点などの項目と単位の書き方 | 電子の実験記録の設定 |
質を決めるのは、下の3つです。 試料の台帳が無ければ、読み取った試料番号が正しいかを確かめる先がありません。ノートの持ち主の一覧が無ければ、署名の欠けを誰に知らせればよいか分かりません。項目の定義が無ければ、生成AIのそろえ方が担当者の打ち方と同じようにばらつきます。
データの取得方法を決める
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 欄の値 | カスタムニューラルモデルの項目(日付、テーマ番号、試料番号、確認日) | 記録の見出しと試料の台帳との照合 |
| 署名の有無 | 署名の項目(実施者の署名、確認者の署名) | 署名の欠けの判定 |
| 本文の表 | 表の項目(試薬、量、条件の行)と、表・行・セルの信頼度 | 条件の項目 |
| 本文の文字 | 本文の領域の文字 | 結果の要点を生成AIに渡す |
| 信頼度 | 各項目の信頼度 | 印を付けるかどうかの判定 |
表は、行とセルの単位で信頼度が取れます。 v4.0 のカスタムニューラルモデルは、表全体・行・セルのそれぞれに信頼度を返します。試薬の量のセルだけが読みにくい、という状態を見分けられるので、ページ全体ではなくそのセルだけに印を付けられます。
学習のときに印を付ける項目は、次のように決めます。項目の名前は、後段のプログラムと電子の記録の列名に合わせておきます。
| 項目名 | 種類 | ページ上の場所 | 使い道 |
|---|---|---|---|
exp_date | 項目(文字) | 上の「日付」の欄 | 記録の実験日、確認日との前後の確認 |
theme_no | 項目(文字) | 上の「テーマ番号」の欄 | 記録のテーマとの対応 |
sample_ids | 項目(文字) | 上の「試料番号」の欄 | 試料の台帳との照合 |
reagent_table | 表 | 本文の試薬と量の表(書かれている場合) | 条件の項目 |
body_region | 領域 | 本文の方眼の部分 | 条件と結果の文字を取り出す |
operator_sign | 署名 | 下の「実施者の署名」の欄 | 実施者の署名の有無 |
checker_sign | 署名 | 下の「確認者の署名」の欄 | 確認者の署名の有無 |
check_date | 項目(文字) | 下の「確認日」の欄 | 確認日の有無と前後の確認 |
本文を領域として印を付けるのは、本文の書き方が研究者ごとに違うからです。 本文の中の温度や時間を1つずつ項目にして学習させると、書く場所が毎回違うので安定しません。本文は領域のまま文字を取り出し、項目に分けるのは生成AIに任せます。 表の形で試薬を書く研究者が多ければ、表の項目も足します。
モデルを作るときの学習は、過去のノートのページから50〜100ページを選び、Document Intelligence Studio で欄に印を付けて行います。署名の欄は、署名のあるページと無いページを混ぜて5つ以上ずつ入れます。研究者の癖を学習させるため、研究者を偏らせずに選びます。
AIへ渡す前に整形する
- 形式の確認 … PDF または画像(JPEG/JPG、PNG、BMP、TIFF、HEIF)であることを確かめます
- ページ数とサイズの確認 … PDF と TIFF は2,000ページまで、有料(S0)レベルで500MB。月末の束はノートごとに分けます
- 画像の寸法の確認 … 50×50ピクセルから10,000×10,000ピクセルの間であることを確かめます
- パスワードの確認 … パスワードで保護された PDF は、解除してから入れます。複合機の設定で保護が付くことがあります
- 向きと傾きの確認 … 綴じたノートは見開きでスキャンされがちです。1ページずつに分け、綴じ目の影が欄にかからないようにします
- ノート番号とページ番号の付与 … ファイル名からノート番号とページ番号を取り、どのページかを読み取りの前に決めます
- 重複の検知 … 同じノートの同じページが二度スキャンされていないかを確かめます
5番目を軽く見ないでください。 見開きのままスキャンすると、左のページの下の署名の欄が綴じ目にかかります。署名が影に隠れると、モデルは「署名なし」と返し、空振りの欠けの連絡が研究者に届きます。
AIに処理させる
生成AIにさせるのは、読み取り済みの本文の条件と結果を、記録の項目と書き方にそろえることだけです。 読み取りそのものと署名の判定はさせません。
| させること | 中身 |
|---|---|
| 条件の項目分け | 本文の表と文字から、温度・時間・試薬と量・装置を項目に分ける |
| 単位の書き方の統一 | 「2h」「120分」を、記録の定義どおりの書き方にする(値は変えない) |
| 結果の要点の書き出し | 本文の結果の記述を、原文の語を使って要点にする |
| 読めなかった箇所の明示 | 信頼度の低い文字を含む項目に、その旨を付ける |
| させないこと | 理由 |
|---|---|
| 読めない文字の推測 | 「3?℃」を前後から「30℃」と決めない。人が画像で確かめる |
| 値の換算 | 2時間を120分に換算すると、記録の値が原文と違う形になる。書き方だけをそろえる |
| 結果の評価・考察 | 研究者の仕事。「良好」などの評価を足さない |
| 署名の有無の判定 | 読み取りのモデルの結果と規則で決める |
| 試料番号の補完 | 台帳に近い番号があっても、書き換えない |
1行目が、この業務でいちばん起きやすい失敗です。 生成AIは、読めない数字を前後の実験から推測して埋めることが得意です。実験の記録で推測した値が登録されると、後から誰も気づけません。 読めないものは読めないまま印を付けて返させます。
指示内容を固定する
あなたは研究所の研究管理グループで、手書きの実験ノートを
電子の実験記録にそろえる担当です。
渡すのは、読み取りのモデルが返した本文の表と文字、それぞれの信頼度です。
読み取り結果にある文字だけを使ってください。推測で埋めないでください。
【やること】
1. 実験の条件を、temperature / duration / reagents(名前と量) / equipment
の項目に分けてください。
2. 単位の書き方を、次の定義にそろえてください。値そのものは変えないでください。
時間:「2時間」「30分」の形。2h は「2時間」、120分 は「120分」のまま。
温度:「30℃」の形。
3. 結果を、原文の語を使って3行以内の要点にしてください。
4. 各項目の source_text に、根拠にした読み取り結果の文字をそのまま写してください。
【厳守事項】
- 信頼度が {threshold} 未満の文字を含む項目は、値を写したうえで
low_confidence を true にしてください。前後から推測して直さないでください。
- 「?」や判読できない記号がある値を、それらしい値に置き換えないでください。
- 単位の換算(時間を分に、など)をしないでください。
- 結果を評価する語(良好、失敗、有望など)を足さないでください。
原文にある語だけを使ってください。
- 署名や確認者については何も書かないでください。
- 原文に無い項目は空文字にしてください。
【記録の項目の定義】{eln_schema}
【本文の表(セルと信頼度)】{tables}
【本文の文字(行と信頼度)】{lines}
「値そのものは変えない」と「換算しない」を両方書くのが要点です。 書き方をそろえるよう指示すると、生成AIは親切に「2h」を「120分」に換算します。値が変わらなくても、記録の側で「2時間」で検索した人には見つからなくなります。 定義どおりの書き方に寄せ、換算はさせません。
出力形式を固定する
次の形のJSONで受け取ります。 Azure OpenAI の構造化出力(response_format に json_schema と strict: true を指定)を使います。構造化出力では、すべての項目を必須にし、オブジェクトに additionalProperties: false を付ける必要があります。 値が無い項目は空文字で返させます。
{
"page_id": "",
"conditions": {
"temperature": { "value": "", "low_confidence": false, "source_text": "" },
"duration": { "value": "", "low_confidence": false, "source_text": "" },
"reagents": [
{ "name": "", "amount": "", "low_confidence": false, "source_text": "" }
],
"equipment": { "value": "", "low_confidence": false, "source_text": "" }
},
"result_summary": "",
"unreadable_notes": ""
}
1つ目の理由は、low_confidence で人が見る値を決められることです。 後段のプログラムは、low_confidence が true の項目と、欄の値で信頼度の低いものに印を付けます。
2つ目は、生成AIの出力と、読み取りのモデルの出力を別に持てることです。 日付・試料番号・署名の有無は Document Intelligence の結果をそのまま使い、生成AIの JSON には入れません。後段のプログラムが両方を合わせて、1ページの記録にします。
| 判定 | 規則 | 扱い |
|---|---|---|
| 実施者の署名なし | 署名の項目が検出されない | 研究者へ知らせる |
| 確認者の署名なし | 署名の項目が検出されない | 確認者へ知らせる |
| 確認日なし・日付より前 | 確認日の欄が空、または実験の日付より前 | 確認者へ知らせる |
| 確認日が遅い | 実験の日付から社内の決まりの日数を超えている | 研究管理グループへ |
| 署名の信頼度が低い | 検出はされたが信頼度が低い | 知らせる前に人が画像で確かめる |
最後の行を省かないでください。 信頼度の低い「署名なし」をそのまま研究者に送ると、署名したのに欠けと言われた研究者が、この仕組みを信用しなくなります。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受付の Blob Storage | 保存を起点に Azure Functions を動かす | ページの保存を検知する |
| Document Intelligence | 解析の API | カスタムニューラルモデルで欄・表・署名を読む |
| Azure OpenAI | API呼び出し(構造化出力) | 条件と結果を記録の項目にそろえる |
| 試料の台帳 | 読み取り | 試料番号の照合 |
| 電子の実験記録 | 取り込み機能(CSV または API) | 確認済みの行を登録する |
| メール/チャット | 通知 | 署名の欠けの一覧を研究者と確認者に送る |
電子の記録へは、確認済みの行だけを渡します。 印の付いた値が残っているページは登録しません。記録に入った値は、検索で見つかった時点で「正しい値」として使われるからです。
試料の台帳には書き込みません。 台帳に無い番号が出たときも、台帳を直すのは研究者です。
人が確認する
研究補助の担当が見るのは、印の付いた値と、信頼度の低い署名の判定だけです。
- 信頼度の低い値をページの画像で確かめる … 印の付いたセルの位置が画面に示されるので、その箇所だけを見ます
- 台帳に無い試料番号を確かめる … 読み違いか、台帳への登録漏れかを見分けます。登録漏れなら研究者に台帳への登録を頼みます
- 信頼度の低い「署名なし」を画像で確かめる … 本当に欠けていれば知らせ、署名があれば判定を直します
- 直した値を記録する … どのページの、どの項目を、どう直したかを残します
1番目で直した記録は、モデルの学習し直しに使います。 同じ研究者の同じ字を何度も直しているなら、そのページを学習の見本に足すと、次から印が減ります。
目標は、600ページをならして1ページ1分です。 印の付く値が1ページあたり1〜2か所という想定で、新しい研究者が入った月は、癖を学習するまで1分を超えます。
例外に対処する
| 起きること | 対応 |
|---|---|
| 見開きのままスキャンされた | 1ページずつに分けて再投入。分けられないものは人へ |
| 綴じ目の影で署名の欄が隠れる | 「署名なし」の信頼度が低くなる。知らせる前に人が確かめ、スキャンし直す |
| ページの書式が古い(以前のノート) | 古い書式の見本を学習に足すか、古いノートは人が打ち直す |
| 画像の寸法が範囲外、PDF に保護が付いている | 複合機の設定を見直してスキャンし直す |
| 本文に図やグラフが貼られている | 図は読み取りの対象外とし、記録にはページの画像へのリンクを付ける |
| 試料番号が台帳に無い | 読み違いか登録漏れかを人が見分ける |
| 同じページが二度スキャンされた | ノート番号とページ番号で照らし、二重に登録しない |
| 研究者が訂正線で書き直している | 訂正前と訂正後の両方が読み取られる。unreadable_notes に印を付け、人が確かめる |
| Document Intelligence が応答しない | 受付に残す。処理済みへ移すのは成功時だけ |
上から2行目までは、スキャンのしかたの問題です。 1ページずつ、綴じ目を押さえてスキャンする手順を研究管理グループで決めると、大半が消えます。
訂正線の行は、研究の記録として大事な箇所です。 訂正の前の値も記録に残す社内の決まりがあるなら、生成AIに訂正後の値だけを選ばせず、人が両方を確かめて登録します。
記録を残す
- ページの画像と、ノート番号・ページ番号・スキャンした日時
- Document Intelligence が返した結果の全文と、使ったモデルの版
- 生成AIに渡した入力と、返ってきた JSON
- 担当者が直した値と、直した人・日時
- 署名の欠けの判定と、知らせた日時・知らせた相手、その後に署名が入った日時
- 電子の記録に登録した日時
モデルの版を残すのは、学習し直したときのためです。 見本を足してモデルを作り直すと、同じページの読み取り結果が変わることがあります。どの版で読んだ値かが分からないと、読み違いの原因をたどれません。
署名が入った日時まで残すのは、欠けがどれだけで解消したかを見るためです。 知らせてから署名が入るまでの日数が長い確認者がいれば、運用の側で手を打てます。
04実装レベルの3段階
最小構成では、欄の値と署名は人が見ます。 本文の項目分けを試すための段階で、時間はあまり減りません。 半自動化で、1ページ4分が2分程度になります。 欄の値と署名の欠けは一覧で出ますが、条件の項目分けと記録への登録は人が行います。本格構成で1分になり、この段階が本記事の想定です。 差が大きいのは、手書きの本文を項目に分けて打つ作業が、印の付いた値を直す作業に変わるからです。 段階を飛ばさないでください。 半自動化の一覧を1か月見ると、どの研究者の字が読みにくいか、どの欄で信頼度が落ちるかが分かります。それを学習の見本とスキャンの手順に返してから本格構成に進むほうが、印の数が減ります。
05工数削減シミュレーション
導入後 600件 × 1分 ÷ 60 = 10 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 化学・素材・医薬・食品などの研究所で、実験の記録を綴じた紙の実験ノートに手書きし、その内容を研究補助の担当が電子の実験記録や試料の台帳に打ち直している場合。ノートのページに日付・試料番号・署名・確認者の欄が印刷されていて、書式がそろっている場合。確認者の署名の漏れが、月末の点検や知財部の調査で後から見つかっている場合。
- すでに電子の実験ノートに直接書いている研究所。ノートの書式が研究者ごとに自由で、日付や試料番号の欄が決まっていない場合(まず書式をそろえる)。月に数十ページしか書かれない場合。なお、記載の内容が発明の証拠として十分かどうかの判断や、記載ルールそのものの点検は、この構成では代替できません。
07最小構成で試す方法
- 先月書かれたページから30ページを選ぶ(研究者を偏らせず、署名の欠けがあるページを数枚入れる)
- その30ページについて、電子の記録に打ち直した内容と、署名の欠けの有無を書き出しておく
- Document Intelligence Studio で、レイアウトのモデルに30ページを読ませ、日本語の手書きがどこまで読めるかを見る
- 読み取った本文の文字を手元のAIサービスに渡し、「温度・時間・試薬と量を項目に分けてください。読めない文字を推測で埋めず、単位の換算をしないでください」と指示する
- 出てきた項目を、打ち直した内容と1ページずつ比べる
30ページは必ずやってください。 モデルの学習に進む前に、「研究者の手書きが、そもそも読めるのか」を確かめます。 あわせて、30ページのうち署名の欠けがあったページを、画像を見ただけで人が見分けられるかも確かめておきます。人の目で見分けにくいページは、モデルにも難しいページです。
| 出てきた内容 | 判断 |
|---|---|
| 本文の多くが読めて、項目分けも打ち直しと合った | カスタムニューラルモデルの学習に進む |
| 読めない文字が推測で埋められた | 指示の書き方で直る。構成は有効 |
| 特定の研究者の字だけ読めない | 学習の見本にその研究者のページを多めに入れる |
| ほとんどの文字が読めない | スキャンの解像度と、ノートの書式(欄の大きさ)を先に見直す |
手元のAIサービスに渡すのは、公開済みのテーマのページにしてください。 未公開のテーマの実験条件は営業秘密です。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 手書きの日本語が読めない読み取りを選ぶ | カスタムニューラルモデルは手書きの日本語に対応。対応言語を先に確かめる |
| 本文のばらつきで精度が落ちる | 決まった見た目に強いテンプレートモデルではなく、ニューラルモデルにする |
| 署名の検出が安定しない | 署名の欄に印を付けた見本を5つ以上、署名のあるページと無いページを混ぜる |
| 綴じ目の影で「署名なし」になる | 1ページずつスキャンし、信頼度の低い判定は人が確かめてから知らせる |
| 読めない数字が推測で埋まる | 指示で禁じ、low_confidence で人に回す |
| 単位が換算される | 書き方だけをそろえ、換算を禁じる |
| 試料番号が台帳と合わない | 読み違いと登録漏れを人が見分ける。台帳を書き換えない |
| 構造化出力でエラーになる | すべての項目を必須にし、additionalProperties: false を付ける |
| 訂正線の前後が混ざる | 印を付けて人が確かめる。訂正前の値の扱いを社内の決まりに合わせる |
| 古い書式のノートが混ざる | 古い書式の見本を足すか、対象から外す |
見落としやすいのは、学習の見本の偏りです。 字のきれいな研究者のページばかりで学習させると、読みにくい字の研究者のページで信頼度が下がり、印がその研究者のページに集中します。 印の数を研究者ごとに数え、多い人のページを見本に足していくと、偏りが目に見えて減ります。
表の上の3行が、読み取りの質を決めます。 どれもモデルの選び方と見本の作り方の問題で、生成AIの指示では直りません。 第8章の30ページで読めない字が多いなら、ここから見直してください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 未公開の研究テーマの実験条件と結果、試料の情報、研究者と確認者の氏名と署名です。研究所の情報の中でも、最も外に出してはいけない営業秘密です。
- 保存場所と処理の地域を決める … ページの画像、読み取り結果、生成AIの入出力を置く場所と、処理する地域を、研究所の情報管理の規程に合わせて決めます。未公開のテーマのノートを、規程で認められていない場所に置かないでください
- 生成AIに渡す範囲を本文に限る … 生成AIに渡すのは本文の表と文字だけで、ページの画像、署名、氏名は渡しません
- 署名を照合しない … この構成が見るのは、署名の欄に署名があるかどうかだけです。本人の署名かどうかの照合はしません。 照合が要るなら、別の手続きにします
- 推測した値を記録に入れない … 実験の記録に推測の値が入ると、後から誰も見分けられません。読めない値は人が画像で確かめてから登録します
- 記録の証拠としての扱いを変えない … 紙のノートが原本である運用なら、電子の記録は検索のための写しです。 原本の保管と、電子の記録の位置づけは、知財部と決めてから運用を始めてください
- 署名の欠けの通知の宛先を絞る … 欠けの一覧は、本人と確認者と研究管理グループだけに送ります。研究所全体に回しません
誤りが起きた場合のリスクは、推測した値が実験の記録として残ることと、署名したのに欠けと言われて仕組みが信用を失うことの2つです。 前者は推測の禁止と人の確認で、後者は信頼度の低い判定を人が確かめてから知らせることで防ぎます。
10まず何から始めるか
1週目:スキャンの手順を決める
研究管理グループで、1ページずつ、綴じ目を押さえて、決めた解像度でスキャンする手順を決めます。ファイル名にノート番号とページ番号を入れる決まりもここで作ります。
2週目:30ページで試す
第8章の手順で、レイアウトのモデルに30ページを読ませ、本文の項目分けを手元のAIサービスで試します。研究者の手書きがどこまで読めるかと、推測で埋めていないかを最優先で見ます。
3週目:学習の見本を作る
過去のページから50〜100ページを選び、Document Intelligence Studio で欄・表・署名に印を付けます。署名のあるページと無いページを、それぞれ5つ以上入れます。 カスタムニューラルモデルを学習させ、別の20ページで読み取りの結果を確かめます。
4週目:受付から一覧までをつなぐ
Blob Storage への保存で Azure Functions が動き、モデルで読み、欄の値と署名の欠けを一覧に書き出すところまで作ります。この時点では生成AIを使わず、署名の欠けの判定が人の目と合うかを見ます。
2か月目: 生成AIで条件と結果をそろえる処理と、試料の台帳との照合を足し、担当者が全項目を見て印の付け方を確かめます。3か月目以降: 確認済みの行を電子の記録に登録し、印の付いた値だけを見る運用に切り替えます。1ページ4分が何分になったかを実測し、署名の欠けが月内に解消されるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| カスタムニューラルモデル(v4.0 2024-11-30 GA)が署名の検出、表のセルの信頼度、重なった項目に対応すること。表・行・セルの信頼度を返すこと。署名に印を付けた見本を少なくとも5つ使うこと。同じ情報で見た目が違う文書に向くこと | Microsoft Learn: Custom neural model | 2026-10-13 |
| カスタムニューラルモデルとカスタムテンプレートモデルの手書きの文字の対応言語に日本語が含まれること | Microsoft Learn: Custom model language support | 2026-10-13 |
| テンプレートモデルが決まった見た目の書式に向き、見た目が変わると精度が落ちること。入力の形式(PDF、JPEG/JPG、PNG、BMP、TIFF、HEIF)、PDF と TIFF が2,000ページまで、S0 で500MB、画像の寸法が50×50〜10,000×10,000ピクセル、パスワード付きの PDF は解除が要ること | Microsoft Learn: Custom template model | 2026-10-13 |
Azure OpenAI の構造化出力が response_format の json_schema と strict: true で指定すること。すべての項目を必須にし、additionalProperties: false を付ける必要があること | Microsoft Learn: Structured outputs | 2026-10-13 |
実験ノートの記載ルールと、紙の原本・電子の記録の位置づけは、研究所と知財部で決めてください。 本記事の構成が出すのは、ノートに書かれた内容の写しと、署名の欄の空白の一覧です。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1353)についてのご相談はこちらから。
