POデータを在庫システムに接続
開発者不要で
AIがPDFからPOデータを抽出できることは、すでにご存じでしょう。しかし、その後の流れを説明する人はほとんどいません。つまり、IT部門の関与なしに、それらの項目をFishbowl、Zoho Inventory、Cin7、Katana、NetSuiteに取り込む方法です。課題はテクノロジーではなく、フォーマットにあります。各在庫システムは独自の列名、独自の項目順序、独自の参照キー形式を期待します。1つでも間違えると、インポートは静かに失敗します。正しく設定すれば、プロセスは1ステップで完了します。
重要なポイント
- 発注書(PO)インポートのたびに15〜30分が、列名の変更と日付の再フォーマットに費やされています。データ修正ではなく、サプライヤーが使用する言語と在庫システムが読み取る言語の間の変換にすぎません。
- 誰もが統合の問題と呼ぶギャップは、命名の不一致です。サプライヤーは「Order Ref」と書き、在庫システムは「PONum」と読み取ります。2人の人間が同じデータに独立して付けた名前を解決するAPIやウェブフックは存在しません。
- 抽出列名を在庫システムの期待する項目に合わせてください。「Order Ref」ではなく「PONum」、「Supplier」ではなく「VendorName」とすれば、抽出完了と同時にファイルはインポート可能になります。ImageToTable.aiは意味的な意味(サプライヤーが付けたラベルではなく、項目が表す内容)でデータを検出するため、30種類の異なるPOフォーマットが1つの一貫した出力に集約されます。
抽出したPOデータと在庫システムの間にある本当のギャップは、テクノロジーではなくフォーマット変換です
調達マネージャーに、AIツールがPOフィールドをスプレッドシートに抽出した後に何が起こるかを尋ねると、業界を問わず同じ答えが返ってきます。「ファイルを開き、在庫システムが期待する列名に合わせて半分の列をリネームし、日付形式を修正し、ベンダーの内部IDを調べ、システムが要求すればデータをヘッダーと明細行に分割し、CSVとして保存し直す」。これは統合ではありません。これは再フォーマットであり、インポートのたびに15〜30分を消費します。
このステップが存在するのは、POデータがサプライヤーの言語で届くからです。「Order Date」「Vendor」「Part #」— 一方、在庫システムは独自の言語を使います。「TranDate」「VendorName」「PartNumber」。この間の翻訳作業は、アップロードを担当する人が負っています。多くのチームはこれを避けられないものと捉えていますが、そうではありません。
この問題はフォーマットの多様性によってさらに複雑化しています。30社のサプライヤーから調達しているメーカーは、30種類のレイアウトのPOを受け取ります。AIによるPOフィールド抽出のようなツールを使ってデータをきれいなスプレッドシートに抽出した後でも、人間が読みやすい構造(サプライヤーごとにグループ化され、説明的な列ヘッダーが付いたもの)が、在庫システムのインポートエンジンが受け付ける形式と一致することはほとんどありません。修正には、ターゲットシステムが実際に何を期待しているかを理解することが必要であり、見た目が正しいかどうかだけではありません。
ダウンストリームのワークフローは変わりません — それがポイントです
チームが新しいデータ入力方法の採用に抵抗するとき、その理由がデータ入力そのものを好んでいるからであることはほとんどありません。むしろ、その周りに壊れやすくても機能するパイプラインを構築しており、変更があれば「受領は壊れないか? パトアウェイはまだ機能するか? サイクルカウントはどうなるのか?」と問いたくなるからです。適切に設定された抽出から在庫へのフローでは、その答えは「何も変わらない」です。
ワークフローで完全に変わらないものは次のとおりです:
- 受領 — 倉庫スタッフは、これまでどおり在庫システムでPOに対して入荷品を照合します。出荷が到着した時点でPOはすでにシステムに入っています。
- パトアウェイ — ビンロケーション、通路の割り当て、スキャンワークフローは影響を受けません。在庫レコードはインポートによって作成され、手動入力された場合と同じです。
- サイクルカウントと実地棚卸 — これらは実地の在庫とシステムレコードを比較します。レコードの発生源(手動入力かインポートか)は、カウントプロセスにまったく影響しません。
- サプライヤー照合 — APチームは、システム内のPOに対して請求書を照合します。POデータはそこにあります。照合ロジックは、データがどのようにそこに到達したかを気にしません。
- 再発注トリガー — 最小在庫レベル、リードタイム、再発注点はすべて、発生源に関係なくシステムデータに基づいて動作します。
変更されるのは、POデータがシステムに入る方法だけです。誰かがPDFを読んで在庫UIにフィールドを入力する(またはスプレッドシートにコピーしてからインポートする)代わりに、データは抽出 → 構造化出力 → インポートの流れで移動します。1つのステップが手動入力を置き換えます。ダウンストリームのすべてはそのまま維持されます。
新しいステップ(AI抽出→構造化出力)が手動データ入力を置き換えます。インポート以降のプロセスはすべて同じです。
抽出列はソース文書ではなく、対象システムに合わせて命名する
これは、再フォーマットのステップを完全に排除する統合テクニックです。仕入先の文書に合わせた列ヘッダー(「Order Ref」「Supplier」「Item Code」など)でPOデータを抽出してから手動で名前を変更する代わりに、在庫システムがインポート時に期待する列名に正確に合わせて抽出列を命名します。
これを可能にする仕組みが列名抽出です。「PONum」「VendorName」「PartNumber」など取得したいデータフィールドを指定すると、AIが各フィールドの意味を理解し、文書上の対応する値をどこからでも見つけ出します。仕入先がそれらのフィールドを何と呼ぶかは関係ありません。「Order Reference」「PO #」「Document No.」— すべて「PONum」にマッピングされます。AIはラベルではなく意味を読むからです。
これにより従来のワークフローが逆転します。通常は、まずデータを抽出し(自然に感じる列名を使用)、スプレッドシートにエクスポートし、在庫システムのインポートテンプレートと照合し、列名を変更し、日付を再フォーマットしてからインポートします。列名整合のアプローチでは、抽出とフォーマットが1回のパスに統合され、出力ファイルは最初から対象システム向けに構造化されています。
これが仕入先フォーマットを問わず機能する理由:仕入先AのPOでは注文番号を「PO Ref」と呼び、仕入先Bは「Order #」、仕入先Cは「Document No.」を使用します。3つすべてを列名「PONum」で抽出すると、AIはラベルに関係なく意味的に値を特定します。出力列は常に「PONum」— これはFishbowlのCSVインポートが期待するものと正確に一致します。仕入先ごとの名前変更、再フォーマット、テンプレート管理は不要です。
フィールドが欠落したPOが届く場合 — 仕入先が明細行ごとの納期を含めないが、在庫システムがそれを必須とする場合 — 抽出中に計算列を使用してギャップを埋めることができます。納期がPOヘッダーにのみ記載されている場合、計算列がすべての明細行に対してそれを導出できます。単価が欠落しているが明細合計と数量が存在する場合、単純な合計 ÷ 数量の計算で補完されます。抽出エンジンは、存在するデータの検出と、暗黙的に示されたデータの導出の両方を処理します。
複数のPOを一度に処理する場合(異なるサプライヤーからのPDFが50件など)、バッチ抽出では、すべてのファイルに対して同じ列名マッピングを一度に適用します。出力は、バッチ内に異なるサプライヤー形式がいくつ含まれていても、インポート可能な単一の構造化ファイルになります。
5つの在庫システムが実際にPOデータを受け取る方法 — 抽出出力が一致させるべき内容
各在庫システムには特定のインポート形式があります。違いは小さくても影響は大きく、1つの詳細を間違えるとインポート全体が失敗します。以下は、各システムの公式ドキュメントに基づく期待内容と、それに合わせた抽出出力の構成方法です。
Fishbowl Inventory
Fishbowlは北米の製造業および卸売流通業で広く使用されています。発注書のCSVインポートでは、2種類の行タイプによるフラグシステムを使用します:
- 行タイプ1 — POヘッダー:最初の列に「PO」というテキストが含まれます。フィールドにはPONum、Status(数値:10=見積依頼、15=承認待ち、20=発行済み、95=履歴)、VendorName(大文字小文字を区別せず、見つからない場合は自動作成)、RemitToName、ShipToName、CarrierName、および日付フィールドが含まれます。
- 行タイプ2 — 品目明細:最初の列に「Item」というテキストが含まれます。フィールドにはPOItemTypeID(数値:10=購入、20=返品、30=外注、40=出荷)、PartNumber(既存のFishbowl部品と一致する必要があります)、VendorPartNumber、PartQuantity、およびUnitCostが含まれます。
Fishbowl向けの抽出出力構造:
Flag,PONum,Status,VendorName,RemitToName,...
PO,PO-2026-0423,20,Acme Industrial,Acme Industrial,...
Item,10,PART-8842,VP8842-A,250,14.75,...
Item,10,PART-7721,VP7721-B,100,22.30,...重要な注意点:VendorNameは大文字小文字を区別しませんが、PartNumberは既存のFishbowlレコードと完全に一致する必要があります。サプライヤーがFishbowlと異なる部品番号を使用する場合は、代わりにVendorPartNumberを使用してマッピングしてください。ステータスコードは数値です。「20」は「Issued」というテキストではなく「発行済み」を意味します。
Zoho Inventory
Zoho Inventoryは、フィールドマッピング対応の標準CSVインポートを提供しています。Fishbowlのフラグ方式とは異なり、Zohoはフラットな構造を採用しており、各行が明細項目を表し、ヘッダーレベルのフィールドは複数行にわたって繰り返されます。
- Zohoのインポートページからサンプルインポートテンプレートをダウンロードしてください。期待される正確な列ヘッダーと順序が含まれています。
- インポート時に、CSVの列をZohoのフィールドに対話的にマッピングできます。つまり、列名がZohoのフィールド名と完全に一致する必要はなく、アップロード時に整合させることができます。
- 必須フィールドは、仕入先名、品目名、数量、単価です。仕入先名と品目名は、インポート前にZohoに存在している必要があります。
Zoho Inventory向け抽出出力構造:
Vendor Name,Item Name,Quantity,Rate,PONumber,Delivery Date
Acme Industrial,PART-8842,250,14.75,PO-2026-0423,2026-05-15
Acme Industrial,PART-7721,100,22.30,PO-2026-0423,2026-05-15重要な注意点:ZohoのフィールドマッピングUIは柔軟性を提供しますが、仕入先名と品目名は、スペースや句読点を含め、Zohoの既存レコードと一字一句一致している必要があります。対話型マッピングは列とフィールドの整合に役立つだけで、参照データの一致には対応していません。
Cin7 Core
Cin7 Core(旧DEAR Inventory)は、RecordTypeベースのCSV構造を採用しており、ほとんどのシステムより複雑です。各行の最初の列が、その行が含むデータの種類を決定します。公式インポートドキュメントをご参照ください:
- RecordTypeの値:header、invoice_lines、stock_received、additional_costs、payments、credit_notes、refunds、unstock。
- ヘッダー行(列名)は必須です。Cin7はヘッダー行をチェックしてCSVタイプを検証します。
- 1つのファイルに複数の購買タスクを含めることができます(インポートあたり最大100タスク)。
- 重要な制限:CSV経由で既存の購買明細行を編集することはできません。インポートは新規タスクの作成のみに対応しています。既存の明細行はAPIで管理する必要があります。
Cin7 Core向け抽出出力構造:
RecordType,Supplier,OrderNumber,OrderDate,...
header,Acme Industrial,PO-2026-0423,2026-05-10,...
invoice_lines,ITEM-8842,250,14.75,...
invoice_lines,ITEM-7721,100,22.30,...重要な注意点:Cin7の列ヘッダー形式は厳格です。購買タスクのインポートページからテンプレートをダウンロードし、その正確なヘッダーを使用してください。「RecordType」列は必須です。また、入庫済み明細行は下書き請求書に対してのみインポートできます。
Katana MRP
Katanaは、上記のCSV中心のシステムとは異なるアプローチを取ります。その主な統合方法はREST APIであり、CSVインポートではありません。これはより強力である一方、非技術系ユーザーにとっては最初はより難しく感じられるかもしれません:
- QuickBooks Online、Xero、Shopify、HubSpot、BigCommerce、WooCommerceとのネイティブ統合が存在します。
- APIは、製品/バリアント、顧客/仕入先、販売注文、発注書、在庫調整、在庫移動の作成をサポートしています。
- Webhookは、注文ライフサイクルの変更(作成、更新、削除)を外部システムに通知します。
- Katanaのパートナーディレクトリには、カスタムワークフローを構築できる統合パートナーが掲載されています。
API開発リソースを持たないチームにとっての現実的な道筋は、POデータをスプレッドシートに抽出し、Katanaの製品インポート(CSV対応)を使用して新しい材料を作成し、その後手動でPOを作成するか、事前構築済みのQuickBooks/Xero同期を使用することです。KatanaがQuickBooks Onlineに接続されている場合、QuickBooksで作成されたPOは自動的にKatanaに反映されます。
NetSuite
NetSuiteの発注書のCSVインポートは、ここで取り上げる5つのシステムの中で構造的に最も要求が厳しいものです。主な要件は次のとおりです:
- 2つの別々のファイル — 1つはPOヘッダー用、もう1つは明細行用です。これらは、両方のファイルに存在し、完全に一致する必要がある外部IDフィールドによってリンクされます。
- 仕入先参照は内部IDまたは外部IDを使用する必要があります — 仕入先名の文字列は検証に失敗します。インポートファイルを作成する前に、NetSuiteの仕入先マスタから数値の仕入先IDを調べる必要があります。
- 日付形式:先頭にゼロを含まないM/D/YYYY(03/05/2026ではなく3/5/2026)。
- 単一ファイル形式では、同じPO番号がヘッダーとそのすべての明細行に繰り返し表示されます。2ファイル形式では、外部IDがそれらをリンクします。
- 直送POには、異なるカスタムフォームを使用した別のインポートジョブが必要です。
NetSuite用の抽出出力構造:
ファイル1 — ヘッダー:
External ID,Order #,Vendor,Vendor Internal ID,Tran Date
EXT-0423-001,PO-2026-0423,Acme Industrial,8842,3/5/2026ファイル2 — 明細行:
External ID,Item,Item Internal ID,Quantity,Rate,Amount
EXT-0423-001,PART-8842,4421,250,14.75,3687.50
EXT-0423-001,PART-7721,3398,100,22.30,2230.00重要な注意点:インポートの順序が重要です。 最初にヘッダーをインポートし、その後に明細行をインポートする必要があります。ファイル間で外部IDが一致しない場合、明細行は孤立します。明細行ファイルの1つの不良行が、注文全体を拒否する可能性があります。また、抽出とインポートの間にExcelでCSVを開くと、先頭のゼロ、日付形式、エンコーディングが静かに破損する可能性があります — これを防ぐ方法については、ERPインポートを壊す6つのパターンを参照してください。
5つのシステムすべてに共通するパターン: インポート形式の要件は、常に元の文書よりも厳格です。仕入先のPOには、NetSuiteの内部IDやFishbowlの数値ステータスコードが含まれることはありません。これらのシステム固有フィールドを追加する作業は避けられませんが、抽出後ではなく抽出中に行うことができます。抽出テンプレートに「VendorInternalID」列を含め、ルックアップテーブル(または計算列)から値を入力するようにすれば、そのフィールドはファイルが保存される前にインポートの準備が整います。
Google Sheetsを橋渡しに — CSVファイルを完全に避けたいチーム向け
すべてのチームがCSVファイルを管理したいわけではありません。特に、複数の担当者が処理済みの内容と待機中の内容を把握する必要がある場合はなおさらです。小規模な調達チーム(週に20〜50件のPOを処理)の場合、Google Sheetsとノーコード統合プラットフォームを組み合わせることで、CSVインポートのステップを自動化されたパイプラインに置き換えることができます。
この設定は3つのレイヤーで機能します:
- Google Sheetsへの抽出。抽出したデータをCSVとしてダウンロードする代わりに、Google Sheetsに直接送信します。ImageToTable.aiはGoogle Sheetsアドオンを提供しています。これはSheets内のサイドバーで、PDFや画像をアップロードし、抽出したい列名を指定すると、構造化されたデータがスプレッドシートに直接追加されます。ファイルのダウンロードも、ステップ間の形式変換も不要です。
- フォーマットレイヤー。同じシート内の専用タブに参照ルックアップテーブル(仕入先内部ID、品目番号マッピング、ステータスコード変換)を保持します。シンプルな
VLOOKUPまたはINDEX/MATCH数式を使用して、システム固有の値を抽出出力に取り込みます。抽出でベンダー列に「Acme Industrial」が生成された場合、次の列の数式はNetSuiteベンダーID「8842」を返します。このルックアップタブはインポートごとではなく、一度だけメンテナンスすれば済みます。 - 在庫システムへのプッシュ。ZapierやMakeなどのプラットフォームがGoogle Sheetsを在庫システムに接続します。Zapが新しい行を監視し、必要に応じてデータを変換し、在庫システムに対応するPOレコードを作成します。直接のコネクタがないシステムの場合、SkyviaがスケジュールされたジョブとしてGoogle Sheetsから在庫へのCSVインポートを処理します。
このアプローチはセットアップに時間がかかりますが(数式とZapの設定)、ファイルのダウンロード、開く、確認、アップロードという反復的な手動作業を排除します。週に30件のPOを処理するチームの場合、月に約5〜7時間のファイル処理時間を節約できます — 初期設定の2時間と引き換えにです。
トレードオフは現実に存在します。Google Sheets経由の方法は依存関係(Zapが稼働し続けること、数式が正しく保たれること)を追加する代わりに、可視性(チームメンバーなら誰でも処理済みの内容をシートで確認できる)を得られます。購買を1人で担当するチームには、直接CSVインポートの方法がよりシンプルです。複数の担当者がPOデータに触れるチームには、Google Sheetsブリッジによる共有可視性が、追加の可動部分に見合う価値があります。
60秒でできるインポート前チェックリスト
直接CSVインポートでもGoogle Sheetsブリッジでも、どちらの方法を選んでも、以下の4点が間違っているとインポートは静かに失敗します。アップロードのたびに確認してください:
| 確認項目 | 問題が起きるケース | 確認方法 |
|---|---|---|
| 日付形式 | NetSuiteは先頭ゼロなしのM/D/YYYY形式(3/5/2026)を想定しています。Fishbowlは複数の形式を受け付けますが、システムのロケール設定が既定値になります。米国設定のシステムで欧州式のDD/MM/YYYY形式の日付を使うと、月と日が静かに入れ替わります。 | プレーンテキストエディタ(Excelではなくメモ帳など)でファイルを開き、日付の行を1つ確認します。Excelは日付を自動的に再フォーマットし、実際に保存されている値を隠してしまいます。 |
| 参照キーの種類 | NetSuiteは仕入先名ではなく、仕入先の内部ID(数値)を要求します。FishbowlはVendorNameを受け付けますが、大文字小文字を区別しない完全一致のみ対応 — "acme industrial"は機能しますが、"Acme Industrial Corp"は機能しません。Zoho Inventoryは完全一致の文字列マッチングを要求します。 | システムがどのキー種類を使用するか確認してください:内部ID(数値)、外部ID(自社の参照コード)、または表示名(完全一致の文字列)。システムのインポート用ドキュメントを確認してください — 一般的なヘルプではなく、CSVインポートガイドを具体的に参照してください。 |
| 先頭ゼロ | CSVをExcelで開くと、品目番号の先頭ゼロが削除されます。品番「001234」が「1234」になり、在庫システムに存在しない番号になります。インポートは「item not found」で失敗します。 | 品番がゼロで始まる場合は、抽出からインポートまでの間にCSVをExcelで開かないでください。確認が必要な場合は、プレーンテキストエディタまたはGoogle Sheets(書式をより適切に保持します)を使用してください。 |
| 必須フィールドの存在 | すべてのシステムには必須フィールドがあります。Fishbowl:Flag、PONum、Status、VendorName、RemitToName。NetSuite:External ID(またはInternal ID)、Vendor(IDで指定)、Tran Date。Cin7:RecordType。これらのいずれかが欠けていると、インポートはファイル内のすべての行を拒否します。 | システムごとの必須フィールドをまとめた1ページのチートシートを用意してください。仕入先のPOに必須フィールドが含まれていない場合(例:明細ごとの納期がない場合)、計算列を使用して導出するか、抽出時にデフォルト値を設定してください。 |
もう1つ知っておくべき静かな失敗があります:エンコーディング破損です。特殊文字を含む仕入先名(品目説明の™記号、欧州の仕入先名のアクセント付き母音など)は、抽出時には無傷でも、CSV保存時にエンコーディングがUTF-8からASCIIに変わると破損する可能性があります。これは、破損した文字がスプレッドシートのプレビューでは正しく見えることがあり、インポートエンジンの文字列比較で失敗するため、発見が難しい問題です。修正は簡単です:常にUTF-8 CSVとして保存し、ツールにエンコーディングオプションがある場合は、それ以外を選択しないでください。
よくある質問
サプライヤーがPOを送る方法を変更する必要はありますか?
いいえ。列名抽出はフォーマットに関係なくフィールドの意味を読み取るため、サプライヤー側の変更は不要です。サプライヤーがPDF、メール添付、ポータルのスクリーンショット、スキャン画像のいずれで送信しても、AIは指定したデータを特定します。サプライヤーに標準テンプレートやポータル、新しい行動を採用していただく必要はありません。これがテンプレートベースの抽出(フォーマットの違いで破綻する)とセマンティック抽出(破綻しない)の本質的なアーキテクチャ上の違いです。
ここに挙げた5つの在庫システム以外を使っている場合はどうすればよいですか?
列名整合の原則は、CSVインポートに対応しているあらゆるシステムで機能します。お使いのシステムのインポートドキュメント(「[システム名] CSVインポート」または「[システム名] 発注書インポート」で検索)で期待される列ヘッダーを確認し、それを抽出列名として使用してください。マッピングの手順は同じで、フィールド名が異なるだけです。APIベースのインポート(Katanaなど)を使用していて開発者アクセスがある場合は、APIドキュメントにJSONフィールド名が記載されているので、CSVヘッダーの代わりにそれを抽出列名として使用してください。
在庫システムが必要とするフィールドがすべて揃っていないPOはどう処理すればよいですか?
3つの方法を、手間の少ない順にご紹介します。1つ目:抽出時に計算列を使用します。システムが明細ごとに納期を必要とするが、POではヘッダーにしか記載されていない場合、計算列でヘッダー値を全明細に割り当てられます。単価がなくても明細合計と数量があれば、合計 ÷ 数量で補えます。2つ目:POごとに変わらない値(支払条件、配送方法、デフォルト倉庫の場所など)の小さなルックアップテーブルを用意し、抽出後に出力へマージします。3つ目:在庫システムのインポートで特定フィールドにデフォルト値を受け入れるよう設定します(NetSuiteのImport Assistantはフィールドマッピングページでこれをサポートしています)。
30社のサプライヤーから30種類の形式でPOを処理する場合でも機能しますか?
はい、機能します。こここそ、列名の整合アプローチがテンプレート方式と比べて最も時間を節約できる点です。テンプレートベースのインポートでは、30社のサプライヤー形式に対応するには30個のインポートテンプレートが必要で、いずれかのサプライヤーが形式を変更するたびにテンプレートの更新が必要です。セマンティック抽出では、列名を一度定義するだけで(在庫システムの期待するフィールドに合わせて)、AIがサプライヤー側の形式の違いを処理します。バッチ処理を使えば、30件のPOを一度に処理できます。抽出は各ファイルに対して独立して実行され、同じ列名マッピングが適用され、結果は在庫システムのインポート用に構成された単一の出力ファイルに統合されます。
抽出でフィールドを誤った場合はどうなりますか?
インポートは失敗します。そして、それは誤ったデータを黙ってインポートするより実際には良いことです。ほとんどの在庫システムは、ファイルを受け入れる前に参照キーを検証します。ベンダー名や部品番号が既存のレコードと一致しない場合、インポートはその行を拒否し、エラーを生成します。これにより、データがシステムに入る前に抽出を修正する機会が得られます。参照データに対して「最善の推測」で一致させる在庫システムはありません。キーが完全に一致するか、行が拒否されるかのどちらかです。一般的な抽出エラーのパターンとインポート前にそれらを検出する方法については、ERPインポート失敗の6つのカテゴリとその根本的な修正方法をご覧ください。
抽出から在庫システムまでの1ステップ
「POデータが抽出された」状態から「在庫システムに入った」状態までのギャップは、ITプロジェクトを必要とする技術的な問題ではありません。これは、列名マップを必要とする形式整合の問題です。在庫システムが期待するもの(正確なフィールド名、参照キーの種類、日付形式)がわかれば、抽出をその構造に直接出力するように設定できます。手動での再フォーマット作業は不要になります。
POをExcelに処理してから在庫システムに打ち直している場合、列名の整合アプローチは両方のステップを1回の処理に置き換えます。システムのインポート形式に直接抽出して、アップロードするだけです。