Get a Client's Address and Order NumberFrom an iMessage Screenshot

顧客がiMessageでメッセージを送ってきます。住所、注文詳細、場合によってはApple Pay Cashでの支払い情報がすべて同じチャットスレッドに表示されます。記録としてスクリーンショットを撮ります。すると、1枚の画像に3種類の視覚データが含まれることになります。住所と注文番号が書かれたプレーンテキストのバブル、支払い確認を示すスタイル付きのApple Pay Cashカード、そして周囲に視覚的なノイズを加える開封確認や入力中インジケータです。住所と注文番号は確かにそこにありますが、配送フォームや請求書とはまったく似ていないコンテンツに混ざっています。

手入力をやめよう — AIに読み取らせるだけ
画像やPDFをアップロード — 10秒で構造化データに
今すぐ試す →
Editorial poster with the article title in bold dark blue and three icons below it: a blue chat bubble holding the address and order number, a dark Apple Pay Cash card giving the amount only, and a grey bubble with an amber cross marking read receipts as not data.

重要なポイント

  1. iMessageのスクリーンショットは見た目がすっきりしています。青いバブルと明確なテキストがあるため、配送先住所の抽出は最も簡単な抽出タスクのはずです。
  2. しかし、iMessageにはApple Pay Cashカード、開封確認、入力中インジケータ、リンクプレビューが重なって表示されます。従来のOCRは「Read」という単語を配送先住所の1行として読み取ってしまいます。
  3. ビジュアルAIは各UI要素を機能ごとに分類します。暗いカードが支払い確認で、青いバブルがメッセージであることを認識するため、指定した住所と注文番号だけがきれいに抽出されます。

iMessageがWhatsAppとは異なる抽出シナリオである理由

チャットのスクリーンショットから住所を抽出する方法についてのWhatsApp Businessガイドをお読みになった方なら、基本的な問題はご存知でしょう。チャットメッセージはフォームではなく、必要なデータは会話のテキストの中に埋め込まれています。iMessageもその核心的な課題は同じです。住所や注文番号はメッセージ内にあり、構造化されたフィールドにはありません。しかし、iMessageにはWhatsAppにはない3つの複雑な要素が加わります。

第一に、iMessageはiOS専用です。つまり、スクリーンショットは単一のオペレーティングシステムから取得され、チャットバブルのスタイルは一貫しています(iMessageは青、SMSは緑)。しかし同時に、WhatsAppにはないプラットフォーム固有の視覚要素も存在します。開封確認はメッセージの下に「既読」ラベルとして表示されます。入力中インジケータはアニメーションする省略記号で示されます。リアクション(Tapbacks)はメッセージの上にインラインでアイコンバッジとして浮かびます。これらは必要なデータを一切含みませんが、従来のOCRエンジンが判別する必要がある視覚的なスペースを占有します。

第二に、iMessageはApple Pay Cashをサポートしています。これはAppleの内蔵型ピアツーピア決済システムです。誰かがApple Pay Cashで支払いを行うと、その確認はプレーンなテキストバブルではなく、スタイル付きのダークカードとしてチャット内に表示されます。金額、受取人の名前、取引ステータスは、大きな白いテキストと色付きのステータスバッジを備えたコンパクトな黒いカード内にレンダリングされます。視覚的に、このカードは周囲のチャットバブルとは何の共通点もありません。通常の青いバブル内の住所と、同じビュー内の支払いカードの両方を捉えたスクリーンショットには、1つの画像の中に2つのまったく異なる視覚形式が含まれていることになります。

第三に、iMessageはリッチリンクプレビューを生成します。誰かがURLを貼り付けると、チャットはページタイトル、説明、サムネイルを含むカードを作成します。顧客が注文ページへのリンクを貼り付けた場合、そのプレビューは住所データを含んでいるように見えるが、通常は含んでいない別の視覚要素になります。

結果として、必要なデータは、さまざまにスタイル設定されたUI要素の中に混在して存在し、それらの要素はすべて有用な情報を含んでいるように見える画像が生成されます。抽出方法は、住所を含むバブル、支払い金額を示すカード、リンクのみを含むプレビューの違いを識別する必要があります。

iMessageの注文に関する3つのよくあるシナリオ

2つの等しいサイドバイサイドカード:青いヘッダーのカードには配送先住所、注文番号、緑のチェックマーク付きのテキストバブル内のプレーンテキストが表示され、隣にはダークヘッダーのApple Pay Cashカードがあり、緑のチェックマーク付きの支払い金額が表示され、配送先住所と注文番号はなく、アンバーの×印が表示されています。

すべてのiMessageの注文スクリーンショットが同じように見えるわけではありません。顧客が情報をどのように送信したか、支払いが含まれていたかによって、視覚的なレイアウトは変わります。

シナリオ1:テキストバブル内の住所と注文番号

