Media > AI活用ユースケース > 品質管理 > 海外メーカーの試薬に付く英文のSDSを読み取り、化学物質台帳へ転記して、版の更新と保管場所の見直しが要るものを拾う

海外メーカーの試薬に付く英文のSDSを読み取り、化学物質台帳へ転記して、版の更新と保管場所の見直しが要るものを拾う

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

海外メーカーの試薬に付く英文のSDS(安全データシート)を読み取り、CAS番号・危険有害性の区分・保管条件・改訂日を化学物質台帳の項目にそろえて転記します。台帳の版と比べ、改訂されたものと保管場所の見直しが要るものを拾います。

サマリー
生成AI
ChatGPT/Claude/Gemini
AIサービス
AWS Textract/Azure AI/Google Document AI
連携・自動化
Python
対象業界
医療/教育/製造
対象部門
品質管理/研究開発
対象業務
データ入力・転記/台帳・マスタ管理
主な課題
入力作業が多い/期限・対応漏れが起きる/確認ミスが多い
AIで行う処理
読み取り(OCR)
主な効果
入力漏れ削減/品質標準化/工数削減
導入難易度
★★★☆☆
実装レベル
半自動化
費用感
API連携(中)
人間の確認
条件付き
現在工数
80h/月
AI導入後
24h/月
想定削減
70%
年間削減
672h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. 研究員が試薬の受け取りを購買システムに登録し、メーカーのサイトからSDSのPDFを取得して共有フォルダへ入れる
  2. 安全管理グループの担当者がPDFを開き、品名・品番・改訂日を確かめる
  3. 台帳で同じ品番を探し、あれば台帳の改訂日とSDSの改訂日を見比べる
  4. 新規または改訂されたものは、危険有害性の区分(Section 2)、成分とCAS番号(Section 3)、保管条件(Section 7)を読み、台帳へ写す
  5. 区分を見て、保管庫の一覧表と照らし、置いてよい庫かを確かめる
  6. 区分が変わったものや保管庫が合わないものは、研究員と安全担当へメールで連絡する
導入後(After)
  1. 人研究員がSDSのPDFを受付フォルダへ入れる(購買システムの発注番号をファイル名に付ける)
  2. 自動保存をきっかけに、形式・ページ数・パスワードの有無を確かめる
  3. 自動OCRが文書のレイアウト(見出し・段落・表)と、問い合わせへの答え(改訂日・品番など)を返す
  4. 自動見出しでSectionごとに切り分け、Section 1・2・3・7・14・16を取り出す
  5. 自動生成AIが、Sectionごとの文と表から台帳の項目を埋め、根拠にした文字列を写す
  6. 自動CAS番号の検算をし、台帳の同じ品番と改訂日・区分・成分を比べる
  7. 自動区分を保管庫の決まりに当て、`new_entry` / `revised` / `unchanged` / `storage_review` / `needs_human` を付ける
  8. 人担当者が `unchanged` 以外を開き、差分と根拠を確かめて台帳への登録を承認する
  9. 人`storage_review` のものは研究員に移し替えを依頼し、完了の報告を受けて閉じる
各工程の詳しい説明を読む
  1. 研究員が試薬の受け取りを購買システムに登録し、メーカーのサイトからSDSのPDFを取得して共有フォルダへ入れる
  2. 安全管理グループの担当者がPDFを開き、品名・品番・改訂日を確かめる
  3. 台帳で同じ品番を探し、あれば台帳の改訂日とSDSの改訂日を見比べる
  4. 新規または改訂されたものは、危険有害性の区分(Section 2)、成分とCAS番号(Section 3)、保管条件(Section 7)を読み、台帳へ写す
  5. 区分を見て、保管庫の一覧表と照らし、置いてよい庫かを確かめる
  6. 区分が変わったものや保管庫が合わないものは、研究員と安全担当へメールで連絡する

(a)改訂に気づかない。 3番は品番が一致した時点で「台帳にある」と判断して終わりがちです。改訂日の比較は、忙しい月から省かれます。 その結果、危険有害性の区分が前の版のまま何年も残ります。

