Media > AI活用ユースケース > 品質管理 > 日本茶の輸出業者が海外の検査機関から届く英文の残留農薬の分析報告を読み取り、ロットごとの検査の台帳と輸出先の基準値との照合表を作る

日本茶の輸出業者が海外の検査機関から届く英文の残留農薬の分析報告を読み取り、ロットごとの検査の台帳と輸出先の基準値との照合表を作る

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

検査機関からロットごとに届く英文の残留農薬の分析報告を読み取り、検査の台帳に写します。輸出先ごとの基準値に照らし、出荷できるロット・基準値に近いロット・確かめられないロットを一覧にします。

サマリー
AIサービス
AWS Textract/Azure AI/Google Document AI
連携・自動化
Python
対象業界
商社/小売/製造
対象部門
品質管理/営業
対象業務
データ入力・転記/内容確認・チェック
主な課題
入力作業が多い/判断に時間がかかる/確認ミスが多い
AIで行う処理
読み取り(OCR)
主な効果
入力漏れ削減/判断支援/工数削減
導入難易度
★★★☆☆
実装レベル
半自動化
費用感
API連携(中)
人間の確認
必須
現在工数
21h/月
AI導入後
6h/月
想定削減
71%
年間削減
180h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. 品質管理の担当者が、メールで届いた分析報告のPDFをロットごとのフォルダに保存する
  2. 報告を開き、検出された成分と値を台帳に写す
  3. 値の単位を確かめ、mg/kg にそろえる
  4. 出荷の予定の輸出先ごとに、基準値の表で成分を1つずつ引き、値と比べる
  5. 検出されなかった成分のうち、輸出先の基準値が低いものの定量下限を付表で確かめる
  6. 基準値に近いロットや超えるロットを、営業部に振り分けの変更として知らせる
  7. 確かめられない成分があれば、検査機関に定量下限の低い分析を頼む
導入後(After)
  1. 人品質管理の担当者が分析報告のPDFを受付のフォルダに保存する(メールの自動振り分けでも可)
  2. 自動保存をきっかけに、形式・サイズ・パスワードの有無を確かめ、ファイル名から検査機関とロットを見分ける
  3. 自動AWS Textract の非同期の文書の解析で、報告の表・項目と値を読む
  4. 自動検査機関ごとの項目の対応表で、列の見出しと成分の名前を共通の名前に直す
  5. 自動値の単位を決めて mg/kg にそろえ、「n.d.」「<LOQ」を定量下限つきの「検出されず」に直す
  6. 自動出荷の予定の輸出先ごとに、基準値の表に照らして判定を出す
  7. 自動検出されなかった成分の定量下限が、輸出先の基準値より高いものに印を付ける
  8. 人品質管理の担当者が `ok` 以外のロットだけを開き、PDFの画像で値を確かめる
  9. 人営業部と、ロットの振り分けの変更を決める
  10. 人確かめられない成分があれば、検査機関に追加の分析を頼む
各工程の詳しい説明を読む
  1. 品質管理の担当者が、メールで届いた分析報告のPDFをロットごとのフォルダに保存する
  2. 報告を開き、検出された成分と値を台帳に写す
  3. 値の単位を確かめ、mg/kg にそろえる
  4. 出荷の予定の輸出先ごとに、基準値の表で成分を1つずつ引き、値と比べる
  5. 検出されなかった成分のうち、輸出先の基準値が低いものの定量下限を付表で確かめる
  6. 基準値に近いロットや超えるロットを、営業部に振り分けの変更として知らせる
  7. 確かめられない成分があれば、検査機関に定量下限の低い分析を頼む

(a)単位の取り違え。 「0.02」が mg/kg か µg/kg かで、値は1,000倍違います。表の見出しにだけ単位が書かれ、ページをまたぐと単位が見えない報告では、 2ページ目の値を写すときに取り違えます。

(b)検出されないことと、基準を満たすことの混同。 「n.d.」と書かれた成分も、定量下限が0.05 mg/kg なら、基準値が0.01 mg/kg の輸出先では満たしているかを言えません。 付表まで見る担当者と見ない担当者がいます。

