荷主から届く英文の危険物申告書(DGD)を読み取り、UN番号・等級・包装等級・数量を受託前の点検表に写して、記載漏れと予約との食い違いを拾う
荷主から届く英文の危険物申告書を読み取り、UN番号・分類・包装等級・数量を受託前の点検表に写します。予約の台帳と比べて、記載漏れと食い違いを貨物の搬入より前に拾います。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 連携・自動化
- Python
- 対象業界
- 商社/物流/製造
- 対象部門
- 物流
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- 人手が足りない/入力作業が多い/確認ミスが多い
- AIで行う処理
- 抽出
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 共有受信箱に届いたDGDのPDFを、担当者が開く
- DGDから航空貨物運送状番号、荷送人と荷受人、発地と目的地、航空機の種類の欄を読む
- 品目の欄から、UN番号、正式輸送品目名、分類、副次危険性、包装等級、包装物の個数と種類、数量と単位、包装基準、特別規定を読む
- 受託の点検表に、読んだ値と書類の項目の「YES/NO/N/A」を書き込む
- 予約の台帳を開き、航空貨物運送状番号、個数、予約したUN番号、予約した航空機の種類と見比べる
- 記載漏れや食い違いがあれば、荷主に訂正を頼む連絡を書く
- 貨物が搬入されたら、包装物・マーク・ラベルを点検し、点検表の後半を埋めて受託を決める
- 自動共有受信箱に届いたDGDのPDFや画像が、受付フォルダ(Amazon S3)に保存される
- 自動保存をきっかけに処理が動き、形式・サイズ・パスワードの有無を確かめ、PDFを1ページずつに分ける
- 自動OCRが、ページごとに全文・キーと値・表・質問への答えを信頼度付きで返す
- 自動生成AIが、運送状番号・発地と目的地・品目の行ごとのUN番号・品名・分類・包装等級・数量・包装基準を、原文のまま取り出す
- 自動プログラムが、予約の台帳と自社の受託実績の品目の一覧を引き、食い違いに印を付ける
- 自動プログラムが、点検表の書類の項目に下書きを書く。現物の点検の項目は空欄のままにする
- 人資格を持つ担当者が、下書きと原本の画像を並べて確かめ、「YES/NO/N/A」を自分で付ける
- 人担当者が、記載漏れと食い違いについて荷主に訂正を頼む
- 人貨物が搬入されたら、包装物・マーク・ラベルを点検し、受託を決める
各工程の詳しい説明を読む
- 共有受信箱に届いたDGDのPDFを、担当者が開く
- DGDから航空貨物運送状番号、荷送人と荷受人、発地と目的地、航空機の種類の欄を読む
- 品目の欄から、UN番号、正式輸送品目名、分類、副次危険性、包装等級、包装物の個数と種類、数量と単位、包装基準、特別規定を読む
- 受託の点検表に、読んだ値と書類の項目の「YES/NO/N/A」を書き込む
- 予約の台帳を開き、航空貨物運送状番号、個数、予約したUN番号、予約した航空機の種類と見比べる
- 記載漏れや食い違いがあれば、荷主に訂正を頼む連絡を書く
- 貨物が搬入されたら、包装物・マーク・ラベルを点検し、点検表の後半を埋めて受託を決める
(a)資格者の時間が転記に取られる。 2番目から4番目は、DGDに書かれた値を点検表に写す作業です。判断の要らない転記に、資格を持つ担当者の時間が毎日使われています。 その分、搬入された貨物の点検が夕方に寄ります。
(b)記載漏れに搬入の後で気づく。 搬入の前に書類の点検が終わらないと、荷主への訂正の依頼は貨物が上屋に入ってからになります。 訂正のDGDが届くまで貨物は止まり、予約した便に間に合わないことがあります。
(c)予約と申告書の食い違いを見落とす。 予約では旅客機で受けていたのに、DGDでは「Cargo Aircraft Only」が残っている。予約のUN番号と、DGDのUN番号が1桁違う。DGDだけを見ていると、どちらも書類としては整って見えます。 予約の台帳と並べたときに初めて分かる食い違いです。
- 【自動】 共有受信箱に届いたDGDのPDFや画像が、受付フォルダ(Amazon S3)に保存される
- 【自動】 保存をきっかけに処理が動き、形式・サイズ・パスワードの有無を確かめ、PDFを1ページずつに分ける
- 【自動】 OCRが、ページごとに全文・キーと値・表・質問への答えを信頼度付きで返す
- 【自動】 生成AIが、運送状番号・発地と目的地・品目の行ごとのUN番号・品名・分類・包装等級・数量・包装基準を、原文のまま取り出す
- 【自動】 プログラムが、予約の台帳と自社の受託実績の品目の一覧を引き、食い違いに印を付ける
- 【自動】 プログラムが、点検表の書類の項目に下書きを書く。現物の点検の項目は空欄のままにする
- 【人】 資格を持つ担当者が、下書きと原本の画像を並べて確かめ、「YES/NO/N/A」を自分で付ける
- 【人】 担当者が、記載漏れと食い違いについて荷主に訂正を頼む
- 【人】 貨物が搬入されたら、包装物・マーク・ラベルを点検し、受託を決める
7番目が、この設計の分かれ目です。 下書きは値を写したもので、「YES」を付けるのは担当者です。 チェックリストは担当者の署名で完結する書類で、AIの下書きをそのまま署名に回す作りにはしません。
5番目をAIにさせないのも意図してのことです。 AIに任せると「ほぼ同じ」を一致として扱いますが、UN番号の1桁の違いは別の物質です。
02今回想定するシステム構成
英文のDGD(PDF・スキャン・写真。荷主からのメール添付) ▼【トリガー】受付フォルダ(Amazon S3)への保存 AWS Lambda ── 形式・サイズ・パスワードの確認、1ページずつに分割 ▼ AWS Textract(AnalyzeDocument:FORMS/TABLES/QUERIES) │ 全文、キーと値、品目の表、質問への答え、信頼度、手書きか印字か ▼ Claude API ── 値を原文のまま、品目の行ごとに取り出す │ ① 運送状番号 ② 荷送人・荷受人 ③ 発地・目的地 ④ 航空機の種類の欄 │ ⑤ UN番号・品名・分類・副次危険性・包装等級 ⑥ 個数・種類・数量・包装基準 ▼ Python ── 予約の台帳と受託実績の品目の一覧を引いて照合、点検表の書類の項目を下書き ▼ 点検表の下書き(書類の項目だけ)と印(ok / missing / booking_mismatch / needs_human) ▼ 【資格を持つ担当者が原本と並べて確認し、YES/NO/N/A を付ける】 └──▶ 荷主への訂正の依頼/搬入された貨物の点検へ
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | AWS Textract(AnalyzeDocument の FORMS/TABLES/QUERIES) | Azure AI Document Intelligence、Google Document AI |
| 生成AI | Claude API(DGDの値の取り出し) | OpenAI API、Gemini API |
| 差異計算 | Python(予約の台帳・受託実績の品目の一覧との照合、点検表の下書き) | 予約の仕組みの照合の機能 |
| 連携 | AWS Lambda(保存の通知を起点に処理を動かす) | Amazon EventBridge |
| 保管 | Amazon S3(DGDの原本、読み取り結果、下書きと照合の結果) | 社内のファイルサーバー |
予約の台帳と点検表は、新しく足すものではありません。 最初の準備は、チェックリストの番号ごとに「書類」「現物」「判断」の区分を付け、下書きしてよい項目を決めることです。
OCRに AWS Textract を選ぶのは、DGDが英文の書類だからです。 チェックリストの1番目は、DGDが英語で2部、IATA指定のフォームに基づいて提出されているかを確かめる項目です。Textract の対応言語は英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語で、手書きの認識は英語のみ、縦書きには対応しないとされています。
この題材で効くのは、同期の AnalyzeDocument で1ページずつ読むことです。 DGDは1〜3ページで、非同期のジョブの完了を待たずに早く点検を済ませます。同期の操作は、PDFとTIFFで1ページ・10MBまでとされているため、先に1ページずつに分けます。
03どうやって実装するのか
処理の起点を決める
起点は、受付フォルダ(Amazon S3)にDGDが保存されたことです。 共有受信箱のルールで、登録した荷主から届いた「DGD」「Dangerous Goods」を含むメールの添付をS3へ転送し、保存の通知で AWS Lambda を動かします。
紙で持ち込まれたDGDも、受付の担当者がスキャンして同じフォルダに入れます。 経路を一つにまとめ、メールのものだけが下書きを持つ差を作りません。
毎朝8時にも1回動かし、 当日と翌日に搬入予定の貨物のうち、DGDが未着のものと needs_human のまま残っているものを担当者に送ります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| DGD | PDFまたは画像。航空貨物運送状番号、ページ番号、荷送人、荷受人、発地と目的地、航空機の種類の欄、放射性かの欄、品目の表(UN番号、正式輸送品目名、分類、副次危険性、包装等級、包装物の個数と種類、数量、包装基準、承認)、取り扱い注意、署名者の名前と日付 | 受付フォルダ(Amazon S3) |
| 読み取り結果 | 全文、キーと値、表とセル、質問への答え、信頼度、手書きか印字か | AWS Textract |
| 予約の台帳 | 運送状番号、荷主、個数、重量、予約した便、予約した航空機の種類、予約時に申告されたUN番号 | 予約の仕組み |
| 受託実績の品目の一覧 | 過去に受託したUN番号ごとの、正式輸送品目名・分類・包装等級・包装基準の組み合わせ | 担当者が受託の記録から作る一覧 |
| 点検表の区分 | チェックリストの項目ごとの「書類」「現物」「判断」の区分 | 担当者が作る表 |
質を決めるのは、いちばん下の2つです。 受託実績の一覧は、同じUN番号でいつもと違う組み合わせに気づくための材料で、規則そのものではありません。点検表の区分は下書きの範囲を決めます。チェックリストの13番目「包装物の個数および種類が記入されているか」は書類の項目、30番目「搬入された個数および容器の型式は危険物申告書と一致しているか」は現物の項目で、同じ「個数」でも別の項目として扱います。
データの取得方法を決める
DGDは AnalyzeDocument で1ページずつ読みます。 Document に1ページに分けたPDFのS3の場所を渡し、FeatureTypes に FORMS、TABLES、QUERIES を、QueriesConfig に質問の文と Alias の組を指定します。結果は Block の一覧で返り、キーと値は KEY_VALUE_SET、表は TABLE と CELL、質問の答えは QUERY_RESULT の Block です。
Alias | 質問の文 |
|---|---|
AWB_NO | What is the air waybill number? |
PAGE_NO | What is the page number and total pages? |
SHIPPER | What is the shipper name and address? |
CONSIGNEE | What is the consignee name and address? |
ORIGIN | What is the airport of departure? |
DESTINATION | What is the airport of destination? |
SIGNATORY | What is the name of signatory and date? |
質問は英語の文書でしか使えず、同期の操作では1ページあたり15個までとされています。答えが見つからなければ空のまま返るので、全文から該当の語を含む行を探し、それでも無ければ missing にします。
品目の欄は、質問ではなく表として読みます。 1枚に複数の品目が並ぶことがあるためです。CELL を RowIndex、ColumnIndex でたどり、列の見出し(COLUMN_HEADER)が「UN or ID No.」「Proper Shipping Name」「Class or Division」「Packing Group」「Packing Inst.」のどれに当たるかで値を分けます。
各 Block の TextType(HANDWRITING/PRINTED)を必ず残します。 手書きで訂正された値は、チェックリストの24番目「修正または変更について荷送人の署名はあるか」に関わるため、印を付けて担当者に見せます。予約の台帳と受託実績の一覧は Python が読み、生成AIには渡しません。
AIへ渡す前に整形する
- 形式の確認 … JPEG、PNG、PDF、TIFF であることを確かめます。HEICなどの写真は JPEG に変換します
- パスワードの確認 … PDFはパスワードで保護されていてはいけないとされています。保護されたものは荷主に解除したものを頼みます
- 1ページずつに分ける … 同期の操作はPDFとTIFFで1ページまで、10MBまでです。ページ番号を付けたまま分け、あとで1件にまとめ直します
- 文字の大きさの確認 … 検出できる文字の高さの下限は15ピクセルで、150DPIで8ポイントの文字に当たるとされています。低い解像度のスキャンは取り直しを頼みます
- 放射性の申告書を分ける … 「Radioactive」の欄を見て、放射性のものは担当者に直接渡します
- 重複の検知 … 同じ運送状番号のDGDがあれば版を上げ、前の版との違いを並べて出します
6番目を省かないでください。 訂正したDGDの送り直しはよくあり、古い版の下書きが残ると、直る前の値で受託を決めることになります。
AIに処理させる
させるのは、OCRの結果から値を原文のまま取り出し、その値がDGDのどの欄の値かを記録することです。 照合と、規則に照らした判断はさせません。
| 見るもの | 取り出し方 | 判断できないときの扱い |
|---|---|---|
| 運送状番号、ページ番号 | 原文のまま | 書かれていなければ missing |
| 荷送人と荷受人 | 名前と住所を原文のまま。省略されているように見えるかを記録 | 読めなければ unreadable |
| 発地と目的地 | 空港名か都市名を原文のまま | 書かれていなければ missing |
| 航空機の種類の欄 | 「Passenger and Cargo Aircraft」「Cargo Aircraft Only」のどちらが消去されているかは判定しない。両方の文字が検出されたかだけを記録 | 常に needs_visual |
| UN番号 | 「UN」「ID」の接頭と数字を原文のまま | 数字が読めなければ unreadable |
| 正式輸送品目名と技術名 | 原文のまま。括弧の技術名を分ける | 途中で切れていれば ambiguous |
| 分類と副次危険性 | 原文のまま。括弧の副次危険性を分ける | 書かれていなければ missing |
| 包装等級 | 原文のまま(I/II/III) | 書かれていなければ not_stated |
| 包装物の個数と種類、数量と単位 | 個数、種類の語、数量、単位、「G」の有無を分ける | 単位が無ければ unit_unknown |
| 包装基準、承認 | 原文のまま | 書かれていなければ not_stated |
包装等級と包装基準を not_stated にしているのは、品目によって書かない場合があるからです。 チェックリストでも包装等級の項目には「N/A」の欄があり、不備かどうかは担当者が決めます。
航空機の種類の欄は、消去の線が文字の検出に影響しないことが多く、両方の文字が読めても、どちらも消されていないとは限りません。 この欄は Lambda が Block の位置から切り出し、担当者の画面に画像で出します。
| させないこと | 理由 |
|---|---|
| 分類・包装等級・包装基準が正しいかの判断 | 規則に照らして資格を持つ担当者が決める |
| 予約との一致の判断 | Python が値の完全一致で照合する |
| 書かれていない値の補完 | UN番号から品名や分類を埋めると、記載漏れが消える |
| UN番号の補正 | 1桁違うと別の物質になる |
| 受託してよいかの結論 | チェックリストの全項目と現物の点検を経て人が決める |
3行目がいちばん起きやすい失敗です。 分類の欄が空のDGDでも、生成AIはUN番号の一般的な分類を書き足しがちで、訂正を頼むべき記載漏れが消えます。
指示内容を固定する
あなたは航空貨物の混載業者の危険物の担当で、荷主から届いた
英文の危険物申告書(Shipper's Declaration for Dangerous Goods)の
記載を記録する立場です。OCRの読み取り結果だけを使ってください。
推測で埋めないでください。
【取り出す項目】
awb_no、page_no、shipper_raw、consignee_raw、origin_raw、
destination_raw、aircraft_field_texts(検出された文字の一覧)、
lines(配列:un_no_raw、proper_shipping_name_raw、technical_name_raw、
class_raw、subsidiary_risk_raw、packing_group_raw、
packages_count、package_type_raw、quantity、quantity_unit、
gross_flag、packing_instruction_raw、authorization_raw)、
handling_info_raw、signatory_raw、signed_date_raw
【status の選び方】
- ok ............ 値が読み取れており、その欄の値として解釈できる
- missing ....... 書かれていない
- not_stated .... 包装等級・包装基準・承認の欄に記載が無い
- unreadable .... 文字は検出されているが値として確定できない
- ambiguous ..... 候補が複数ある、または値が途中で切れている
- unit_unknown .. 数量の単位が決まらない
- needs_visual .. 消去の有無など、画像で人が見る必要がある
【厳守事項】
- 書かれていない値を、他の欄やUN番号から補わないでください。
分類・品名・包装等級を一般的な知識で埋めないでください。
- UN番号は「UN」「ID」の接頭と数字を、読み取った文字のまま
入れてください。桁を補ったり、似た文字に直したりしないでください。
- 航空機の種類の欄と放射性の欄で、どちらが消去されているかを
判定しないでください。status は常に needs_visual にしてください。
- 数量は、数値と単位と「G」の有無を分けてください。
単位を換算しないでください。
- 手書きの値(text_type が HANDWRITING)は、そのことを
handwritten に true として残してください。
- 分類や包装等級が正しいか、受託してよいかを書かないでください。
- DGDでない書類(安全データシート、インボイス、航空貨物運送状など)
と判断した場合は、項目を取り出さず document_type に種類を
書いてください。
【ページの並び】{page_order}
【読み取り結果(ページごと、TextType と信頼度付き)】{textract_result}
「UN番号から補わない」を明記しないと、補います。 生成AIは多くのUN番号の一般的な品名や分類を知っているためです。埋めた値が正しいかではなく、空欄だったという事実が消えることが問題です。
出力形式を固定する
Claude API の構造化出力(output_config.format に json_schema を指定)で、DGDごとに次の形のJSONを受け取ります。
{
"file": "",
"document_type": "dgd_non_radioactive",
"awb_no": "000-00000000",
"page_no": "1 of 1",
"origin_raw": "NRT",
"destination_raw": "FRA",
"aircraft_field": { "status": "needs_visual", "texts": ["PASSENGER AND CARGO AIRCRAFT", "CARGO AIRCRAFT ONLY"] },
"lines": [
{
"un_no_raw": "UN3481",
"proper_shipping_name_raw": "Lithium ion batteries packed with equipment",
"class_raw": "9",
"packing_group_status": "not_stated",
"packages_count": 2,
"quantity": 4.2,
"quantity_unit": "kg",
"packing_instruction_raw": "966",
"handwritten": false,
"items": [ { "item": "un_no", "status": "ok", "confidence": 0, "source": "" } ]
}
]
}
1つ目の理由は、照合をプログラムの側に置けることです。 Python が値の完全一致だけで印を付けます。
| 印 | 付ける条件 |
|---|---|
ok | 書類の項目がすべて読み取れ、予約とも受託実績の組み合わせとも合う |
missing | 運送状番号、荷送人・荷受人、UN番号、品名、分類、個数、数量、署名者のどれかが無い |
booking_mismatch | 運送状番号・個数・UN番号が予約と違う |
pattern_differs | 同じUN番号で、分類・包装等級・包装基準の組み合わせが受託実績と違う |
first_time | 受託実績の一覧に無いUN番号 |
needs_human | unreadable・ambiguous・unit_unknown の項目がある、手書きの訂正がある、または書類でない |
2つ目は、点検表の下書きを「書類」の項目だけに限れることです。 Python は点検表の区分を引き、「現物」と「判断」の項目には何も書かず、「YES」も書きません。 aircraft_field は常に needs_visual で、切り出した画像と予約した航空機の種類を並べて出します。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受付フォルダ(Amazon S3) | 保存の通知 | DGDの保存を検知して AWS Lambda を動かす |
| AWS Textract | API呼び出し(同期) | 1ページずつ、キーと値・表・質問の答えを返す |
| Claude API | API呼び出し | 値の取り出しと、欄の記録 |
| 予約の台帳 | 読み取り | 運送状番号・個数・UN番号・予約した航空機の種類を引く |
| 受託実績の品目の一覧 | 読み取り | UN番号ごとの過去の組み合わせを引く |
| 点検表 | 下書きの書き込み | 「書類」の項目の値と根拠だけを書く |
| 通知 | メール | 毎朝の未着・要確認の一覧を担当者に送る |
予約の台帳には書き込みません。 食い違っていても、どちらが正しいかは荷主に確かめるまで分からないためです。航空会社への通知や搬入の受付の仕組みにもつながず、受託の結果は担当者が次の工程に渡します。
人が確認する
資格を持つ担当者が、すべての下書きを原本と並べて確かめます。 human_check を「必須」としているのは、チェックリストが担当者の署名で完結する書類だからです。
booking_mismatchとmissingを最初に片付ける … 搬入の前に荷主へ訂正を頼めるかで、予約した便に間に合うかが決まります- 航空機の種類の欄を画像で見る … 消去されている方を、予約した航空機の種類と比べます
pattern_differsとfirst_timeを規則で確かめる … 分類・包装等級・包装基準の組み合わせを規則に照らします- 手書きの訂正を見る … 訂正の箇所に荷送人の署名があるかを確かめます
- 書類の項目に「YES/NO/N/A」を付ける … 担当者が自分で付けます
3番目を省かないでください。 実績の一覧は「いつもと違う」に気づくための材料で、正しさの根拠ではありません。 目標は、240件をならして1件6分です。
例外に対処する
| 起きること | 対応 |
|---|---|
| パスワードで保護されたPDF | 読めない。荷主に解除したものを頼む |
| 英語以外で書かれた欄がある | その欄は unreadable。DGDは英語で提出されるものなので、チェックリストの1番目に関わるとして担当者に回す |
| 写真の傾き・影で表が崩れる | 表の行が取れなければ needs_human。取り直しを頼む |
| 品目の表が2ページにまたがる | ページ番号の順につなぎ、切れた行は ambiguous |
| 予約が見つからない | booking_mismatch。予約の受付と荷主に確かめる |
| OCRや生成AIが応答しない | 受付フォルダに残し、処理済みへ移すのは成功したときだけ |
上から2行目は、読めないこと自体が点検の材料になる例です。
記録を残す
- 元のDGDと、受け取った日時、送り元、メールの件名、版の番号
- AWS Textract が返したJSONの全文と、使った質問の一覧
- Claude API が返したJSON(原文と、項目ごとの status)
- 照合の結果と、そのとき参照した予約の台帳の値と、受託実績の品目の一覧の版
- 担当者が付けた「YES/NO/N/A」と、下書きの値を直した箇所
- 荷主への訂正の依頼と、訂正されたDGDとの対応
4行目で「そのときの予約の値」を残すのは、予約が後から変わるためです。 残さないと、なぜ印が付いたのかを後から説明できません。 5行目は、同じ欄が毎回直される荷主の書式を見つけ、質問の文を足す材料になります。
04実装レベルの3段階
本記事の想定は半自動化です。 読み取りと点検表の下書きと予約との照合が自動になり、担当者は下書きと原本を並べて確かめ、印を付けます。1件15分が6分になるのはこの段階です。 本格構成で足すのは、航空貨物運送状です。 チェックリストには、運送状の取り扱い注意の欄に「Dangerous Goods as per associated Shipper's Declaration」などの文言があるか、適用される場合に「Cargo Aircraft Only」の文言があるかを確かめる項目があります。DGDと運送状を並べて読めば、この項目も下書きできます。 段階を飛ばさないでください。 半自動化でpattern_differs の多い荷主と、下書きが毎回直される書式を先に知り、一覧と質問の文を整えてから運送状に進みます。
05工数削減シミュレーション
導入後 240件 × 6分 ÷ 60 = 24 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- リチウム電池を組み込んだ機器、塗料・接着剤、化学品のサンプル、医療用の試薬などを航空便で輸出する荷主から、月に数百件の危険物の貨物を受ける航空貨物の混載業者(フォワーダー)の輸出部門。荷主が作った英文の危険物申告書がPDFやスキャンで届き、資格を持つ担当者がUN番号や数量を受託の点検表と予約の台帳に手で写している場合。申告書の記載漏れや予約との食い違いに、貨物が搬入されてから気づくことがある場合。
- 危険物の取扱いが月に数件で、担当者が目で見て足りる場合。荷主から危険物申告書のデータを電子的に受け取れており、PDFを読む工程が無い場合。放射性物質の貨物が中心の場合(この構成は非放射性の申告書だけを対象にしています)。なお、危険物の受託の可否、分類や包装等級が正しいかの判断、包装物・マーク・ラベルの点検は、危険物の取扱いの資格を持つ担当者が規則に照らして行うもので、この構成では代替できません。
07最小構成で試す方法
- 先月のDGDから30件を選ぶ(手書きの訂正があるもの、品目が複数あるもの、2ページにまたがるもの、記載漏れで荷主に訂正を頼んだものを必ず入れる)
- 手元の生成AIの画面にDGDを1件ずつ貼り付け、「この危険物申告書から、運送状番号、荷送人、荷受人、発地、目的地、品目ごとのUN番号・正式輸送品目名・分類・副次危険性・包装等級・個数と種類・数量と単位・包装基準を、書かれたとおりに表にしてください。書かれていない値は『記載なし』とし、UN番号から補わないでください」と指示する
- 出てきた表を、当時の点検表と、荷主に訂正を頼んだ記録と見比べる
30件は必ずやってください。 記載漏れが「記載なし」として残るかを、仕組みを組む前に確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 当時の点検表と同じ値と記載漏れが出た | OCRのAPIと照合の処理に進む |
| 空欄の分類や品名をUN番号から補った | 補完を禁じる指示を足す。直るまで先に進まない |
| 手書きの訂正や小さな文字が読めない件が多い | スキャンの解像度と、荷主から受け取る形式が先 |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 空欄の分類や品名がUN番号から補われる | 補完を禁じ、missing で記録する |
| 現物の点検の項目まで下書きされる | 点検表の区分を引き、「書類」の項目だけに書く |
| 航空機の種類の欄の消去を読み違える | AIに判定させず、欄を切り出して画像で人に見せる |
| UN番号の1桁違いを一致として扱う | 照合は Python で値の完全一致だけにする |
| 受託実績と同じなら正しいと思い込む | 実績の一覧は「いつもと違う」の材料と明記し、規則の確認を残す |
| 同期の操作に複数ページのPDFを渡して失敗する | 1ページずつに分けてから読む |
| 訂正版のDGDが届いても古い下書きが残る | 運送状番号で版を上げ、前の版との違いを出す |
上の3行が、この構成の失敗のほとんどです。 どれも書かれていないことを書かれているように見せる誤りで、点検表に値がそろって見えるほど、担当者は原本を見なくなります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 荷送人と荷受人の名前と住所、緊急時の連絡先、品目の名前と数量、運送状番号、予約した便です。個人の情報はわずかですが、荷主の輸出先と取引の内容は外に出せない情報です。
- 受託の判断を人に残す … チェックリストは、全項目が確かめられる前に受託も拒否もしてはならず、一つでも「NO」があれば受託してはならないとしています。この構成が出すのは書類の項目の下書きで、受託の判断ではありません
- 下書きの範囲を書類の項目に限る … 現物の点検の項目を下書きしないことを、点検表の区分と、下書きを書く処理の両方で守ります
- 外部へ渡す範囲を、読み取りに必要なものに限る … 生成AIに渡すのはDGDの読み取り結果だけです。予約の台帳、受託実績の一覧、他の荷主の情報は渡しません
- 荷主への連絡を自動で送らない … 訂正の依頼は、担当者が原本を見て確かめてから送ります
誤りが起きた場合のリスクは、記載漏れを見落として受託に進むことです。 補完を禁じ、点検表の「YES」は必ず担当者の手で付けてください。
10まず何から始めるか
1週目:点検表の項目に区分を付ける
チェックリストの項目ごとに「書類」「現物」「判断」の区分を付けます。危険物の担当の責任者と、資格を持つ担当者で決めます。 あわせて、受託実績の品目の一覧の様式を決めます。
2週目:30件で試す
先月のDGDから30件を選び、手元の生成AIの画面で項目を表にさせます。記載漏れが「記載なし」として残るか、UN番号から補われないかを最優先で見ます。
3週目:受託実績の品目の一覧を作る
過去1年の受託の記録から、UN番号ごとの品名・分類・包装等級・包装基準の組み合わせを書き出します。件数の多い上位10社の荷主の品目から始めます。
4週目:受付フォルダから下書きまでをつなぐ
S3、Lambda、Textract、Claude API、Python の照合をつなぎ、点検表の書類の項目に下書きを書くところまで作ります。この時点では、件数の多い3社の荷主のDGDだけを対象にします。
2か月目: 対象を全荷主に広げ、booking_mismatch と pattern_differs の件数を毎週数えて、受託実績の一覧と質問の文を直します。3か月目以降: 毎朝の未着・要確認の一覧を運用に乗せ、1件15分が何分になったかを実測します。DGDの記載漏れが、貨物の搬入の前に荷主へ伝わるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 危険物受託チェックリスト(非放射性物質)が発地で貨物を確認するための推奨のチェックリストであること。全項目がチェックされる前に受託・拒否をしてはならず、一つでも「NO」があれば受託してはならないこと。DGDが英語で2部、IATA指定のフォームで提出されているか、荷送人・荷受人、運送状番号、ページ番号、適用されない航空機の種類の消去、国連番号、正式輸送品目名、分類、副次危険性、包装等級、包装物の個数と種類、包装基準番号、署名者、修正の署名を確かめる項目があること。運送状の取り扱い注意の欄の文言、搬入された個数と容器の型式の一致、マーク・ラベルの項目があること | IATA: 危険物受託チェックリスト(非放射性物質) | 2026-10-08 |
| 対応する形式がJPEG、PNG、PDF、TIFFであること。同期の操作は10MB、PDFとTIFFは1ページまでであること。PDFはパスワードで保護できないこと。画像は各辺10,000ピクセル以下であること。質問は同期で1ページ15個、非同期で30個までで、英語の文書だけであること。対応言語が英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語で、縦書きに対応しないこと。手書きは英語のみであること。文字の高さの下限が15ピクセル(150DPIで8ポイント)であること | AWS: Set Quotas in Amazon Textract | 2026-10-08 |
AnalyzeDocument が同期の操作で、FeatureTypes(TABLES/FORMS/QUERIES/SIGNATURES/LAYOUT)と QueriesConfig を受け取り、キーと値・表とセル・質問と答えを Block の一覧で返すこと | AWS: AnalyzeDocument | 2026-10-08 |
Block が TextType(HANDWRITING/PRINTED)、RowIndex/ColumnIndex、EntityTypes(COLUMN_HEADER など)、Confidence を持つこと | AWS: Block | 2026-10-08 |
| 質問の応答が別名(Alias)と信頼度を持ち、答えが見つからなければ空のまま返ること | AWS: Queries | 2026-10-08 |
構造化出力を output_config.format に json_schema を指定して受け取れること | Claude Docs: Structured outputs | 2026-10-08 |
危険物の受託の可否と、分類・包装等級・包装基準の判断は、最新の危険物規則と運航者の規程に従い、資格を持つ担当者が行ってください。 本記事は公開されているチェックリストとAWSの公開仕様で確認できた範囲だけを扱っており、チェックリストの版は規則の改訂によって変わります。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1033)についてのご相談はこちらから。
