Salesforceには無料の「Scan to Salesforce」というアプリを使うことで、名刺からリードデータを作成することができた。
その「Scan to Salesforce」は2024年5月31日にサービスが終了するが、同等の機能を持つ無料アプリは存在しない。
既存のOCR機能と生成AIを組み合わせれば名刺からテキストを抽出してリード項目に振り分けることはできることは前回説明した。
しかしSalesforceからどうやってOCR機能や生成AI機能と連携したらいいのか。
Salesforce上では何を準備すればいいのか。
そこで今回はSalesforce上に名刺スキャン機能を作るときの構成について紹介する。
この記事を書いている人
記事を読むメリット
Salesforce上に名刺スキャン機能を作るときの構成がわかり、処理を自作する道筋がわかるようになる
前提情報
ScanToSalesforceの終了と代替サービスや自作の検討については以下の記事に書かれている。
2024年4月現在では、ScanToSalesforceのような「名刺画像をスキャンできて、Salesforceのリードとして取り込むことができる無料のソフトウェアまたはサービス」は存在しない。
有料サービスを使うか、自作する必要がある。
自作する場合は、OCRと構造化については外部サービスのAPIが利用できるので、Salesforce側は主に入出力を実装すれば良い。
Salesforceとのインターフェース
Salesforce上に名刺スキャン機能を作る際に、Salesforce上に実装する必要があるのは以下の機能である。
Salesfoce側に必要な処理
- 名刺画像をアップロードしてテキスト抽出処理(VisionAPI)に渡す
- テキスト抽出結果を構造化処理(生成AI)に渡す
- 構造化された各項目のデータを使ってリードレコードを作成する
入力画像の連携とOCR結果の連携と構造化結果を使ったリード作成である。
名刺画像のOCR処理への連携
難度が高いのは名刺画像の連携の部分だろう。
なぜならSalesforceの標準機能に画像を外部に渡す機能が無いからだ。
画像を渡す方法としてはいくつか考えられる。
画像を外部に渡す方法
- 外部サービスのストレージに画像をアップロードする
- Salesforceの「ファイル」にアップロードした画像のURLを外部サービスに渡す
- 画像ファイルをテキスト化して外部サービスに渡す
しかしどれも標準機能では実現できない。
標準機能で処理を実装するならフローを使うことになる。
しかしフローの「ファイルのアップロードコンポーネント」には、アップロードしたファイルのURLやデータそのものにアクセスする項目が無い。
項目が無いので名刺画像ファイルをアップロードしたとしても、外部のOCR機能にデータを渡すことができない。
フローでは画像を外部に連携することはできないが、他の手段はある。
自分で処理と画面コンポーネントを作ることができる。
それがLightning Web コンポーネント(LWC)である。
LWCを作成することで、HTMLとjavascriptやApexを自分で書くことができる。
なのでアップロードされたファイルに対して、外部サービスに繋ぐ処理も作ることができるわけである。
テキスト抽出結果を構造化処理(生成AI)に渡す
名刺画像をOCR処理してテキストを抽出できたら、次は抽出したテキストを指名や住所などの項目に振り分けて構造化する。
構造化処理の生成AIにテキストを渡すのは、引き続きLWCからやってしまってもいい。
しかし画像ではなくテキストのパラメータであれば画面フローからHTTPコールアウトで渡すこともできる。
構造化した結果もjson形式であればフローのHTTPコールアウトのレスポンスとして受け取ることができる。
参考
LWCから画面フローにパラメータを渡して起動するのは以下のように lightning-flow
タグを使って呼び出すことができる。
<template> <lightning-flow flow-api-name='Survey_customers' flow-input-variables={inputVariables} onstatuschange={handleStatusChange} > </lightning-flow> </template>
OCR結果のテキストを入力パラメータとして画面フローを起動し、画面フローの中でHTTPコールアウトを使って構造化処理にOCR結果テキストを渡すとよい。
構造化結果を使ってリード作成
抽出したテキストを名前や住所などの要素に分解できたら、各要素をSalesforceのリード項目にマッピングしてリードを作成する。
構造化を画面フローでやっているなら、リード作成も画面フローの中で実施するのが良いだろう。
まとめ
今回はSalesforce上に名刺スキャン機能を作るときの構成について紹介した。
Salesforce上に名刺スキャン機能を作る際に、Salesforce上に実装する必要があるのは以下の機能である。
Salesfoce側に必要な処理
- 名刺画像をアップロードしてテキスト抽出処理(VisionAPI)に渡す
- テキスト抽出結果を構造化処理(生成AI)に渡す
- 構造化された各項目のデータを使ってリードレコードを作成する
これらを実現するためには、筆者は以下のような構成で対応した。
Salesfoce側の処理構成
- 名刺画像をアップロードしてテキスト抽出処理(VisionAPI)に渡す部分は、画面フローでは実現できないのでLightning Webコンポーネントで作成。
- 得られたOCR結果を画面フローに渡し、画面フローからHTTPコールアウトで構造化処理にOCR結果テキストを渡す。
- 構造化した各要素は画面フローの中でリード項目にマッピングしてリードを作成する。
実装の注意点などはまた別の回で紹介しようかと思う。