銀行SMSアラートから金額と加盟店名を取得する

普段の買い物が終わる頃には、スマホには銀行のSMSアラートが何通も溜まっています。コーヒー1杯、ランチの会計、定期サブスクリプション、ガソリンスタンドでの給油。それぞれに、家計簿に本当に必要な情報がちょうど2つ含まれています。それが取引金額と加盟店名です。しかし、Chaseのアラートの書き方も、Bank of Americaも、Wells Fargoも、American Expressも、それぞれ異なります。金額が文のどこに来るかは、送信元の銀行によって変わります。それぞれを家計簿アプリに手動でコピーするのに、1通あたり10〜15秒かかります。1週間分の取引でやると、その秒数は毎月繰り返す面倒な作業に積み上がっていきます。

手入力をやめよう — AIに読み取らせるだけ
画像やPDFをアップロード — 10秒で構造化データに
今すぐ試す →
ブログのヒーロー画像:タイトルが太字の濃い青で表示され、その下に「4つの銀行」「1つのバッチ」「カスタム列抽出」「Google スプレッドシートで行が準備完了」というラベルの付いた3つのフラットなベクターアイコンが並ぶ。背景は柔らかなオフホワイトからライトブルーで、角にはブランドカラーの青い幾何学模様のライン装飾がある。

重要なポイント

  1. 米国の4つの銀行が、AMAZON.COMでの同じ$42.50の購入を知らせますが、金額の位置はChaseでは単語の3番目、Wells Fargoでは6番目、Amexでは2番目です。
  2. 位置に基づいてトレーニングされたツールはChaseでは機能しても、Bank of Americaでは静かに失敗します。他の銀行のメッセージテンプレートには存在しない文の位置に金額があることを期待するからです。
  3. ビジュアルAIはメッセージを取引として読み取ります。すべて大文字の加盟店名と通貨記号の後の金額を見つけ、4つの銀行フォーマットすべてを銀行ごとのルールなしで1つのバッチで処理します。

同じ取引でも銀行ごとに表示が違う理由

Chase、Bank of America、Wells Fargo、Amexの4つの銀行SMSアラートで、同じ$42.50のAMAZON.COMでの購入が異なる形式で表示されている比較図。金額は各メッセージの異なる位置にアンバー色でハイライトされ、下の判定行には「固定位置検索:半数を見逃す」に赤いバツ印、「意味を読む:4件すべてを1回で処理」に緑のチェックマークが付いている。

銀行のSMSアラートは基本的なパターン(カード識別子、金額、加盟店、日付)に従っていますが、各金融機関が独自の順序で配置しています。AMAZON.COMでの$42.50の購入でも、メッセージは明らかに異なります:

Chase

Chase: Purchase of $42.50 at AMAZON.COM on 03/15/2025 — Card ending 1234

Bank of America

BofA Alert: Debit card ending 1234 was used for $42.50 at AMAZON.COM on 03/15/2025

Wells Fargo

Wells Fargo: A purchase of $42.50 was made with your debit card at AMAZON.COM

American Express

AMEX: A charge of $42.50 was made on your Card ending 1234 at AMAZON.COM on Mar 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が日付であることは理解しません。どちらも同じ行にある単なる文字列にすぎないのです。

2つの比較: 従来のOCRはChaseのSMSをラベルのない1つのプレーンなテキストブロックとして返し、赤い×印と「ラベルのないテキストブロック」というラベルが付いています。一方、AIデータ抽出は同じメッセージを表示し、$42.50がアンバー色、AMAZON.COMが青色でハイライトされ、「金額: $42.50」「加盟店名: AMAZON.COM」と緑のチェックマーク付きで返します。

請求書のような整った構造の文書では、レイアウト自体がどの数字が何かを示してくれるため、この制限は許容範囲です。合計は右下のセルにあり、日付は「日付:」の隣にあります。しかし、銀行の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スクリーンショットからスプレッドシートへというタイトルの4ステップのフロー図:番号付きの円形ノードが鋭角の青い折れ線で結ばれ、スクリーンショットをアップロード、列に名前を付ける、抽出を実行、スプレッドシートにエクスポートとラベル付けされ、最後のノードには緑のチェックバッジが付いています。

SMSアラートのスクリーンショットの山からデータを取り出すワークフローは、今週の3件でも先月の30件でも同じです。

1
スクリーンショットをアップロード

カメラロール、ギャラリー、ダウンロードフォルダからSMSアラートのスクリーンショットをすべて選択します。同じ銀行や同じカードである必要はありません。アップロードは設計上バッチ処理に対応しています。

2
列に名前を付ける

金額と加盟店名の2つの列を作成します。設定はこれだけです。出力テーブルに各取引のタイムスタンプを付けたい場合は、必要に応じて日付列を追加することもできます。

3
抽出を実行

AIがすべてのスクリーンショットを読み取り、各SMSアラートの金額と加盟店名を特定して、1つのテーブルにまとめます。Chase、Amex、Wells Fargo、Bank of Americaのアラートは、フォーマット固有の設定なしでまとめて処理されます。

4
エクスポートまたは直接使用

結果をExcelファイルとしてダウンロードするか、サイドバーアドオンを使ってGoogle スプレッドシートに直接プッシュします。各行が1つのSMSアラートに対応します。1列目に金額、2列目に加盟店名、日付列を追加した場合は3列目に日付が入ります。

このアプローチは、SMSアラートがiPhoneのメッセージアプリ(チャットバブル形式)のスクリーンショットでも、Androidの標準SMSアプリ(異なるカードレイアウト)のスクリーンショットでも、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アラートに含まれる金額と加盟店名は、プレーンテキストで記載されています。課題はデータにアクセスできないことではなく、銀行ごとにフォーマットが異なり、従来の抽出ツールでは数字の意味を理解できないことです。ビジュアルAIは、メッセージをあなたと同じように意味的に読み取り、すぐに使えるテーブルに結果をまとめることで、そのボトルネックを解消します。

📮 contact email: [email protected]