M-Pesa SMS抽出

トランザクションコード、金額、取引相手をあらゆるM-Pesa SMS形式から取得

M-Pesa SMSの4つの項目を手動でスプレッドシートに入力すると1件あたり90秒かかりますが、これはスクリーンショット1枚あたり5秒で完了します。5種類すべての取引形式に対応し、テンプレートは一切不要です。

SMSスクリーンショット1枚あたり5〜10秒 · 印字テキストで最大99%の精度

SMSスクリーンショット
5種類のSMS形式
バッチ処理

M-Pesa SMSから取得できる項目

M-Pesaの確認メッセージはプレーンなSMSです。アプリのUIも視覚的なレイアウトもありません。カスタム列抽出を使えば、フィールドを指定するだけでAIが自動的に見つけ出します。

トランザクションコード

すべてのSMSの先頭にある10文字のコード。最初の3文字は日付を表します(T = 2025年)。照合のための共通キーです。

金額 (Ksh)

Ksh1,500.00の形式で表示されます。AIはラベルを読み取ることで、取引手数料や残高という他の2つのKsh数値から金額を区別します。

取引相手

取引の種類によって異なります。送金では氏名、請求書支払いではアカウント付きの事業者名、商品購入では店舗名、受取金では送金者名です。意味抽出により役割に基づいて識別します。

日時

すべてのSMSには東アフリカ時間のタイムスタンプ(on 23/6/25 at 3:41 PM)が含まれています。トランザクションコードにも日付がエンコードされており、相互検証が可能です。

M-Pesaはアプリ画面ではなく、5つのSMSテンプレートを使用する

M-Pesaは、スマートフォンを所有していない人もいる市場向けに作られました。領収書はプレーンなSMSであり、同じ4つのフィールドが5つの形式にわたって並び替えられます。テンプレートベースのツールや画面OCRは視覚的な構造を期待するため、失敗します。

M-Pesaが従来の抽出を困難にする理由

01

フィールドを固定するアプリUIがない。 VenmoやPayPalには視覚的な画面があります。M-Pesaの領収書は生のSMSです。太字の見出しも色もありません。アプリのインターフェース向けに設計されたOCRツールは、視覚的な構造がないと機能しません。

02

1つのメッセージにKshの金額が3つ。そのうち金額なのは1つだけ。 送金金額、取引手数料、新しい残高はすべてKshプレフィックスを共有します。「Kshの後の数字」を取得する正規表現ルールは、しばしば間違った数字を拾ってしまいます。 正規表現でM-Pesa SMSを解析する開発者は、メッセージタイプごとに正しいKshの出現箇所を特定する必要があります。これはフォーマット間で壊れやすい脆弱性です。

03

取引相手の形式は取引タイプごとに異なる。 「Sent to JOHN DOE 0722000000」は個人を指します。「Paid to Naivas Supermarket」は事業者を指します。「AC for account 1137238445」は請求書支払いです。1つの正規表現ルールでは、各形式の文法構造が異なるため、3つすべてを処理することはできません。

セマンティック抽出がM-Pesa SMSを読み取る仕組み

01

トランザクションコードは常に最初の単語です。 すべてのM-Pesa SMSは10桁のコードで始まり、「Confirmed.」が続き、最後は「PIN YAKO SIRI YAKO」という定型文で締めくくられます。AIはこれらの前後の目印をアンカーとして使用します。メッセージをテキストとして読み取り、位置に基づいてコードを特定し、そこから残りの抽出を構築します。

02

ラベルが各Ksh金額の意味を決定します。 「Transaction cost, Ksh6.00」は手数料としてタグ付けされます。「New M-PESA balance is Ksh1,205.10」は残高としてタグ付けされます。「sent to」または「received」の前に来る値のみが金額列に入ります。位置の想定なしに、意味的に異なる3つの数値が解決されます。

03

取引相手は意味的役割によって特定されます。 SMSが「sent to JOHN DOE」、「paid to Naivas Supermarket」、「received from MICHAEL FEDERSEN」のいずれであっても、AIは取引の相手側の主体を取引相手列にマッピングします。特定のキーワードの位置ではなく、関係性を読み取ります。

「いくつかの企業(学校、賃貸、小規模な財務チーム)と話していて気づいたのですが、取引量が増えると照合作業はすぐに混乱してしまいます。」

— r/nairobitechies

混在するM-Pesa SMS形式を、一つのクリーンなスプレッドシートに

1

M-Pesa SMSのスクリーンショットをまとめてアップロード

先週分のM-Pesa確認メッセージがフォルダにあるとします。顧客からの送金受領書、学校の授業料支払いの請求書支払いSMS、スーパーマーケットでの商品購入確認、仕入先からの受取金通知。4つの異なるSMS形式です。これらをすべて1つのバッチにアップロードします。SMSスレッドのスクリーンショット(JPG、PNG、WebP)で構いません。

2

列を一度定義 — トランザクションコード、金額、取引相手、日付

必要な列を入力します。AIは各SMSスクリーンショットを個別に読み取ります。先頭の単語である10文字のトランザクションコードを見つけ、送信されたKsh金額(手数料や残高ではなく)を特定し、動詞が「送信先」「支払先」「受取元」のいずれであっても、その役割に基づいて取引相手を識別し、日時を記録します。

3

種類ごとの並べ替え不要 — 1つの統合テーブルを取得