顧客は会話の中で、住所と注文詳細をプレーンメッセージとして入力します。住所は標準的な青いiMessageバブルに表示されます:

「3421 Maple Street, Apt 4B, Portland, OR 97202に発送できますか?注文番号 #A45-8921」

住所と注文番号は同じメッセージ内にある場合も、連続する2つのメッセージに分かれている場合もあります。バブルのテキストはプレーンで、書式やラベルはありません。住所は標準的なパターン(番地、市区町村、州、郵便番号)に従っており、抽出エンジンは構造によって認識できます。注文番号は英数字形式と注文コンテキストへの近接性によって識別可能です。このシナリオが最も単純です。送信者名とタイムスタンプだけが周囲の要素として存在する、チャットバブルだけのケースです。

シナリオ2:チャット内のApple Pay Cash支払いカード

顧客が同じ会話内でApple Pay Cashでも支払いを行った場合、チャットスレッドには周囲のすべてのバブルと視覚的に区別されるダークカードが含まれます。カードは黒い背景で、中央に大きな白いテキストで金額が表示され、受取人または送信者の名前、ステータスバッジ(「送信済み」、「配達済み」、「保留中」)、および下部に任意のメモが表示されます。

重要なのは、Apple Pay Cashカードに含まれていないものを理解することです。支払い金額と関係者が表示されますが、配送先住所や注文番号は含まれていません。これらはカードの上または下のテキストバブルに残ります。両方を含むスクリーンショットからデータを抽出する場合は、住所(テキストバブルから)、注文番号(同じくテキストバブルから)、支払い金額(カードから)のそれぞれに個別の列が必要です。

これは、支払い情報が通常プレーンテキストで共有されるWhatsApp Businessとは顕著な違いです — 「あなたの番号に$85を送りました」— レンダリングされたカードではなく。カード形式により支払い確認が視覚的に目立ちますが、他の情報から分離されているため、抽出エンジンがカードを個別の視覚コンポーネントとして認識できれば、個別に抽出しやすくなります。

一部の顧客は、小売店のウェブサイトからURLを貼り付けて注文情報を共有します。iMessageはリッチリンクプレビューを生成し、角丸のコンテナ内にサムネイル、ページタイトル、説明文がカードとしてチャットに表示されます。実際の住所や注文番号は、リンクに付随するテキストバブルに表示される場合もあれば、リンクを開いて初めて確認できる場合もあります。プレビューカード自体には通常、完全な配送先住所や完全な注文番号は表示されません。顧客が住所を別途入力せずにリンクだけを送信した場合、そのデータはスクリーンショットに表示されないため、抽出できません。これはあらゆる抽出方法に当てはまる制限です。画面上に情報が表示されていなければ、抽出することはできないのです。

iMessageの視覚的ノイズを読み解く

iMessageのスクリーンショットには、開封確認、入力中インジケータ、Tapbacks(絵文字リアクション)、メッセージエフェクト、タイムスタンプ、連絡先アバターが含まれることがあります。住所と注文番号を取得したい場合、これらの要素は視覚的ノイズになります。画像を左から右へ処理する従来のOCRエンジンは、「Read」をテキストとして、「入力中」インジケータをピリオドとして、絵文字リアクションをUnicode文字として読み取り、それらすべてが住所と同じ出力ストリームに混ざってしまいます。その結果、「3421 Maple Street」と「Read」と「...」が連続して並ぶテキストブロックが生成され、手動でのクリーンアップが必要になります。

比較画像を縦に並べた図:上の帯は「左から右へのOCR」と表示され、Readと省略記号が住所の中に混ざった1行のテキストとして統合されている様子を示す。下の帯は「意味的抽出」と表示され、開封確認と入力中のドットがノイズとしてマークされ、青い住所バブルからクリーンな配送先住所と注文番号の行が抽出される様子を示す。

視覚言語モデルはスクリーンショットを異なる方法で処理します。画像を完全な視覚的シーンとして解釈し、各要素の意味的な役割を認識します。「これは開封確認ラベル」「これは住所を含むチャットバブル」といった具合に、各領域内のテキストを読み取る前に分類します。開封確認のテキストは住所抽出を汚染せず、入力中インジケータが出力に文字化けとして現れることもありません。各UIコンポーネントは、含まれるテキストだけでなく、視覚的な機能によって分類されます。

同じ原則、つまりスクリーンショットはテーブルではないが、画像の各部分が何を表しているかを理解することでデータを抽出できるという考え方は、支払いスクリーンショットと同様にiMessageのインターフェースにも当てはまります。ここでの具体的な違いは、iMessageの視覚的ノイズがドキュメントコンテンツではなくインタラクティブなUI要素で構成されており、抽出方法がその2つを区別する必要があるという点です。

抽出できるものとできないもの

