通関業者から届く輸入許可通知書を読み取り、申告番号・課税価格・関税・消費税を輸入案件の台帳と会計の入力項目にそろえ、見込みとの差を拾う
輸入の通関が終わるたびに通関業者から届く輸入許可通知書を読み取り、申告番号・品目・課税価格・関税・消費税の額を輸入案件の台帳と会計の入力項目にそろえます。あわせて、案件ごとに見込んでいた額との差を拾います。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- Azure AI/Google Document AI
- 連携・自動化
- Google Apps Script/Python
- 対象業界
- EC/商社/小売/製造
- 対象部門
- 物流/経理
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- 入力作業が多い/属人化している/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/属人化解消/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 通関業者からのメールを開き、許可通知書のPDFと請求書を共有フォルダに保存する
- 許可通知書の申告番号・許可日・インボイスの番号から、どの輸入案件のものかを特定する
- 申告番号・許可日・課税価格・関税・消費税・地方消費税を、輸入案件の台帳に写す
- 品目ごとの課税価格と関税を、原価計算のシートに写す
- 見込みの為替と関税率から出した見込みの額と比べ、差があれば理由を探す
- 理由が分からないものは、通関業者に電話かメールで聞く
- 経理が同じ通知書を開き、関税と輸入消費税・地方消費税の仕訳を会計システムに入力する
- 自動Apps Script が数分おきにメールを見て、通関業者からの許可通知書のPDFを取込フォルダに保存する
- 自動Document AI が通知書を読み、項目名と値の組・表・全文のテキスト・信頼度を返す
- 自動Gemini API が、申告番号・許可日・輸入者・品目ごとの課税価格・関税率・関税・消費税・地方消費税を決まった形にそろえる
- 自動Apps Script がインボイスの番号と申告番号で輸入案件の台帳の行を引き、見込みの為替・関税率・課税価格を読む
- 自動Apps Script が、地方消費税と消費税の比を検算し、品目ごとの関税率と課税価格を見込みと比べる
- 自動差の要素ごとに理由の区分を付け、照合結果のシートと、台帳・原価・会計の3つの入力用の行を書き出す
- 人物流の担当が `match` 以外の行だけを開き、通関業者に確かめるか、見込みを直すかを決める
- 人経理の担当が、会計の入力用の行を確かめてから会計システムへ入力する
- 人台帳の「通関済み」への切り替えは、照合結果を見たうえで人が行う
各工程の詳しい説明を読む
- 通関業者からのメールを開き、許可通知書のPDFと請求書を共有フォルダに保存する
- 許可通知書の申告番号・許可日・インボイスの番号から、どの輸入案件のものかを特定する
- 申告番号・許可日・課税価格・関税・消費税・地方消費税を、輸入案件の台帳に写す
- 品目ごとの課税価格と関税を、原価計算のシートに写す
- 見込みの為替と関税率から出した見込みの額と比べ、差があれば理由を探す
- 理由が分からないものは、通関業者に電話かメールで聞く
- 経理が同じ通知書を開き、関税と輸入消費税・地方消費税の仕訳を会計システムに入力する
(a)同じ数字を3か所に写している。 3番、4番、7番は、どれも同じ許可通知書から同じ数字を写す作業です。写す人も、写す先の項目の名前も違うので、どこかで1か所だけ違う値が入ります。 気づくのは月末に台帳と会計の残高を突き合わせたときです。
(b)見込みとの差が案件ごとに追えない。 為替の換算の差なのか、運賃の扱いなのか、税率の違いなのかは、課税価格と税率を品目の行ごとに見比べないと分かりません。 忙しい月は5番が「合計がだいたい合っているか」だけになり、EPA の税率が適用されていなかった案件がそのまま原価に入ります。
(c)通知書の読み方を知る人が限られる。 どの欄が課税価格でどの欄が税額かを知らないと写せず、担当者が休むと案件が止まります。
- 【自動】 Apps Script が数分おきにメールを見て、通関業者からの許可通知書のPDFを取込フォルダに保存する
- 【自動】 Document AI が通知書を読み、項目名と値の組・表・全文のテキスト・信頼度を返す
- 【自動】 Gemini API が、申告番号・許可日・輸入者・品目ごとの課税価格・関税率・関税・消費税・地方消費税を決まった形にそろえる
- 【自動】 Apps Script がインボイスの番号と申告番号で輸入案件の台帳の行を引き、見込みの為替・関税率・課税価格を読む
- 【自動】 Apps Script が、地方消費税と消費税の比を検算し、品目ごとの関税率と課税価格を見込みと比べる
- 【自動】 差の要素ごとに理由の区分を付け、照合結果のシートと、台帳・原価・会計の3つの入力用の行を書き出す
- 【人】 物流の担当が
match以外の行だけを開き、通関業者に確かめるか、見込みを直すかを決める - 【人】 経理の担当が、会計の入力用の行を確かめてから会計システムへ入力する
- 【人】 台帳の「通関済み」への切り替えは、照合結果を見たうえで人が行う
7番目が、この設計の分かれ目です。人が見るのは全件ではありません。 見込みどおりのものは一覧で件数を流し見て終わりにし、差が出たものと、読み取りに自信のないものだけに時間を使います。
8番目と9番目で台帳と会計に自動で書き込まないのも、意図してのことです。 読み違えた税額が会計に入ると、仮払消費税の残高がずれたまま月次が締まります。
02今回想定するシステム構成
通関業者からのメール(輸入許可通知書のPDF、立替金の請求書) │ Apps Script がラベルを見て添付を取込フォルダへ ▼【トリガー】Google Apps Script の時間主導型トリガー(数分おき) Google Apps Script ── 形式・ページ数の確認、通関業者の推定 ▼ Google Document AI(Form Parser) │ 項目名と値の組・品目の表・全文のテキスト・信頼度を返す ▼ Gemini API ── 申告の項目と品目の行を、決まった形にそろえる │ 申告番号/許可日/課税価格/関税率/関税/消費税/地方消費税 ▼ Google Apps Script ── 台帳の案件を引き、税額の検算と見込みとの比較 │ match/rate_diff/value_diff/tax_check_ng/unmatched/needs_review ├──▶ 照合結果のシート(品目ごとの差と理由) └──▶ 台帳・原価・会計の入力用の行 ▼ 【人が match 以外だけ確認】──▶ 台帳の更新・会計入力へ
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Google Document AI(Form Parser) | Azure AI Document Intelligence |
| 生成AI | Gemini API(申告の項目と品目の行の対応付け) | Claude API、OpenAI API |
| 差異計算 | Google Apps Script(税額の検算、見込みの関税率・課税価格との比較) | Python |
| 連携 | Google Apps Script(メールの取り込み、台帳の読み取り、結果の書き込み) | Python |
| 保管 | Google ドライブ、Google スプレッドシート | 既存の文書管理システム |
新しく作るのは、輸入案件の台帳に足す「見込み」の列です。 品目ごとの HSコードと見込みの関税率、EPA を使う予定かどうか、見込みの為替。どれも発注のときに誰かが決めていたのに、台帳には書かれていなかったものです。
土台は Document AI の Form Parser です。 公式のプロセッサ一覧では、OCRのテキストに加えて、キーと値のペア(エンティティとチェックボックス)、表、一般的なエンティティを抽出するとされ、200を超える言語に対応します。言語の一覧には日本語(ja)があります。ページの上限は同期処理で15ページ、バッチ処理で100ページです。
Form Parser は事前学習済みで、追加で学習させることはできないとされています。返ってくる項目名は書類に書かれている文字そのもので、通関業者が違えば同じ数字でも項目名の書き方が変わります。そろえるのは後段の Gemini API の仕事です。 公式には、ラテン文字以外の言語ではキーと値の読み取りの質が下がることがあるとも書かれています。日本語の通知書では、キーと値の組だけに頼らず、全文のテキストもあわせて Gemini API に渡します。
表の読み取りには限りがあります。 Form Parser の表の抽出は、行や列をまたぐセルのない単純な表が対象とされています。品目の欄が2段に分かれた書式は、全文のテキストから行を拾い直します(第7章)。
03どうやって実装するのか
処理の起点を決める
Google Apps Script の時間主導型トリガーで、数分おきに通関業者からのメールを見ます。 通関業者のメールには受信のルールでラベルを付けておき、Apps Script はそのラベルの未処理のメールだけを開きます。添付の許可通知書を取込フォルダへ保存したら、メールに処理済みのラベルを付けます。
月末にまとめて処理しません。 差が見つかったときに通関業者へ聞くのは、記憶の新しいうちのほうが早く終わります。
1回の実行で処理する件数に上限を置きます。 Apps Script の1回の実行は6分までとされています。1回に5件までとし、残りは次の実行に回します。 処理済みフォルダへ移すのは、照合結果のシートへの書き込みまで成功したときだけにします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 輸入許可通知書 | PDF。受け取った日時と通関業者 | 取込フォルダ |
| 読み取り結果 | 項目名と値の組、品目の表、全文のテキスト、項目ごとの信頼度 | Document AI(Form Parser) |
| 輸入案件の台帳 | 案件番号、発注番号、インボイスの番号と金額・通貨、見込みの為替、運賃・保険料の見込み | Google スプレッドシート |
| 品目の見込み | 品目ごとの HSコード、見込みの関税率、EPA を使う予定か | 台帳に足す列 |
| 通関業者の書式メモ | 申告番号・課税価格・税額が書かれる欄の名前、品目の欄の並び | 自社で用意する一覧 |
| 会計の入力の決まり | 関税・消費税・地方消費税・通関料をどの勘定に入れるか | 経理の手順書 |
質を決めるのは、品目の見込みの列です。 見込みの関税率が無ければ、許可通知書の税率と比べる相手がありません。EPA を使う予定だったかが書かれていなければ、一般の税率で申告されていても「差」として出せません。
データの取得方法を決める
読み取りは、Apps Script から Document AI の処理のAPIを呼ぶだけです。ファイルを渡すと、Document という形の応答が返ります。
| 取るもの | 応答のどこから | 何に使うか |
|---|---|---|
| 項目名と値の組 | pages[].formFields[] の fieldName と fieldValue | 申告番号、許可日、輸入者、課税価格の合計、税額の合計 |
| 品目の表 | pages[].tables[] の headerRows と bodyRows | 品目ごとの課税価格、関税率、関税額 |
| 全文のテキスト | text と、各要素の textAnchor | 表として取れなかった品目の行、欄の名前の拾い直し |
| 信頼度 | 各要素の layout の confidence | 金額・税率・申告番号の読み取りが確かかの判定 |
税率と金額は、信頼度とあわせて取ります。 関税率の「3.9%」と「8.9%」の違いは、関税と消費税の両方を変えます。信頼度の低い税率や金額は、その通知書を needs_review にして人に回します。
台帳は、インボイスの番号で引きます。 番号が読めない通知書に限り、仕入先と課税価格の合計で候補を出し、候補が2つ以上あれば選ばず unmatched にします。
AIへ渡す前に整形する
- 形式の確認 … Form Parser の対象は PDF、GIF、TIFF、JPEG、PNG、BMP、WebP です。添付がそれ以外なら取り込まずに担当者へ知らせます
- ページ数の確認 … 同期処理は15ページまでです。品目の多い通知書で15ページを超えるものは、バッチ処理に回します
- 添付の仕分け … 許可通知書と請求書が1つのPDFにまとまっている通関業者があります。ページの見出しの文字で分け、許可通知書のページだけを読みます
- 解像度の確認 … 公式には、OCRの精度のためにスキャンは最低200dpiが望ましく、300dpi以上が一般に最もよい結果になるとされています。紙で受け取ったものをスキャンする場合に限ります
- 通関業者の推定 … 送信元のアドレスから通関業者を決め、書式メモを引きます
- 重複の検知 … 同じ申告番号・許可日の通知書が直近にあれば、既処理として印を付けます
3番目を軽く見ないでください。 請求書には、通関業者が立て替えた関税・消費税の額と、通関料・保管料が並びます。許可通知書の税額と請求書の立替額が同じページに混ざると、通関料まで税額として写ります。
AIに処理させる
させるのは、許可通知書に書かれた数字を、決まった項目と品目の行に写すことだけです。 計算はさせません。
| 写す項目 | 当たるものの例 | 判断できないときの扱い |
|---|---|---|
| 申告番号・許可日 | 申告番号、許可年月日 | 読めなければ空にして needs_review |
| 輸入者・仕入先 | 輸入者の名称、仕出人の名称 | 書かれていなければ空 |
| インボイスの番号 | 仕入書番号、インボイス番号 | 複数あればすべて列挙 |
| 品目の行 | 品目の番号、品名、統計品目番号、数量 | 行が分かれていなければ table_status を partial |
| 品目ごとの課税価格 | 課税価格(円) | 書かれていなければ空。合計から割り振らない |
| 品目ごとの関税率・関税額 | 関税率(%または従量)、関税額 | 税率だけで税額が無ければ税額は空 |
| 消費税・地方消費税 | 消費税額、地方消費税額、それぞれの課税標準 | 合計しか書かれていなければ内訳は空 |
| 為替 | 換算に使った為替相場 | 書かれていなければ空。台帳の見込みで埋めない |
右端の列が、この構成でいちばん大事な区別です。 書かれていない項目を、台帳の値や計算で埋めさせません。特に関税率と為替は、書かれていなければ空のままにします。
| させないこと | 理由 |
|---|---|
| 税額の計算・検算 | 掛け算と比で決まる。Apps Script が行う |
| 書かれていない税率や為替の補完 | 台帳の見込みで埋めると、差が必ず「一致」になる |
| 品目ごとの課税価格の割り振り | 合計を数量で割ると、品目ごとの差が消える |
| 統計品目番号の補完・修正 | 似た番号に寄せると、別の品目の見込みと比べられる |
| 差の原因の推測 | 理由の区分は Apps Script が要素ごとの差から付ける |
| 関税分類や EPA の当否の判断 | 通関業者と税関が決めること |
2行目がいちばん起きやすい失敗です。 関税率の欄が読み取れなかった通知書を渡すと、AIは関税額と課税価格から率を逆算して埋めます。その瞬間、EPA の税率が適用されていなかったという差が「一致」にすり替わります。
指示内容を固定する
あなたは輸入を担当する部署で、通関業者から届いた輸入許可通知書を読み、
輸入案件の台帳と会計に写すための下書きを作る立場です。
OCRが返した読み取り結果だけを見てください。推測で埋めないでください。
【やること】
1. 書類が輸入許可通知書かどうかを判断してください。
請求書、通関料の明細、船積み書類など別の書類なら、
写さずに document_type を other にしてください。
2. 申告の項目(申告番号、許可日、輸入者、仕出人、インボイスの番号、
換算の為替相場、課税価格の合計、関税・消費税・地方消費税の合計)を写してください。
3. 品目の欄を1行ずつ items に入れてください。
品名、統計品目番号、数量、課税価格、関税率、関税額を写します。
【厳守事項】
- 数字は書類に書かれたものをそのまま入れてください。
桁区切りや「円」「%」は外してかまいませんが、値は変えないでください。
- 計算をしないでください。関税率が読めないときに、
関税額と課税価格から逆算して埋めないでください。書かれていなければ空にします。
- 品目ごとの課税価格が書かれていないときに、合計を割り振らないでください。
- 消費税と地方消費税が合計しか書かれていないときに、内訳に分けないでください。
- 為替相場が書かれていないときに、ほかの値から求めないでください。
- 統計品目番号は読み取った文字列をそのまま入れてください。
桁を補う、似た番号に直すことをしないでください。
- 関税率が従量(数量あたりの額)で書かれているときは、
rate_type を specific にし、書かれた文字列を rate_text に写してください。
- 関税分類が正しいか、EPA の税率が使えたかについて書かないでください。
- evidence には、各値の根拠にした文字列をそのまま写してください。
【読み取り結果(キーと値の組、表、全文)】{ocr_result}
【この通関業者の書式メモ】{broker_note}
「逆算して埋めない」と「割り振らない」を分けて書くのは、片方だけでは止まらないからです。 税率の逆算だけを禁じると、品目ごとの課税価格を合計から割り振って埋め、品目ごとの差が見えなくなります。
出力形式を固定する
Gemini API の構造化出力で、次の形のJSONに固定して受け取ります。 公式には、Interactions の response_format に JSON スキーマを渡すと、そのスキーマに従う応答を生成させられるとされ、enum で値の候補を限り、required で必須の項目を決められます。
{
"document_type": "import_permit | other",
"declaration_no": "",
"permit_date": "",
"importer": "",
"shipper": "",
"invoice_refs": [],
"fx_rate": { "currency": "", "rate": null },
"totals": { "customs_value": null, "duty": null, "consumption_tax": null, "local_consumption_tax": null },
"items": [
{ "line": 1, "description": "", "hs_code": "", "quantity": "",
"customs_value": null, "rate_type": "ad_valorem | specific | free | unknown",
"rate": null, "rate_text": "", "duty": null }
],
"table_status": "complete | partial",
"evidence": [{ "field": "", "text": "", "confidence": 0 }]
}
1つ目の理由は、AIの仕事と計算の仕事を別の層に置けることです。 JSONはAIが埋め、検算と判定は Apps Script が台帳の見込みで行います。
| 状態 | 付ける条件(Apps Script が決める) |
|---|---|
match | 品目ごとの関税率が見込みと同じで、課税価格の差が許容の範囲、税額の検算が通る |
rate_diff | 品目のどれかで、関税率が見込みの税率と違う |
value_diff | 関税率は同じだが、課税価格が見込みから許容の範囲を超えて違う |
tax_check_ng | 地方消費税と消費税の比が合わない、品目の関税額の和が合計と合わない |
unmatched | インボイスの番号で台帳の案件が見つからない、または候補が2つ以上ある |
needs_review | 金額・税率・申告番号の信頼度が基準を下回る、または table_status が partial |
rate_diff と value_diff には、要素ごとの理由を付けます。 Apps Script は、税率・為替・課税価格を別々に比べ、どれが違うのかを reason に入れます。
reason | 意味 |
|---|---|
epa_not_applied | 見込みは EPA の税率だが、通知書は一般の税率。原産地の証明の扱いを確かめる |
rate_other | EPA とは別の理由で税率が違う。分類が見込みと違う可能性 |
fx_diff | 書かれた為替が見込みの為替と違い、課税価格の差がその範囲で説明できる |
freight_diff | 為替では説明できず、運賃・保険料の扱いの差が疑われる |
unexplained | 上のどれでも説明できない |
検算は公式の数字だけに絞ります。 税関の説明では、地方消費税は消費税額の22/78とされています。この比と、品目の関税額の和が合計と合うかの2つを見ます。 公式にも、構文として正しいJSONでも値はアプリケーションの側で検証するよう書かれています。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 通関業者からのメール | Apps Script の時間主導型トリガー | ラベルの付いたメールから添付を取り出す |
| Document AI | API呼び出し | 項目名と値の組・品目の表・信頼度を返す |
| Gemini API | API呼び出し(構造化出力) | 申告の項目と品目の行の対応付け |
| 輸入案件の台帳 | スプレッドシートの読み取り | 見込みの為替・関税率・課税価格 |
| 照合結果のシート | スプレッドシートへの書き込み | 品目ごとの差、状態、理由、根拠の文字列 |
| 入力用のシート | スプレッドシートへの書き込み | 台帳・原価・会計のそれぞれの項目の形にそろえた行 |
| 会計システム | 書き込まない | 経理の担当が入力用の行を見て入力する |
輸入案件の台帳には書き込みません。 書き込むのは、照合結果と入力用の行だけです。入力用の行は3つの形で出します。 台帳用は申告番号・許可日・税額の合計、原価用は品目ごとの課税価格と関税、会計用は関税・消費税・地方消費税を勘定ごとに分けた行です。同じ値から3つを作るので、写し間違いの入り込む余地がありません。
通関業者への照会メモの下書きは、rate_diff と unexplained にだけ作ります。 申告番号、品目、通知書の税率、見込みの税率、EPA を使う予定だったかを並べます。送るのは物流の担当です。
人が確認する
人が開くのは match 以外の行だけです。 match のものは一覧で件数と案件を流し見ます。全件を開く設計にすると、第10章の10.0時間には収まりません。
needs_reviewを先に見る … 金額・税率・申告番号を通知書の画像で確かめて直しますrate_diffを見る …epa_not_appliedなら、原産地の証明書を仕入先から受け取っていたか、通関業者へ渡したかを確かめますvalue_diffのreasonを読む …fx_diffは見込みの為替を直すだけで済みます。freight_diffは運賃の請求書と見比べますunexplainedを照会に回す … 下書きを直して通関業者へ送ります- 会計の入力用の行を確かめる … 経理の担当が勘定ごとの額を見て、会計システムへ入力します
2番目を省かないでください。 EPA の税率が使えたのに使われていなかった差は、その後の同じ仕入先の輸入にも続きます。
目標は、120件をならして1件5分です。 開くのは3割前後という想定で、それより多い月は、品目の見込みの列が埋まっていない案件があります。
例外に対処する
| 起きること | 対応 |
|---|---|
| 通知書が15ページを超える | 同期処理の上限。バッチ処理(100ページまで)に回す |
| 品目の欄が2段で表として取れない | 単純な表が対象。全文のテキストから行を拾い直し、table_status を partial にする |
| 許可通知書と請求書が1つのPDF | ページの見出しで分ける。分けられなければ needs_review |
| 1つのインボイスを分割して通関 | 台帳の案件に「分割」の印を付け、課税価格は通知書ごとの合計で比べる |
| 訂正の申告で通知書が二度届く | 申告番号と許可日で別に扱い、前の通知書との差を照合結果に並べる |
| 関税率が従量で書かれている | rate_type を specific にし、税率の比較は文字列の一致だけで行う |
| 台帳に案件が無い | unmatched。台帳への登録漏れを先に疑う |
| 輸入許可通知書でない書類 | document_type が other。照合せず担当者へ戻す |
| APIが応答しない、6分を超える | 取込フォルダに残す。処理済みへ移すのは書き込み成功時だけ |
4行目がいちばん手間のかかる例外です。 台帳の側に分割の印が無いと、通知書が届くたびに見込みの半分にしか届かず、毎回 value_diff になります。
記録を残す
- 元の許可通知書のPDFと、受け取った日時・通関業者・メールの件名
- Document AI が返した
DocumentのJSONの全文 - Gemini API に渡した書式メモの版と、返ってきたJSON
- Apps Script が出した状態と理由、そのとき照合した台帳の見込みの値
- 入力用の3つの行と、人が直した記録
- 通関業者に照会した日時と回答
1つ目は、仕入税額控除の書類として残します。 国税庁のページでは、仕入税額控除のために保存する請求書等に輸入許可書等が含まれ、課税標準の額や消費税・地方消費税の額などが記載されたものとされています。どのファイルを原本として保存するかは経理と決め、取込フォルダから消さないでください。
4つ目で「そのときの見込み」を残すのは、見込みが後から直るためです。 当時どの税率と為替で比べたかが残っていないと、どの案件の結果をやり直せばよいかが決まりません。
04実装レベルの3段階
最小構成では件数がさばけません。 確かめるための段階です。 半自動化で、1件15分が9分程度になります。 読み取りは自動になりますが、案件を探して台帳と見比べる作業と、原価と会計の形に組み直す作業が残ります。本格構成で5分になり、この段階が本記事の想定です。 差が大きいのは、3つの入力先への組み直しが1件ずつの手作業だからです。 段階を飛ばさないでください。 半自動化の一覧を1か月見ると、見込みの関税率が抜けている品目が先に分かります。
05工数削減シミュレーション
導入後 120件 × 5分 ÷ 60 = 10 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 海外の仕入先から毎月数十件から百件以上を輸入し、通関を通関業者に任せている専門商社・製造業・小売業・EC事業者。輸入許可通知書がPDFで届き、関税と消費税の額を輸入案件の台帳と会計システムへ手で写している場合。見込みの関税率や為替で原価を組んでおり、実際の額との差を案件ごとに確かめたい場合。Google Workspace を使っている場合。
- 輸入が月に数件で、通関業者の請求書を見れば足りる場合。通関業者から申告の内容をデータで受け取り、台帳と会計へそのまま取り込めている場合。品目ごとの見込みの関税率を台帳に持っておらず、比べる相手が無い場合。なお、関税分類や関税率の当否、EPA の適用の可否、仕入税額控除の扱いの判断はこの構成では代替できません。
07最小構成で試す方法
- 先月届いた許可通知書から、品目の多いものと、EPA を使う予定だった案件を中心に15件を選ぶ
- その15件について、担当者が当時どう写し、見込みとの差をどう片付けたかを聞き取る
- 15件を1件ずつ手元のAIサービスの画面に貼り付ける
- 「この輸入許可通知書から、申告番号・許可日・インボイスの番号・為替相場・品目ごとの品名・統計品目番号・課税価格・関税率・関税額、消費税・地方消費税の合計を表にしてください。書かれていない項目は空にし、計算で埋めないでください」と指示する
- 出てきた表を、台帳と会計にすでに入っている値と1項目ずつ突き合わせる
| 出てきた内容 | 判断 |
|---|---|
| 品目の行と税額が正しく写った | OCRとワークフローの連携に進む |
| 読めない税率を逆算して埋めた | 指示の書き方で直る。構成は有効 |
| 見込みの関税率が台帳に無く、比べられない案件が多い | 品目の見込みの整備が先。 AIの問題ではない |
3行目は失敗ではなく、見込みとの照合が担当者の記憶に頼っていたことが分かったということです。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 読めない関税率を逆算して埋める | 逆算を禁じ、税率が空の品目は税率の比較をしないと規則に書く |
| 品目ごとの課税価格を合計から割り振る | 割り振りを禁じ、table_status を partial にして人へ |
| 請求書の通関料が税額に混ざる | 許可通知書のページだけを読む。 添付をページで分ける |
| EPA の予定が台帳に無く差が出ない | 品目の見込みに EPA を使う予定かの列を足す |
分割通関の案件が毎回 value_diff | 台帳に「分割」の印を付け、通知書ごとの合計で比べる |
| 統計品目番号の桁を補って別の品目と比べる | 番号は読んだまま。補完を禁じる |
為替の差で毎回 value_diff | fx_diff を付けて流す。見込みの為替を直すのは人 |
| 入力用の行をそのまま会計に流し込む | 経理の担当が勘定ごとの額を見てから入力する |
| 差を全部通関業者に問い合わせる | reason を読んでから。説明がつくものは照会しない |
上の2行が、この構成の失敗のほとんどです。 どちらも「合ってしまう」方向の誤りで、一覧からは誰も気づきません。
4行目と5行目は、見込みが整っていないと正しい申告を毎月差として出し、担当者が一覧を信用しなくなる問題です。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 仕入先の名前、品目と数量、課税価格、適用された税率、そして発注時の見込みの為替と原価です。仕入の条件と原価そのもので、社外に知られれば仕入先や販売先との交渉に響きます。
- Gemini API は有料の枠で使う … 公式の利用規約では、有料のサービスではプロンプトと応答を製品の改善に使わないとされる一方、無料のサービスでは改善に使われ、人が読むことがあるとされ、機密の情報や個人情報を送らないよう求めています。請求先のアカウントを付けたプロジェクトから呼びます
- AIに渡すのは通知書1件分だけにする … 輸入案件の台帳と見込みの原価をAIへ渡しません。見込みとの比較は Apps Script の側で行い、AIには通知書の読み取り結果と書式メモだけを渡します
- 照会の連絡を自動で送らない … 出すのは下書きまでです。通関業者への問い合わせの言い方と、仕入先へ原産地の証明を求めるかは担当者が決めます
- 原本の保存を先に決める … 輸入許可書等は仕入税額控除のために保存する書類に当たります。取込フォルダの権限と保存の期間を経理と決めます
- この構成は関税分類や税率の判断を代替しない … 統計品目番号が正しいか、EPA の税率が使えたかを決めるのは、通関業者と税関です。 この構成が出すのは、通知書の数字が見込みと合ったかどうかという事実だけです
誤りが起きた場合のリスクは、差の見落としと、正しい申告の誤った照会の2つです。 前者は指示で、後者は見込みの整備で防ぎます。
10まず何から始めるか
1週目:品目の見込みを書き出す
輸入案件の台帳に、品目ごとの HSコード・見込みの関税率・EPA を使う予定かの列を足します。すべての品目を一度に埋める必要はありません。輸入の多い上位の仕入先の品目から埋めます。
2週目:15件で試す
先月の通知書から15件を選び、手元のAIサービスで項目と品目を表にさせます。読めない税率を逆算で埋めていないかを最優先で見ます。
3週目:書式メモと会計の入力の決まりを作る
通関業者2社分の書式メモと、関税・消費税・地方消費税・通関料をどの勘定に入れるかの一覧を作ります。会計の入力の決まりは経理と一緒に決めます。
4週目:メールから照合結果までをつなぐ
Apps Script で通関業者のメールを見張り、Document AI と Gemini API を呼び、結果をシートに書き出すところまで作ります。この時点では見込みと比べず、写した数字の一覧だけを見ます。
2か月目: 台帳の案件の引き当てと見込みとの比較を足し、状態と理由を出します。match 以外の件数を毎週数えます。3か月目以降: 3つの入力用の行と照会メモの下書きを足し、1件15分が何分になったかを実測します。EPA を使う予定の案件で、epa_not_applied が出るべきときに出ることを確かめた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| Form Parser がOCRのテキストに加えてキーと値のペア(エンティティとチェックボックス)、表、一般的なエンティティを抽出し、200を超える言語に対応すること。言語の一覧に日本語があること。ページ上限が同期15、バッチ100であること | Google Cloud: Processor list | 2026-10-06 |
| Form Parser が事前学習済みで追加の学習ができないこと。表の抽出が行や列をまたぐセルのない単純な表を対象とすること。ラテン文字以外の言語ではキーと値の読み取りの質が下がることがあること | Google Cloud: Form Parser | 2026-10-06 |
formFields が fieldName と fieldValue を持つこと。表が headerRows と bodyRows で返ること。text と textAnchor の関係と、信頼度が返ること | Google Cloud: Handle the processing response | 2026-10-06 |
| 対応形式が PDF、GIF、TIFF、JPEG、PNG、BMP、WebP などであること。スキャンは最低200dpiが望ましく300dpi以上が一般に最もよいこと | Google Cloud: Supported files | 2026-10-06 |
| 輸入品の消費税の課税標準が、CIF価格に個別消費税と関税の額を加えた合計額であること | 国税庁: No.6563 輸入取引 | 2026-10-06 |
| 仕入税額控除のために保存する請求書等に輸入許可書等が含まれ、課税標準の額と消費税・地方消費税の額などが記載されたものであること | 国税庁: No.6497 仕入税額控除のために保存する帳簿および請求書等の記載事項 | 2026-10-06 |
| 消費税率7.8%・地方消費税率2.2%(消費税額の22/78)であること | 税関: 1111 関税、消費税等の税額計算方法 | 2026-10-06 |
Interactions の response_format に JSON スキーマを渡して応答の形を固定でき、enum と required を使えること。値はアプリケーションで検証すべきこと | Gemini API: Structured outputs | 2026-10-06 |
| 有料サービスではプロンプトと応答を製品の改善に使わず、無料サービスでは改善に使われ人が読むことがあり、機密の情報を送らないよう求めていること | Gemini API 追加利用規約 | 2026-10-06 |
| Apps Script の1回の実行が6分までであること | Apps Script: Quotas for Google Services | 2026-10-06 |
関税分類や税率の当否、EPA の適用の可否は、通関業者と税関に確かめてください。 本記事は各製品と官公庁の公式ページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0528)についてのご相談はこちらから。
