CT-e運送書類300件、月次コスト台帳に一元化

南東部・中西部で出荷する中規模メーカーなら、月300件のCT-e書類を処理する物流アナリストがいるのが一般的です。その担当者は、各DACTEの印刷物やPDFを開き、キャリアのCNPJ、サービス料金(valor do serviço)、総重量、ICMS額、発地・着地の市区町村を確認し、それら12項目のデータをスプレッドシートの行に入力していきます。経験豊富なアナリストでも1件あたり90秒かかるため、月に7.5時間が純粋なデータ入力に費やされます。さらに、タイプミスの発見、税率の検証、請求ポータルではなくメールで届いた添付ファイルの探索、対応する仕入請求書との運賃照合まで含めると、月次の運賃コスト表は誰も担当したがらない2〜3日がかりの作業になります。しかし、それは避けられるはずです。

手入力をやめよう — AIに読み取らせるだけ
画像やPDFをアップロード — 10秒で構造化データに
今すぐ試す →
ブログのヒーロー画像。タイトル「ブラジルのCT-e運送書類300件、月次コスト台帳に一元化」と、その下に3つの太字のフラットアイコン:50社のキャリア用の列セット、抽出時の計算列、ICMS差異のフラグ表示。

重要ポイント

  1. 月300件のCT-e書類を手入力するアナリストが作るスプレッドシートは、一見完成しているように見えても、列の欠落や記憶による推定値など、見えないギャップが潜んでいます。
  2. バッチ抽出では、列セットを一度定義して全300件に適用するため、すべての行が同じ構造になることが保証されます — ブレが生じません。
  3. 本当の効果は計算列にあります — 1kgあたりの運賃、実効ICMS税率など — 抽出時に計算されるため、後から数式を入力する必要は一切ありません。

ブラジル貨物コスト追跡におけるバッチ処理のギャップ

バッチ処理と手動入力には、速度以外に見過ごされがちな違いがあります。それは一貫性です。アナリストが300件のCT-e文書を1件ずつ手入力する場合、入力する列のセットは作業の進行に伴って変化します。最初の50件には「備考」列があっても、時間がかかりすぎるため120件目には削除されます。ICMS税率は最初のバッチでは正確に記録されますが、最後の方では記憶を頼りに推定されます。その結果、一部の行にしかデータがないスプレッドシートができあがり、アナリスト自身も後になってどの行が完全でどの行が不完全かを説明できなくなります。

バッチ抽出 — 300件すべてのDACTE印刷物を同じ列定義で処理する — ことで、出力のすべての行が同一のデータ構造を持つことが保証されます。同じ運送業者CNPJ、サービス料金、ICMS額、総重量、ルートフィールドが、バッチ内のすべての文書から抽出されます。最初に一度定義した列セットは、すべての文書に適用されます。手動とバッチの違いは、節約できる時間ではありません。手動入力の出力は、すべてを再入力しなければ測定できない方法で信頼性が損なわれているという点です。

各CT-eに含まれる内容と、ほとんどの物流チームがDACTE印刷物を情報源として使用する理由の詳細については、CT-eデータ抽出をExcelにエクスポートするガイドをご覧ください。このガイドでは、文書上のすべての主要フィールドを網羅しています。本記事は、その基本的な抽出ワークフローを基に、バッチ規模の処理における特定の課題に対処します。

バッチ処理の違い: 手動入力では一見完全に見えるものの、隠れたギャップがあるスプレッドシートが生成されます。バッチ抽出では、すべての行が構造的に同一であり、フィールドが見つからなかった場合もすぐにわかるスプレッドシートが生成されます。

適切なCT-e貨物コスト元帳に本当に必要なもの

バッチワークフローを構築する前に、列セットは貨物コスト元帳が果たす3つの機能をサポートする必要があります。すなわち、出荷ごとの支払額の追跡、運送業者間およびルート間の料金比較、そして入荷貨物に関する税額控除回収に必要なICMSデータの提供です。これらの3つの目的は、データ構造に異なる要件を課します。

最小限の実用的なCT-eコスト元帳には、以下のフィールドグループが含まれます。

