カカオトークのチャットスクリーンショットから韓国の住所と注文詳細を読み取る

お客様がカカオトークで注文メッセージを送ってきました — 「キムチチゲ3つ、プルコギ2人前、住所はソウル市江南区テヘランロ123です。」住所、商品、数量がすべて、ハングルと数字が混ざった1つのチャットバブルに収まっています。あなたはそれを記録としてスクリーンショットに保存します。これで、必要な情報がすべて含まれた画像が手に入りました。しかし、住所自体は韓国で併用されている2つの住所体系のいずれかで書かれている可能性があり、商品名や数量は会話調の韓国語に埋め込まれているため、従来のOCRエンジンでは解析できません。

手入力をやめよう — AIに読み取らせるだけ
画像やPDFをアップロード — 10秒で構造化データに
今すぐ試す
登録不要 · カード不要 · 10秒で結果
カカオトークのチャットスクリーンショットから韓国の住所と注文詳細をスプレッドシートに抽出している様子

重要なポイント

  1. カカオトークでの韓国住所は、道路名住所(도로명주소:テヘランロ123)または地番住所(지번주소:ヨクサム洞123-45)のいずれかで書かれます。両方の体系が併存しており、お客様は自分が知っている方を使います。
  2. 1枚のカカオトーク注文スクリーンショットには、プレーンテキストの住所バブル、緑色のアクセントが付いたKakaoPay(カカオペイ)カード、KakaoMap(カカオマップ)の位置情報カードという、3つの異なるビジュアル形式が含まれることがあり、それぞれに異なる注文情報が含まれています。
  3. 配送先住所、注文商品、支払金額を列として定義します。AIは3つのビジュアル形式すべてを一度に読み取り、チャットテキストとカードデータを混同することなく、各値を正しい列に配置します。

カカオトークの注文スクリーンショットに実際に含まれているもの

カカオトークは韓国で圧倒的なシェアを誇るメッセージングプラットフォームで、人口5200万人のうち4600万人以上が利用しています。韓国人の顧客が小規模事業者に注文をする際(飲食店が大量のフードデリバリーを発注する、転売業者が美容製品を注文する、サプライヤーが原材料を確認するなど)、取引のほぼすべてがカカオトーク上で行われます。顧客は住所を送り、希望する商品をリストアップし、多くの場合KakaoPay(カカオペイ)で支払いも行います。すると、スタイリッシュな支払い確認カードが生成され、同じチャットスレッドに表示されます。

この会話のスクリーンショット1枚には、以下のものが含まれている可能性があります。

  • プレーンテキストのチャットバブル — 顧客の住所が韓国語で書かれており、道路名住所(도로명주소)または地番住所(지번주소)のいずれかの形式で表示されます
  • 注文詳細 — 商品名(상품명)、数量(수량)、場合によっては価格や特別リクエストが、すべて会話調の韓国語で書かれています
  • KakaoPay(カカオペイ)の支払いカード — 緑色のアクセントが特徴的な、視覚的に区別しやすいUIカードで、支払い総額、加盟店名、取引ステータスバッジが表示されます
  • KakaoMap(カカオマップ)の位置情報共有 — 顧客がアプリ内蔵の地図サービスを使って位置情報を共有すると表示されるプレビューカードで、地図のサムネイルと住所テキストが含まれます
  • 視覚的な装飾要素 — チャットルームのタイトルバー(相手の名前表示)、「KakaoTalk」のブランド表示、タイムスタンプ、既読マーク、メッセージ入力エリア

これらの要素はそれぞれ異なる視覚形式(プレーンテキスト、装飾カード、地図サムネイル)を持っていますが、あなたが必要とするデータ(住所と注文詳細)はそれらすべてにまたがっています。従来のOCRツールは画像全体を1つのテキストブロックとして読み取り、ハングル、数字、UIラベルが混在した生の文字列を出力するため、その後手作業で整理する必要があります。課題は住所が読みにくいことではありません。韓国語ではっきりと書かれています。課題は、画面上の他のすべての情報から住所を選び出すことなのです。

二重住所問題:도로명주소 vs 지번주소

韓国は、世界でも数少ない、2つの住所体系が併用されている国の一つです。公式のシステムは道路名住所(도로명주소、Doro-myeong-juso)で、2011年7月に導入され、2014年1月に完全に移行されました。このシステムでは、住所は論理的な道路ベースの形式(道・市 → 区 → 道路名 → 建物番号)に従います。典型的な道路名住所は次のようになります:

서울특별시 강남구 테헤란로 123
(ソウル特別市 江南区 テヘラン路 123)