(b)見る場所がメーカーごとに違う。 SDSの項目立ては16のSectionで共通していても、改訂日が表紙にあるメーカー、最終ページのSection 16にだけあるメーカー、ヘッダーに印刷日と並んでいるメーカーがあります。印刷日を改訂日と取り違えることもあります。

(c)混合物の成分を写し漏らす。 溶液や混合物の試薬はSection 3に成分が複数並び、CAS番号と含有率を1行ずつ写す途中で1行飛ばします。 桁を1つ写し間違えても、台帳の側では気づけません。

(d)保管場所の見直しが連絡で止まる。 6番のメールが研究員に届いても、実際に試薬を移したかどうかを誰も追っていません。 区分が変わったという情報が、台帳にも保管庫にも反映されないまま残ります。

  1. 【人】 研究員がSDSのPDFを受付フォルダへ入れる(購買システムの発注番号をファイル名に付ける)
  2. 【自動】 保存をきっかけに、形式・ページ数・パスワードの有無を確かめる
  3. 【自動】 OCRが文書のレイアウト(見出し・段落・表)と、問い合わせへの答え(改訂日・品番など)を返す
  4. 【自動】 見出しでSectionごとに切り分け、Section 1・2・3・7・14・16を取り出す
  5. 【自動】 生成AIが、Sectionごとの文と表から台帳の項目を埋め、根拠にした文字列を写す
  6. 【自動】 CAS番号の検算をし、台帳の同じ品番と改訂日・区分・成分を比べる
  7. 【自動】 区分を保管庫の決まりに当て、new_entry / revised / unchanged / storage_review / needs_human を付ける
  8. 【人】 担当者が unchanged 以外を開き、差分と根拠を確かめて台帳への登録を承認する
  9. 【人】 storage_review のものは研究員に移し替えを依頼し、完了の報告を受けて閉じる

8番目で人が開くのは、変わったものだけです。 買い直しで同じ版のSDSが届いたものは、改訂日と成分が一致したことを一覧で流し見て終わります。月160件のうち、手で開くのは新規と改訂と見直しの分です。

7番目で「保管庫を変えるべきか」の結論は出しません。 出すのは、読み取った区分が今の保管庫の決まりに当たらないという事実です。どこへ移すかは、保管庫の空きや研究の事情を知っている人が決めます。

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

構成図
英文のSDS(PDF、メーカーのサイトから取得)
   ▼【トリガー】受付フォルダ(Amazon S3)への保存
AWS Lambda ── 形式・ページ数・サイズ・パスワードの確認
   ▼
AWS Textract(StartDocumentAnalysis:LAYOUT/TABLES/QUERIES)
   │   見出し・段落・表・問い合わせへの答えと信頼度
   ▼  完了の通知(Amazon SNS)→ AWS Lambda が結果を取る
Python ── 見出しでSectionごとに切り分ける
   ▼
Claude API ── 台帳の項目を埋める
   │   ① 品名・品番・改訂日  ② 区分・注意喚起語  ③ 成分とCAS番号・含有率  ④ 保管条件
   ▼
Python ── CAS番号の検算、台帳の版との比較、保管庫の決まりとの照合
   ▼
判定(new_entry / revised / unchanged / storage_review / needs_human)
   ▼
【安全管理グループが変わったものだけ確認】
   ├──▶ 化学物質台帳へ登録(承認後)
   └──▶ 研究員への移し替えの依頼(下書き)
役割想定する製品代替候補
OCRAWS Textract(StartDocumentAnalysis:LAYOUT/TABLES/QUERIES)Azure AI Document Intelligence、Google Document AI
生成AIClaude API(Sectionごとの文と表から台帳の項目を埋める)OpenAI API、Gemini API
差異計算Python(CAS番号の検算、台帳の版との比較、保管庫の決まりとの照合)台帳データベースの比較の機能
連携AWS Lambda(保存と完了の通知を起点に処理を動かす)Amazon EventBridge
保管Amazon S3(SDS、読み取り結果、判定の結果)研究所のファイルサーバー

化学物質台帳と保管庫の一覧表は、新しく足すものではありません。 最初の準備は、保管庫の決まりを「庫ごとに置いてよい区分」の表に書き直すことです。