フィールドグループ列原価台帳における目的
文書識別子アクセスキー(Chave de Acesso、44桁)、CT-e番号、シリーズ、発行日NF-e、ERP転記、SEFAZ検証と連携するための主キー
当事者識別子運送業者のCNPJと名称、送り主のCNPJ、荷受人(consignee)のCNPJ運送業者、仕入先、または受入事業部門ごとの原価配分
運送費用サービス料金(Valor do Serviço / vTPrest)、受取額(Valor a Receber / vRec)、控除内訳主要な原価数値、源泉控除後の正味原価、運送業者への支払い検証
税務詳細ICMS課税標準(Base de Cálculo)、ICMS税率(alíquota)、ICMS金額入荷運送に係るICMS税額控除の回収、SPED EFDへの準拠
貨物詳細総重量(kg)、貨物の種類(natureza da carga)、貨物価値(利用可能な場合)kg単価のベンチマーク、ルート別収益性分析
ルート出発地の市区町村(IBGEコード)、目的地の市区町村(IBGEコード)、CFOPルート別コスト比較、モーダル分析、税務分類

これらの15~18列が運送費追跡システムの基盤を形成し、運送業者の業績評価、ルート最適化、税務コンプライアンスを支援します。具体的な列構成は企業によって異なります。入荷運送に注力する製造業者は、税額控除回収のために送り主のCNPJとICMS税率を優先する一方、流通企業は事業部門別の原価配分のために荷受人(consignee)のCNPJとCFOPを重視するでしょう。

主要な設計上の判断は、抽出後にExcelの数式として追加するのではなく、抽出時に計算列を含めることです。AIが抽出中に計算を実行するため(例:運送費1kgあたり(Valor do Serviço ÷ Peso Bruto))、計算値は列として出力スプレッドシートに直接配置され、アナリストが数式列を追加して300行にコピーする手順が不要になります。直接抽出、計算列、推論列の違いについては、各モードがバッチワークフローにどのように適合するかを説明した計算列ガイドをご参照ください。

バッチワークフローの構築:DACTEから月次スプレッドシートまで

3ステップのバッチワークフロー図:当月のDACTEファイルをアップロード、50社の運送会社レイアウトに対応する列を一度だけ定義、CT-eごとに1行のExcelファイルを1つエクスポート。

CT-e貨物明細書のバッチワークフローは、書類ごとの手入力サイクルをバッチ単位の処理に置き換える3つのステージで構成されています。

1
当月分のDACTEファイルをすべてアップロード

当月分のCT-e DACTE PDFをすべて収集します(運送会社のメール、請求ポータル、スキャンした印刷物など)。これらをまとめて1つのバッチとしてアップロードします。PDF、JPG、PNG、WebPに対応しています。中規模メーカーの月間ファイル数は通常200〜400件で、バッチアップロードで一度に処理できます。

2
コスト台帳の列セットを一度だけ定義

必要な貨物コスト項目に対応する列名を入力します。これらが出力スプレッドシートのヘッダーになります。抽出はテンプレート不要のため、AIはレイアウト上の位置ではなく意味的な内容を読み取ります。つまり、同じ列定義がすべての運送会社のDACTEレイアウトで機能します。JSLのCT-eとBraspressのCT-eではICMSデータのページ上の位置が異なりますが、同じ列セットで読み取られます。最初のバッチ後に列セットをテンプレートとして保存すれば、以降の月は再設定なしで同じテンプレートを使用できます。

3
処理とエクスポート — 1つのExcelファイルが300行の手入力を置き換え

AIがバッチ内のすべての書類を処理し、CT-eごとに1行の単一のExcelファイルを生成します。列ヘッダーは定義した内容と完全に一致します。ダウンロードしたファイルは、ERPインポート(多くのシステムがXLSXをフラットファイルとして受け入れます)、運送会社コストのピボット分析、NF-eの購入金額との照合にすぐに使用できます。

この3つのステップにより、数日かかっていた手入力作業が数分で完了するプロセスに変わります。ボトルネックは「どれだけ速く入力できるか」から「どれだけ速く運送会社からDACTEファイルを収集できるか」に移ります。これはバッチ収集ワークフローで対応できるプロセスですが、抽出ステップの範囲外です。

バッチ処理における運送コスト分析の計算列

バッチワークフローの真の価値は、書類に記載されている内容を速く抽出することではなく、計算や推論を必要とする列を追加できることにあります。手動入力では、行ごとに計算式のステップが必要となるため、こうした作業は規模に応じて拡張できません。

基本的なCT-e抽出を意思決定支援ツールに変える3つの計算列:

計算列名ロジック活用できること
1kgあたりの運送費(サービス料金 ÷ 総重量)vTPrestを総重量で割るルート別コストベンチマーク — どの運送会社がどのルートで最も高いR$/kgを請求しているかを把握
実効ICMS率(vICMS ÷ 課税標準)実際のICMS額を課税標準で割る税率の検証 — 適用税率が想定される州間税率(7%または12%)から逸脱している書類を検出
支払い差額(受取額 - サービス料金)vTPrestからvRecを差し引く源泉徴収の分析 — 税控除(IRRF、PIS、COFINS、CSLL)を表示し、予期しない差額を検出
計算列を示す3つの横並びカード。各カードには色付きのヘッダーバーがあり、1kgあたりの運送費(vTPrest÷総重量)、実効ICMS率(vICMS÷課税標準)、支払い差額(vTPrest−vRec)を表示。

各計算列は抽出中に実行されます。AIがDACTEからソースフィールドを読み取り、計算を実行し、結果を出力スプレッドシートに書き込みます。300件のバッチでは、抽出後の計算式作業なしで、各計算列に300件の値が生成されます。運送会社との契約を管理するチームにとって、1kgあたりの運送費の列だけで、数週間分の手動データ収集を置き換えることができます。

推論列 — カスタム列抽出の3つ目のモード — は、バッチ出力をさらに充実させることができます。例えば、ルート種別(選択肢:域内 / 域外)という列は、AIに出発地と到着地の市区町村を評価してルートを分類するよう指示し、手動プロセスではバッチ内のすべての書類に適用する時間がないセグメンテーションの次元を追加します。

バッチ抽出のポイント: バッチ処理の価値は、人間より速く入力できることではありません。毎回、すべての書類に同じロジックを適用できることです。そして計算列は、労力を追加することなくそのロジックを拡張します。

単一バッチでキャリア別レイアウトの差異に対応する方法

ブラジルの道路貨物輸送業界は非常に細分化されています。ANTT(国家陸上輸送庁)によると、RNTRCシステムに登録されている運送業者は65万社を超え、JSLやSequoiaのような上場大手物流企業から、トラックを1台だけ所有する個人事業主運送業者(transportador autônomo)まで多岐にわたります。各運送業者のDACTEレイアウトはSEFAZテンプレートのバリエーションですが、その差異は十分に大きく、テンプレートベースのOCRシステムでは運送業者ごとに個別の設定が必要になります。

50の運送業者レイアウトに対するテンプレートOCRとテンプレート不要抽出の2列比較。テンプレートOCR側には赤い×印、テンプレート不要側には緑のチェックマークが付いています。

この細分化こそが、CT-e貨物文書のバッチ抽出がこれまで現実的ではなかった主な理由です。大手メーカーの入荷貨物からの300件の文書バッチには、30〜50社の異なる運送業者からのCT-e文書が含まれる場合があります。文字位置のマッチングでデータを抽出する従来のOCRは、学習していないレイアウトに遭遇すると機能しなくなります。そして、50社分のレイアウトを学習させることは、貨物アナリストにとって現実的なワークフローではありません。

テンプレート不要の抽出は、AIが意味的に読み取るため、この問題を解決します。JSLのDACTEのサイドバーテーブルに印刷された「Valor do Serviço」も、BraspressのDACTEのフッター行に印刷された「Valor do Serviço」も、同じ列定義によって特定されます。モデルは、ブラジルの貨物文書上のどの位置にあっても「サービス料金」がどのようなものかを理解しているからです。単一のバッチで、同じ列定義ファイルを使用して50社の運送業者からのCT-e文書を処理でき、出力されるスプレッドシートにはすべての文書の完全な行が含まれます。システムが以前に見たことのあるレイアウトの運送業者の文書だけではありません。

貨物アナリストにとっての実際的な意味合いは、月間のすべてのDACTEファイルを運送業者に関係なく収集し、まとめてアップロードするだけです。バッチワークフローでは、運送業者ごとに仕分けしたり、サブバッチを作成したり、実行間で設定を変更したりする必要はありません。

着地原価計算のためのCT-e費用とNF-e購入額のバッチ突合

運送費のみを追跡する月次原価台帳は、運送業者のパフォーマンスデータを提供します。各CT-e運送料金を対応するNF-e商品価額に突合する台帳は、調達チームが利益率分析に実際に必要とする単位あたりの着地原価を提供します。

突合の仕組みは単一ドキュメントのワークフローと同じです。各CT-eは、それが運送するNF-eのアクセスキー(Chave de Acesso)を参照します(混載貨物の場合は複数のNF-eアクセスキー)。バッチ内の各CT-eから参照先のNF-eアクセスキーを抽出することで、運送費スプレッドシートに、NF-e購入台帳への外部キーとして機能する列が追加されます。2つのスプレッドシート間でXLOOKUPを使用すると、各出荷について、NF-eからの商品価額、CT-eからの運送費、および計算された着地原価を表示する結合ビューが作成されます。