しかし、古い地番住所(지번주소、Jibeon-juso)も依然として広く使われています。このシステムは道路名ではなく土地の区画番号に基づいており、まったく異なる形式の住所になります:

서울특별시 강남구 역삼동 123-45
(ソウル特別市 江南区 駅三洞 123-45)

どちらの住所も、まったく同じ建物を指すことがあります。Naver MapsやKakaoMapは、任意の場所に対して両方の住所を併記して表示します。カカオトークのチャットでは、韓国人の顧客がどちらかの形式で住所を送ってくる可能性があります。それは、自分が使い慣れている形式か、公的文書に記載されている形式です。「서울시 마포구 서교동 456-7」(地番)と書く人もいれば、同じ地域を「서울시 마포구 와우산로 29길 45」(道路名)と書く人もいます。

この二重システムの現実は、単一の住所形式を想定する抽出方法にとって問題を引き起こします。「道路名+建物番号」を探すように設定されたテンプレートベースのツールは、スクリーンショットに地番住所が含まれていても認識できません。逆に、「洞(Dong)+番地(Beonji)」の番号パターンを抽出するようにプログラムされたツールは、道路名住所を見逃します。顧客があなたのために住所形式を統一してくれることはありません。彼らは自分が知っている方法でただ入力するだけです。視覚的なレイアウトだけでなく、意味構造によって両方のシステムを理解する抽出方法こそが、このジレンマを解決する実用的な方法です。

よくあるカカオトーク注文の3つのシナリオ

スクリーンショットの見た目は、お客様がどのように注文したか、またKakaoPay(カカオペイ)で決済が行われたかどうかによって変わります。シナリオごとに、抽出の考慮点が少しずつ異なります。

シナリオ1:住所と注文内容がプレーンチャットバブル内にある場合

最も一般的なシナリオです。お客様が住所と注文内容を、通常のテキストメッセージとしてチャットに直接入力します。会話は次のようになります。

お客様: "네, 주문할게요. 김치찌개 3개, 제육볶음 2개 주세요."
(はい、注文します。キムチチゲ3つ、チェユクポックム2つください。)
お客様: "주소는 경기도 성남시 분당구 정자동 178-3번지 203호입니다."
(住所は、京畿道城南市盆唐区亭子洞178-3番地203号です。)

住所は地番形式(정자동 178-3)で、部屋番号(203호)が付いています。注文商品は前のメッセージに別途記載されています。どちらの情報もプレーンテキストであり、カードや地図の共有はなく、ラベル付きの入力欄ではなく、会話形式の韓国語で書かれています。従来のOCRツールでは、「네, 주문할게요. 김치찌개 3개, 제육볶음 2개 주세요.」が住所テキストと一緒に1つの連続した文字列として出力され、注文商品と住所を手動で分離する必要があります。

列ベースのセマンティック抽出では、配送先住所(배송지)注文商品(주문 상품)の2つの列を定義します。エンジンは、同じチャットテキスト内で2つの異なる情報を探していることを認識してスクリーンショットを読み取ります。韓国語の住所構造(道→市→区→地番→部屋番号)を認識して住所を見つけ、数量を示す数字と商品名のパターンから注文商品を特定し、混在させることなくそれぞれ正しい列に出力します。

シナリオ2:KakaoPay(カカオペイ)決済カード付きの住所

カカオトークは、韓国を代表するデジタルウォレットであるKakaoPay(カカオペイ)と深く統合されています。お客様がチャット内でKakaoPay(カカオペイ)を通じて決済すると、決済確認カードが会話内に直接表示されます。このカードは明確な視覚的アイデンティティを持っています。白または薄い背景のカードに、Kakao(カカオ)の特徴的なイエローグリーンのアクセントカラーが使われ、合計金額が大きな太字で表示され、加盟店名、取引タイムスタンプ、ステータスバッジ(「결제완료」=決済完了)が表示されます。

このカードは、テキストバブルの間に配置された独立したUI要素です。これには決済金額と取引確認情報が含まれていますが、配送先住所や注文商品は含まれていません。それらはカードの上または下のテキストバブルに残ります。スクリーンショットには、プレーンチャットテキストとスタイル付き決済カードという、2つのまったく異なる視覚形式が同じ画像内に含まれることになります。

ビジュアルAIに基づく列ベースの抽出エンジンは、スクリーンショット全体を複合シーンとして解釈します。決済カードを「KakaoPay(カカオペイ)の確認」として認識し、決済金額(결제 금액)列を定義していればそこに金額を抽出します。同時に、住所と注文情報についてはテキストバブルを個別に読み取ります。対照的に、従来のOCRはカードのテキストとチャットテキストを区別なく1つのストリームとして読み取るため、カードラベルの「결제완료」が出力では住所のすぐ隣に表示されることになります。

