輸入する木材・農産品の英文の植物検疫証明書と燻蒸証明書を読み取り、処理の条件を台帳に転記して、インボイスとの食い違いと記載の欠けを拾う
輸入する木材・農産品に付く英文の植物検疫証明書と燻蒸証明書を読み取り、ロット・処理日・薬剤・処理条件を輸入台帳に転記します。インボイスと品名・数量を比べ、食い違いと記載の欠けを拾います。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 連携・自動化
- Python
- 対象業界
- 商社/小売/物流/製造
- 対象部門
- 品質管理/物流
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- 入力作業が多い/属人化している/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/品質標準化/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 共有受信箱に届いた植物検疫証明書、燻蒸証明書、インボイス、パッキングリストのPDFを、担当者が開く
- 植物検疫証明書の証明書番号、輸出者、荷受人、包装の数と種類、識別記号、原産地、品名と数量、学名、処理の欄を読む
- 燻蒸証明書の処理日、薬剤、投薬量、時間、温度、対象のコンテナやロットを読む
- インボイスとパッキングリストの品名、数量、梱包の数、ロット番号を読む
- 輸入台帳に転記し、品名・数量・ロット・処理の条件を見比べる
- 食い違いや欠けがあれば仕出人に確かめ、そろった書類を通関業者と申請の担当に渡す
- 自動共有受信箱に届いた書類のPDFが、受付フォルダ(Amazon S3)に保存される
- 自動保存をきっかけに処理が動き、形式・ページ数・パスワードの有無を確かめ、書類の種類を振り分ける
- 自動OCRが、全文・キーと値・表・質問への答え・署名の位置を、信頼度付きで返す
- 自動生成AIが、証明書の各欄と、インボイス・パッキングリストの品名・数量・梱包・ロットを原文のまま取り出す
- 自動プログラムが、ロットごとに書類を組にして輸入台帳に書き、品名・数量・包装・処理の条件を照らして印を付ける
- 人担当者が、全件の要点を一覧で確かめ、印の付いたものは画像で確かめて仕出人に問い合わせる
- 人担当者が、そろった書類を通関業者と申請の担当に渡す
各工程の詳しい説明を読む
- 共有受信箱に届いた植物検疫証明書、燻蒸証明書、インボイス、パッキングリストのPDFを、担当者が開く
- 植物検疫証明書の証明書番号、輸出者、荷受人、包装の数と種類、識別記号、原産地、品名と数量、学名、処理の欄を読む
- 燻蒸証明書の処理日、薬剤、投薬量、時間、温度、対象のコンテナやロットを読む
- インボイスとパッキングリストの品名、数量、梱包の数、ロット番号を読む
- 輸入台帳に転記し、品名・数量・ロット・処理の条件を見比べる
- 食い違いや欠けがあれば仕出人に確かめ、そろった書類を通関業者と申請の担当に渡す
(a)読み方が担当者ごとに違う。 どの欄を何と照らすかは、経験の長い担当者の頭の中にあります。同じ証明書でも、ある担当者は学名の欠けを拾い、別の担当者は拾いません。
(b)食い違いに申請の段で気づく。 植物検疫証明書の数量がインボイスと違う、包装の数がパッキングリストと違う。5番目の見比べが急ぎの日に省かれ、申請の準備で初めて分かります。 仕出人への確認は時差をはさむので、1往復で1日かかります。
(c)日付が読めない。 03/04/2026 のような書き方は、3月4日とも4月3日とも読めます。処理日と船積日の前後を確かめたいのに、日付そのものが決まりません。
- 【自動】 共有受信箱に届いた書類のPDFが、受付フォルダ(Amazon S3)に保存される
- 【自動】 保存をきっかけに処理が動き、形式・ページ数・パスワードの有無を確かめ、書類の種類を振り分ける
- 【自動】 OCRが、全文・キーと値・表・質問への答え・署名の位置を、信頼度付きで返す
- 【自動】 生成AIが、証明書の各欄と、インボイス・パッキングリストの品名・数量・梱包・ロットを原文のまま取り出す
- 【自動】 プログラムが、ロットごとに書類を組にして輸入台帳に書き、品名・数量・包装・処理の条件を照らして印を付ける
- 【人】 担当者が、全件の要点を一覧で確かめ、印の付いたものは画像で確かめて仕出人に問い合わせる
- 【人】 担当者が、そろった書類を通関業者と申請の担当に渡す
6番目で全件を人が見るのは、植物検疫の書類だからです。 輸入検査では証明書が添付されているかが確かめられるため、印の無いものも、一覧で欄の埋まり方と照合の結果を確かめます。 印の付いたものだけ、画像を開いて詳しく見ます。
5番目の照合をAIにさせないのも意図してのことです。 数量の単位の換算、受入条件の表との比較、日付の前後は、規則で決まる処理として Python に置きます。
02今回想定するシステム構成
英文の植物検疫証明書・燻蒸証明書・インボイス・パッキングリスト(PDF) ▼【トリガー】受付フォルダ(Amazon S3)への保存 AWS Lambda ── 形式・ページ数・パスワードの確認、書類の振り分け ▼ AWS Textract(StartDocumentAnalysis:FORMS/TABLES/QUERIES/SIGNATURES) │ 全文、キーと値、表、質問への答え、署名の位置、信頼度、手書きか印字か ▼ Claude API ── 各欄を原文のまま取り出す │ ① 証明書番号と発行機関 ② 輸出者と荷受人 ③ 包装の数と識別記号 │ ④ 品名・数量・学名 ⑤ 処理の欄 ⑥ 燻蒸証明書の処理の条件 ▼ Python ── ロットごとに組にし、台帳に書き、インボイスと受入条件の表に照らす ▼ 台帳(ok / quantity_mismatch / treatment_mismatch / field_missing / 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(書類、読み取り結果、照合の結果) | 社内のファイルサーバー |
輸入台帳と受入条件の一覧は、新しく足すものではありません。 最初の準備は、品目と輸出国ごとに、仕出人に求める燻蒸の条件をプログラムが読める表にすることです。薬剤、投薬量とその単位、時間、温度の下限を1行ずつ持たせます。
OCRに AWS Textract を選ぶのは、証明書が英文だからです。 公式の上限の表で、対応言語は英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語とされ、手書きは英語のみです。 輸出国の言語と英語を併記した証明書は、英語の部分だけを照合に使います。
この題材で効くのは、署名の検出(SIGNATURES)です。 文書の分析の FeatureTypes に指定でき、署名の位置と信頼度が返ります。署名が本物かどうかは分かりませんが、署名の欄が空のまま届いた証明書を拾えます。 公印のスタンプは検出の対象にならないので、人が画像で見ます。
照合する項目は、国際基準の書式に沿って決めます。 植物検疫証明書の国際基準(ISPM 12)は、証明書のモデルの欄として、輸出者、荷受人、包装の数と種類、識別記号、原産地、輸送手段、品名と数量、学名、そして処理の欄(日付、処理、薬剤(有効成分)、時間と温度、濃度)を示しています。矛盾した情報や不整合な情報を含む証明書は無効とされる例にも挙げられており、インボイスとの照合はこの点を申請の前に確かめるためのものです。
03どうやって実装するのか
処理の起点を決める
起点は、受付フォルダ(Amazon S3)にPDFが保存されたことです。 共有受信箱のルールで、登録した仕出人とフォワーダーのアドレスから届いたメールの添付をS3へ転送します。保存の通知で AWS Lambda が動き、読み取りから台帳への記録までを済ませます。
植物検疫証明書とインボイスは別々に届くことがあります。 先に届いた書類で台帳の行を作り、組になる相手が来るまで照合を「待ち」にします。 相手が届いた時点で照合をやり直します。
毎朝8時にも1回動かします。 入港が3日以内なのに植物検疫証明書が届いていないロットと、needs_human のまま残っているロットを一覧にして担当者に送ります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 植物検疫証明書 | PDF。証明書番号、発行機関、輸出者、荷受人、包装の数と種類、識別記号、原産地、輸送手段、入国地点、品名と数量、学名、追加記載、処理の欄、署名と日付 | 受付フォルダ(Amazon S3) |
| 燻蒸証明書 | PDF。証明書番号、燻蒸業者、処理日、薬剤、投薬量、時間、温度、対象のコンテナ・ロット | 受付フォルダ(Amazon S3) |
| インボイス・パッキングリスト | PDF。品名、数量と単位、梱包の数、ロット番号、コンテナ番号、船積日 | 受付フォルダ(Amazon S3) |
| 読み取り結果 | 全文、キーと値、表、質問への答え、署名の位置、信頼度と手書きか印字かの別 | AWS Textract |
| 受入条件の表 | 品目と輸出国ごとの燻蒸の条件(薬剤、投薬量と単位、時間、温度の下限) | 受入条件の一覧を表にしたもの |
| 輸入台帳 | ロット番号、仕出人、品目、入港予定日、申請の状態 | 品質管理部のスプレッドシート |
質を決めるのは、受入条件の表です。 燻蒸の条件は品目と輸出国の組で違い、表に無い組は照合せずに人に回します。
データの取得方法を決める
読み取りは StartDocumentAnalysis にS3の場所と FeatureTypes を渡して始めます。完了は NotificationChannel に指定した Amazon SNS のトピックに通知され、状態が SUCCEEDED なら GetDocumentAnalysis で結果を取ります。
| 指定するもの | 値 | 理由 |
|---|---|---|
FeatureTypes | FORMS、TABLES、QUERIES、SIGNATURES | 欄のキーと値、品名の表、名前で受け取りたい項目、署名の有無 |
QueriesConfig | 質問の文と Alias の組 | 処理の欄の値を項目名で受け取る |
ClientRequestToken | ファイルのハッシュ | 同じ書類で二重に読み取りを始めない |
JobTag | 書類の種類と仕出人の識別子 | 完了の通知から書類の種類を引く |
Alias | 質問の文 |
|---|---|
CERT_NO | What is the certificate number? |
PACKAGES | What is the number and description of packages? |
MARKS | What are the distinguishing marks? |
PRODUCE_QTY | What is the name of produce and quantity declared? |
BOTANICAL | What is the botanical name of plants? |
TREAT_DATE | What is the date of treatment? |
CHEMICAL | What chemical or active ingredient was used? |
DURATION_TEMP | What are the duration and temperature of the treatment? |
CONCENTRATION | What is the concentration or dosage? |
質問は英語の文書でしか使えず、1ページあたり非同期で30個までです。 答えが見つからなければ空のまま返るので、空の項目は全文から欄の見出しの語を探し、それでも無ければ missing にします。
手書きの欄は TextType が HANDWRITING として返ります。 植物検疫証明書は処理の欄や数量を手書きで埋めたものがあり、手書きの値は印字の値より確認の優先度を上げて一覧に出します。
結果は1回最大1,000ブロックで区切られ、NextToken が返る限り呼び直します。受入条件の表と輸入台帳は Python が読み、生成AIには渡しません。
AIへ渡す前に整形する
- 形式の確認 … JPEG、PNG、PDF、TIFF であることを確かめます
- パスワードの確認 … PDFはパスワードで保護されていてはいけないとされています。保護されたものは送り元に解除したものを頼みます
- サイズとページ数の確認 … 非同期の処理で、PDFとTIFFは500MB・3,000ページまでです
- 書類の振り分け … 1ページ目の見出しの語(
Phytosanitary Certificate、Fumigation Certificate、Commercial Invoice、Packing List)で振り分けます - 言語の確認 … 6言語に入らない書類は読み取りに回さず、担当者が目で見る一覧に入れます
- 文字の大きさの確認 … 検出できる文字の高さは15ピクセル以上で、150DPIで8ポイントに当たるとされています。スタンプが重なった小さな文字は、高い解像度でスキャンし直してもらいます
4番目で「Re-export」の語も見ます。 再輸出の植物検疫証明書は書式が違い、元の証明書の写しが付くことがあるので、1つのPDFに2通の証明書が入ります。 ページごとに分けて読みます。
AIに処理させる
させるのは、証明書の各欄を原文のまま取り出し、値が何を表すかを書き出すことです。 照合と判定はさせません。
| 見るもの | 取り出し方 | 判断できないときの扱い |
|---|---|---|
| 証明書番号と発行機関 | 原文のまま | 書かれていなければ missing |
| 輸出者と荷受人 | 名称と住所を原文のまま | 読めなければ unreadable |
| 包装の数と種類 | 数と種類(bags、cartons、containers など)を分けて | 種類が無ければ数だけ |
| 識別記号 | ロット番号やコンテナ番号を配列で | 書かれていなければ missing |
| 品名と数量 | 品名、数量、単位を分けて原文のまま | 単位が無ければ unit_unknown |
| 学名 | 原文のまま | 書かれていなければ missing |
| 処理の欄 | 日付、処理、薬剤、時間と温度、濃度を欄ごとに | 欄が空なら blank、欄ごと無ければ missing |
| 燻蒸証明書 | 処理日、薬剤、投薬量と単位、時間、温度、対象 | 単位が無ければ unit_unknown |
処理の欄の「空欄」と「欄が無い」を分けるのが、いちばん大事な区別です。 処理をしていない貨物では処理の欄は空で当然で、燻蒸を求める品目でだけ、空欄が欠けになります。 どちらかを決めるのはAIではなく、受入条件の表を引く Python です。
| させないこと | 理由 |
|---|---|
| 証明書が有効かどうかの判断 | 植物防疫官が判断する |
| 燻蒸の条件を満たすかの判断 | 受入条件の表で Python が照らす |
| 日付の日と月の補完 | 順序が決まらない日付を推して決めると、前後の確認が誤る |
| 植物検疫証明書の空欄を、燻蒸証明書の値で埋めること | どちらの書類に書かれた値かが消える |
| 学名の補完 | 品名から推して書くと、欠けが見えなくなる |
4行目がいちばん起きやすい失敗です。 2通を一緒に渡すと、空の処理の欄を燻蒸証明書の値で埋めて返し、植物検疫証明書の欠けが消えます。 書類は1通ずつ渡します。
指示内容を固定する
あなたは輸入商社の品質管理部で、英文の植物検疫証明書と
燻蒸証明書の記載を記録する担当です。
OCRの読み取り結果だけを使ってください。推測で埋めないでください。
渡すのは1通の書類だけです。他の書類の値で埋めないでください。
【植物検疫証明書から取り出す項目】
cert_no、issuing_org_raw、exporter_raw、consignee_raw、
packages_count、packages_kind_raw、marks(配列)、origin_raw、
conveyance_raw、entry_point_raw、
produce(配列:name_raw、quantity、unit_raw)、botanical_raw、
additional_declaration_raw、
treatment(date_raw、date、treatment_raw、chemical_raw、
duration_temp_raw、concentration_raw)、
signature_detected、handwritten_fields(配列)
【燻蒸証明書から取り出す項目】
cert_no、fumigator_raw、date_raw、date、chemical_raw、
dosage、dosage_unit_raw、duration_raw、temperature_raw、
targets(配列:コンテナ番号やロット番号)
【status の選び方】
- ok ............. 値が読み取れており、その欄として解釈できる
- blank .......... 欄はあるが空
- missing ........ 欄そのものが見当たらない
- unreadable ..... 文字は検出されているが値として確定できない
- ambiguous ...... 候補が複数ある、または日付の順序が決まらない
- unit_unknown ... 数量や投薬量の単位が決まらない
【厳守事項】
- 欄が空なら blank、欄が無ければ missing にしてください。
他の欄や他の書類の値で埋めないでください。
- 日付は、月が英語の名前で書かれているか、文面から日と月の順序が
確定できるときだけ YYYY-MM-DD で date に入れてください。
決まらなければ date を空にし、ambiguous にしてください。
- 数量・投薬量は数値と単位を分けてください。単位を換算しないでください。
- 学名は書かれたとおりに入れてください。品名から補わないでください。
- 証明書が有効か、条件を満たすか、検査に通るかを書かないでください。
- 植物検疫証明書・燻蒸証明書でない書類と判断した場合は、
項目を取り出さず document_type に種類を書いてください。
【書類の種類】{document_type_hint}
【読み取り結果】{textract_result}
「1通の書類だけ」と「他の書類の値で埋めない」を両方書かないと、埋めます。 同じロットの書類だと分かると、欠けた欄を補おうとします。
出力形式を固定する
Claude API の構造化出力(output_config.format に json_schema を指定)で、書類ごとに次の形のJSONを受け取ります。
{
"file": "",
"document_type": "phytosanitary_certificate",
"cert_no": "",
"packages_count": 20,
"packages_kind_raw": "BUNDLES",
"marks": ["LOT 2610-07", "ABCU1234567"],
"produce": [
{ "name_raw": "SAWN TIMBER", "quantity": 48.6, "unit_raw": "M3" }
],
"botanical_raw": "",
"treatment": {
"date_raw": "03/10/2026", "date": "",
"treatment_raw": "FUMIGATION", "chemical_raw": "",
"duration_temp_raw": "", "concentration_raw": ""
},
"signature_detected": true,
"items": [
{ "item": "treatment.date", "status": "ambiguous", "confidence": 0, "source": "" }
]
}
1つ目の理由は、照合をプログラムの側に置けることです。 Python がロット番号とコンテナ番号で書類を組にし、インボイスと受入条件の表に照らして印を付けます。
| 印 | 付ける条件 |
|---|---|
ok | 品名・数量・包装の数がインボイスとパッキングリストに合い、処理の条件が受入条件を満たす |
quantity_mismatch | 数量(単位が同じもの)または包装の数が、インボイス・パッキングリストと違う |
treatment_mismatch | 植物検疫証明書の処理の欄と燻蒸証明書の値が違う、または受入条件に届かない |
field_missing | 学名、識別記号、署名などが missing か blank、または燻蒸を求める品目で処理の欄が空 |
needs_human | ambiguous、unreadable、unit_unknown がある、表に品目の組が無い、または書類でない |
2つ目は、日付の前後を規則で確かめられることです。 処理日と船積日がともに確定したときだけ前後を比べ、処理日が船積日より後なら needs_human にします。 輸送中に始める処理もありうるので、食い違いとは決めつけません。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受付フォルダ(Amazon S3) | 保存の通知 | 書類の保存を検知して AWS Lambda を動かす |
| AWS Textract | API呼び出し(非同期) | 読み取りを始め、完了の通知で結果を取る |
| Claude API | API呼び出し | 各欄の取り出し |
| 輸入台帳 | 読み取りと書き込み | ロットの行に値を書き、照合の印を付ける |
| 受入条件の表 | 読み取り | 品目と輸出国ごとの燻蒸の条件を引く |
| 通知 | メール | 毎朝の未着・要確認の一覧を担当者に送る |
植物防疫所への申請と、通関業者への受け渡しは、この構成からは行いません。 書類がそろったロットを申請の担当に回すのは担当者です。
人が確認する
担当者は全件を一覧で確かめます。 human_check を「必須」としているのはこのためです。一覧には、ロットごとに欄の埋まり方、照合の結果、手書きの欄、署名の有無を1行で出します。
field_missingとtreatment_mismatchを最初に片付ける … 証明書の再発行が要るかを仕出人に確かめます。再発行は輸出国の機関の手続きなので、時間がかかりますquantity_mismatchの単位を確かめる … 数量の単位が書類ごとに違うだけなら、台帳に注記して解決にしますneeds_humanの値を画像で確定させる … 日付の順序、手書きの数字、スタンプの重なった文字を確かめます- 印の無いものを一覧で流し見る … 手書きの欄があるものだけ、画像を開きます
例外に対処する
| 起きること | 対応 |
|---|---|
| パスワードで保護されたPDF | 読めない。送り元に解除したものを頼む |
| 6言語に入らない証明書 | 読み取りに回さず、担当者が目で見る |
| 再輸出の証明書に元の証明書の写しが付く | ページで分け、両方を記録する |
| 日と月の順序が決まらない | ambiguous。仕出人の書き方と画像で人が確定する |
| 数量の単位が書類ごとに違う | 換算せずに needs_human。人が同じ数量かを確かめる |
| 受入条件の表に品目と輸出国の組が無い | 照合せずに needs_human。条件を確かめて表に足す |
| 署名の欄が空 | field_missing。仕出人に確かめる |
ジョブが FAILED または PARTIAL_SUCCESS | StatusMessage と Warnings のページ番号を記録し、そのページを人へ |
上から4行目と5行目が、誤った問い合わせのほとんどを生みます。 どちらも値を推して決めると誤るもので、人が画像で確定する設計を崩さないでください。
記録を残す
- 元の書類と、受け取った日時、送り元、メールの件名
- AWS Textract が返したJSONの全文と、使った質問の一覧
- Claude API が返したJSON(原文と解釈の両方)
- 照合の結果と、そのとき参照した受入条件の表の版
- 担当者が印を覆した記録と、仕出人への問い合わせの回答
- 再発行された証明書と、元の証明書との対応
最後の行は、同じ仕出人の欠けの傾向を見る材料になります。 同じ欄の欠けが続く仕出人には、書類の作り方そのものを確かめてもらいます。
04実装レベルの3段階
本記事の想定は半自動化です。 読み取りと転記と照合が自動になり、担当者は全件を一覧で確かめて印の付いたものを問い合わせます。1件15分が4分になるのはこの段階です。 本格構成で足すのは、書類を前もってそろえる仕組みです。 植物防疫所は輸出国と植物の組ごとの条件を公開しており、その条件を受入条件の表に反映させ、発注の段で仕出人に必要な記載を伝えます。
05工数削減シミュレーション
導入後 180件 × 4分 ÷ 60 = 12 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 製材・丸太などの木材や、豆類・穀類・ナッツ・生鮮の農産品を海外から毎月輸入する商社・メーカー・小売と、その輸入業務を受託する物流会社。輸出国の政府機関が出す英文の植物検疫証明書と、燻蒸業者が出す英文の燻蒸証明書がPDFで届き、品質管理や輸入業務の担当者が目で読んで台帳に写している場合。証明書とインボイスの品名・数量の食い違いや記載の欠けに、植物防疫所への申請の段で気づくことがある場合。
- 植物検疫の対象となる貨物の輸入が月に数件の企業。証明書が英語以外(中国語・ロシア語・日本語など)で届くことが多い場合(この構成のOCRは英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語しか読めず、手書きは英語のみです)。輸出国の電子植物検疫証明書を植物防疫所との間でやり取りしており、PDFを読む工程が無い場合。なお、証明書が有効かどうか、輸入検査に合格するかどうかは植物防疫官が判断するもので、この構成では代替できません。
07最小構成で試す方法
- 先月の輸入ロットから30件を選ぶ(燻蒸証明書が付くもの、日付が
03/10/2026のような書き方のもの、手書きの欄があるもの、再輸出の証明書を必ず入れる) - 手元の生成AIの画面に証明書を1通ずつ貼り付け、「この植物検疫証明書の包装の数と種類、識別記号、品名と数量、学名、処理の欄(日付、処理、薬剤、時間と温度、濃度)を、書かれたとおりに表にしてください。空欄は『空欄』、欄が無ければ『欄なし』とし、他の書類から補わないでください。日付の日と月が決まらなければ『不確定』としてください」と指示する
- 出てきた表を、インボイスと当時の台帳の値と見比べる
30件は必ずやってください。 仕組みを組む前に、空欄と欄なしの区別、日付の扱い、他の書類からの補完を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 各欄を原文どおりに取り出し、空欄と欄なしを分けた | OCRのAPIと照合の処理に進む |
| 処理の欄を燻蒸証明書の値で埋めた | 1通ずつ渡し、補完を禁じる。直るまで先に進まない |
| 手書きの数字を読み誤った | 手書きの欄を人に回す。構成は有効 |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 植物検疫証明書の空欄を燻蒸証明書の値で埋める | 書類は1通ずつ渡し、他の書類からの補完を禁じる |
| 空欄と欄なしが混ざる | blank と missing を分け、欠けかどうかは受入条件の表で決める |
| 日と月の順序を推して決める | 月が名前で書かれたときだけ確定し、それ以外は人へ |
| 数量の単位を換算して比べる | 単位が同じときだけ比べ、違えば人へ |
| 手書きの数字を読み誤る | HANDWRITING の欄を一覧で目立たせ、画像で確かめる |
| 再輸出の証明書で2通を1通として読む | ページで分け、両方を記録する |
| 受入条件の表に無い品目を照合する | 照合せずに人へ回し、表に足す |
| 証明書の有効性まで判定しようとする | 判定は植物防疫官のもの。 出すのは事実と照合の結果まで |
上の2行が、この構成の失敗のほとんどです。 どちらも欠けが見えなくなる誤りで、欠けを拾うための仕組みが、欠けを埋めてしまいます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 輸出者と荷受人の名称と住所、品名、数量、ロット番号、コンテナ番号、処理の条件です。個人の情報はほとんど含みませんが、仕入先と仕入の数量は外に出せない情報です。
- 外部へ渡す範囲を、読み取りに必要なものに限る … 生成AIに渡すのは証明書の読み取り結果だけです。受入条件の表、輸入台帳、他の仕出人の情報は渡しません
- 有効性の判断を出さない … 一覧に「有効」「合格見込み」といった語を出しません。照合の結果と欠けの事実だけを出します
- 仕出人への連絡を自動で送らない … 再発行の依頼は担当者が行います
- 証明書の画像を書き換えない … 照合のために画像を加工しても、元のPDFは手を加えずに保管します
誤りが起きた場合のリスクは、欠けを見落としたまま申請に進み、輸入検査の段で書類の不備が分かることです。 多くは他の書類からの補完と、推して決めた日付から起きるので、原文を残し、推さない設計を崩さないでください。
10まず何から始めるか
1週目:受入条件を表にする
品目と輸出国の組ごとに、求める燻蒸の条件(薬剤、投薬量と単位、時間、温度の下限)を表にします。件数の多い上位10の組から始めます。 分からない組は、植物防疫所が公開する輸入条件を確かめます。
2週目:30件で試す
先月の輸入ロットから30件を選び、手元の生成AIの画面で各欄を表にさせます。空欄と欄なしを分けられるか、日付を推さないか、他の書類で埋めないかを最優先で見ます。
3週目:書類の振り分けを作る
受付フォルダに入ったPDFを証明書の種類とインボイス・パッキングリストに分け、再輸出の証明書をページで分割するところまで作ります。
4週目:受付フォルダから台帳までをつなぐ
S3、Lambda、Textract、Claude API、Python の照合をつなぎ、台帳に値と印を書くところまで作ります。この時点では、件数の多い3か国の仕出人だけを対象にします。
2か月目: 対象を全仕出人に広げ、field_missing と treatment_mismatch の件数を毎週数えて受入条件の表を直します。3か月目以降: 1件15分が何分になったかを実測します。申請の段で初めて分かる食い違いが無くなり、どの担当者でも同じ一覧で判断できるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 植物検疫の対象となるものを輸入した者は植物防疫所に届け出て検査を受けること。検査は、輸出国の政府機関による検査証明書(植物検疫証明書)又はその写しが添付されているか、輸入禁止品か、検疫有害動植物があるかについて行うこと。不合格の場合に消毒・廃棄・返送が命じられること | 植物防疫所: 輸入検査について | 2026-10-08 |
| 輸入申告で、植物防疫法などの関税関係法令以外の法令による許可・承認が必要な貨物では、他法令の許可・承認証が必要とされること | 税関: カスタムスアンサー 1107 輸入申告の際に必要な書類 | 2026-10-08 |
| 植物検疫証明書のモデルの欄(輸出者、荷受人、包装の数と種類、識別記号、原産地、輸送手段、入国地点、品名と数量、学名、追加記載)。処理の欄が日付、処理、薬剤(有効成分)、時間と温度、濃度、追加情報からなり、日付は月を省略せずに書くとされること。不完全・矛盾・不整合な情報を含む証明書や判読できない証明書が無効の例とされること(2022年採択) | IPPC: ISPM 12 Phytosanitary certificates | 2026-10-08 |
| 対応する形式がJPEG、PNG、PDF、TIFFであること。非同期はPDFとTIFFで500MB・3,000ページであること。PDFはパスワードで保護できないこと。対応言語が英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語であること。質問の検出は英語の文書だけで、非同期で1ページ30個までであること。手書きは英語のみであること。検出できる文字の高さが15ピクセル以上(150DPIで8ポイント)であること | AWS: Set Quotas in Amazon Textract | 2026-10-08 |
StartDocumentAnalysis の FeatureTypes(TABLES/FORMS/QUERIES/SIGNATURES/LAYOUT)、QueriesConfig、ClientRequestToken、JobTag、NotificationChannel で Amazon SNS に完了を通知すること | AWS: StartDocumentAnalysis | 2026-10-08 |
GetDocumentAnalysis がキーと値・表とセル・質問と答えのブロックを返し、答えのブロックが信頼度を持つこと。JobStatus(SUCCEEDED/FAILED/PARTIAL_SUCCESS ほか)、MaxResults(最大1,000)と NextToken、StatusMessage、Warnings | AWS: GetDocumentAnalysis | 2026-10-08 |
ブロックの種類に SIGNATURE(署名の位置と信頼度)があること。TextType が HANDWRITING か PRINTED を返すこと。信頼度が0〜100であること | AWS: Block | 2026-10-08 |
構造化出力を output_config.format に json_schema を指定して受け取れること | Claude Docs: Structured outputs | 2026-10-08 |
どの品目にどの証明書と処理が求められるかは、植物防疫所が公開する輸入条件で品目と輸出国ごとに確かめてください。 本記事は公開資料で確認できた範囲だけを扱っており、証明書の有効性や輸入検査の結果の判断は植物防疫官が行います。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0947)についてのご相談はこちらから。