抽出する列名を定義することだけが、スクリーンショットから何を出力するかを指定するために必要な手順です。iMessageの注文スクリーンショットの場合、該当する列は配送先住所、注文番号、支払い金額(Apple Pay Cashカードから)、そして顧客名(会話ヘッダーから)です。抽出エンジンは各列の定義を読み取り、各視覚要素の意味的な役割を理解して対応する値を特定し、スクリーンショットごとに1行を出力します。異なる顧客からの15件のiMessageスクリーンショットのバッチ(それぞれ異なるメッセージ形式とApple Pay Cashカードを使用)から、15行の単一テーブルが生成されます。

注意すべき制限があります。Apple Pay Cashカードのデータには取引金額のみが含まれます。配送先住所や注文番号は含まれません。これらはテキストバブル内にあり、別途抽出する必要があります。スクリーンショットが入力された住所ではなくリンクプレビューを捉えている場合、住所は画像内に単に表示されていません。住所が複数のバブルにまたがって分散している複数メッセージのスレッドでは、すべての部分を含めるのに十分な会話をスクリーンショットが捉えている必要があります。また、開封確認や入力中インジケータは、意味的抽出を妨げるものではありませんが、顧客が入力を完了する前にスクリーンショットが撮影された場合、関心のある視覚領域の定義が難しくなります。

バッチ処理の場合、ワークフローは他のスクリーンショットカテゴリと同じです。画像をアップロードし、列を一度定義して、まとめて処理します。iMessageスクリーンショットと、データが純粋なプレーンテキストであるSMS注文確認が混在するバッチも、同じ列構造に従い、抽出方法は各入力画像の視覚形式に個別に適応します。

2列のチェックリスト:緑の列には抽出可能な4つの列(配送先住所、注文番号、支払い金額、顧客名)とそのソースがリストされ、アンバー色の列にはスクリーンショットで埋められない3つのギャップ(リンクプレビュー、バブルにまたがる住所、入力中のテキスト)がリストされています。

よくある質問

カードのスクリーンショットからApple Pay Cashの取引IDを抽出できますか?

iMessageのApple Pay Cashカードには、金額、受取人名、ステータスバッジが表示されます。カードには完全な取引IDは表示されません。カードをタップしてWalletの取引履歴を表示すると確認できますが、会話のスクリーンショット1枚にはそのデータは含まれません。取引IDを取得するには、Walletの詳細画面を別途スクリーンショットする必要があります。

顧客が住所を入力せずに連絡先カードとして送ってきた場合はどうなりますか?

iMessageでは、連絡先プレビューバブルとして表示される連絡先カード(vCard)を共有できます。抽出エンジンは、そのプレビューに表示されている住所テキストを読み取れます。「住所」列を定義すると、エンジンは連絡先カードに表示されている住所テキストを抽出します。スクリーンショットだけでは、完全な構造化された連絡先データは取得できません。

非表示インクなどのメッセージエフェクトは抽出に影響しますか?

非表示インクのメッセージは、タップするまでぼやけて表示されます。メッセージがまだぼやけている状態でスクリーンショットを撮った場合、下のテキストはどの抽出方法でも読み取れません。紙吹雪などの全画面エフェクトは視覚的なオーバーレイを追加しますが、テキストを隠すことはありません。セマンティック抽出は通常、オーバーレイコンテンツとテキスト領域を分離することで対応します。

iMessageとWhatsAppのスクリーンショットを同じバッチで処理できますか?

はい。列を一度定義するだけで(「配送先住所」「注文番号」「支払い金額」)、両方を一緒にアップロードできます。エンジンは各スクリーンショットを個別に読み取り、iMessageの青いバブルやApple Pay Cashカードの視覚的レイアウトを、WhatsAppの緑のバブルと同様に認識します。出力テーブルは、各ソースのデータが正しく列に配置された状態で、すべての行を1つのスプレッドシートに統合します。

住所が複数のチャットバブルにまたがっている場合はどうなりますか?

顧客が1つのメッセージで番地を入力し、次のメッセージで市区町村と郵便番号を入力した場合、住所は2つのバブルに分割されます。エンジンは表示されている会話エリア全体を読み取り、同じ人物が送信した隣接するメッセージのテキストを、それらが合わせて完全な住所を構成する場合に結合できます。信頼性を高めるには、各バブルを個別に撮影するのではなく、両方のメッセージが含まれるようにスクリーンショットを撮ってください。

iMessageのスクリーンショットには、配送ラベルや注文フォームと同じ情報が含まれています。ただし、青いテキストバブル、暗い支払いカード、インタラクティブなUI要素が混在した形式で届くため、従来のドキュメントにはない見た目になっています。ここで有効な抽出方法は、チャットスクリーンショットのカテゴリ全体で通用する方法と同じです。必要なフィールドを定義し、AIに各データを「何が書かれているか」ではなく「何を意味するか」で認識させます。

📮 contact email: [email protected]