WeChat Payのスクリーンショット:
領収書ではありません。それでも金額と注文番号を取得
一見すると、WeChat Payのスクリーンショットからデータを抽出するのはうまくいかないように思えます。インボイスのレイアウトも、明細の内訳も、税務IDもありません。支払い確認画面は、スプレッドシートではなくチャットのスレッドにあるべきもののように見えます。WeChatの取引画面を見つめながら、これが支払いの証明になるのか疑問に思ったことがある人なら、その直感は半分正しいでしょう。それは領収書ではありません。中国の公式な税務インボイスである発票でもありません。発票には12桁のコード、8桁のシリアル番号、政府発行の印鑑があり、法的に認められた唯一の支出証明書類です。しかし、ほとんどの人が実際に必要とする2つの数字、つまり支払金額と取引注文番号は、スクリーンショットの中にしっかりと表示されています。そして、それらを1桁も手入力することなく抽出できます。
WeChat Payのスクリーンショットに実際に表示されるもの(そして表示されないもの)
レストランやタクシー、街角の店でWeChat Payで支払うと、アプリは取引確認画面を表示します。そこには加盟店名、取引金額(人民元)、支払い時刻、そして取引番号(WeChatのシステム内でこの支払いを特定する長い数字列)が表示されます。画面に表示されるのはこれだけです。明細項目、税金の内訳、加盟店の登録住所、公印などは一切ありません。
正式な領収書、つまり中国で言う発票(发票)には、これら欠けている情報がすべて必要です。WeChatのスクリーンショットと発票の違いは、単なるフォーマットの違いではありません。法的なカテゴリーの違いです。一方は支払い通知であり、もう一方は税務書類です。
両者の違いは以下の通りです。
| WeChatスクリーンショットに表示されるもの | 正式な発票に必要なもの |
|---|---|
| 加盟店名 | 売り手の登録事業者名 + 納税者識別番号 |
| 取引金額(人民元) | 課税対象額と付加価値税額(区分表示) |
| 支払い時刻 | 発行日 + 12桁の発票コード + 8桁の発票番号 |
| 取引番号/注文番号 | 売り手の住所、電話番号、銀行口座情報 |
| 支払い方法(残高またはカード) | 買い手の納税者番号(控除用の特別な付加価値税発票の場合) |
| — | 公式の赤い印(发票专用章)または同等の電子署名 |
ここで言いたいのは、WeChatのスクリーンショットが無価値だということではありません。スクリーンショットと発票は目的が異なるのです。中国での会社の経費精算のために税控除可能な領収書が必要なら、発票が必要です。スクリーンショットだけでは、経理部門や税務局は認めてくれません。しかし、多数のWeChat取引の中から自分の支出を追跡したり、請求された金額と実際に支払った金額を照合したり、自分の会計のために支払いの個人記録を残したい場合、スクリーンショットには必要なデータがすべて含まれています。問題は、それを効率的に取り出すことです。
「領収書ではない」=「抽出できない」ではない理由
WeChatのスクリーンショットは抽出できない、という直感はもっともなところから来ています。それは構造化された書類ではないからです。従来のOCRツールは、文書に予測可能なレイアウトがあることを前提に作られています。請求書にはヘッダーに販売元名、フッターに合計金額があり、OCRエンジンは既知の座標範囲内で文字を読み取ります。WeChatの支払い確認画面にはそのようなものは一切ありません。これはフラットなUI画面であり、金額、加盟店名、取引番号が通知スタイルのレイアウトに浮かんでいます。そのレイアウトは、WeChatのバージョン、スマートフォンの画面サイズ、QRコードをスキャンしたかスキャンされたかによって変わります。
従来のOCRがここで失敗するのは、テキストが読みにくいからではなく、「これらの数字のうちどれが金額なのか」という問いに、どこを見ればよいかを指示するテンプレートなしでは答えられないからです。
ここで重要なのはアプローチです。視覚言語モデル — 最新の抽出ツールの背後にあるAIの一種 — は、固定座標の文字をスキャンして文書を読み取りません。テキスト、レイアウト、要素間の空間的関係、それらを結びつけるコンテキストを、視覚入力全体として一度に処理します。VLMが「¥238.00」という文字を、支払い確認UIと同じ視覚フレーム内で — その上に加盟店名、下にタイムスタンプ、画面全体を囲むWeChat Payヘッダーとともに — 認識すると、この数字が取引金額であると判断します。商品価格でも、日付でも、電話番号でもありません。金額です。その区別は意味的であり、位置的なものではありません。
これが位置ベースの抽出から意味的抽出への転換です。テンプレートは「ページ上のどこに金額フィールドがあるか?」と問います。視覚モデルは「この画像の中で、支払われた金額を表す数字はどれか?」と問います。2つ目の問いは、どのレイアウトにも依存しないため、どのレイアウトでも機能します。WeChatのスクリーンショットでも、Venmoの確認画面でも、PayPalのチェックアウトページでも同じように機能します。なぜなら、「支払金額」という概念はすべてに存在し、各アプリでピクセルの配置が異なっていても変わらないからです。
ImageToTable.aiでは、この仕組みをカスタム列抽出と呼んでいます。「金額」や「注文番号」など、抽出したいフィールド名を入力するだけで、AIがスクリーンショット上のどこにでも対応する値を、その値がどこにあるかではなく、各フィールドが何を意味するかを理解することで特定します。入力した列名は出力スプレッドシートのヘッダーになります。スクリーンショットを1枚アップロードしても100枚アップロードしても、座標に依存しないため、抽出は同じように機能します。
重要な2つのフィールドを抽出する
WeChat Payのスクリーンショットを使った実際のワークフローは次のとおりです。画像をアップロードし、金額と注文番号の2つの列を定義します。AIがスクリーンショットをスキャンし、加盟店、支払総額、取引ID文字列を識別して、テーブルの1行に配置します。異なる加盟店、異なる金額、異なる日付の、10件の異なるWeChat Pay支払いのスクリーンショットをアップロードすると、1つのスプレッドシートに10行が作成され、各行に同じ2つの列が入力されます。
注文番号は、スクリーンショットを単なる記憶補助から、実際に後続処理で使用できるものに変えるフィールドであるため、詳しく見る価値があります。すべてのWeChat Pay取引は、固有の取引IDを生成します。これはアプリ内の支払詳細画面、および多くのバージョンでは確認通知に直接表示されます。この番号を使用して、アプリ内のWeChat取引履歴と支払いを相互参照したり、WeChat残高ではなくリンクされたカードで支払いが行われた場合に銀行取引明細書と照合したりできます。これは、スクリーンショットを特定の検証可能な取引に結び付けるアンカーであり、金額とともにスプレッドシートに抽出されることで、何かを確認するたびにフォトギャラリーと取引ログを行ったり来たりする必要がなくなります。
これら2つのフィールドがスプレッドシートにあれば、何ができるでしょうか?用途は明白で、特定のタイプの人に限定されるものではありません。おおよその見積もりではなく正確な数字で共通費用を分割したり、1か月分のWeChat支出を銀行取引明細書と照合したり、別途メールで届いた請求書に支払い記録を添付したり、単に出金とその日時の実行ログを保持したりできます。これを月に10件か20件処理する場合、スクリーンショットごとに2つのフィールドを手動で入力する手間が省けるため、時間の節約はすぐに積み重なります。さらに重要なのは、注文番号は長い数字の文字列であり、手入力で間違えやすいことです。
明確に述べておくべき実際の制限があります。スクリーンショットが切り取られていて画像に注文番号が表示されていない場合、AIはそれを抽出できません。見つけるデータがないからです。WeChatのバージョンによって支払詳細の表示が若干異なり、金額はすべての確認画面に確実に表示されますが、注文番号は一部のUIバージョンでは完全な文字列を表示するために詳細ビューをタップする必要がある場合があります。抽出は、提供するスクリーンショットの完全性に依存します。そして重要なのは、出力はスプレッドシートの行であり、税務書類ではありません。このプロセスによってWeChatのスクリーンショットが法的に有効な発票に変わることは決してありません。このプロセスが行うのは、すでに存在するデータを手動で転記する手間を省くことであり、これにより、実際に判断を必要とするワークフローの部分に時間を費やすことができるようになります。
WeChatのスクリーンショットから取引詳細を抽出するステップバイステップのチュートリアルをお探しの場合は(完全な確認画面の外観や適切なキャプチャ方法を含む)、この記事のハウツーバージョンであるWeChat Pay取引詳細ガイドをご覧ください。
よくある質問
WeChat Payのスクリーンショットは、経費精算において発票の代わりになりますか?
いいえ。中国において、税控除対象の事業経費精算で法的に認められている書類は発票のみです。WeChat Payのスクリーンショットは支払い確認であり、支払いを証明するものですが、発票に法的効力を与える税務情報、公印、政府発行のインボイス構造が欠けています。一部の企業では、発票と併せて支払いスクリーンショットを補足書類として認める場合があります。Covington & Burlingによる2024年の法令遵守ガイドでは、中国で従業員経費を管理する企業に対し、この慣行を特に推奨しています(出典)。しかし、スクリーンショット単体では発票の代わりにはなりません。税務コンプライアンスが目的ではない、個人の記録管理、照合、内部追跡においては、必要なデータを正確に提供します。
スクリーンショットがすべて中国語の場合でも、抽出は機能しますか?
はい。視覚言語モデルは、テキストが表示されている言語で処理します。実際には、テキストの視覚的な外観とその意味を同時に処理するため、漢字は別途OCRで翻訳するパイプラインを経由せず、ネイティブに処理されます。金額(¥記号付きの数値で表示)と取引番号(数字または英数字の文字列)は、言語に依存しないフィールドです。中国語で表示される可能性のある加盟店名も、そのまま抽出されます。これはデータフィールドであり、スプレッドシートで使用するために翻訳を必要とするものではありません。
この方法はAlipayや他の決済アプリでも使えますか?
はい。同じ原理(テンプレートマッチングではなく、意味抽出)が、あらゆる決済アプリのスクリーンショットに適用できます。Alipay、Venmo、Zelle、Cash App、PayPal、Revolut、Wiseはすべて、同じ特徴を持つ支払い確認画面を生成します。つまり、それらはテーブルでもレシートでもありませんが、すべてに金額と何らかの取引識別子が含まれています。これらのプラットフォームのいくつかについて、個別のガイドを作成しています。以下をご参照ください。Venmo、Zelle、Cash App、PayPal、Revolut、Wise。各ガイドでは、そのプラットフォームの確認画面の詳細を説明しています。基本的な仕組みはすべて同じです。必要なものを定義すれば、AIがソースの見た目に関係なく、それを見つけ出します。
WeChat Payのスクリーンショットは、この原理の極端な例です。構造化された文書とは最もかけ離れたもの、つまりメッセージングスーパーアプリの中に埋もれた支払い通知ですが、それでも重要な2つのフィールドは抽出可能です。この方法がここで機能するなら、どこでも機能します。それがポイントです。