これは、他のプラットフォームの決済スクリーンショットにも当てはまる同じ原則です。決済確認と取引詳細は画像内で視覚的に異なる要素であり、抽出方法はすべてのテキストを同等に扱うのではなく、それぞれの役割を認識する必要があります。

シナリオ3:KakaoMapの位置情報カードで共有された住所

カカオトークでは、KakaoMapを使って現在地やピン留めした住所を共有できます。位置情報の共有ボタンをタップすると、チャットにプレビューカードが表示されます。カードには小さな地図のサムネイル、その下に住所テキスト、そしてユーザーが名前付きの場所をピン留めした場合はその場所の名前が表示されます。このカード上の住所テキストは、コンパクトなプレビュー内に小さなフォントで表示され、地図インターフェースが表示する方式に応じて、どちらかの住所形式で書かれている可能性があります。

このシナリオは、より難しい抽出ケースです。住所は画像内に存在しますが、スクリーンショットの一部を占めるカード内に小さなフォントサイズで表示されています。地図カードのテキストがプレビューの境界で部分的に切れていたり、地図カードが完全に読み込まれる前にスクリーンショットが撮られた場合、表示されている住所が不完全になる可能性があります。さらに、KakaoMapはプレビューでデフォルトで道路名住所を表示するため、顧客が自分の住所を地番で把握していても、共有されるカードには道路名の相当住所が表示される可能性が高く、顧客が以前のメッセージで入力した形式と異なる場合があります。

抽出の観点では、住所テキストが表示されていて切り詰められていない限り、KakaoMapカードは読み取り可能です。テキストバブルの住所と同じように列を定義すれば、エンジンは画像内のどこにテキストがあっても読み取ります。チャットバブル内でも地図カード上でも同様です。リスクは切り詰めです。スクリーンショットが地図カードの上半分だけを捉えている場合、下部の住所行が切れてしまう可能性があります。カード全体を上下に含むフルハイトのスクリーンショットであれば、この問題は回避できます。

セマンティック抽出が韓国語住所を処理する仕組み

カカオトークの注文スクリーンショットを扱う鍵は、あらゆるチャットスクリーンショット抽出シナリオに当てはまるのと同じ原則です。つまり、どの住所形式を期待するか、画面上のどこを探すかをエンジンに指示する必要はありません。抽出したい列 — 配送先住所(배송지)注文商品(주문 상품)数量(수량)支払金額(결제 금액) — を定義するだけで、AIは各スクリーンショットを完全な視覚シーンとして読み取り、各列のデータが何を意味し、カカオトークの会話内で通常どこに表示されるかを理解して特定します。

これは、テンプレートベースや位置ベースの抽出とは根本的に異なります。従来のアプローチでは、「住所はチャットバブル内、金額は緑色の支払いカード内、商品はその前のメッセージ内」と指定する必要がありました。顧客が商品を先に送り住所を後で送る、KakaoPayカードが商品リストの下ではなく上に表示されるなど、少しでも逸脱すると、事前に設定したレイアウトは機能しなくなります。セマンティック抽出は、固定された位置やページレイアウトに依存しません。なぜなら、座標ではなくコンテンツを解釈するからです。

特に韓国語の住所に関しては、エンジンは道路名形式(「서울시 강남구 테헤란로 123」)と地番形式(「서울시 강남구 역삼동 123-45」)の両方を住所として認識できます。どちらも、モデルが学習した内部構造パターン(行政区域の階層+数値識別子)に従っているからです。どちらを期待するかを伝える必要はありません。顧客が使用した形式を読み取り、その結果を「配送先住所」列に配置します。

抽出できるデータとその限界

一般的なカカオトークの注文スクリーンショットでは、適切に定義された列セットを使用することで、以下のデータを確実に取得できます。

出力例信頼性
配送先住所(배송지)경기도 성남시 분당구 정자동 178-3번지 203호高 — チャットテキストに表示されている場合
注文商品(주문 상품)キムチチゲ 3個、豚肉炒め 2個高 — 商品名と数量の組み合わせは構造的に明確
数量(수량)3、2高 — 商品名の横にある数字
支払金額(결제 금액)₩28,500高 — スクリーンショットにKakaoPayカードが写っている場合
顧客名(고객명)チャットヘッダーまたは送信者ラベルから中 — スクリーンショットのフレームに含まれる内容による