(c)成分の名前の揺れ。 同じ成分が、検査機関ごとに綴りや異性体の書き方を変えて書かれます。基準値の表の成分の名前と一致しないと、表を引けません。

(d)輸出先ごとの見比べに時間がかかる。 1つの報告を4つの輸出先の表と見比べ、検出された10成分なら40回、表を引きます。 出荷の前に判断を出さないと、船の予約が間に合いません。

  1. 【人】 品質管理の担当者が分析報告のPDFを受付のフォルダに保存する(メールの自動振り分けでも可)
  2. 【自動】 保存をきっかけに、形式・サイズ・パスワードの有無を確かめ、ファイル名から検査機関とロットを見分ける
  3. 【自動】 AWS Textract の非同期の文書の解析で、報告の表・項目と値を読む
  4. 【自動】 検査機関ごとの項目の対応表で、列の見出しと成分の名前を共通の名前に直す
  5. 【自動】 値の単位を決めて mg/kg にそろえ、「n.d.」「<LOQ」を定量下限つきの「検出されず」に直す
  6. 【自動】 出荷の予定の輸出先ごとに、基準値の表に照らして判定を出す
  7. 【自動】 検出されなかった成分の定量下限が、輸出先の基準値より高いものに印を付ける
  8. 【人】 品質管理の担当者が ok 以外のロットだけを開き、PDFの画像で値を確かめる
  9. 【人】 営業部と、ロットの振り分けの変更を決める
  10. 【人】 確かめられない成分があれば、検査機関に追加の分析を頼む

5番目と7番目が、この設計の分かれ目です。 検出されなかった成分を0として扱いません。0として扱うと、定量下限が基準値より高い報告まで「満たしている」になります。

6番目で判定を規則の表に置いているのも、意図してのことです。 基準値は輸出先ごとに毎月変わりうるため、基準値が変わっても、直すのは表だけです。

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

構成図
残留農薬の分析報告(英文のPDF。数ページ。検出された成分の表と、全成分・定量下限の付表)
   │  品質管理の担当者が受付フォルダへ保存
   ▼【トリガー】Amazon S3 への保存
AWS Lambda
   ├──▶ 形式・サイズ・パスワードの確認、検査機関とロットの見分け
   ▼
AWS Textract(StartDocumentAnalysis。TABLES・FORMS)
   │   表のセルと列の見出し、項目と値、信頼度
   ▼
AWS Lambda(Python)
   │   ① 対応表で列の見出しと成分の名前を共通の名前に直す
   │   ② 単位を mg/kg にそろえ、検出されなかった値に定量下限を付ける
   │   ③ 輸出先ごとの基準値の表に照らす
   │   ④ 定量下限が基準値より高い成分に印を付ける
   ▼
ロット×輸出先ごとの判定(ok / near_limit / exceeds / cannot_confirm / needs_review)
   ▼
【人が ok 以外だけ確認】
   ├──▶ ロットごとの検査の台帳
   └──▶ 輸出先の基準値との照合表
役割想定する製品代替候補
OCRAWS Textract(StartDocumentAnalysis の TABLES・FORMS)Azure AI Document Intelligence、Google Document AI
差異計算成分の名前の対応、単位のそろえ、基準値との照合、定量下限の確かめ(Python。AWS Lambda で動かす)─
連携AWS Lambda(S3 への保存を起点に読み取りを始め、結果を一覧に書く)Amazon EventBridge
保管Amazon S3(報告と読み取りの結果)社内のファイルサーバー
通知Amazon SNS(読み取りの完了と要確認の知らせ)社内のチャット

検査の台帳と基準値の表は、新しく足すものではありません。 新しく作るのは、検査機関ごとの項目の対応表と、成分の名前の対応表の2つです。項目の対応表は、報告の列の見出しと共通の項目、値の単位がどこに書かれるか、検出されなかったことの書き方を検査機関ごとに並べた表です。成分の名前の対応表は、検査機関の綴りと、基準値の表の成分の名前を結ぶ表です。