OCRに AWS Textract を選ぶのは、SDSが英文だからです。 対応言語は英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語で、手書きの認識は英語だけ、縦書きには対応していません。 欧州のメーカーがドイツ語やフランス語の版を送ってきた場合も文字は読めますが、問い合わせ(Queries)は英語の文書だけが対象です。 英語の版を取り直すほうが確実です。

使う機能は、文書の分析の非同期版(StartDocumentAnalysis)です。 分析の種類は TABLES・FORMS・QUERIES・SIGNATURES・LAYOUT から選べ、本記事では LAYOUT・TABLES・QUERIES を使います。請求書向けの AnalyzeExpense は使いません。 SDSは見出しで区切られた長い文書だからです。

レイアウトの分析は、見出しを LAYOUT_SECTION_HEADER として返し、要素は読む順(左から右、上から下)に並びます。 「SECTION 3: Composition/information on ingredients」のような見出しを手がかりに、Sectionごとに切り分けられます。

SDSの16の項目立ては、米国の基準(OSHA の危険有害性周知基準)で決められています。 Section 16は「作成日または最終改訂日を含むその他の情報」です。ただし表紙やヘッダーにも日付を書くメーカーが多いので、両方を読みます。

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

Step1

処理の起点を決める

受付フォルダ(Amazon S3)にPDFが保存されたことを起点にします。 試薬は毎日届くので、1日1回の定時処理にはしません。改訂で区分が変わったものを、研究員が使い始める前に見つけたいからです。

研究員が入れるファイルには、購買システムの発注番号をファイル名に付けてもらいます。発注番号があれば、どの研究室が・いつ・どれだけ買ったかを購買システムから引けます。 付いていないファイルは、処理を止めずに needs_human で受け、担当者が発注番号を足します。

処理が終わったファイルは処理済みの場所へ移します。移すのは、判定の一覧への書き出しまで成功したときだけです。 受付フォルダに残っている数が、そのまま未処理の数になります。

Step2

入力データを集める

データ中身取得元
SDSPDF。メーカー、品番、受け取った日時受付フォルダ
読み取り結果レイアウトの要素(見出し・段落・表)、表のセル、問い合わせへの答え、信頼度AWS Textract
発注の情報発注番号、研究室、発注者、数量、納品日購買システム
化学物質台帳品番ごとの品名、CAS番号と含有率、区分、注意喚起語、保管条件、保管庫、SDSの改訂日化学物質台帳
保管庫の決まり庫ごとに置いてよい区分、置いてはいけない組み合わせ、施錠の要否自社で整備する表
メーカーの一覧メーカーごとの改訂日の書き方と置き場所、日付の書き方(月と日の順)自社で用意する一覧

質を決めるのは、下の3つです。 台帳に改訂日が無ければ版を比べられず、保管庫の決まりが表になっていなければ見直しを拾えません。メーカーの一覧の「日付の書き方」が無いと、「03/04/2026」を3月4日と4月3日のどちらで読むかが決まりません。

Step3

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

読み取りは、Lambda から StartDocumentAnalysis を呼んで始めます。 文書はS3の場所で指定し、完了の通知先にSNSのトピックを渡します。ClientRequestToken に受付のファイルごとの値を入れ、同じ文書の処理が誤って二重に始まらないようにします。 同じトークンなら同じ JobId が返ります。JobId は7日間しか有効でないので、完了を受けたらすぐに GetDocumentAnalysis で結果を取り、自社のバケットへ書き出します。

取るものどこから何に使うか
見出しLAYOUT_SECTION_HEADERSectionごとの切り分け
段落と箇条書きLAYOUT_TEXT・LAYOUT_LIST区分、注意喚起語、保管条件の文
成分の表TABLE・CELLCAS番号と含有率を行ごとに取る
ヘッダーとフッターLAYOUT_HEADER・LAYOUT_FOOTER改訂日と印刷日の候補
問い合わせへの答えQUERY・QUERY_RESULT改訂日、版、品番、注意喚起語
信頼度各ブロックの Confidence読み直しの要否

