海外の原料メーカーから毎月届く英文の分析証明書(CoA)を読み取り、受入規格と照合して規格外と記載漏れを受入検査の担当へ返す
海外の原料メーカーから入荷のたびに届く英文の分析証明書(CoA)を読み取り、ロット・試験項目・実測値を自社の受入規格と照合します。規格外の値と、規格で求めている試験項目の記載漏れを、受入検査の担当へ返します。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 連携・自動化
- Python
- 対象業界
- 商社/製造
- 対象部門
- 品質管理/購買
- 対象業務
- 内容確認・チェック/比較検討
- 主な課題
- 入力作業が多い/属人化している/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/品質標準化/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 分析証明書のPDFを受け取り、品目とロット番号でフォルダに保存する
- 受入規格の表から、その品目の試験項目と規格値を開く
- 分析証明書の試験項目を1行ずつ読み、自社の項目に対応付ける
- 実測値を受入検査の記録に写し、規格値と見比べる
- 自社の規格で求めている項目が分析証明書に無いかを確かめる
- ロット番号、製造日、使用期限が発注・入荷予定と合っているかを見る
- 規格外や記載漏れがあれば、受入検査の担当と購買へ連絡する
- 人分析証明書のPDFを受付フォルダに保存する(メールの添付から自動で入れてもよい)
- 自動保存をきっかけに処理が動き、形式・ページ数・パスワードの有無を確かめる
- 自動OCRが分析証明書の表、見出しのキーと値、質問への答え、信頼度を返す
- 自動品目・ロット・製造日・使用期限を取り出し、試験項目を自社の項目に対応付ける
- 自動実測値を「不等号・数値・単位・定性の結果」に分けて持つ
- 自動プログラムが自社の受入規格と比べ、項目ごとに結果を付ける。規格にあって証明書に無い項目を拾う
- 自動発注・入荷予定のロット番号と照らす
- 人品質管理の担当者が、規格外・記載漏れ・判断できない項目だけを証明書の画像と見比べる
- 人受入検査の担当と購買へ結果を返し、必要なら仕入先へ照会する
各工程の詳しい説明を読む
- 分析証明書のPDFを受け取り、品目とロット番号でフォルダに保存する
- 受入規格の表から、その品目の試験項目と規格値を開く
- 分析証明書の試験項目を1行ずつ読み、自社の項目に対応付ける
- 実測値を受入検査の記録に写し、規格値と見比べる
- 自社の規格で求めている項目が分析証明書に無いかを確かめる
- ロット番号、製造日、使用期限が発注・入荷予定と合っているかを見る
- 規格外や記載漏れがあれば、受入検査の担当と購買へ連絡する
(a)Conforms を見て安心してしまう。 分析証明書の結果欄に Conforms や Complies とあると、規格値と比べずに通すことがあります。仕入先の規格が Total Plate Count ≤ 100,000 cfu/g で、自社の規格が ≤ 10,000 cfu/g なら、実測値30,000は仕入先では合格、自社では規格外です。
(b)項目名の対応付けが担当者の頭の中にある。 Loss on Drying は水分、Yeasts and Moulds は酵母・カビ、Enterobacteriaceae は腸内細菌科菌群。この対応を覚えているのは担当者3名のうち2名で、表にはなっていません。
(c)書かれていない項目を見落とす。 自社の規格に重金属の項目があるのに、分析証明書に無い。書かれている行を順に見ていく作業では、書かれていない行に気づきにくいのです。
(d)値の形が混ざる。 <10、ND、Absent in 25g、Not detected。どれも「検出されない」に近い意味ですが、検出限界が自社の規格値より高ければ、規格に合っているとは言えません。
- 【人】 分析証明書のPDFを受付フォルダに保存する(メールの添付から自動で入れてもよい)
- 【自動】 保存をきっかけに処理が動き、形式・ページ数・パスワードの有無を確かめる
- 【自動】 OCRが分析証明書の表、見出しのキーと値、質問への答え、信頼度を返す
- 【自動】 品目・ロット・製造日・使用期限を取り出し、試験項目を自社の項目に対応付ける
- 【自動】 実測値を「不等号・数値・単位・定性の結果」に分けて持つ
- 【自動】 プログラムが自社の受入規格と比べ、項目ごとに結果を付ける。規格にあって証明書に無い項目を拾う
- 【自動】 発注・入荷予定のロット番号と照らす
- 【人】 品質管理の担当者が、規格外・記載漏れ・判断できない項目だけを証明書の画像と見比べる
- 【人】 受入検査の担当と購買へ結果を返し、必要なら仕入先へ照会する
8番目が、この設計の分かれ目です。 担当者は200通すべての全行を見るのではなく、印の付いた項目だけを画像と見比べます。 印の無い行は、根拠の文字列と並べた一覧で流し見ます。
6番目の比較をAIにさせないのも、意図してのことです。 規格値は品目ごとに表で持っている数字で、比べ方は決まっています。AIには値の形をそろえるところまでをさせ、比べるのはプログラムです。
02今回想定するシステム構成
英文の分析証明書(PDF。仕入先のサイトまたは輸入商社のメール) ▼【トリガー】受付フォルダ(Amazon S3)への保存 AWS Lambda ── 形式・ページ数・サイズ・パスワードの確認 ▼ AWS Textract(StartDocumentAnalysis:TABLES/FORMS/QUERIES) │ 試験項目の表(セル・列見出し)、見出しのキーと値、質問への答え、信頼度 ▼ Claude API ── 試験項目を自社の項目に対応付け、値の形をそろえる │ ① 品目とロット ② 試験項目の対応付け ③ 不等号・数値・単位・定性の分解 ▼ Python ── 受入規格の表と比べ、記載漏れとロットの食い違いを拾う ▼ 判定(in_spec / out_of_spec / missing_item / unit_mismatch / needs_human) ▼ 【品質管理の担当者が印の付いた項目を確認】 ├──▶ 受入検査の担当と購買へ連絡 └──▶ 仕入先への照会(英文の下書き)
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | AWS Textract(StartDocumentAnalysis/GetDocumentAnalysis) | Azure AI Document Intelligence、Google Document AI |
| 生成AI | Claude API(試験項目の対応付け、値の分解、照会文の下書き) | OpenAI API、Gemini API |
| 差異計算 | Python(受入規格との比較、記載漏れとロットの照合) | 品質管理の仕組みの判定の機能 |
| 連携 | AWS Lambda(保存と完了の通知を起点に処理を動かす) | Amazon EventBridge |
| 保管 | Amazon S3(分析証明書、読み取り結果、照合の結果) | 社内のファイルサーバー |
受入規格の表と品目マスタは、新しく足すものではありません。 最初の準備は、試験項目の別名の一覧(Loss on Drying → 水分 など)を作ることと、受入規格の表に単位と「定性で可か」の列を足すことです。
OCRに AWS Textract を選ぶのは、分析証明書が英文だからです。 公式の上限の表で、対応言語は英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語とされ、日本語は読めません。 欧州の仕入先のフランス語やドイツ語の証明書も読めますが、手書きの文字が読めるのは英語だけです。
この題材で効くのは、表の読み取り(TABLES)です。 表はセルごとに行と列の番号と信頼度付きで返り、セルには列見出し(COLUMN_HEADER)や表題、脚注といった種類が付きます。Test Item、Specification、Result、Method の列見出しを手がかりに、どの列が実測値かを決められます。
見出しの品目名・ロット番号・日付は FORMS と QUERIES で取ります。 質問は英語の文書でしか使えないので、フランス語やドイツ語の証明書では質問を外し、キーと値と全文で読みます。 同期の処理はPDF1ページまでなので、数ページの証明書に合わせて非同期で読みます。
03どうやって実装するのか
処理の起点を決める
受付フォルダ(Amazon S3)に分析証明書が保存されたことを起点にします。 輸入商社からのメールの添付を受付フォルダに入れる仕組みを置き、仕入先のサイトから取ったPDFも同じフォルダに入れます。保存の通知で AWS Lambda が動きます。
入荷の前に処理を終えておきます。 分析証明書は入荷の数日前に届くことが多いので、届いた時点で照合し、規格外や記載漏れがあれば入荷前に仕入先へ照会できるようにします。入荷してから気づくと、原料が倉庫で止まります。
入荷の時点で証明書が届いていないロットも拾います。 発注・入荷予定のデータと照らし、入荷予定日の3日前になっても証明書が無いロットを、毎朝一覧にして購買へ返します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 分析証明書 | PDF。品目、ロット、製造日、使用期限、試験項目の表、署名 | 受付フォルダ(Amazon S3) |
| 読み取り結果 | 表とセル、列見出し、キーと値、質問への答え、それぞれの信頼度 | AWS Textract |
| 受入規格の表 | 品目ごとの試験項目、下限・上限、単位、定性で可か、必須か | 品質管理部のスプレッドシート |
| 試験項目の別名の一覧 | 英語の項目名の書き方と、自社の項目コードの対応 | 品質管理部で用意する一覧 |
| 発注・入荷予定 | 品目、仕入先、ロット番号(分かれば)、入荷予定日 | 購買の発注データ |
質を決めるのは、試験項目の別名の一覧です。 一覧が薄いと、AIは近い名前の項目に対応付けようとし、Total Plate Count と Aerobic Plate Count は同じでも、Coliforms と E. coli は別物です。 一覧にある対応だけを使わせ、無いものは unmapped として人に見せます。
データの取得方法を決める
読み取りは StartDocumentAnalysis にS3の場所と FeatureTypes を渡して始めます。完了は NotificationChannel に指定した Amazon SNS のトピックに通知され、状態が SUCCEEDED なら GetDocumentAnalysis で結果を取ります。
| 指定するもの | 値 | 理由 |
|---|---|---|
FeatureTypes | TABLES、FORMS、QUERIES(英語のとき) | 試験項目の表、見出しの品目とロット |
QueriesConfig | 質問の文と Alias の組 | ロットや日付を項目名で受け取る |
ClientRequestToken | 品目コードとファイルのハッシュ | 同じ証明書で二重に読み取りを始めない |
JobTag | 品目コード | 完了の通知から品目を引く |
Alias | 質問の文 |
|---|---|
PRODUCT_NAME | What is the product name? |
LOT_NO | What is the lot or batch number? |
MFG_DATE | What is the manufacturing date? |
EXPIRY_DATE | What is the expiry or retest date? |
ISSUE_DATE | What is the date of this certificate? |
APPROVED_BY | Who approved this certificate? |
試験項目の表は、セルの行と列の番号で組み立て直します。 列見出しの付いたセルから、Specification の列と Result の列を決め、行ごとに「項目名・仕入先の規格・実測値・試験方法」の4つ組にします。 結合セルで項目名が複数の行にまたがる表もあるので、結合セルの関係もたどります。
質問の答えが見つからなければ空のまま返ります。 ロット番号が空なら、表の上の全文から Batch Lot を含む行を探し、それでも無ければ missing にします。
結果は1回最大1,000ブロックで区切られます。NextToken が返る限り呼び直し、後半のページの表が抜けないようにします。
AIへ渡す前に整形する
- 形式の確認 … JPEG、PNG、PDF、TIFF であることを確かめます
- パスワードの確認 … PDFはパスワードで保護されていてはいけないとされています。保護されたものは仕入先に解除を頼みます
- サイズとページ数の確認 … 非同期の処理で、PDFとTIFFは500MB・3,000ページまでです
- スキャンの解像度の確認 … 文字の高さは最小15ピクセルで、150 DPIで8ポイントの文字に相当します。微生物の単位の上付きの数字(10³)は小さく、下回りやすい箇所です
- 1通に複数のロットがないかの確認 … ロットごとに列が並ぶ証明書は、列ごとに分けて扱います
- 品目の特定 … ファイル名か輸入商社のメールの件名から品目コードを引き、受入規格の表を選びます
4番目は、仕入先にPDFの元データで送ってもらうのがいちばん確実です。 スキャンした紙ではなく、作成元のPDFなら文字の大きさの問題はほとんど起きません。
AIに処理させる
させるのは、表の各行を自社の試験項目に対応付け、実測値を「不等号・数値・単位・定性の結果」に分けて書き出すことです。 規格との比較はさせません。
| 見るもの | 取り出し方 | 判断できないときの扱い |
|---|---|---|
| 品目・ロット・日付 | 原文のまま。日付は順序が決まるときだけ解釈 | 03/04/2026 のように順序が決まらなければ ambiguous |
| 試験項目 | 別名の一覧で自社の項目コードに対応付ける | 一覧に無ければ unmapped |
| 実測値 | 不等号(< ≤ >)、数値、単位、定性の結果に分ける | 読めなければ unreadable |
| 定性の結果 | Negative、ND、Absent、Conforms を区別して残す | 数値が無く Conforms だけなら qualitative_only |
| 試験方法 | 原文のまま | 書かれていなければ空 |
<10 は「10未満」で、10ではありません。 不等号を落とすと、上限10の規格で「10=上限ちょうど」と読み違えます。ND と Negative も、検出限界が書かれていれば添えます。 検出限界が自社の規格値より高いなら、プログラムが needs_human にします。
Conforms だけの行は、記載漏れの一種として扱います。 数値が無いので自社の規格で比べ直せません。受入規格の表で「定性で可」とした項目以外は、仕入先に実測値を求める対象にします。
| させないこと | 理由 |
|---|---|
| 自社の規格との比較、合否の判断 | 規格値の比較はプログラム。受入の判定は品質管理の責任者 |
単位の換算(ppm ↔ mg/kg、% ↔ ppm) | 換算の可否は品質管理部が決める。換算の表で Python が行う |
| 不等号を落とした数値化 | 上限ちょうどと読み違える |
| 仕入先の規格欄の値を実測値として扱うこと | 規格と結果の列を取り違えると、全行が合格に見える |
| 別名の一覧に無い項目の推測による対応付け | 近い名前の別の項目に付く |
4行目がいちばん起きやすい失敗です。 列見出しが無い表や、規格と結果が1つのセルに ≤ 0.5% / 0.21% と書かれた表で、規格の値を実測値として取り出すと、どの行も規格ちょうどの値になり、全部が合格に見えます。
指示内容を固定する
あなたは食品メーカーの品質管理部で、海外の原料メーカーの分析証明書(CoA)を
自社の試験項目にそろえる担当です。
OCRの読み取り結果だけを使ってください。推測で埋めないでください。
【取り出す項目】
header:product_name、lot_no、mfg_date、expiry_date、issue_date、approved_by
tests:表の各行について、次を入れてください。
item_raw(原文の項目名)、item_code(別名の一覧で対応する自社の項目コード)、
supplier_spec_raw(仕入先の規格欄の文字列)、result_raw(結果欄の文字列)、
operator(< / <= / > / >= / = / none)、value(数値)、unit、
qualitative(negative / not_detected / absent / conforms / none)、
detection_limit、method_raw、status、source(表の行と列の番号)
【対応付けの規則】
- item_code は、別名の一覧に完全に一致するか、一覧に書かれた別名と一致するときだけ入れてください。
- 一覧に無い項目名は item_code を空にし、status を unmapped にしてください。
似た名前の項目に対応付けないでください。
【値の扱い】
- result_raw は結果欄の文字列をそのまま入れてください。
- 仕入先の規格欄の値を value に入れないでください。規格欄と結果欄の
区別がつかない行は status を ambiguous にしてください。
- 不等号を落とさないでください。"<10" は operator "<"、value 10 です。
- 単位を換算しないでください。書かれた単位をそのまま unit に入れてください。
- 結果欄が Conforms / Complies だけで数値が無い行は、
qualitative を conforms、value を空、status を qualitative_only にしてください。
【厳守事項】
- 規格に合っているか、受け入れてよいかを書かないでください。
- 読めない数値を補わないでください。status を unreadable にしてください。
- 日付は書かれた文字列を残し、日と月の順序が決まらないものは ambiguous にしてください。
- 1通に複数のロットがある場合は、ロットごとに tests を分けてください。
【読み取り結果】{textract_tables_and_forms}
【試験項目の別名の一覧】{item_alias_list}
「似た名前の項目に対応付けない」を明記しないと、対応付けます。 Coliforms を一覧の E. coli に寄せる、Lead を Heavy Metals (as Pb) に寄せる。どちらも別の試験で、寄せた瞬間に「重金属の記載漏れ」が見えなくなります。
出力形式を固定する
Claude API の構造化出力(output_config.format に json_schema を指定)で、次の形のJSONを受け取ります。
{
"file": "",
"item_code": "",
"header": { "product_name": "", "lot_no": "", "mfg_date_raw": "", "expiry_date_raw": "", "status": "" },
"lots": [
{
"lot_no": "",
"tests": [
{ "item_raw": "Loss on Drying", "item_code": "MOIST", "supplier_spec_raw": "<= 8.0%",
"result_raw": "6.2%", "operator": "=", "value": 6.2, "unit": "%",
"qualitative": "none", "detection_limit": "", "status": "ok", "source": "T1:R5" }
]
}
],
"inquiry_draft": ""
}
1つ目の理由は、比較をプログラムの側に置けることです。 Python が受入規格の表と tests を突き合わせ、自社の項目ごとに結果を付けます。
| 結果 | 付ける条件 |
|---|---|
in_spec | 単位が規格と同じで、不等号と数値が自社の下限・上限に収まる |
out_of_spec | 自社の下限・上限を外れる。仕入先の規格では合格でも付く |
missing_item | 自社の規格で必須の項目が tests に無い |
qualitative_only | 数値が無く、自社の規格で定性を認めていない |
unit_mismatch | 単位が違い、換算の表に無い |
needs_human | unmapped、ambiguous、unreadable、検出限界が規格値より高い |
2つ目は、missing_item を出せることです。 受入規格の表が「この品目で必須の項目」を持っているので、tests に無い項目を表の側から数えられます。 書かれている行だけを見ていた目視では、ここが拾えませんでした。
3つ目は、source で根拠をたどれることです。 T1:R5 なら1つ目の表の5行目で、担当者は画像のその行だけを見れば済みます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受付フォルダ(Amazon S3) | 保存の通知 | 証明書の保存を検知して AWS Lambda を動かす |
| AWS Textract | API呼び出し(非同期) | 読み取りを始め、完了の通知で結果を取る |
| Claude API | API呼び出し | 試験項目の対応付け、値の分解、照会文の下書き |
| 受入規格の表 | 読み取り | 品目ごとの試験項目、規格値、単位を引く |
| 発注・入荷予定 | 読み取り | ロットと入荷予定日を照らす |
| 受入検査の記録 | 書き込み(照合結果の欄) | 項目ごとの結果と根拠を書く |
受入検査の記録には「照合結果」の欄にだけ書き込みます。 受入の判定の欄は、品質管理の責任者が記入します。受入規格の表にも書き込みません。 規格値を変えるのは品質管理部の手続きです。
人が確認する
品質管理の担当者が開くのは、out_of_spec、missing_item、qualitative_only、unit_mismatch、needs_human の付いた項目です。 in_spec の行は一覧で流し見ます。
out_of_specの根拠を確かめる … 画像の該当の行で、実測値の列を正しく読んでいるかを見ます。規格の列を読んでいないかを最初に確かめますmissing_itemとqualitative_onlyをまとめる … 仕入先に実測値を求める項目として、照会文の下書きに入れますneeds_humanを片付ける …unmappedは別名の一覧に足すかを決め、検出限界の問題は責任者に上げます- 受入検査の担当と購買へ返す … 項目ごとの結果と照会の状況を渡します
1番目を省かないでください。 規格外と出た値が、実は規格の列の値だった、という誤りはこの確認で拾えます。逆向きの誤り(規格外の値を合格と読む)は、照合の規則と列見出しの扱いで防ぎます。
例外に対処する
| 起きること | 対応 |
|---|---|
| パスワードで保護されたPDF | 読めない。仕入先に解除を頼む |
| 6言語に入らない証明書(中国語など) | 読み取りに回さず、担当者が目で見る |
| フランス語・ドイツ語の証明書 | 質問を外し、表とキーと値と全文で読む |
| 列見出しの無い表 | 列の役割が決まらないので、全行を ambiguous にして人へ |
| 1通に複数のロット | ロットごとに分ける。分けられなければ needs_human |
ジョブが FAILED または PARTIAL_SUCCESS | StatusMessage と Warnings のページ番号を記録し、そのページを人へ |
| ロット番号が入荷予定と合わない | 照合を止め、購買へ確かめる |
| 入荷予定日の3日前に証明書が無い | 毎朝の一覧で購買へ返す |
上から4行目が、仕入先を1社足すたびに出ます。 一度担当者が列の役割を決めたら、その仕入先の書式として列の位置を記録し、次から使います。
記録を残す
- 元の分析証明書と、受け取った日時、仕入先、品目コード
- AWS Textract が返したJSONの全文と、使った質問の一覧
- Claude API が返したJSON(
testsの全行) - Python の照合の結果と、そのとき使った受入規格の表の版
- 担当者が結果を覆した記録 … どの項目を、どちらに変えたか
- 仕入先への照会と回答、再発行された証明書との対応
受入規格の版を残すのは、規格値が改定されるためです。 改定の前後で同じ値の判定が変わり、当時の版が残っていないと、過去の受入の根拠を説明できません。
04実装レベルの3段階
本記事の想定は半自動化です。 読み取りと照合が自動になり、担当者は印の付いた項目を確かめて連絡します。1件18分が6分になるのはこの段階です。 本格構成で足すのは、仕入先の側の管理です。 規格外や記載漏れが多い仕入先を集計し、購買が仕入先の評価の場で示す材料にします。 段階を飛ばさないでください。 半自動化を2〜3か月回すと、unmapped の多い仕入先と、qualitative_only を繰り返す仕入先が先に分かります。そこに書式の相談をしてから本格構成に進むほうが、照会の往復が減ります。
05工数削減シミュレーション
導入後 200件 × 6分 ÷ 60 = 20 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 食品・化粧品・健康食品・化学品などのメーカーで、海外の原料メーカーや輸入商社から英文の分析証明書(Certificate of Analysis)が入荷のたびに届き、品質管理の担当者が受入規格の表と目で見比べている場合。原料の品目が数十から数百あり、品目ごとに試験項目と規格値が違う場合。仕入先の書式がばらばらで、同じ試験項目の書き方が仕入先ごとに違う場合。原料を輸入して国内のメーカーへ卸す商社が、納品前に分析証明書を点検している場合。
- 分析証明書が中国語・韓国語・日本語で届く場合(この構成のOCRは英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語しか読めず、手書きは英語のみです)。鋼材のミルシートが中心の場合(UC-0385 の構成が向きます)。原料の品目が数点で、入荷も月に数回の場合。なお、受入の可否の判定、規格外品の扱い、仕入先への是正の要求は品質管理の責任者が行うもので、この構成では代替できません。自社で行う受入検査を省くものでもありません。
07最小構成で試す方法
- 先月の分析証明書から20通を選ぶ(
Conformsだけの行があるもの、<10やNDがあるもの、仕入先の規格が自社より緩いものを必ず入れる) - 手元の生成AIの画面に1通ずつ貼り付け、「試験項目ごとに、項目名・仕入先の規格・結果を分けて表にしてください。結果は不等号と単位を落とさずに書き、数値が無いものは『数値なし』としてください。規格に合っているかは書かないでください」と指示する
- 出てきた表を、受入規格の表と手で見比べる
- 当時の受入検査の記録と突き合わせる
20通は必ずやってください。 仕組みを組む前に、規格の列と結果の列を取り違えないかを確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 結果の列を正しく取り出した | OCRのAPIと照合の処理に進む |
| 規格の値を結果として取り出した | 列見出しの扱いを指示で直す。直るまで先に進まない |
| 不等号を落とした | 指示の書き方で直る。構成は有効 |
2行目が出たら、その証明書の表に列見出しがあるかを見てください。 列見出しが無い表や、規格と結果が1つのセルにまとまった表で起きやすい誤りです。仕入先ごとにどの書式で届くかを、この20通で数えておくと、第7章の例外処理の件数が見積もれます。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 規格の列の値を実測値として取り出す | 列見出しで列の役割を決め、決まらない表は ambiguous |
証明書の Conforms を写して合格とする | 実測値を自社の規格で比べ直す。数値が無ければ qualitative_only |
| 不等号を落として上限ちょうどと読む | 不等号を別の項目に分けて持つ |
| 近い名前の別の試験に対応付ける | 別名の一覧にある対応だけを使わせ、無いものは unmapped |
| 単位が違うものを比べる | 換算の表にある組み合わせだけ Python が換算し、無ければ unit_mismatch |
ND の検出限界が規格値より高い | 検出限界を添え、規格値より高ければ人へ |
| 書かれていない項目に気づかない | 受入規格の表の側から必須の項目を数える |
| 仕入先ごとに表の書式が違う | 担当者が一度決めた列の役割を書式として記録する |
| 中国語の証明書を読ませて失敗する | 6言語以外は読み取りに回さない |
| パスワード付きのPDFで止まる | 仕入先に解除したものを頼む |
上の2行が、この構成の失敗のほとんどです。 どちらも「証明書が合格と言っているものを、そのまま合格にする」誤りです。自社の規格で比べ直すという一点を、列の扱いと照合の規則で守ります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 原料の品目名、仕入先、ロット番号、試験の結果、そして自社の受入規格の値です。個人の情報はほとんど含みません。
- 受入規格の値を外部へ出しすぎない … 自社の規格値は配合や品質の考え方が表れる情報です。生成AIには規格値を渡さず、比較は社内の Python で行います
- 受入の可否を判定させない … この構成が出すのは項目ごとの照合の結果までで、受入の判定と規格外品の扱いは品質管理の責任者が決めます
- 自社の受入検査を省かない … 分析証明書は仕入先の検査の結果です。この構成は証明書の点検を速くするもので、自社で行う検査の代わりではありません
- 照会を自動で送らない … 仕入先への照会は下書きまでで、購買か品質管理の担当者が送ります
- 規格の改定を手続きどおりに反映する … 受入規格の表を書き換える権限を限り、版を残します
誤りが起きた場合のリスクは、規格外の原料を受け入れてしまうことです。 多くは証明書の結論や規格の列をそのまま信じることから起きるので、実測値を取り出して自社の規格で比べ直す設計を崩さないでください。
10まず何から始めるか
1週目:試験項目の別名の一覧を作る
入荷の多い上位30品目について、証明書に出てくる試験項目の書き方を集め、自社の項目コードに対応付けます。担当者の頭の中にある対応を、表に出す作業です。
2週目:20通で試す
先月の証明書から20通を選び、手元の生成AIの画面で試験項目の表を作らせます。規格の列と結果の列を取り違えないか、不等号を落とさないかを最優先で見ます。
3週目:受入規格の表を整える
上位30品目の規格に、単位、「定性で可か」、必須かの列をそろえます。単位の換算を認める組み合わせも、ここで決めます。
4週目:受付フォルダから照合までをつなぐ
S3、Lambda、Textract、Claude API、Python の照合をつなぎ、受入検査の記録の照合結果の欄に書き出すところまで作ります。この時点では上位30品目だけを対象にします。
2か月目: 対象を全品目に広げ、unmapped と needs_human の件数を毎週数えて別名の一覧を育てます。3か月目以降: 照会文の下書きと証明書の未着の一覧を足し、1件18分が何分になったかを実測します。担当者が替わっても、同じ証明書から同じ規格外と記載漏れが拾われる状態になった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 対応する形式がJPEG、PNG、PDF、TIFFであること。同期はPDF1ページ・10MB、非同期はPDFとTIFFで500MB・3,000ページであること。PDFはパスワードで保護できないこと。対応言語が英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語で、質問の検出は英語の文書だけであること。手書きは英語のみであること。文字の最小の高さが15ピクセル(150 DPIで8ポイント相当)であること | AWS: Set Quotas in Amazon Textract | 2026-10-07 |
StartDocumentAnalysis の FeatureTypes(TABLES/FORMS/QUERIES ほか)、QueriesConfig、ClientRequestToken、JobTag、NotificationChannel で Amazon SNS に完了を通知すること | AWS: StartDocumentAnalysis | 2026-10-07 |
GetDocumentAnalysis の JobStatus(SUCCEEDED/FAILED/PARTIAL_SUCCESS ほか)、MaxResults(最大1,000)と NextToken、StatusMessage、Warnings | AWS: GetDocumentAnalysis | 2026-10-07 |
| 表がセル、結合セル、表題、脚注のブロックで返り、セルが行・列の番号と信頼度を持ち、列見出し(COLUMN_HEADER)などの種類が付くこと | AWS: Tables | 2026-10-07 |
| 質問の応答が QUERY と QUERY_RESULT のブロックで返り、別名(Alias)と信頼度を持つこと。答えが見つからなければ空のまま返ること | AWS: Queries | 2026-10-07 |
構造化出力を output_config.format に json_schema を指定して受け取れること | Claude Docs: Structured outputs | 2026-10-07 |
受入の判定、規格外品の扱い、仕入先への是正の要求は、品質管理の責任者が行うものです。 本記事は分析証明書の読み取りと受入規格との照合までを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0676)についてのご相談はこちらから。