報告は、AWS Textract の文書の解析で読みます。 成分ごとの行は表(TABLE・CELL)として返り、セルには列の見出し(COLUMN_HEADER)の印が付きます。ロット番号、試料を受け付けた日、分析した日のような項目と値の組は、フォーム(KEY_VALUE_SET)として返ります。

報告は複数ページなので、非同期の StartDocumentAnalysis で読みます。 同期の処理は PDF 1ページまでで、非同期なら PDF は500MB・3,000ページまでです。AWS Textract は日本語を読めません。 国内の検査機関の報告が日本語で届く場合は、英文の報告を頼むか、日本語を読める OCR の製品を使います。

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

Step1

処理の起点を決める

受付フォルダ(Amazon S3 のバケット)に分析報告のPDFが保存されたことを起点にします。 報告は、検査機関に試料を送ってから数日から2週間ほどで届きます。出荷の予定の前に判定を出せば、振り分けの変更と追加の分析の依頼が、船の予約に間に合います。

ファイル名の先頭に、検査機関の略号とロット番号を付けます。 検査機関が分かれば、項目の対応表を最初から正しく選べます。同じロットの再分析の報告は、版の番号を付けて区別します。

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

Step2

入力データを集める

データ中身取得元
分析報告報告番号、ロット番号、試料の名前、受け付けた日、分析した日、分析法、検出された成分の表(成分・値・単位・定量下限)、全成分と定量下限の付表、認定の範囲の印受付フォルダ
読み取り結果表のセルと列の見出し、項目と値、信頼度、ページの位置AWS Textract
出荷の予定の表ロット番号、商品(煎茶・抹茶など)、出荷の予定の輸出先営業部の表
基準値の表輸出先ごと・成分ごとの基準値、基準値の無い成分の扱い(一律の値など)、表を確かめた日品質管理部の表
項目の対応表検査機関ごとの列の見出し、単位の書かれる場所、検出されなかったことの書き方自社で整える表
成分の名前の対応表検査機関の綴りと、基準値の表の成分の名前自社で整える表

質を決めるのは、基準値の表の「基準値の無い成分の扱い」の列です。 EU では、基準値の表に載っていない農薬と作物の組み合わせには、原則として一律の0.01 mg/kg が当てられるとされています。表に無い成分を「基準なし=出せる」と読むと、いちばん厳しい値を見落とします。

基準値の表には、確かめた日を1列持たせます。 農林水産省の表は調査時点の値で、その後変わっていることがあると断られています。確かめた日が古い輸出先は、判定に印を付けます。

付表の定量下限は、検出されなかった成分の判定に欠かせません。 検出された成分の表だけを読むと、「検出されず」の確からしさが分かりません。

Step3

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

報告は数ページなので、非同期の StartDocumentAnalysis に S3 の場所を渡し、FeatureTypes に TABLES・FORMS を指定して読みます。 返った JobId を控え、完了の知らせが Amazon SNS に届き、状態が SUCCEEDED であることを確かめてから GetDocumentAnalysis で結果を取ります。

取るものどこから何に使うか
検出された成分の行TABLE の CELL成分・値・単位・定量下限
全成分と定量下限の付表付表の TABLE の CELL検出されなかった成分の定量下限
列の見出しEntityTypes が COLUMN_HEADER のセル列の対応と、ページごとの見出しの行を外す
表の題・表の下の注記TABLE_TITLE・TABLE_FOOTER単位や認定の範囲の注記を拾う
ロット番号・分析した日・分析法KEY_VALUE_SET台帳の行を決める

単位は、表の題や表の下の注記に書かれていることがあります。 「All results in mg/kg」のような注記は、表のセルではなく TABLE_TITLE や TABLE_FOOTER として返るため、表のセルだけを読むと単位が見つかりません。 対応表で、単位がどこに書かれるかを検査機関ごとに決めておきます。

ページをまたぐ表は、列の見出しで並べ直します。 付表は数ページにわたり、ページごとに見出しの行が繰り返されます。見出しの行を成分の行として数えないように、 見出しの印と対応表の文字で外します。

