請求書データをExcelに抽出する方法 — レイアウトを問わず
取引先ごとに請求書のレイアウトはバラバラで、まさにそれがスプレッドシートへの取り込みを面倒にしています。本記事では、請求書番号・各種日付・合計金額・明細行を、どんなレイアウトでも、取引先ごとにテンプレートを作ることなく、きれいなExcel・CSV・JSONに取り出す方法を解説します。
- tutorial
- invoices
毎月、取引先からの請求書で受信トレイが埋まっているなら、もうお決まりの 流れはご存じでしょう。PDFを1枚ずつ開き、請求書番号を探し、日付を探し、 合計を確認し、明細行をすべてコピーして、スプレッドシートに打ち込む。 そして次の取引先でまた同じことを繰り返す — その請求書は、前のものとは 似ても似つかないレイアウトです。
この「最後の部分」こそが本当の問題です。厄介なのは請求書の枚数ではなく、 2つとして同じ書式の取引先がないことです。合計の位置は毎回違い、日付の 書き方も違い、明細表の列構成も異なります。人間なら何も考えずに一枚ごと 適応できますが、ほとんどのソフトウェアにはそれができません。だからこそ、 多くのチームはあきらめて、すべてを手で打ち直してしまうのです。
本記事では、請求書データを、どんなレイアウトでも、取引先ごとに別々の テンプレートを作って保守することなく、きれいなExcel・CSV・JSONに取り出す 方法を順を追って説明します。
請求書が見た目以上に抽出しにくい理由
固定された1種類のテンプレートだけなら簡単です。問題は、現実にはまず 1種類で済むことがない点にあります。請求書がきれいに抽出できない理由を いくつか挙げてみましょう。
- 取引先ごとにレイアウトが違う。 請求書番号・請求先住所・合計金額を どこに置くか、業界標準は存在しません。ある取引先向けに組んだテンプレートは、 新しい取引先が初めて請求書を送ってきた瞬間に崩れます。
- 「その金額」はあいまい。 1枚の請求書には小計・税額・送料・割引前合計・ 最終的な支払金額が並びます — しかも多くの場合、すぐ隣に積み重なっています。 どれを指すか言わずに「金額」を抜こうとすれば、エンジンが推測したものが 返ってくるだけです。
- 明細行は値ではなくリスト。 1枚の請求書に請求書番号は1つですが、明細行は いくつもあり、それぞれに品名・数量・単価・行合計があります。ここを誤って 平坦化すると、きれいな行が欲しかったはずなのにぐちゃぐちゃになります。
- PDF・スキャン・写真。 PDFでメール送信された請求書はきれいなテキストです。 同じ請求書を受付でスキャンしたり、スマホで撮影したりすれば画像になります — そうなると抽出の前にOCRが必要になり、OCRはOCRなりの誤りを持ち込みます。
「請求書をただ抽出するだけ」とうたうツールは、これらすべてに答えを用意して いなければなりません。手作業のいら立ちは、1枚の請求書ではなく、この 「多様性」に潜んでいるのです。
よくあるアプローチと、それぞれが行き詰まるところ
唯一の正解となるツールはありません。結局は、取引先がどれだけ多いか、その レイアウトがどれだけ揃っているか次第です。
手入力。 セットアップ不要、注意深くやれば正確、そしてまったく スケールしません。月に数枚なら問題ありませんが、多数の取引先から何十枚も 処理するとなると、もはや論外です。
テンプレート式パーサー。 各項目がページ上のどこにあるかを一度だけ 定義します。すべての請求書がまったく同じ見た目であれば、速くて安上がりです。 しかし取引先ごとに書式が違う以上、結局は取引先ごとにテンプレートを作って 保守することになり、取引先がレイアウトを少し変えた日には作り直す羽目になります。 安定した3〜4社が相手ならこれで十分です。長く、しかも変化し続ける取引先 リストが相手だと、セットアップのコストが時間短縮分を食いつぶしてしまいます。
自然言語による抽出。 位置を指定する代わりに、ほしい項目をふだんの 言葉で記述すると、エンジンが一枚ごとのレイアウトに 適応します。これは「取引先ごとにバラバラ」という問題に正面から対応するもので、 スキャンや変わった書式にもはるかに寛容です。トレードオフは、出力を検証できる ツールを選びたい、という点です — 固定座標ではなく、モデルにページを読ませて 信頼することになるからです。
この最後のカテゴリーにZtractは位置しています。では、具体的に流れを見て いきましょう。
実践ガイド:Ztractで請求書をExcelに
これが全体の流れです — 請求書が1枚でも、十数社の取引先からの50枚入りの フォルダでも、やることは同じです。
1. プロジェクトを作成し、ほしいものを記述する
プロジェクトとは、関連する書類と、それらに適用するスキーマをまとめておく 入れ物にすぎません。請求書の場合、スキーマを定義する方法は3つあります。
-
出来合いの請求書スキーマから始めて調整する。 これが最速のスタートです — すでに請求書番号・各種日付・取引先情報・合計・ 明細行のことを把握しています。
-
項目をふだんの言葉で記述する。 たとえば、こんな具合です。
「各請求書について、請求書番号、発行日、取引先名、(税込・割引適用後の) 支払合計金額を抽出してください。さらに各明細行について、品名、数量、単価、 行合計を抽出してください。項目が存在しない場合は、推測せず空欄のままに してください。」
ここで2つの点に注目してください。_「(税込・割引適用後の)支払合計金額」と 書くことで、いくつもある金額のうちどれを指すのかをエンジンに正確に伝えて います。そして「各明細行について」_は明細行を繰り返しのリストとして扱う ことを示すため、すべてが1つのセルに詰め込まれるのではなく、きれいな行で 返ってきます。信頼できる請求書出力と、ぐちゃぐちゃな出力とを分けるものの 大半は、この2つの習慣にあります。
-
サンプルから推定する。 代表的な請求書を1枚投入すれば、Ztractがそこから スキーマを提案します。新しい取引先の請求書に思いがけない項目があったときに 便利です。
最大の利点は、同じスキーマが取引先をまたいで通用することです。あなたは データの「位置」ではなく、ほしい「データそのもの」を記述しているので — 見た ことのないレイアウトも、見慣れたものとまったく同じように処理されます。取引先 ごとのテンプレートは不要です。
2. 請求書をアップロードする
ファイルをドラッグ&ドロップするだけ — PDF、Word、Excel、スキャン、スマホの 写真まで、1ファイルあたり500 MBまで対応します。テキストベースのPDFも画像 ベースのスキャンもどちらも使えます。スキャンの場合は、先にOCRがかかるだけです。 ある月の請求書が複数の取引先からバラバラのファイルで届いても、まとめて アップロードすれば、同じスキーマがそのすべてに適用されます。
3. 確認と修正 — 実際に時間を節約してくれる部分
ここを多くの人が過小評価しています。請求書では、時間を食うのは抽出ではなく 確認のほうです。出力を信頼できなければ、結局はすべての請求書を スプレッドシートと突き合わせて読み直すことになり、何も節約できていません。
Ztractはまさにそこを軸に作られています。抽出されたすべての値は、原本上の 正確な位置に紐づいています。結果の中の数字をクリックすれば、請求書のどこから 来たのかがハイライトされます。この左右並べての表示こそが、確認を速くする ものです。すべての項目を再確認するのではなく、おかしく見えるものだけを ざっと探し — 誤って小計を拾った合計や、2行を1つにまとめてしまった明細行 など — それをワンクリックで直します。
そして当社が課金するのは抽出に対してだけなので、値を修正してもまったく 費用はかかりません。 後からの編集は無料で、抽出したページ数だけが パックから差し引かれ、修正作業は含まれません。
4. エクスポート
問題なさそうだと確認できたら、Excel・CSV・JSONにエクスポートします — 請求書1枚でも、プロジェクト全体を一括でも可能です。そこからは、買掛金管理の ワークフローへ、会計ソフトのインポートへ、あるいは数字が次に必要とされる どこへでも、そのまま流し込めます。
それでも人の目が必要なケース
ここがやっかいになる場面は、ないふりをするより正直にお伝えします。 注意すべき状況をいくつか挙げます。
- クレジットノートと返金。 クレジットノートは請求書のように見えますが、 金額は逆方向に動きます。マイナス金額をどう扱うかをスキーマで明示し、確認 ステップで符号を再チェックしてください。
- 複数通貨の取引先。 異なる通貨の取引先から仕入れている場合は、バッチ全体で 単一通貨だと決めてかからず、請求書ごとに通貨を独立した項目として取得して ください — そうしないと、合計「1,000」が何も意味しなくなります。
- ひどく劣化したスキャン。 FAX送信されてから再スキャンされた、印字の薄い 請求書は、OCRも含めて誰にとっても読みづらいものです。原本があなたの目で見て 判読できないなら、より入念に検証することを覚悟してください — きれいなスキャン 1枚は、後からのどんな修正にも勝ります。
本来対応できるはずのレイアウトで結果が間違っていたら、ぜひそれを見せて ください — サンプルを(必要なら匿名化したうえで) support@ztract.comまでメールいただければ、徹底的に 調べます。皆さんが送ってくださる書類こそが、エンジンを良くしていく源です。
取引先データについてひとこと
請求書には機微な商取引情報が含まれます — どこから仕入れているか、いくら 支払っているか、口座番号は何か。だからこそ、はっきりさせておく価値があります。 当社は、アップロードされた書類でモデルを学習させることはありません。 当社自身のエンジンでも、経由する第三者のLLMでもです。当社が利用する商用APIは、 送信されたデータでの学習を禁じており、当社はその取り決めに依拠しています。 請求書を削除すると、アクティブなストレージからは即座に消え、バックアップからも 14日以内に消えます。詳しい全体像は、当社のプライバシーポリシーと データ処理契約(DPA)に記載しています。
あなた自身の請求書で試してみる
これが自分のワークフローに合うかを知る一番速い方法は、本来なら手で打ち直す はずだった実際の請求書を何枚か使って実行してみることです — できれば数社の 異なる取引先のもので試すと、同じスキーマが異なるレイアウトをさばく様子が 分かります。新規アカウントには無料ページ30ページが付き、 クレジットカードは不要です — 1バッチを最後まで抽出して、合計をご自身で確かめる には十分な量です。
そして、もし請求書を大量に処理していて、何がうまくいき何がだめだったかについて 率直なフィードバックを共有してくださるなら、ご連絡ください — 当社は早期ユーザーを迎え入れながら、人々が実際に苦労している書類を中心に、 次に作るものをかたちづくっています。請求書は、そのリストのまさに最上位に あります。
請求書データ抽出について詳しくは、こちらのユースケースページを ご覧ください。