問い合わせ(Queries)は、場所の決まらない値を拾うために使います。 「What is the revision date?」「What is the product number?」「What is the signal word?」のように英語の質問を渡し、Alias に REVISION_DATE のような名前を付けます。答えには信頼度が付き、見つからなければ空で返ります。 非同期の処理では1ページあたり30件まで問い合わせを渡せます。

改訂日は、問い合わせとSection 16の両方から取ります。 2つが一致しなければ needs_human にします。印刷日(Print Date)を改訂日として拾っていないかは、ここで分かります。

Step4

AIへ渡す前に整形する

  1. 形式の確認 … 扱えるのはJPEG、PNG、PDF、TIFFです。XFA形式のPDFには対応していません。 対応外のものはPDFに変換します
  2. パスワードの確認 … パスワードで保護されたPDFは読めません。 メーカーのサイトから取り直します
  3. ページ数とサイズの確認 … 非同期の処理はPDFで500MB・3,000ページまで。SDSなら収まります
  4. 解像度の確認 … 読み取れる文字の高さは15ピクセル以上で、150dpiで8ポイントの文字に当たります。成分の表や脚注の小さな文字が、この下限に近いことがあります
  5. 言語の確認 … 英語以外の版が入っていないかを見ます。英語以外なら英語の版を取り直します
  6. Sectionの切り分け … LAYOUT_SECTION_HEADER の文字列に「SECTION」と番号があるものを境にします。番号が見つからない見出しは、項目名(Hazards identification など)で当てます
  7. ヘッダーとフッターの除去 … 各ページに繰り返し出る品名や印刷日を、本文から外します。ただし改訂日の候補として別に残します

6番目はAIに任せません。 見出しの切り分けを生成AIに頼むと、ページをまたいだ表を2つのSectionに割ったり、逆に2つを1つにしたりします。境界はレイアウトの要素で機械的に決め、AIにはSectionの中身だけを渡します。

Step5

AIに処理させる

させるのは、Sectionごとの文と表から台帳の項目を埋め、根拠にした文字列をそのまま写すことだけです。

見るもの書き出す内容判断できないときの扱い
Section 1品名、品番、メーカー名品番が複数あれば ambiguous
Section 2危険有害性の区分と区分の番号、注意喚起語、危険有害性情報(H文)記載が無ければ「不明」
Section 3成分ごとの名称、CAS番号、含有率(範囲のまま)表が崩れていれば unreadable
Section 7保管条件(温度、遮光、不活性ガス、避ける物質)記載が無ければ「不明」
Section 14国連番号、輸送の分類記載が無ければ「不明」
Section 16・ヘッダー改訂日、版、前の版からの変更点の記載候補が複数なら ambiguous

Section 3の含有率は範囲のまま写させます。 「10 - 20 %」を「15%」にしません。丸めた値を台帳に入れると、次の版と比べたときに変わっていないものまで差分に出ます。

させないこと理由
CAS番号の補完・修正読めない桁を推測で埋めると、別の物質の番号になる
区分の推定成分から区分を考えさせない。書かれていなければ「不明」
保管庫の決定決まりとの照合は Python で行い、移す先は人が決める
国内の法令の該当性の判断安全衛生の担当が決める
改訂日と印刷日の選び分け候補を両方出させ、選ぶのは規則

1行目がいちばん起きやすい失敗です。 「7647-01-?」のように桁がつぶれたCAS番号を渡すと、それらしい番号に直して埋めます。CAS番号の右端の1桁は、番号全体が正しいかを確かめるための検査用の数字です。 検算は後段の Python で行うので、AIには読めたとおりに写させます。

Step6

指示内容を固定する

あなたは研究所の安全管理グループで、英文のSDSから化学物質台帳の項目を写す立場です。
渡すのは、OCRがSectionごとに切り分けた文と表です。そこに書かれたことだけを使ってください。

【写す項目】
- section1: product_name, product_number, manufacturer
- section2: hazard_classes(区分の名称と区分の番号の組), signal_word, h_statements
- section3: components(成分ごとに name, cas_no, concentration)
- section7: storage(温度, 遮光, 不活性ガス, 避ける物質)
- section14: un_number, transport_class
- dates: revision_date_candidates, version, print_date