同じ ClientRequestToken で読み取りを始めれば、同じ JobId が返ります。 ファイル名から作った値を渡しておけば、再試行で同じファイルを二度読まずに済みます。JobId は7日間だけ有効なので、 結果は取った時点で S3 に残します。

Step4

AIへ渡す前に整形する

  1. 形式の確認 … JPEG・PNG・PDF・TIFF のいずれかであることを確かめます。XFA 形式の PDF は読めません
  2. パスワードの確認 … パスワードで保護された PDF は読めません。電子署名つきの報告で保護がかかっているときは、解除した版を頼みます
  3. 文字の大きさ … 文字の高さは15ピクセル(150 DPI で8ポイント相当)が下限です。数百成分を詰めた付表は、文字が小さくなりがちです
  4. 版の確認 … 同じロットの報告が2通あれば、新しい版の番号のものを使い、古い版との差を一覧に残します
  5. 出荷の予定の確認 … ロット番号で出荷の予定の表を引き、照らす輸出先を決めます。予定が無いロットは、すべての輸出先で照らします
  6. 基準値の表の日付の確認 … 照らす輸出先の基準値の表を確かめた日を見て、決めた日数より古ければ stale_mrl の印を付けます

6番目を省かないでください。 基準値は変わり、変わる前の表で「出せる」と判定したロットが、着いた先で基準を超えることがあります。

Step5

AIに処理させる

させるのは、報告から決まった項目の値を読み取り、列の見出し・表の注記・信頼度を添えることだけです。 単位のそろえ、成分の名前の対応、基準値との照合、定量下限の確かめは、読み取りの後に Python の規則が行います。

読み取る項目どこから読み取れないときの扱い
ロット番号・報告番号・分析した日フォーム空なら台帳の行を決められず needs_review
成分の名前表のセル対応表に無ければ unknown_analyte。似た名前に寄せない
値表のセル空なら missing。0とはみなさない
単位列の見出し、表の題、表の注記決まらなければ照らさない。needs_review
定量下限表のセル、付表空なら検出されなかった成分の判定をしない
させないこと理由
単位の推測mg/kg と µg/kg の取り違えは1,000倍の誤り
検出されなかった値を0とする扱い定量下限が基準値より高いと、満たしているかを言えない
成分の名前を似た名前に寄せる別の成分の基準値で判定してしまう
測定の不確かさを見込んだ判定当局の扱いで、出す側が当てにするものではない
輸出の可否の最終の判断輸出先の関係法規を確かめて人が決める

4行目は、とくに気をつけます。 ジェトロの資料では、EU の当局は違反として処分する前に測定の不確かさを考え、通常は測定値の±50%を当てるのが慣行と紹介されています。それは当局の扱いで、出す側の基準ではありません。 この構成は値をそのまま基準値と比べます。

Step6

指示内容を固定する

文書の解析そのものには指示を書く場所がありません。AWS Textract に渡すのは文書と解析の種類で、判定の指示にあたるものは読み取った後の規則として持ちます。 規則は次のとおりです。

【読み取った値の扱いの決まり】
1. 値が空の項目は missing とする。0 や前の行の値で埋めない。
2. 信頼度が決めた値を下回る値は unreadable とし、値は参考として残す。
3. 列の見出しは、その検査機関の項目の対応表だけで共通の項目
   (analyte, result, unit, loq, method)に直す。
4. 単位は、列の見出し、表の題、表の注記、対応表の順で探す。
   どれでも決まらなければ照らさず needs_review とする。
5. µg/kg は 1,000 で割って mg/kg にする。ppm は mg/kg、ppb は µg/kg とみなす。
   それ以外の単位は unit_unknown とする。
6. 「n.d.」「not detected」「<LOQ」「< 0.01」は not_detected とし、
   定量下限を付表から引いて残す。0 にしない。
7. 成分の名前は、成分の名前の対応表だけで基準値の表の名前に直す。
   表に無い名前は unknown_analyte とし、似た名前に寄せない。