この突合は、CT-eバッチとNF-eバッチの両方が同じ抽出ワークフローで処理される場合に、さらに強力になります。NF-eデータ抽出ガイドでは、NF-e購入ドキュメントの列定義について説明しており、2つの出力スプレッドシート(商品価額用と運送費用用)がアクセスキー列でマージされます。以前は丸一日かかっていた四半期ごとの着地原価分析が、数分で完了するスプレッドシートのマージ作業になります。

CT-eがNF-e(商品請求書)やMDF-e(貨物マニフェスト)とともにブラジルの電子ドキュメントエコシステムにどのように位置づけられるかについては、ブラジル電子ドキュメントハブガイドをご覧ください。このガイドでは、すべてのブラジル税務ドキュメントに共通するSEFAZ認可フローについて説明しています。

よくある質問

1回のバッチで処理できるCT-eドキュメントの数に制限はありますか?

バッチあたりのファイル数に制限はありません。実質的な制約は、ご利用のプランの総ページ許容量です。1つのCT-e DACTEは1~2ページです。Proプラン(月1,500ページ)の場合、500件のCT-eドキュメント(各1ページ)を処理するチームは、月間容量の3分の1を使用し、他のドキュメントタイプのための余裕が残ります。バッチ出力は、ボリュームに関係なく、すべてのドキュメントを1つのExcelファイルに結合します。

運送会社ごとに異なるDACTEレイアウトのテンプレートは必要ですか?

いいえ。テンプレート不要の抽出は、位置ではなく意味に基づいて読み取ります。JSLのDACTE(サイドバーに表示される場合があります)とBraspressのDACTE(フッターの表に表示される場合があります)のICMSフィールドは、AIが運送書類上の「ICMS」を理解するため、同じ列定義で特定されます。50社の異なる運送会社が混在するバッチでも、1つの列定義ファイルで対応できます。

計算列を使ってバッチ全体のICMS税率を検証できますか?

はい、これは計算列の最も価値のある用途の一つです。実効ICMS税率(vICMS ÷ 課税標準)を計算する計算列は、バッチ内のすべての書類で期待される州間税率(7%または12%)と一致する値を生成します。計算された税率が期待値から乖離している行は、Excelの簡単な条件付き書式ルールによって出力で強調表示され、300行の検証作業が、強調表示された例外のスポットチェックに変わります。CT-e ICMS計算エラーガイドでは、具体的な税率ルールと、各タイプの乖離が示す内容について説明しています。

一部のDACTE PDFが横向きにスキャンされていたり、解像度が低い場合はどうなりますか?

AIビジョンモデルは、向きや適度な解像度のばらつきに対応します。200 DPIで15度傾いたスキャンDACTEでも正しく処理されます。モデルはテキストの向きを検出し、従来のOCRのように傾き補正の前処理を必要とせず、文脈に基づいて読み取ります。非常に低い解像度(150 DPI未満)や深刻な照明アーティファクトがある場合、フィールドレベルの精度は低下する可能性がありますが、再スキャンを必要とせず、レビュー可能な部分的な結果が抽出されます。

バッチ抽出を使って、月ごとの運送費を比較するにはどうすればよいですか?

各月のバッチを個別のExcelファイルにエクスポートし、それらの月次ファイルを1つの年度累計スプレッドシートに追加します。毎月同じ列定義を使用するため、ファイルの列構造は同一であり、行を追加することで積み重ねることができます。「1kgあたりの運送費」などの計算列が各月のエクスポートに組み込まれているため、月次の料金トレンド分析には、積み重ねたデータセットに対するピボットテーブルだけで十分です。月ごとの数式調整は不要です。

運送チームを手動入力からバッチ抽出に移行するにはどうすればよいですか?

まず、1か月間の並行運用から始めてください。その月のCT-e書類を、手動(既存のワークフロー)とバッチ抽出(新しいワークフロー)の両方で処理します。2つの出力を比較すると、抽出出力の方がタイプミスが少なく、列構造がより一貫しており、書類セットを完全にカバーしていることがわかります。この並行運用により、翌月からチームを抽出のみに切り替えるための具体的な根拠が得られます。ほとんどのチームでは、出力への信頼を構築するために1サイクルの移行期間が必要であり、それを維持するために追加のサイクルは必要ありません。

📮 contact email: [email protected]