WEBサービス

Salesforce上に名刺スキャン機能を作るときの構成

Salesforce上に名刺スキャン機能を作るときの構成

ScanToSalesforceがサービス終了するけど、似たような処理を自作するにはどんな構成にしたらいいんでしょうか?


Salesforceには無料の「Scan to Salesforce」というアプリを使うことで、名刺からリードデータを作成することができた。

その「Scan to Salesforce」は2024年5月31日にサービスが終了するが、同等の機能を持つ無料アプリは存在しない

既存のOCR機能と生成AIを組み合わせれば名刺からテキストを抽出してリード項目に振り分けることはできることは前回説明した。


しかしSalesforceからどうやってOCR機能や生成AI機能と連携したらいいのか

Salesforce上では何を準備すればいいのか。

そこで今回はSalesforce上に名刺スキャン機能を作るときの構成について紹介する。

この記事を書いている人


システムエンジニア、AIエンジニアと、IT業界で10年以上働いている中堅。PythonとSQLが得意。

記事を読むメリット

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を自分で書くことができる。

なのでアップロードされたファイルに対して、外部サービスに繋ぐ処理も作ることができるわけである。


おお!これならアップロードした名刺画像をOCR処理に渡すことができますね!



テキスト抽出結果を構造化処理(生成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結果テキストを渡す。
  • 構造化した各要素は画面フローの中でリード項目にマッピングしてリードを作成する。


おお~。これで名刺取込処理を作れますね。
今回紹介したのは何を使うかレベルの構成なので、細かい実装は必要ですけどね。


実装の注意点などはまた別の回で紹介しようかと思う。

ITipsと同じようなブログを作る方法

ブログに興味がありますか?

もしブログに興味がある場合は↓このページ↓を参考にすれば、ITipsと同じ構成でブログを作ることができます

サーバー、ドメイン、ASPと【ブログに必要なものは全て】このページに書きました。
同じ構成でブログ作るのはいいけど、記事はマネしないでネ (TДT;)

ランキング参加中

にほんブログ村 IT技術ブログへ

他にもブログやSNSで紹介してくれると励みになります。

はてブのコメントで酷評されると泣きます(´;ω;`)

-WEBサービス
-,

© 2024 ITips