8. 検出された成分は、輸出先ごとに基準値と比べる。
   値が基準値を超えれば exceeds、基準値の決めた割合以上なら near_limit。
9. 基準値の表に載っていない成分は、その輸出先の
   「基準値の無い成分の扱い」の値で比べる。扱いが空なら needs_review。
10. not_detected の成分で、定量下限が輸出先の基準値より高ければ
    cannot_confirm とする。
11. 測定の不確かさを差し引いて判定しない。

4番目と6番目が、この構成の罠です。 どちらも「たぶんこうだろう」で埋めたくなる箇所で、埋めた瞬間に、誤った値が輸出の判断まで通ります。 決まらない検査機関は、対応表に書き方を足せば次の報告から決まります。

9番目の「基準値の無い成分の扱い」を輸出先ごとに持つのは、 国・地域によって扱いが違うためです。一律の値を当てる輸出先と、別の考え方をとる輸出先があり、 自社の表に書いておかないと、規則が判定できません。

Step7

出力形式を固定する

次の形の JSON で一覧に書き出します。

{
  "lab_code": "LAB-DE-01",
  "report_no": "",
  "report_version": 1,
  "lot_no": "",
  "product": "matcha",
  "analysis_date": "2026-10-14",
  "results": [
    { "analyte_raw": "", "analyte": "", "result_raw": "0.02", "unit_raw": "mg/kg",
      "result_mgkg": 0.02, "detected": true, "loq_mgkg": 0.01,
      "confidence": 0, "page": 1 }
  ],
  "by_destination": [
    { "destination": "EU", "mrl_checked_on": "2026-10-01",
      "findings": [ { "analyte": "", "mrl_mgkg": 0.05, "status": "ok | near_limit | exceeds | cannot_confirm" } ],
      "result": "ok | near_limit | exceeds | cannot_confirm | needs_review" }
  ],
  "flags": ["stale_mrl", "unknown_analyte", "unit_unknown"]
}

1つ目の理由は、元の文字と直した値を並べて残せることです。 result_raw と unit_raw と result_mgkg が並んでいれば、どの単位をどう直したかを、画像を開く前に読めます。

2つ目は、輸出先ごとの判定を並べて持てることです。 by_destination を見れば、このロットをどの輸出先に回せて、どこに回せないかを一覧で決められます。

条件result(輸出先ごと)
検出された成分がすべて基準値の決めた割合未満で、cannot_confirm も無いok
基準値の決めた割合以上の成分があるnear_limit
基準値を超える成分があるexceeds
定量下限が基準値より高い成分があるcannot_confirm
unknown_analyte・unit_unknown・missing・unreadable・stale_mrl があるneeds_review

near_limit を置いているのは、基準値すれすれのロットを出さないためです。 茶葉の分析の値は、同じロットでも試料の取り方で動きます。割合は品質管理部が決め、 最初は基準値の半分などの保守的な値から始めます。

Step8

システムへ連携する

つなぎ先方式内容
受付フォルダAmazon S3 の保存のイベントLambda を起動する
AWS Textract非同期の API 呼び出し報告の表・項目の読み取り
Amazon SNS完了の知らせ状態を確かめて結果を取る
出荷の予定の表スプレッドシートの読み取り照らす輸出先
基準値の表・対応表スプレッドシートの読み取り基準値、成分の名前、単位の書き方
検査の台帳人が確かめた後の取り込みロットの行
照合表判定の書き出しロット×輸出先の判定

検査の台帳には自動で書き込みません。 単位を取り違えた値が台帳に入ると、茶園ごと・季節ごとの傾向を誤って読み、 次の年の農薬の使い方の相談まで狂います。基準値の表も読むだけで、変えるのは品質管理部です。

Step9

人が確認する

