銀行SMSアラートから
金額と加盟店名を取得する
普段の買い物が終わる頃には、スマホに銀行からのSMSアラートが何件か溜まっているものです。コーヒー1杯、ランチ代、定期購読料、ガソリン代。それぞれに、家計簿に本当に必要な情報が2つだけ含まれています。それが取引金額と加盟店名です。しかし、Chaseの書き方、Bank of Americaの書き方、Wells Fargoの書き方、American Expressの書き方はそれぞれ異なります。送信元によって、文中での金額の位置も変わります。これを家計簿アプリに手動で1件ずつコピーするのに、1メッセージあたり10~15秒かかります。1週間分の取引をやると、その時間は積み重なり、毎月繰り返す面倒な作業になります。
重要なポイント
- 米国の4つの銀行が、AMAZON.COMでの同じ42.50ドルの購入を通知する場合でも、金額の位置はChaseでは単語位置3、Wells Fargoでは位置6、Amexでは位置2と異なる。
- Chaseで動作する位置ベースのツールは、Bank of Americaでは静かに失敗する。そのツールは、他行のメッセージテンプレートには存在しない文のスロットに金額があることを前提としているからだ。
- ビジュアルAIはメッセージを取引として読み取る。大文字の加盟店名と通貨記号の後の金額を見つけ、4つの銀行フォーマットすべてを、銀行ごとのルールなしで一括処理する。
同じ取引でも銀行ごとに表示が違う理由
銀行のSMSアラートは基本的なパターン(カード識別子、金額、加盟店、日付)に従っていますが、各金融機関が独自の順序で配置しています。AMAZON.COMでの$42.50の購入でも、次のようにメッセージが大きく異なります:
Chase
Chase:AMAZON.COMでの$42.50の購入(2025年3月15日) — カード下4桁1234
Bank of America
BofAアラート:カード下4桁1234がAMAZON.COMで$42.50の使用(2025年3月15日)
Wells Fargo
Wells Fargo:デビットカードでAMAZON.COMにて$42.50の購入がありました
American Express
AMEX:カード下4桁1234にてAMAZON.COMで$42.50の請求(3月15日)
Chase版では、金額はコロンの後の3番目の単語(of $42.50)です。Amex版でも前方にあります。Wells Fargo版では、purchase ofとwas madeの間にあります。どのメッセージも人間には完全に読めますが、各銀行が異なる文テンプレートを使用しているため、金額がテキスト内で「移動」します。加盟店名も異なります。完全な法人名(AMAZON.COM)を使用する銀行もあれば、短縮する銀行もあり、名前だけでは混乱を招く場合に加盟店の市区町村や州を含める銀行もあります。
このフォーマットのばらつきが、単純なコピー&ペーストのアプローチが失敗する根本的な理由です。4つの異なる銀行からの10件のアラートをスクリーンショットすると、ほぼすべてのメッセージで金額のドル記号が異なる文字位置に現れます。「通常の位置」にあるドル記号を探すツールでは、その半分を見逃してしまいます。
従来のOCRではSMSスクリーンショットの何を見逃すのか
従来のOCR(光学文字認識)は、文字や数字のように見える形状を特定し、読み順にすべてを出力します。「$42.50」が金額で、「03/15/2025」が日付であることは理解しません。どちらも同じ行に並んだ単なる文字列にすぎないからです。
請求書のような整った構造の文書であれば、この制限はなんとかなります。レイアウト自体が「合計は右下のセル」「日付は『日付:』の横」と教えてくれるからです。しかし、銀行のSMSアラートにはそのような視覚的な構造がありません。1~2文の単純な文章です。ドル記号と加盟店名が、区切り線やラベルもなく隣り合っています。OCRはテキストの塊を返すだけで、どの部分文字列が金額なのかを特定するのはあなたの仕事です。
“違いはシンプルです。OCRは文字列を見る。ビジュアルAIは取引を見る。”
ここが、OCRと業界でAIデータ抽出(またはビジョンベース抽出)と呼ばれるものの境界線であり、単なる技術的な違いではなく、実用的な差となります。光学文字認識は、スクリーンショットにどの文字が表示されているかを教えてくれます。一方、視覚言語モデルは、それらの文字のうちどれが取引金額で、どれが加盟店名かを教えてくれます。
ビジュアルAIが金額と加盟店を特定する仕組み
視覚言語モデルは、左から右にスキャンして見つけたテキストをすべて出力するのではなく、人間と同じようにスクリーンショットを見ます。メッセージを読み、文脈(「これは銀行の取引通知だ」)を理解し、取引に含まれると知っている要素(通常はドル記号が前に付く金額、通常は大文字か「at」の後に続く加盟店名、日付)に一致する部分を特定します。
これこそがカスタム列抽出の基盤です。抽出したい列(この場合は金額と加盟店名)を定義すると、AIはそれらが画面上のどこにあるかを推測するのではなく、意味を理解して対応する値を特定します。この原理は、銀行のSMSアラートからデータを抽出する場合でも、テーブルではない支払いスクリーンショットから抽出する場合でも、見たことのない形式の請求書から抽出する場合でも同じです。銀行ごとのフォーマットに合わせてシステムを「トレーニング」したり、ドル記号が表示される場所に枠を描いたりする必要があるテンプレートベースのツールとは異なり、セマンティック抽出は、Chaseが金額を3番目の単語に置こうが、Amexが最後の単語に置こうが関係なく機能します。
実際の効果:同じ2列の設定(金額、加盟店名)で、ChaseのSMS、Bank of AmericaのSMS、Wells FargoのSMS、AmexのSMSを一度に処理できます。AIに「画面上のXの位置を見ろ」と指示する必要はありません。欲しいものを伝えれば、AIが見つけてくれます。
SMSスクリーンショットからスプレッドシートへ
大量のSMSアラートのスクリーンショットからデータを取り出すワークフローは、今週の3件でも先月の30件でも同じです。
カメラロール、ギャラリー、ダウンロードフォルダからSMSアラートのスクリーンショットをすべて選択します。同じ銀行や同じカードである必要はありません。アップロードはバッチ処理に対応しています。
金額と加盟店名の2つの列を作成します。これだけで準備完了です。出力テーブルに各取引のタイムスタンプを付けたい場合は、必要に応じて日付列を追加することもできます。
AIがすべてのスクリーンショットを読み取り、各SMSアラートの金額と加盟店名を特定し、1つのテーブルにまとめます。Chase、Amex、Wells Fargo、Bank of Americaのアラートも、フォーマット固有の設定なしで一緒に処理されます。
結果をExcelファイルとしてダウンロードするか、サイドバーアドオンを使ってGoogle スプレッドシートに直接プッシュします。各行が1つのSMSアラートに対応します。1列目に金額、2列目に加盟店名、日付列を追加した場合は3列目に日付が入ります。
このアプローチは、SMSアラートがiPhoneのメッセージアプリ(チャットバブルスタイル)、AndroidのデフォルトSMSアプリ(異なるカードレイアウト)、あるいはメールでアラートを受信している場合のGmailのスクリーンショットであっても、同じように機能します。ビジュアルAIはコンテナのスタイルに依存せず、テキストコンテンツを読み取り、その中の取引フィールドを特定します。
SMSに注文番号や追跡コードが含まれている場合(例:銀行アラートと注文通知が組み合わさった購入確認メッセージ)も、同じ原則が適用されます。この概念は銀行アラートからSMS注文確認へと自然に応用でき、加盟店名の代わりに配送追跡番号を抽出するタスクになります。
この方法でカバーされないもの
SMSスクリーンショットからのビジュアルAI抽出は、主要なフィールドをうまく処理しますが、知っておくべき明確な限界もあります。
- スクリーンショットのみ — この方法は、あなたが撮影した画像に対して機能します。電話のメッセージデータベースから直接SMSメッセージを読み取ることはできません(そのためにはSMS権限を持つアプリが必要であり、まったく別の製品カテゴリになります)。
- メッセージの切り抜きが重要 — スクリーンショットでドル記号が切れたり、加盟店名が途切れたりしている場合、AIは表示されている情報のみを処理できます。アラートテキスト全体が表示されたフルハイトのスクリーンショットが最良の結果をもたらします。
- 英語以外のアラート — 主要フィールド(金額と日付)は、数字が普遍的なため、言語を問わずうまく転送されます。スペイン語のChaseアラートでも「Chase:」で始まり、ドル金額が含まれています。英語圏以外の地域の銀行では、フォーマットが異なる場合があります。
- 積み重なったアラート — 一部の電話では、複数のSMS通知が1つのスクリーンショットにグループ化されます。4つの銀行アラートが積み重なったロック画面をキャプチャした場合でも、AIはスクリーンショット内の個々の金額と加盟店を識別できます。
よくある質問
デビットカードとクレジットカードの両方のアラートで機能しますか?
はい。ほとんどの銀行は、デビットカードとクレジットカードの両方の取引で同じフォーマットを送信します。アラートメッセージの先頭に「デビットカード」または「クレジットカード」と表示される場合がありますが、金額と加盟店名はカードの種類に関係なく同じ相対位置に表示されます。
カード購入ではなく、銀行振込やワイヤーアラートの場合はどうですか?
着信ワイヤーやACH振替のアラートにも、加盟店の代わりに金額と送金者名が含まれています。同じカスタム列抽出の設定が機能します。2番目の列を「加盟店名」から「送金者名」に変更するだけで、AIはそれに応じて検索を調整します。
複数の銀行からのアラートを1つのバッチで処理できますか?
それがまさにこのツールが作られたシナリオです。Chase、Bank of America、Wells Fargo、その他どの銀行のスクリーンショットでも、すべて同時にアップロードしてください。AIは各スクリーンショットを個別に読み取り、メッセージごとに正しい金額と加盟店名を割り当てます。どの銀行が送信したかは無視します。
アップロードする前に、スクリーンショットを銀行ごとに並べ替える必要がありますか?
いいえ。抽出はバッチの均一性に依存しないため、並べ替えは不要です。バッチ位置1番のChaseアラートとバッチ位置7番のWells Fargoアラートは、同じように処理されます。意味のある並べ替えは時系列のみであり、抽出後に出力スプレッドシートの日付列を使用して行うことができます。
銀行のSMS通知に含まれる金額や加盟店名は、プレーンテキストで書かれています。問題はデータにアクセスできないことではなく、銀行ごとにフォーマットが異なり、従来の抽出ツールでは数字の意味を理解できないことです。Visual AIは、メッセージをあなたと同じように意味的に読み取り、すぐに使えるテーブルに結果を出力することで、そのボトルネックを取り除きます。