明確にしておくべき限界もあります。住所がKakaoMapの位置情報共有カード内にのみ表示され、そのカードのテキストがスクリーンショットで途切れている場合、住所の一部しか取得できません。顧客の注文詳細が複数の連続したメッセージにまたがっており、スクリーンショットが最後の3つの吹き出ししか捉えていない場合、注文リスト全体が表示されない可能性があります。顧客が住所と注文情報を別々のメッセージで送信し、その間に無関係なチャットが挟まっている場合、構造的に曖昧な箇所では同じ列に余計なテキストが含まれることがあります。

これらは抽出の限界ではなく、画像キャプチャの限界です。すべての解決策は同じです。関連するメッセージをすべて含むようにスクリーンショットを広く撮り、実際に必要なデータに合った列を定義することです。AIは画像に含まれる情報に基づいて処理を行います。欠落したデータを捏造することはありません。

手入力をやめよう — AIに読み取らせるだけ
画像やPDFをアップロード — 10秒で構造化データに
今すぐ試す
登録不要 · カード不要 · 10秒で結果

よくある質問

同じスクリーンショットから、韓国語の住所と英語のローマ字表記の両方を抽出できますか?

抽出エンジンは、画像に表示されているテキストをそのまま読み取ります。顧客が住所を韓国語(ハングル)でのみ入力した場合、エンジンはその内容を抽出します。ローマ字表記を生成することはありません。それは翻訳のステップであり、抽出ではありません。英語の出力が必要な場合は、顧客が住所を英語で入力しているか、抽出後に韓国語の住所をローマ字化する後処理を追加する必要があります。

住所にアパートの棟番号(동)と号室番号(호)が含まれている場合はどうなりますか?

韓国のアパート住所は、通常「XX동 XX호」(棟番号と号室番号)で終わります。抽出エンジンはこれらを完全な住所文字列の一部として読み取ります。これらを別々の列にしたい場合は、「Building(동)」や「Unit(호)」などの個別の列を定義してください。エンジンは동と호を住所の構造的な接尾辞として認識し、それに応じて分割できます。「102동 304호」のような住所は、「Building」列に「102」、「Unit」列に「304」が出力されます。

同じバッチ実行で、KakaoPayの支払いデータと配送先住所を抽出できますか?

はい。同じ列セット内に「Payment Amount(결제 금액)」と「Shipping Address(배송지)」の両方の列を定義してください。エンジンはスクリーンショットを一度処理し、両方の列にデータを入力します。支払い金額はKakaoPayカードから、住所はチャットバブルのテキストから取得されます。これは、両方の要素を含む単一のスクリーンショットでも、支払いカードがあるものとないものが混在するバッチのスクリーンショットでも機能します。KakaoPayカードが表示されていないスクリーンショットの場合、支払い列は空白になります。

カカオトークのダークモードとライトモードのスクリーンショットは、どのように処理すればよいですか?

抽出エンジンはテキストの内容を読み取り、背景色は読み取りません。ダークモードとライトモードはどちらも同じフォントファミリー、メッセージレイアウト、チャットバブルの配置を使用しており、背景色とテキストの色が反転するだけです。テキストが判読可能である限り(背景に対して高いコントラストがある限り)、エンジンはどちらのビジュアルテーマからも同じ内容を抽出します。低照度環境で撮影され、テキストと背景のコントラストが低いスクリーンショットは、テーマに関係なく読み取りが困難になる可能性があります。

住所が韓国語と漢字(한자)の混在で書かれている場合はどうなりますか?

一部の古い韓国の住所や公式の建物名には、ハングルとともに漢字が含まれている場合があります。特に、土地の地番住所や歴史的な地区名によく見られます。抽出エンジンは、事前に読み込まれた辞書ではなく、視覚認識によって文字を読み取ります。つまり、画面上に表示された文字をそのまま出力します。「종로구 慶雲洞 89-1」のような混在した表記の住所は、スクリーンショットに表示されている通りの漢字を含めて抽出されます。ハングルのみの出力が必要な場合は、後処理が必要です。

カカオトークの注文スクリーンショットは、フォームでも、請求書でも、構造化された文書でもありません。それは会話です。そこでは、住所が韓国の2つの併存する住所体系のいずれかで書かれている可能性があり、注文詳細は会話調の韓国語に混ざり、支払確認はまったく異なるビジュアルカードに表示されます。ここで有効な抽出方法は、あらゆるプラットフォームのチャットスクリーンショットで通用する方法と同じです。必要なフィールドを定義し、AIに各データを会話のビジュアルコンテキスト内でその意味を理解させることで特定させるのです。

📮 contact email: [email protected]