人が開くのは、どれかの輸出先で ok 以外のロットだけです。 すべての輸出先で ok のロットは一覧で流し見て台帳に取り込みます。全件を開く設計にすると、第10章の6.0時間には収まりません。

  1. needs_review を先に見る … 単位、成分の名前、基準値の表の日付を確かめます。決めた書き方は対応表に足します
  2. exceeds を確かめる … 値と単位を画像で確かめ、輸出先の関係法規で基準値を確かめ直します
  3. cannot_confirm を検査機関に相談する … 定量下限の低い分析を頼むか、その輸出先に回さないかを決めます
  4. near_limit を営業部と見る … 別の輸出先に回すか、再分析をするかを決めます

2番目は、仕組みでは置き換えられません。 基準値の表は自社で整えた写しで、輸出の判断の前に、輸出先の原典で確かめることが欠かせません。

目標は、45件をならして1件8分です。 それを超える月は、成分の名前の対応表か、基準値の表の日付が追いついていません。

Step10

例外に対処する

起きること対応
パスワードで保護された PDF読めない。解除した版を頼む
単位がどこにも書かれていないneeds_review。検査機関に確かめ、対応表に足す
成分の名前が対応表に無いunknown_analyte。似た名前に寄せない
付表が添付されていない検出されなかった成分の判定をせず、付表を頼む
定量下限が基準値より高いcannot_confirm。追加の分析か振り分けの変更
複数の成分の合計で基準値が決まっている規則で合計を出さず人へ。基準値の表に印を持つ
再分析で値が変わった新しい版で判定し、古い版との差を残す
基準値の表の日付が古いstale_mrl。輸出先の原典で確かめ直す
読み取りが失敗した、または JobId が切れた受付フォルダに残し、読み直す。処理済みへ移すのは成功時だけ

大半は AI の精度ではなく、報告の書き方の揺れと、対応表と基準値の表の整い方の問題です。

Step11

記録を残す

  • 元の分析報告と、受け取った日時・検査機関・ロット・版
  • AWS Textract が返した JSON の全文と JobId
  • ロット×輸出先ごとの判定と、そのとき参照した基準値の表と対応表の版
  • 人が値や判定を直した記録 … どの成分の、どの値を、どう読み直したか
  • 振り分けの変更と、追加の分析の依頼と結果
  • 検査機関ごとの needs_review の件数と、成分ごとの検出の推移

3つ目で「そのときの基準値の表」を残すのは、基準値が後から変わるためです。 出荷した後に基準値が改められても、出荷の時点で何に照らして出したかを示せます。

04実装レベルの3段階

最小構成:コンソールで報告を読み取り、スプレッドシートで台帳の値と並べる / 読み取りと、単位と定量下限の取れ方の確かめ
半自動化:上記+S3 への保存を起点に読み取り、単位のそろえ・成分の名前の対応・輸出先ごとの照合を照合表に書き出す / 読み取り・転記の案・照合
本格構成:上記+農林水産省の表の毎月の更新を取り込み、自社の基準値の表との差を品質管理部に知らせる / 基準値の表の追いかけ

最小構成では件数がさばけません。 1通ずつ読ませるので、月45通には使えません。確かめるための段階です。 半自動化で、1件28分が8分になり、この段階が本記事の想定です。 台帳への転記、単位のそろえ、輸出先ごとの照合は自動になり、人は ok 以外のロットだけを見ます。差が大きいのは、輸出先の数だけ基準値の表を引く作業がまるごとなくなるからです。 本格構成は、輸出先が多く、基準値の改定を追いかける手間が大きい場合に向きます。 農林水産省の表は品目ごとに Excel でも公開されているため、前月の表と並べて変わった成分を拾えます。ただし、取り込んだ値は写しの写しになるので、 判定に使う前に輸出先の原典で確かめる手順は残します。

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

前提値(モデル条件)
対象人数
2 名
月間件数
45 件
1件あたり現在時間
28 分
1件あたり導入後時間
8 分
現在  45件 × 28分 ÷ 60 = 21 時間/月
導入後 45件 × 8分 ÷ 60 = 6 時間/月
月間削減時間
15h
削減率
71%
年間削減時間
180h
年間金額換算(時間単価3,500円)
63万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

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

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

AI活用について相談する

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