【status の付け方】
- ok ......... 値が書かれており、そのまま写せた
- missing .... そのSectionに記載が無い。値は「不明」とする
- unreadable . 文字は検出されているが、値として確定できない
- ambiguous .. 候補が複数あり、1つに決められない

【厳守事項】
- 記載がなければ「不明」とし、status を missing にしてください。
  他のSectionから推測して埋めないでください。
- CAS番号は読めたとおりの文字列で写してください。
  桁を補う、ハイフンを足す、それらしい番号に直すことをしないでください。
- 含有率は書かれた範囲のまま写してください。中央の値に丸めないでください。
- 区分は書かれた名称と番号のまま写してください。
  成分や物性から区分を推定しないでください。
- 日付は、改訂日・版・印刷日の候補を、書かれていた文字列と場所ごとに
  すべて出してください。どれが改訂日かを1つに選ばないでください。
- 保管場所や、国内の法令に当たるかは書かないでください。
- evidence には、根拠にした文字列をそのまま写してください。
- SDSでない書類(分析証明書など)と判断した場合は、写さずに
  document_type に種類を書いてください。

【Sectionごとの読み取り結果】{sections}
【問い合わせへの答え】{query_results}

「改訂日を1つに選ばない」と書かないと、最初に見つけた日付を選びます。 ヘッダーの印刷日が先に出てくるメーカーでは、毎回それが改訂日になり、全件が「改訂された」と判定されます。 選ぶのは規則の側(第7章の出力形式)です。

「区分を推定しない」も明記します。 何も言わないと、Section 2が空のSDSに対して成分から区分を考え、もっともらしい区分を埋めます。 それは台帳に載った瞬間に事実として扱われます。

Step7

出力形式を固定する

次の形のJSONで受け取ります。 Claude API の構造化出力(output_config.format にJSONスキーマを渡す)を使うと、スキーマどおりの形で返り、必須の項目が欠けません。

{
  "sds_id": "",
  "document_type": "sds",
  "product": { "name": "", "number": "", "manufacturer": "" },
  "dates": {
    "revision_candidates": [ { "text": "", "location": "header | section16 | query" } ],
    "version": "", "print_date": ""
  },
  "hazard_classes": [ { "class": "", "category": "", "status": "ok", "evidence": "" } ],
  "signal_word": "",
  "components": [
    { "name": "", "cas_no": "", "concentration": "", "status": "ok", "evidence": "" }
  ],
  "storage": { "temperature": "", "light": "", "inert_gas": "", "incompatible": "" },
  "un_number": "",
  "verdict": "new_entry | revised | unchanged | storage_review | needs_human"
}

verdict はAIに埋めさせません。 後段の Python が次の規則で決めます。

条件verdict
台帳に同じ品番が無いnew_entry
改訂日の候補が一致し、台帳より新しいrevised
改訂日・区分・成分が台帳と一致unchanged
区分が今の保管庫の決まりに当たらないstorage_review(他の判定と併記)
CAS番号の検算が合わない/改訂日の候補が食い違う/unreadable があるneeds_human

1つ目の理由は、版の比較を規則で行えることです。 改訂日だけでなく、区分と成分の差分も Python で取ります。改訂日が同じなのに区分が違う、というメーカー側の差し替えも拾えます。

2つ目は、CAS番号の検算を機械で行えることです。 検査用の1桁は、右から2桁目に1、3桁目に2…と重みを掛けて足し、10で割った余りと一致します。CASの説明では 107-07-3 が例に挙がっており、1×7+2×0+3×7+4×0+5×1=33 で、余りの3が右端と一致します。 合わなければ読み違いです。

3つ目は、evidence で確認が速くなることです。 差分の行ごとに、SDSのどの文字列を根拠にしたかが並びます。

Step8

システムへ連携する

つなぎ先方式内容
受付フォルダ(Amazon S3)保存の通知で Lambda を起動SDSの受け取り
AWS TextractStartDocumentAnalysis/GetDocumentAnalysisレイアウト・表・問い合わせへの答え
Claude APIAPI呼び出しSectionごとの項目の書き出し
購買システム発注番号での読み取り研究室、発注者、数量
化学物質台帳読み取りと、承認後の登録版の比較と、承認されたものの書き込み
判定の一覧表への書き出し担当者が確認する一覧

