化粧品・日用品のメーカーが海外の香料会社から届く英文の IFRA 適合証明書とアレルゲンの一覧を読み取り、香料ごとの台帳と製品の配合量の上限との照合表を作る
香料会社から届く英文の IFRA 適合証明書とアレルゲンの一覧を読み取り、香料ごとの台帳に写します。製品の香料の配合量と照らして上限を超えないかを確かめ、欧州向けの製品では表示が要るアレルゲンの候補を出します。
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 連携・自動化
- Python
- 対象業界
- 小売/製造
- 対象部門
- 品質管理/研究開発
- 対象業務
- 内容確認・チェック/台帳・マスタ管理
- 主な課題
- 入力作業が多い/属人化している/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/品質標準化/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 品質保証の担当者が、メールで届いた証明書とアレルゲンの一覧のPDFを香料ごとのフォルダに保存する
- 証明書を開き、改定の版、発行日、カテゴリごとの最大の使用濃度を台帳に写す
- アレルゲンの一覧を開き、成分ごとの香料中の濃度を台帳に写す
- その香料を使う製品を処方の表で探し、製品のカテゴリの最大の使用濃度と配合量を比べる
- 欧州向けの製品では、香料中の濃度×配合量で製品中の濃度を出し、表示の基準と比べる
- 上限に近い製品や表示の要る成分を、研究開発部と表示の担当に知らせる
- 版の古い証明書があれば、香料会社に新しい版を頼む
- 人品質保証の担当者が、証明書とアレルゲンの一覧のPDFを受付のフォルダに保存する(メールの自動振り分けでも可)
- 自動保存をきっかけに、形式・サイズ・パスワード・ページ数を確かめ、ファイル名から香料会社と香料のコードを見分ける
- 自動AWS Textract で、証明書とアレルゲンの一覧の表・項目と値・問いへの答え・署名の有無を読む
- 自動香料会社ごとの項目の対応表で、カテゴリの表記と列の見出しを共通の項目に直す
- 自動改定の版と発行日を確かめ、文字の値と単位をそろえる
- 自動その香料を使う製品ごとに、配合量とカテゴリの最大の使用濃度を照らす
- 自動欧州向けの製品ごとに、製品中のアレルゲンの濃度を出し、表示の基準と照らす
- 人品質保証の担当者が `ok` 以外の香料だけを開き、PDFの画像で値を確かめる
- 人研究開発部と表示の担当に知らせ、処方と表示の見直しを決める
- 人版の古い証明書や不足のある一覧について、香料会社に依頼する
各工程の詳しい説明を読む
- 品質保証の担当者が、メールで届いた証明書とアレルゲンの一覧のPDFを香料ごとのフォルダに保存する
- 証明書を開き、改定の版、発行日、カテゴリごとの最大の使用濃度を台帳に写す
- アレルゲンの一覧を開き、成分ごとの香料中の濃度を台帳に写す
- その香料を使う製品を処方の表で探し、製品のカテゴリの最大の使用濃度と配合量を比べる
- 欧州向けの製品では、香料中の濃度×配合量で製品中の濃度を出し、表示の基準と比べる
- 上限に近い製品や表示の要る成分を、研究開発部と表示の担当に知らせる
- 版の古い証明書があれば、香料会社に新しい版を頼む
(a)版の古い証明書。 改定の後も、前の版の証明書のまま台帳に残っている香料があります。証明書の版を台帳に写していない担当者がいると、 どの香料が出し直しを待っているかが分かりません。
(b)単位の混在。 アレルゲンの一覧の濃度を % で書く香料会社と ppm で書く香料会社があります。1%は10,000 ppm で、 単位を取り違えると、表示の要否の判定が大きく狂います。
(c)文字の値。 「Not limited」「Not approved」のような文字の値が、数字の欄に入っています。空欄と同じに扱うと、使ってはいけないカテゴリの製品に、上限なしで使えると読みます。
(d)組み合わせの数。 1つの香料を10の製品で使っていれば、1通の証明書で10回の照合が要ります。 確かめ方が担当者ごとに違い、どこまで見たかが記録に残りません。
- 【人】 品質保証の担当者が、証明書とアレルゲンの一覧のPDFを受付のフォルダに保存する(メールの自動振り分けでも可)
- 【自動】 保存をきっかけに、形式・サイズ・パスワード・ページ数を確かめ、ファイル名から香料会社と香料のコードを見分ける
- 【自動】 AWS Textract で、証明書とアレルゲンの一覧の表・項目と値・問いへの答え・署名の有無を読む
- 【自動】 香料会社ごとの項目の対応表で、カテゴリの表記と列の見出しを共通の項目に直す
- 【自動】 改定の版と発行日を確かめ、文字の値と単位をそろえる
- 【自動】 その香料を使う製品ごとに、配合量とカテゴリの最大の使用濃度を照らす
- 【自動】 欧州向けの製品ごとに、製品中のアレルゲンの濃度を出し、表示の基準と照らす
- 【人】 品質保証の担当者が
ok以外の香料だけを開き、PDFの画像で値を確かめる - 【人】 研究開発部と表示の担当に知らせ、処方と表示の見直しを決める
- 【人】 版の古い証明書や不足のある一覧について、香料会社に依頼する
5番目が、この設計の分かれ目です。 文字の値と単位が決まらない値は照合に使いません。決まらないまま照らすと、上限の無いカテゴリと使えないカテゴリを取り違えます。
6番目と7番目で照合を規則に置いているのも、意図してのことです。 製品の処方や表示の基準が変わっても、直すのは表だけです。
02今回想定するシステム構成
IFRA 適合証明書・アレルゲンの一覧(英文のPDF。1ページから数ページ) │ 品質保証の担当者が受付フォルダへ保存 ▼【トリガー】Amazon S3 への保存 AWS Lambda ├──▶ 形式・サイズ・パスワード・ページ数の確認、香料会社と香料の見分け ▼ AWS Textract(AnalyzeDocument/StartDocumentAnalysis。TABLES・FORMS・QUERIES・SIGNATURES) │ 表のセルと列の見出し、項目と値、問いへの答え、署名、信頼度 ▼ AWS Lambda(Python) │ ① 対応表でカテゴリと列の見出しを共通の項目に直す │ ② 版・発行日を確かめ、文字の値と単位をそろえる │ ③ 製品ごとに配合量と最大の使用濃度を照らす │ ④ 欧州向けの製品のアレルゲンの濃度を出し、表示の基準と照らす ▼ 香料×製品ごとの判定(ok / over_limit / near_limit / not_permitted / label_required / needs_review) ▼ 【人が ok 以外だけ確認】 ├──▶ 香料ごとの台帳 └──▶ 製品の配合量の上限と表示の要否の照合表
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | AWS Textract(AnalyzeDocument・StartDocumentAnalysis の TABLES・FORMS・QUERIES・SIGNATURES) | Azure AI Document Intelligence、Google Document AI |
| 差異計算 | カテゴリと単位のそろえ、配合量と上限の照合、製品中のアレルゲンの濃度の計算(Python。AWS Lambda で動かす) | ─ |
| 連携 | AWS Lambda(S3 への保存を起点に読み取りを始め、結果を一覧に書く) | Amazon EventBridge |
| 保管 | Amazon S3(証明書と読み取りの結果) | 社内のファイルサーバー |
| 通知 | Amazon SNS(読み取りの完了と要確認の知らせ) | 社内のチャット |
香料の台帳と処方の表は、新しく足すものではありません。 新しく作るのは、香料会社ごとの項目の対応表と、製品ごとのカテゴリと表示の区分の表の2つです。項目の対応表は、証明書のカテゴリの書き方、文字の値の書き方、アレルゲンの一覧の濃度の単位を香料会社ごとに並べた表です。製品の表は、製品ごとに IFRA のカテゴリと、欧州向けか、洗い流すか塗ったままかを並べた表です。
証明書は、AWS Textract の文書の解析で読みます。 カテゴリごとの最大の使用濃度とアレルゲンの一覧は表(TABLE・CELL)として、香料の名前や発行日のような項目と値の組はフォーム(KEY_VALUE_SET)として、署名は SIGNATURE として返ります。1ページの証明書は同期の AnalyzeDocument、2ページ以上のアレルゲンの一覧は非同期の StartDocumentAnalysis で読みます。
AWS Textract は日本語を読めません。 対応する言語は英語・フランス語・ドイツ語・イタリア語・ポルトガル語・スペイン語です。海外の香料会社の証明書は英文なので、この構成に向きます。 国内の香料会社の日本語の証明書は、日本語を読める OCR の製品で別に読みます。
03どうやって実装するのか
処理の起点を決める
受付フォルダ(Amazon S3 のバケット)に証明書かアレルゲンの一覧のPDFが保存されたことを起点にします。 証明書は、香料の採用、処方の変更、IFRA の基準の改定のたびに届きます。届いたその週のうちに照合表を出せば、処方の見直しと表示の変更を、次の生産の前に決められます。
ファイル名の先頭に、香料会社の略号と香料のコードと書類の種類を付けます。 香料会社が分かれば、項目の対応表を最初から正しく選べます。証明書とアレルゲンの一覧は香料のコードで組にし、 片方だけ届いたときは、そろった方だけを照らします。
終わったファイルは処理済みの場所へ移します。 移すのは成功したときだけで、受付フォルダに残っている数が、そのまま未処理の数になります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| IFRA 適合証明書 | 香料の名前とコード、香料会社、発行日、IFRA の改定の版、カテゴリごとの最大の使用濃度、署名 | 受付フォルダ |
| アレルゲンの一覧 | 成分の名前、CAS 番号、香料中の濃度と単位、対象とした規則の版 | 受付フォルダ |
| 読み取り結果 | 表のセルと列の見出し、項目と値、問いへの答え、署名、信頼度 | AWS Textract |
| 処方の表 | 製品のコード、使う香料のコード、香料の配合量(%) | 研究開発部の表 |
| 製品の区分の表 | 製品ごとの IFRA のカテゴリ、欧州向けか、洗い流す製品か塗ったままの製品か | 品質保証部の表 |
| 項目の対応表 | 香料会社ごとのカテゴリの書き方、文字の値の書き方、濃度の単位 | 自社で整える表 |
質を決めるのは、製品の区分の表の「カテゴリ」と「洗い流すか塗ったままか」の列です。 IFRA のカテゴリは製品の種類で決まり、欧州の香料アレルゲンの表示の基準は、塗ったままの製品で0.001%、洗い流す製品で0.01%を超えるときとされています。同じ香料でも、製品の区分で答えが変わります。
カテゴリの表記は、証明書に書かれた文字列のまま持ちます。 数字だけに丸めると、細かく分かれたカテゴリを取り違えます。 製品の区分の表にも同じ文字列で書いておき、文字列どうしで照らします。
アレルゲンの一覧には、対象とした規則の版を1列持たせます。 欧州の表示の対象に56の成分が加わったため、加わる前の版の一覧では、加わった成分の濃度が分かりません。
データの取得方法を決める
1ページの証明書は、同期の AnalyzeDocument に S3 の場所を渡し、FeatureTypes に TABLES・FORMS・QUERIES・SIGNATURES を指定して読みます。 同期の処理は PDF 1ページまでなので、2ページ以上のアレルゲンの一覧は非同期の StartDocumentAnalysis で読み、 完了の知らせが Amazon SNS に届き、状態が SUCCEEDED であることを確かめてから GetDocumentAnalysis で結果を取ります。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| カテゴリごとの最大の使用濃度 | TABLE の CELL | 配合量の上限 |
| アレルゲンの成分と濃度 | TABLE の CELL | 製品中の濃度の計算 |
| 列の見出し・表の注記 | COLUMN_HEADER、TABLE_FOOTER | 単位の場所、ページごとの見出しの行を外す |
| 改定の版・発行日・香料の名前 | QUERY_RESULT、KEY_VALUE_SET | 台帳の行と版の確かめ |
| 署名 | SIGNATURE | 発行した者の署名の有無 |
問い(Queries)は英語の文書でだけ使えます。 証明書は英文なので使えます。問いは対象のページを指定しないと1ページ目にしか当たりません。 証明書の改定の版と発行日は1ページ目の上に書かれるので、1ページ目だけに当てます。
同じ ClientRequestToken で非同期の読み取りを始めれば、同じ JobId が返ります。 ファイル名から作った値を渡しておけば、再試行で同じファイルを二度読まずに済みます。JobId は7日間だけ有効なので、 結果は取った時点で S3 に残します。
AIへ渡す前に整形する
- 形式の確認 … JPEG・PNG・PDF・TIFF のいずれかであることを確かめます。XFA 形式の PDF は読めません
- パスワードの確認 … パスワードで保護された PDF は読めません。電子署名で保護がかかっているときは、解除した版を頼みます
- ページ数で読み方を分ける … 1ページなら同期、2ページ以上なら非同期で読みます
- 文字の大きさ … 文字の高さは15ピクセル(150 DPI で8ポイント相当)が下限です。カテゴリの説明を細かい字で詰めた証明書は、下限に近くなります
- 版の確認 … 同じ香料の証明書が台帳にあれば、発行日と改定の版を比べ、新しいものだけを照合に使い、古いものは履歴に残します
- 使う製品の確認 … 処方の表で、その香料を使う製品を引きます。使う製品が無い香料は、台帳への転記の案だけを作ります
5番目を省かないでください。 同じ香料の新旧の証明書が混ざると、古い版の上限で照らした結果が、新しい版の上限で照らした結果を上書きすることがあります。
AIに処理させる
させるのは、証明書と一覧から決まった項目の値を読み取り、列の見出し・表の注記・信頼度を添えることだけです。 カテゴリと単位のそろえ、配合量と上限の照合、製品中の濃度の計算は、読み取りの後に Python の規則が行います。
| 読み取る項目 | どこから | 読み取れないときの扱い |
|---|---|---|
| 香料の名前とコード・発行日 | 問いへの答え、フォーム | 空なら台帳の行を決められず needs_review |
| 改定の版 | 問いへの答え、フォーム | 空なら照合をせず needs_review |
| カテゴリと最大の使用濃度 | 表のセル | 空なら missing。上限なしとはみなさない |
| アレルゲンの成分・CAS 番号・濃度 | 表のセル | 単位が決まらなければ照らさない |
| 署名 | 署名 | 署名が無ければ一覧に印を付ける |
| させないこと | 理由 |
|---|---|
| 空欄を「上限なし」とする扱い | 使えないカテゴリを使えると読む |
| 単位の推測 | % と ppm の取り違えは10,000倍の誤り |
| 古い版の証明書での照合 | 改定で上限が変わっている |
| カテゴリの推測 | 製品の区分は品質保証部が決める |
| 安全性の判断・表示の決定 | 安全性の評価と表示の責任は人にある |
1行目がいちばん起きやすい失敗です。 「Not approved」「Not permitted」の文字が読み取りでかすれたり、欄の外に書かれたりすると、値の欄は空に見えます。 空を「上限なし」と読むと、使えない香料を使える製品の一覧に並べます。
指示内容を固定する
文書の解析そのものには指示を書く場所がありません。AWS Textract に渡すのは文書と問い(Queries)で、判定の指示にあたるものは読み取った後の規則として持ちます。 問いは証明書の1ページ目に当てる次の4つです。
【問い(Queries。証明書の1ページ目)】
1. Alias: PRODUCT_NAME Text: What is the name of the fragrance?
2. Alias: PRODUCT_CODE Text: What is the fragrance code?
3. Alias: AMENDMENT Text: Which amendment of the IFRA Standards is this certificate based on?
4. Alias: ISSUE_DATE Text: What is the date of issue?
【読み取った値の扱いの決まり】
1. 値が空の項目は missing とする。上限なしや 0 として扱わない。
2. 信頼度が決めた値を下回る値は unreadable とし、値は参考として残す。
3. カテゴリの表記は証明書の文字列のまま、その香料会社の対応表で
自社のカテゴリの文字列に直す。直せない表記は unknown_category とする。
4. 最大の使用濃度の文字の値は、対応表で次のどれかに直す。
not_limited(上限なし) / not_permitted(使えない)
直せない文字は needs_review とする。
5. アレルゲンの濃度の単位は、列の見出し、表の注記、対応表の順で決める。
ppm は 10,000 で割って % にする。決まらなければ照らさない。
6. 改定の版が、自社で決めた現行の版より古ければ outdated_amendment とし、
照合の結果に印を付ける。
7. 配合量が最大の使用濃度を超えれば over_limit、決めた割合以上なら near_limit、
not_permitted のカテゴリで使っていれば not_permitted とする。
8. 欧州向けの製品では、香料中の濃度(%)× 配合量(%)÷ 100 で
製品中の濃度(%)を出し、塗ったままなら 0.001%、洗い流すなら 0.01%
を超える成分を label_required とする。
9. アレルゲンの一覧の対象の規則の版が、加わった成分を含まない版なら
allergen_list_outdated とする。
3番目と4番目が、この構成の罠です。 どちらも「たぶんこうだろう」で埋めたくなる箇所で、埋めた瞬間に、誤った上限が製品の照合まで通ります。 決まらない香料会社は、対応表に書き方を足せば次の証明書から決まります。
8番目の計算は、表示の要否の候補を出すだけです。 製品に同じ成分を含む別の原料があれば、合計が変わります。香料以外の原料からの分は、この構成では足しません。
出力形式を固定する
次の形の JSON で一覧に書き出します。
{
"supplier_code": "FR-02",
"fragrance_code": "",
"fragrance_name": "",
"issue_date": "2026-10-06",
"amendment": "51",
"amendment_status": "current | outdated_amendment | needs_review",
"limits": [
{ "category_raw": "", "category": "", "max_raw": "0.85", "max_pct": 0.85,
"type": "value | not_limited | not_permitted", "confidence": 0 }
],
"allergens": [
{ "name": "", "cas": "", "conc_raw": "1200", "unit_raw": "ppm", "conc_pct": 0.12 }
],
"allergen_list_status": "current | allergen_list_outdated",
"by_product": [
{ "product_code": "", "category": "", "dosage_pct": 0.5, "eu": true, "rinse_off": false,
"limit_check": "ok | over_limit | near_limit | not_permitted | needs_review",
"label_required": [ { "name": "", "conc_in_product_pct": 0.0006 } ] }
],
"verdict": "ok | action | needs_review"
}
1つ目の理由は、元の文字と直した値を並べて残せることです。 max_raw と type、conc_raw と unit_raw と conc_pct が並んでいれば、どの文字をどう読み替えたかを、画像を開く前に読めます。
2つ目は、香料1つから製品の数だけの結果を並べて持てることです。 by_product を見れば、この証明書でどの製品の処方と表示を見直すかを一覧で決められます。
| 条件 | verdict |
|---|---|
改定の版が現行で、すべての製品が ok、表示が要る成分の候補も無い | ok |
over_limit・near_limit・not_permitted・label_required・allergen_list_outdated がある | action |
needs_review・missing・unreadable・unknown_category・outdated_amendment がある | needs_review |
label_required は表示の決定ではありません。 製品中の濃度が基準を超える候補の記録で、表示を決めるのは表示の担当です。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受付フォルダ | Amazon S3 の保存のイベント | Lambda を起動する |
| AWS Textract | 同期・非同期の API 呼び出し | 証明書と一覧の表・項目・問い・署名の読み取り |
| Amazon SNS | 完了の知らせ | 非同期の結果を取る |
| 処方の表・製品の区分の表 | スプレッドシートの読み取り | 配合量、カテゴリ、欧州向けか、洗い流すか |
| 項目の対応表 | スプレッドシートの読み取り | カテゴリ、文字の値、単位の書き方 |
| 香料の台帳 | 人が確かめた後の取り込み | 香料の行 |
| 照合表 | 判定の書き出し | 香料×製品の判定 |
香料の台帳には自動で書き込みません。 単位を取り違えた濃度が台帳に入ると、その香料を使う製品すべての表示の判定が狂います。 処方の表と製品の区分の表も読むだけで、変えるのは研究開発部と品質保証部です。
人が確認する
人が開くのは ok 以外の香料だけです。 ok の香料は一覧で流し見て台帳に取り込みます。全件を開く設計にすると、第10章の6.0時間には収まりません。
needs_reviewを先に見る … 改定の版、カテゴリの表記、文字の値を画像で確かめます。決めた書き方は対応表に足しますnot_permittedとover_limitを確かめる … 値とカテゴリを画像で確かめ、研究開発部と処方の見直しを決めますlabel_requiredを表示の担当に渡す … 香料以外の原料からの分を足して、表示を決めますoutdated_amendmentとallergen_list_outdatedを香料会社に頼む … 新しい版の証明書と一覧を依頼します
2番目は、仕組みでは置き換えられません。 上限を超えた製品をどう直すかは、香りの設計と製品の発売の予定を見て決めることです。
目標は、36件をならして1件10分です。 それを超える月は、項目の対応表のカテゴリと単位の列が足りていません。
例外に対処する
| 起きること | 対応 |
|---|---|
| パスワードで保護された PDF | 読めない。解除した版を頼む |
| 改定の版が書かれていない | needs_review。香料会社に確かめる |
| カテゴリの表記が対応表に無い | unknown_category。近いカテゴリに寄せない |
| 最大の使用濃度の欄が空 | missing。上限なしとはみなさない |
| アレルゲンの濃度の単位が決まらない | 照らさず needs_review |
| 証明書とアレルゲンの一覧の香料のコードが違う | 組にせず人へ |
| 製品の区分の表にカテゴリが無い | 照らさず、品質保証部に区分を頼む |
読み取りが失敗した、または JobId が切れた | 受付フォルダに残し、読み直す。処理済みへ移すのは成功時だけ |
大半は AI の精度ではなく、証明書の書き方の揺れと、対応表と製品の区分の表の整い方の問題です。
記録を残す
- 元の証明書とアレルゲンの一覧、受け取った日時・香料会社・香料のコード
- AWS Textract が返した JSON の全文と、非同期のときの
JobId - 香料×製品ごとの判定と、そのとき参照した処方の表・製品の区分の表・対応表の版
- 人が値や判定を直した記録 … どの欄を、どう読み直したか
- 処方と表示の見直しの決定、香料会社への依頼と返事
- 香料ごとの証明書の版の履歴
3つ目で「そのときの処方の表」を残すのは、処方が後から変わるためです。 配合量を変えた後でも、どの配合量で照らして「上限の内」としたかを示せます。
04実装レベルの3段階
最小構成では件数がさばけません。 1通ずつ読ませるので、月36件には使えません。確かめるための段階です。 半自動化で、1件30分が10分になり、この段階が本記事の想定です。 台帳への転記、製品ごとの上限の照合、製品中の濃度の計算は自動になり、人は ok 以外の香料だけを見ます。差が大きいのは、1つの香料を製品の数だけ照らす作業がまるごとなくなるからです。 本格構成は、処方の変更が多い場合に向きます。 照らす元が台帳の値になるので、人が確かめた後に取り込む決まりが効いてきます。
05工数削減シミュレーション
導入後 36件 × 10分 ÷ 60 = 6 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 化粧品・ヘアケア・ボディケア・洗剤・柔軟剤・芳香剤などを作り、海外の香料会社から香料を買っているメーカー。香料ごとに英文の IFRA 適合証明書とアレルゲンの一覧を受け取り、製品の香料の配合量と見比べるのに手間がかかっている場合。欧州へ輸出する製品があり、香料アレルゲンの表示の要否を製品ごとに確かめている場合。
- 使う香料が数種類で、証明書がめったに更新されない場合。香料会社が証明書の値をデータで渡してくれる場合(読み取りが要りません)。証明書が日本語で届く場合(AWS Textract は日本語を読めません)。なお、香料と製品の安全性の評価、IFRA 基準への適合の最終の判断、製品の表示の決定は、この構成では行いません。
07最小構成で試す方法
- 先月届いた書類から10香料分を選ぶ(ppm で書かれた一覧、文字の値のある証明書、ページの多い一覧を必ず入れる)
- その10香料について、当時台帳に写した値と、製品ごとの照合の結果を書き出す
- AWS Textract のコンソールで、表・フォーム・問い・署名の解析を1通ずつかける
- 返った値を台帳の値と並べ、カテゴリ、最大の使用濃度、改定の版、アレルゲンの濃度と単位が取れているかを見る
- 取れなかった項目を並べ、項目の対応表の下書きを香料会社ごとに作る
10香料は必ずやってください。 Lambda を組む前に、「カテゴリごとの上限が表として返るか」と「文字の値が欄の中で読めるか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| カテゴリごとの上限が表のセルで返り、文字の値も読める | 対応表を作り、S3 と Lambda の連携に進む |
| 上限が本文に書かれ、表として返らない | 対応表にフォームの欄の名前を足す。構成は有効 |
| 改定の版がどの証明書にも書かれていない | 香料会社に書き方を頼むのが先。 読み取りの問題ではない |
3行目は珍しくありません。 失敗ではなく、どの版に基づく証明書かを、これまで確かめずに台帳に写していたと分かったということです。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 空欄を上限なしと読む | 空欄は missing。文字の値だけを対応表で直す |
| ppm を % として読む | 見出しと注記と対応表で決め、決まらなければ照らさない |
| 古い版の証明書で照らす | 改定の版と発行日を比べ、新しいものだけを使う |
| カテゴリを数字に丸める | 証明書の文字列のまま持つ |
| 加わったアレルゲンが一覧に無い | 一覧の対象の規則の版を確かめ、香料会社に頼む |
| 香料以外の原料からのアレルゲンを忘れる | 照合表は候補。表示の担当が足し合わせる |
上の2行が、この構成の失敗のほとんどです。 どちらも値の意味の取り違えで、照合表の上では、使える香料、表示の要らない製品に見えます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 香料会社の名前、香料の名前とコード、製品ごとの香料の配合量です。個人情報はほとんど含みませんが、製品の処方と香料の配合量は、自社の製品の設計そのもので、社外に出せない情報です。
- 処方の情報を照合表の外に出さない … 照合表は品質保証部と研究開発部だけが見ます。香料会社への依頼に、他社の香料や製品の配合量を書かないでください
- S3 の結果を暗号化する …
StartDocumentAnalysisに KMS の鍵を渡せば出力をその鍵で暗号化でき、渡さないときは SSE-S3 です。バケットの権限は品質保証部の処理に限ります - 照合表を安全性の評価の代わりにしない … 証明書は香料会社が出すもので、製品の安全性の評価と、IFRA の基準への適合の最終の判断は、自社の責任で行うことです。 この構成は、証明書の値と配合量を照らすだけです
- 表示の判定は候補にとどめる … 欧州の表示の基準は製品中の濃度で決まります。香料以外の原料からの分を足し、表示の担当が決めてください
- 移行の期限を一覧で追う … 欧州委員会のページでは、2026年7月31日より前に市場に出した化粧品は2028年7月31日まで流通できるとされています。どの製品がどちらの扱いかを、表示の担当と一覧で持っておきます
誤りのリスクは、上限を超える製品や表示の要る製品を見逃すことと、問題の無い製品を止めてしまうことの2つです。 どちらも空欄・単位・版の取り違えから起きるため、意味が決まらない値を照らさない決まりで防ぎます。
10まず何から始めるか
1週目:製品の区分の表を作る
製品ごとに、IFRA のカテゴリ、欧州向けか、洗い流すか塗ったままかを1つの表にまとめます。カテゴリは、香料会社の証明書に書かれる文字列と同じ書き方にそろえます。
2週目:10香料で試す
先月の10香料分を AWS Textract のコンソールで読ませます。カテゴリごとの上限が表で返るか、文字の値と単位が読めるかを最優先で見ます。
3週目:項目の対応表を作る
取引の多い香料会社から、カテゴリの書き方、文字の値の書き方、アレルゲンの一覧の単位を1行ずつまとめます。改定の版を書かない香料会社には、証明書に版を書いてもらうよう頼みます。
4週目:受付から転記の案までをつなぐ
S3 への保存を起点に読み取りを始め、% にそろえた値と版の一覧を書き出すところまで作ります。この時点では製品の照合をせず、値の取れ方だけを見ます。
2か月目: 配合量と上限の照合、製品中のアレルゲンの濃度の計算を足します。3か月目以降: 1件30分が何分になったかを実測します。needs_review が月に数件まで減り、証明書が届いた週のうちに処方と表示の見直しが決まるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 対応形式が JPEG・PNG・PDF・TIFF で XFA 形式の PDF は不可。同期は10MB・PDF 1ページまで、非同期は PDF 500MB・3,000ページまで。PDF はパスワード保護不可。対応言語が英・仏・独・伊・葡・西。問い(Queries)は英語の文書のみ。文字の高さの下限が15ピクセル(150 DPI で8ポイント相当) | AWS: Set Quotas in Amazon Textract | 2026-10-29 |
AnalyzeDocument がフォーム(KEY_VALUE_SET)・表(TABLE・CELL)・署名(SIGNATURE)・問い(QUERY・QUERY_RESULT)を返すこと。FeatureTypes の値。同期の処理で、非同期は StartDocumentAnalysis を使うこと | AWS: AnalyzeDocument | 2026-10-29 |
StartDocumentAnalysis が JobId を返し、完了の状態を SNS に知らせ、SUCCEEDED を確かめてから GetDocumentAnalysis で結果を取ること。同じ ClientRequestToken なら同じ JobId が返ること。JobId が7日間有効なこと。KMSKeyId を渡さないと SSE-S3 で暗号化されること | AWS: StartDocumentAnalysis | 2026-10-29 |
表のセルに COLUMN_HEADER などの EntityTypes が付き、表の下の注記が TABLE_FOOTER で返ること | AWS: Tables | 2026-10-29 |
問いの Pages を指定しないと ["1"] になること | AWS: Query | 2026-10-29 |
| 香料アレルゲンが、塗ったままの製品で0.001%、洗い流す製品で0.01%を超えるとき成分の一覧に表示すること。規則(EU) 2023/1545 で56のアレルゲンが個別の表示の対象に加わったこと。2026年7月31日から新しい決まりに合わない化粧品は市場に出せず、それより前に出したものは2028年7月31日まで流通できること | European Commission: Fragrance allergens labelling | 2026-10-29 |
| IFRA の基準が香料の原料の使い方を制限・禁止・規格で定め、会員が従うものであること。第51次の改定が2023年6月30日に通知され、新しい香料は2024年3月30日、既存の香料は2025年10月30日が期限とされたこと | IFRA(Mynewsdesk のプレスリリース): Update to the International Fragrance Association's Safe Use Program | 2026-10-29 |
IFRA の基準の本文、カテゴリの定義、適合証明書の様式は、IFRA の公式サイト(ifrafragrance.org)がこの記事を書く時点で取得できず、確かめていません。 カテゴリの定義と最大の使用濃度は、香料会社の証明書と IFRA の公式の文書で確かめてください。規則(EU) 2023/1545 の原文(EUR-Lex)も取得できず、欧州委員会の解説のページで確かめた範囲だけを書いています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-2233)についてのご相談はこちらから。