向いている
  1. 緑茶・抹茶・ほうじ茶などを複数の国・地域へ輸出し、ロットごとに検査機関へ残留農薬の一斉分析を頼んでいる日本茶の輸出業者・茶の問屋・製茶会社。報告が英文で数ページにわたり、検出された成分を輸出先ごとの基準値と1つずつ見比べるのに手間がかかっている場合。同じロットを複数の輸出先に振り分けている場合。
向いていない
  1. 輸出先が1か国で、検査する成分が数成分に限られる場合。報告が日本語で届く場合(AWS Textract は日本語を読めません)。ロットが月に数件で、目で見ても負担にならない場合。なお、輸出の可否の最終の判断、輸出先の基準値そのものの確認、農薬の使い方の指導、食品の安全の保証は、この構成では行いません。

07最小構成で試す方法

  1. 先月の報告から10通を選ぶ(µg/kg で書かれたもの、付表の長いもの、検出された成分の多いものを必ず入れる)
  2. その10通について、当時台帳に写した値と、輸出先ごとの判定を書き出す
  3. AWS Textract のコンソールで、表・フォームの解析を1通ずつかける
  4. 返った値を台帳の値と並べ、成分の名前、値、単位、定量下限が取れているかを見る
  5. 取れなかった項目を並べ、項目の対応表と成分の名前の対応表の下書きを作る

10通は必ずやってください。 Lambda を組む前に、「単位が表のどこから取れるか」と「付表の定量下限が成分ごとに取れるか」を確かめます。

出てきた内容判断
成分の行が表のセルで返り、単位も見出しか注記から取れる対応表を作り、S3 と Lambda の連携に進む
単位が表の外の本文に書かれ、表の一部として返らない対応表に単位の書かれる場所を足す。構成は有効
付表が付かない検査機関が多い検査機関に付表を頼むのが先。 読み取りの問題ではない

3行目は珍しくありません。 失敗ではなく、「検出されず」の確からしさを、これまで確かめずに判定していたと分かったということです。

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

問題対策
µg/kg を mg/kg として読む単位が決まらなければ照らさない
「n.d.」を0として扱う定量下限を付けて残し、基準値と比べる
基準値の表に無い成分を「基準なし」と読む輸出先ごとの「基準値の無い成分の扱い」で比べる
単位が表の注記にあって見つからない表の題と注記も読み、対応表に場所を持つ
成分の名前の綴りの揺れで表を引けない成分の名前の対応表で直す。寄せない
古い基準値の表で判定する確かめた日を持ち、古ければ印を付ける

上の2行が、この構成の失敗のほとんどです。 どちらも値の意味の取り違えで、照合表の上では、出せるロットに見えます。

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

この構成で扱うデータ: 検査機関の名前、ロットごとの分析の値、出荷の予定の輸出先です。個人情報はほとんど含みませんが、どの茶園のどのロットから何が検出されたかは、取引先との信頼に関わる情報です。

  1. 分析の値を一覧の外に出さない … 照合表は品質管理部と営業部だけが見ます。取引先への説明に、他の取引先向けのロットの値を書かないでください
  2. 照合表を輸出の可否の決定としない … 農林水産省の表は調査時点の値で、輸出前に輸出先の関係法規を確かめるよう求められています。この構成の ok は、自社の表に照らした結果にすぎません
  3. 測定の不確かさを当てにしない … 当局が処分の前に不確かさを考える慣行は、出す側の基準ではありません。基準値すれすれのロットは near_limit として人が判断します
  4. 茶園への説明は品質管理部が行う … 検出の推移は、茶園と農薬の使い方を相談する材料になりますが、値だけを送らず、輸出先の基準とあわせて説明してください
  5. 基準値の表の写しの出どころを残す … 自社の表は、農林水産省の表と輸出先の原典から作った写しです。どの成分の値を、いつ、どの資料で確かめたかを表の中に残し、 担当者が替わっても確かめ直せるようにします
  6. S3 の結果の置き場所を限る … 報告と読み取りの結果を置くバケットの権限は、品質管理部の処理に限ります。StartDocumentAnalysis に KMS の鍵を渡せば出力をその鍵で暗号化でき、渡さないときは SSE-S3 です