台帳への書き込みは、担当者の承認の後だけです。 自動で書き込むと、改訂日の読み違い1件で、正しい版が古い版で上書きされます。書き込むときは前の版の値を履歴に残し、上書きしません。

購買システムは読み取りだけです。発注番号が見つからなくても、購買システムの側を直しに行きません。

Step9

人が確認する

人が開くのは unchanged 以外のものです。 unchanged は件数と品名を一覧で流し見ます。

  1. needs_human を先に見る … CAS番号の検算が合わないもの、改訂日の候補が食い違うもの。多くはSDSの画像を見れば数秒で決まります
  2. revised の差分を確かめる … 区分・成分・保管条件のどこが変わったかを、evidence とSDSの該当箇所で見ます
  3. new_entry を登録する … 品名・CAS番号・区分を確かめて承認します
  4. storage_review を研究員へ依頼する … 移し替えの依頼の下書きを直して送り、完了の報告を受けて閉じます
  5. 判定を覆したら記録する … どの項目を、どう直したかを残します

4番目の「閉じる」を省かないでください。 連絡しただけでは保管庫は変わりません(第3章の(d))。

目標は、160件をならして1件9分です。 同じ版の買い直しが半分ほどという想定で、それより開く件数が多い月は、メーカーの一覧の日付の書き方が足りていないことが多いです。

Step10

例外に対処する

起きること対応
パスワードで保護されたPDF読めない。メーカーのサイトから取り直す
XFA形式のPDF対応していない。印刷してPDFにし直す
英語以外の版が届いた問い合わせは英語のみ。英語の版を取り直す
文字が小さすぎる15ピクセルが下限。下回るものは unreadable で人へ
見出しの番号が見つからない項目名で当てる。当たらなければ needs_human
成分の表がページをまたぐ前後のページの表を列の見出しでつなぐ。つながらなければ人へ
CAS番号の検算が合わないneeds_human。AIにもう一度読ませて直さない
企業秘密として成分が伏せてある「不明」で写し、伏せてあることを evidence に残す
SDSでない書類が入ったdocument_type を見て、写さずに担当者へ戻す
OCRが応答しない受付フォルダに残す。処理済みへ移すのは成功時だけ

7行目の「AIにもう一度読ませて直さない」が大事です。 読み直させると、検算が合う番号を作って返すことがあります。検算が合うことと、正しい物質の番号であることは別です。

Step11

記録を残す

  • 元のSDSのPDFと、受け取った日時・発注番号
  • OCRが返したJSONの全文(レイアウト・表・問い合わせへの答え)
  • AIが返したJSONと、そのとき参照した台帳の行と保管庫の決まり
  • 判定の結果と、版の差分
  • 人が判定を覆した記録 … どの項目を、どう直したか
  • 台帳へ登録した日時と承認者、上書きした前の版の値
  • storage_review の依頼日と完了日

「上書きした前の版の値」を残すのは、改訂の経緯を後から追えるようにするためです。 ある試薬の区分がいつ変わり、そのとき保管庫を移したかを、事故やヒヤリハットの後に確かめることがあります。

04実装レベルの3段階

最小構成:PDFを手でAIの画面に貼り、台帳の項目を写させる / 1件ごとの転記の下書き
半自動化:上記+OCRのAPIでSectionごとに切り分け、台帳と比べた差分の一覧を出す / 読み取り、転記の下書き、版の比較
本格構成:上記+受付フォルダを起点に自動で動かし、保管庫の決まりとの照合と移し替えの依頼の下書きまで出す / 転記、版の比較、保管の見直しの洗い出し

最小構成は確かめるための段階です。 本記事の想定は半自動化です。 読み取りと台帳との差分の一覧が自動になり、1件30分が9分になります。本格構成に進むには、保管庫の決まりを表にする作業が先に要ります。

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

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

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

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

AI活用について相談する

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