処理はスクリーンショット1枚につき5〜10秒かかります。出力は1つのXLSXまたはCSVです。4行、4列(トランザクションコード、金額、取引相手、日付)で、トランザクションの種類ごとに1行になります。送金、請求書支払い、商品購入、受取金の各形式が、それぞれ同じクリーンな構造を生成しました。各SMSを開いて手動で値を入力するよりも、およそ18倍高速です (4フィールドの手動入力は1件あたり約90秒 vs ここでは約5秒)。

```

5種類すべてのM-Pesa SMS形式で共通して取得できるデータ:

トランザクションコード金額 (Ksh)取引相手日付
ABCDE123451,500.00JOHN DOE23/06/25
DY28XV6794,000.00KCB Paybill09/09/25
GH78KT901500.00Naivas Supermarket15/01/26
最適なケースと注意すべきケース 境界を理解することで、安定した結果が得られます。 最適なケース ✓ **端末のSMSスレッドまたはSuper Appの直接スクリーンショット。** フル解像度のスクリーンショットは最大99%の精度を達成します。機械生成のSMSテキストはコントラストが高いためです。 ✓ **単一バッチ内の複合トランザクションタイプ。** 送金、請求書支払い、商品購入、引き出しのスクリーンショットをまとめてアップロードできます。処理前にタイプごとに分類する必要はありません。 ✓ **過去履歴の一括照合。** 数十件のM-Pesa確認メッセージから、QuickBooks KenyaまたはZoho Booksにインポート可能な単一のソート済みスプレッドシートが生成されます。 注意すべきケース ⚠ **WhatsAppまたはMessenger経由で転送されたスクリーンショット。** メッセージングプラットフォームは画像を圧縮します。転送されたスクリーンショットは解像度が低く、特にトランザクションコードの文字レベル精度が低下する可能性があります。 ⚠ **非常に古いM-Pesa SMS形式。** トランザクションコードは2025年にSプレフィックスからTプレフィックスへ移行しました。AIは既知のバリエーションを処理できますが、より古い形式では部分的な結果になる場合があります。 ⚠ **アーキテクチャ上の境界:SMSデータフィードではなく、SMSのスクリーンショット。** このアプローチはスクリーンショット(転送された領収書や他者から送信された画像)で機能しますが、電話のメッセージデータベースからSMSを直接解析することはできません。SMS読み取りツールを補完するものであり、置き換えるものではありません。

よくある質問

AIは、M-PesaのSMS内の取引金額、手数料、新しい残高をどのように区別するのですか?

すべてのM-Pesa SMSには、3つのKsh金額が含まれています。AIは各値の前にあるラベルを読み取ります。Ksh1,500.00 sent toは送金金額、Transaction cost, Ksh6.00は手数料、New M-PESA balance is Ksh1,205.10は残高です。「sent to」「paid to」「received」などの動作動詞が前にある、取引の主体となる値のみが金額列に入ります。これにより、メッセージを手動で確認する際に生じる混乱を防ぎます。

トランザクションコードは本当に日付を表しているのですか?そして、それがなぜ重要なのでしょうか?

はい。M-Pesaのトランザクションコードの最初の文字は年(T = 2025、S = 2024、アルファベット順に循環)、2番目の文字は月、3番目の文字は日を表します。つまり、トランザクションコードフィールドだけで、スクリーンショットからSMSのタイムスタンプが切り取られている場合でも、取引日を確認できます。また、これは普遍的な照合キーとしても機能します。同じコードを持つ2つのSMSメッセージは同じ取引であり、重複排除とKRA参照のための最も信頼性の高いフィールドとなります。

通常のSMSスクリーンショットとM-Pesa Super Appのスクリーンショットを同じバッチで処理できますか?

はい。M-Pesa Super Appは、取引コード、金額、取引相手、日付などの同じデータを視覚的な確認画面に表示します。AIは両方の入力形式を単一のバッチで処理します。Super Appの画面はSMSよりも加盟店名を読みやすく表示する場合がありますが、SMSにはアプリ画面では省略されることがある取引コストと新しい残高が含まれています。列を一度定義すれば、AIは各スクリーンショットのソースに応じて適応します。

抽出したデータをKRAの税務申告に使用できますか?

KRAは、特にモバイルマネーを主に利用する小規模事業者にとって、M-Pesaの明細を税務申告の裏付け書類として認めています。各取引はトランザクションコードによってインデックス化され、特定の支払いをKRAの記録に結び付けます。正式な申告には、引き続き完全なM-Pesa PDF明細書が必要ですが、抽出されたSMSデータは、公式明細書が届くまでの間の中間照合や経費追跡に使用できる実用的なスプレッドシートを提供します。

100件のM-Pesa確認メッセージから一度にデータを抽出する必要がある場合はどうすればよいですか?

バッチ処理では、複数のスクリーンショットを一度にアップロードできます。すべてのSMSスクリーンショットをまとめてアップロードし、トランザクションコード、金額、取引相手、日付の4つの列を定義するだけで、AIがすべてのスクリーンショットを同じ列定義で処理します。バッチに10件でも100件でも、さまざまな形式のM-Pesa確認メッセージが含まれていても、出力は1つのExcelファイルで、トランザクションごとに1行ずつ表示されます。会計ソフトへのインポートや元帳との照合にすぐに使用できます。

このツールが対応するすべての決済スクリーンショット形式(Venmo、PayPalからWeChat Pay、PIXまで)を確認する: 決済スクリーンショット概要

M-Pesaの5つのSMS確認形式、トランザクションコードの構造、取引相手フィールドのバリエーションを詳しく解説: M-Pesa決済スクリーンショット — 金額とトランザクションコードを抽出する

形式の多様性という課題を抱えるもう一つのモバイルマネー先行型決済システム: GCashスクリーンショット抽出

📮 contact email: [email protected]