誤りのリスクは、基準を満たさないロットを出してしまうことと、出せるロットを止めてしまうことの2つです。 どちらも単位と「検出されず」の取り違えから起きるため、意味が決まらない値を照らさない決まりで防ぎます。

10まず何から始めるか

1週目:基準値の表を機械で読める形にする

出荷の多い輸出先から、成分ごとの基準値、基準値の無い成分の扱い、確かめた日を1つの表にまとめます。農林水産省の茶の表を出発点にし、輸出先の原典で確かめた日を書きます。

2週目:10通で試す

先月の10通を AWS Textract のコンソールで読ませます。単位が表のどこから取れるか、付表の定量下限が成分ごとに取れるかを最優先で見ます。

3週目:対応表を作る

報告の多い検査機関から、列の見出し、単位の書かれる場所、検出されなかったことの書き方をまとめます。成分の名前の対応表は、先月検出された成分から作り始めます。

4週目:受付から転記の案までをつなぐ

S3 への保存を起点に読み取りを始め、mg/kg にそろえた値の一覧を書き出すところまで作ります。この時点では輸出先の照合をせず、値の取れ方だけを見ます。

2か月目: 輸出先ごとの照合と、定量下限の確かめを足します。3か月目以降: 1件28分が何分になったかを実測します。needs_review が月に数件まで減り、出荷の予定の前にロットの振り分けが決まるようになった時点で、この構成は完成です。


11関連ユースケース

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

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

技術仕様確認日:2026-10-29/最終更新:2026-10-29
確認した内容情報源確認日
対応形式が JPEG・PNG・PDF・TIFF で XFA 形式の PDF は不可。同期は10MB・PDF 1ページまで、非同期は PDF 500MB・3,000ページまで。PDF はパスワード保護不可。対応言語が英・仏・独・伊・葡・西。文字の高さの下限が15ピクセル(150 DPI で8ポイント相当)AWS: Set Quotas in Amazon Textract2026-10-29
AnalyzeDocument がフォーム(KEY_VALUE_SET)・表(TABLE・CELL)を返すこと。FeatureTypes の値。非同期は StartDocumentAnalysis を使うことAWS: AnalyzeDocument2026-10-29
StartDocumentAnalysis が JobId を返し、完了の状態を SNS に知らせ、SUCCEEDED を確かめてから GetDocumentAnalysis で結果を取ること。同じ ClientRequestToken なら同じ JobId が返ること。JobId が7日間有効なことAWS: StartDocumentAnalysis2026-10-29
表のセルに COLUMN_HEADER などの EntityTypes が付き、表の題と表の下の注記が TABLE_TITLE・TABLE_FOOTER で返ることAWS: Tables2026-10-29
輸出先と日本とで基準値が異なり、日本の基準値を満たしていても輸出できない場合があること。茶を含む15品目について、Codex と20か国・地域の基準値を比べた表を公開し、2026年9月1日時点の情報を掲載していること。前月比較の更新状況を公開していること。調査時点の値でその後変更されていることがあり、輸出前に輸出先の関係法規を確認するよう求めていること農林水産省: 諸外国における残留農薬基準値に関する情報2026-10-29
EU の基準値が規則(EC) No 396/2005 で定められ、付則 II・III に掲載のない農薬と作物の組み合わせには原則として一律基準(0.01 mg/kg)が当てられること。茶の品目コードが 0610000 であること。当局が処分の前に測定の不確かさを考えるのが慣行で、通常は測定値の±50%を当てると紹介されていること(2015年2月の資料)ジェトロ: EU における残留農薬に関する規制2026-10-29

輸出先の基準値と、基準値の無い成分の扱いは、輸出の前に輸出先の関係法規の原典で確かめてください。 本記事は上記の公開情報で確認できた範囲だけを扱っています。EU の規則の原文(EUR-Lex)と EU の基準値のデータベースは、この記事を書く時点で取得できず、確かめていません。ジェトロの資料は2015年のもので、その後の改正は反映されていません。

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

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

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

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