向いている
  1. 海外メーカーの試薬を毎月百件以上購入し、英文のSDSをPDFで受け取っている企業の研究所・大学の研究室・病院の検査部門。化学物質台帳を表計算やデータベースで持ち、CAS番号・危険有害性の区分・保管場所を手で転記している場合。SDSの改訂に気づかず、古い版の内容のまま台帳が残っている場合。保管庫ごとに置いてよい物質の区分を決めている場合。
向いていない
  1. SDSが日本語や中国語だけで届く場合(この構成のOCRは英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語しか読めず、問い合わせ(Queries)は英語の文書だけが対象です)。購入する試薬が月に十数件で、目視の転記で足りる場合。台帳を持たず、保管場所の決まりも無い場合。なお、国内の法令に照らした該当性の判断と、保管場所を最終的に決めることは、この構成では代替できません。

07最小構成で試す方法

  1. 先月届いたSDSから20件を選ぶ(うち数件は、買い直しで改訂日が変わっていたものを入れる)
  2. 20件について、台帳に今入っている値を書き出しておく
  3. PDFを1件ずつ手元のAIサービスに貼り付ける
  4. 「このSDSから、品名・品番・改訂日の候補・危険有害性の区分・成分ごとのCAS番号と含有率・保管条件を写してください。書かれていない項目は『不明』としてください。推測で埋めないでください。改訂日の候補は場所ごとにすべて出してください」と指示する
  5. 出てきた値を、台帳の値と突き合わせる

20件は必ずやってください。 版の比較の仕組みを組む前に、「改訂日を取り違えずに拾えるか」を確かめます。

出てきた内容判断
改訂日の候補が場所ごとに出て、台帳との差分も合うOCRと台帳の比較に進む
印刷日を改訂日として出した指示の書き方とメーカーの一覧で直る。構成は有効
CAS番号の桁が変わっている検算を後段に置く前提を確かめる。 AIに直させない

2行目は珍しくありません。 目視で改訂を見落としていた理由の1つです。

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

問題対策
印刷日を改訂日として拾う候補を場所ごとにすべて出させ、選ぶのは規則にする
全件が「改訂された」と出る日付の書き方(月と日の順)をメーカーの一覧で決め打ちする
CAS番号の桁を推測で埋める読めたとおり写させ、検算は Python で行う
検算が合わないものをAIに読み直させる読み直させない。人がSDSの画像で見る
含有率を丸める範囲のまま写させる。丸めると差分が出続ける
成分から区分を推定する推定を禁じ、記載が無ければ「不明」
見出しの切り分けをAIに任せるレイアウトの要素で機械的に切る
成分の表がページで切れる列の見出しでつなぎ直す
英語以外の版で問い合わせが空になる問い合わせは英語のみ。英語の版を取り直す
保管庫の決まりが文章のまま庫ごとの区分の表に書き直してから照合する
移し替えの依頼で止まるstorage_review を完了まで一覧に残す
台帳を自動で上書きする承認後だけ書き込み、前の版を履歴に残す

上の2行が、この構成の失敗のほとんどです。 どちらも日付の扱いから出ています。改訂日を取り違えると、版の比較という本記事の中心がまるごと崩れます。

下から2行目と3行目は、運用に乗るかを決めます。 移し替えを完了まで追わなければ、台帳と保管庫が食い違ったまま残ります。

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

この構成で扱うデータ: 試薬の品名・成分・危険有害性の区分、研究室ごとの購入の記録、保管庫の場所です。個人情報はほとんど含みませんが、研究室ごとの購入の記録は、どのテーマを進めているかを外から推し量れる情報です。

  1. 外部へ渡す範囲を、SDSの中身に限る … 生成AIに渡すのはSectionごとの文と表だけです。発注番号、研究室名、発注者の名前は渡しません
  2. 台帳への書き込みを自動にしない … 承認の後だけ書き込みます。誤った区分が台帳に載ると、その区分で保管と取扱いが決まります
  3. この構成は法令の該当性の判断を代替しません … 国内の法令に照らしてどの物質がどの管理の対象になるかは、安全衛生の担当と専門家が決めることです。 この構成が出すのは、SDSに書かれていた区分と、台帳との差分だけです
  4. SDSの言語と原本を決めておく … 米国の基準ではSDSは英語で用意することとされ、他の言語の写しを持つことも認められています。社内で原本として扱うのが英文のPDFか、台帳の値かを先に決めてください
  5. 企業秘密で伏せた成分を推測させない … 伏せてある成分を、AIに推測させて埋めないでください
  6. 保存先の鍵を管理する … 非同期の分析では、結果を自社のバケットに出し、KMSの鍵で暗号化する設定ができます

誤りのリスクは、改訂の見落としと、誤った区分の登録の2つです。 どちらも「AIに選ばせない・埋めさせない」設計で防ぎます。

10まず何から始めるか

1週目:メーカーの一覧を作る

購入件数の多い上位20社のSDSを開き、改訂日がどこに、どの書き方で書かれているかを一覧にします。

2週目:20件で試す

先月のSDSから20件を選び、手元のAIサービスに貼り付けて台帳の項目を写させます。改訂日の候補を取り違えていないか、CAS番号の桁が変わっていないかを最優先で見ます。

3週目:保管庫の決まりを表にする

保管庫ごとに置いてよい区分と、置いてはいけない組み合わせを表に書き直します。 ここは安全衛生の担当と一緒に決めます。

4週目:受付から差分の一覧までをつなぐ

S3 の受付フォルダから StartDocumentAnalysis を呼び、Sectionごとに切り分け、台帳との差分を一覧に書き出すところまで作ります。この時点では台帳へ書き込まず、差分の一覧だけを見ます。

2か月目: CAS番号の検算と verdict を足し、needs_human の件数を毎週数えます。3か月目以降: 承認後の台帳への登録と、storage_review の依頼の下書きを足し、1件30分が何分になったかを実測します。改訂の見落としが無いことを1か月続けて確かめた時点で、この構成は完成です。


11関連ユースケース

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

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

技術仕様確認日:2026-10-06/最終更新:2026-10-06
確認した内容情報源確認日
StartDocumentAnalysis がS3の文書を非同期で分析し、完了をSNSに通知し、JobId で GetDocumentAnalysis から結果を取ること。ClientRequestToken で同じジョブの二重起動を防げること。JobId が7日間有効なこと。OutputConfig と KMSKeyId で自社のバケットへの出力と暗号化ができることAWS: StartDocumentAnalysis2026-10-06
分析の種類が TABLES・FORMS・QUERIES・SIGNATURES・LAYOUT であること。QUERY と QUERY_RESULT(信頼度付き)のブロックが返ること。人の確認に使う Amazon Augmented AI が2026年7月に保守モードに入り新規の顧客を受け付けていないことAWS: AnalyzeDocument2026-10-06
レイアウトの要素(LAYOUT_TITLE・LAYOUT_HEADER・LAYOUT_FOOTER・LAYOUT_SECTION_HEADER・LAYOUT_TABLE・LAYOUT_TEXT など)と、読む順で返ることAWS: Layout Response Objects2026-10-06
対応形式がJPEG・PNG・PDF・TIFFでXFA形式は不可、非同期のPDFが500MB・3,000ページまで、パスワード保護のPDFは不可、問い合わせが非同期で1ページ30件まで、対応言語が6言語で問い合わせは英語のみ、手書きは英語のみ、縦書き不可、文字の高さが15ピクセル以上(150dpiで8ポイント)であることAWS: Set Quotas in Amazon Textract2026-10-06
SDSが16の項目立てで、Section 16が作成日または最終改訂日を含むその他の情報であること。SDSは英語で用意し、他の言語の写しも持てることOSHA: 29 CFR 1910.1200 Hazard Communication2026-10-06
CAS番号が最大10桁で3つに区切られ、右端の1桁が番号全体の正しさを確かめる検査用の数字であることCAS: CAS Registry2026-10-06
検査用の数字が決まった計算で求められ、107-07-3 が例に挙がっていることCAS: Check Digit Verification2026-10-06
構造化出力を output_config.format で指定でき、スキーマどおりの形で必須の項目が欠けずに返ることClaude Docs: Structured outputs2026-10-06

国内の法令に照らした管理の対象かどうかは、安全衛生の担当と専門家が判断してください。 本記事は上記の公開情報で確認できた範囲だけを扱っています。

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

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

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

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