皆さんこんにちは、横浜で清掃業をしているヤスです。
前回は【Dify】箇条書きメモから業務改善提案書を自動生成!
のアプリを作りましたね。今回はこちらです。
1. 展示会後の「名刺入力地獄」を終わらせるアプリを作りました
展示会・セミナー・商談が終わった後に待っている「名刺入力地獄」。100枚の名刺をCRMに1枚ずつ手入力する作業は、1枚3〜5分かかると仮定すると100枚で約8時間です。しかもこれが毎回繰り返されます。
今回紹介する「名刺写真→CRM入力データ自動生成くん」は、その悩みを丸ごと解決します。名刺の写真をアップロードするだけで、Salesforce・HubSpot・kintone・Notion・Excelなど6種類のCRMに対応したデータを自動生成します。
今回は初めてDifyの「ビジョン機能(画像認識AI)」を使います。ビジョン機能を使うと、テキストを入力しなくても写真・画像をAIが読み取って処理できるようになります。プログラミング不要・20〜30分で完成します。
💡 名刺写真の読み取りにはDifyの「ビジョン機能」を使っています。設定方法はこちら→[【第11話】ビジョン機能の解説記事]
2. 完成イメージ|こんな出力が自動生成されます
━━━━━━━━━━━━━━━━━━━━ 📇 名刺データ読み取り結果 ━━━━━━━━━━━━━━━━━━━━ 📝 読み取り生テキスト 株式会社〇〇 営業部 田中 太郎(タナカ タロウ)部長 Tel: 03-1234-5678 / Mobile: 090-1234-5678 Email: tanaka@example.co.jp 〒100-0001 東京都千代田区〇〇1-2-3 ━━━━━━━━━━━━━━━━━━━━ ✅ 構造化データ ━━━━━━━━━━━━━━━━━━━━ 【氏名】田中 太郎 【氏名(読み)】タナカ タロウ 【会社名】株式会社〇〇 【部署名】営業部 【役職名】部長 【メール】tanaka@example.co.jp 【電話(直通)】03-1234-5678 【電話(携帯)】090-1234-5678 【FAX】不明 【住所】〒100-0001 東京都千代田区〇〇1-2-3 【URL】不明 【SNS】不明 【備考】〇〇展示会で名刺交換 ━━━━━━━━━━━━━━━━━━━━ 💾 汎用フォーマット 入力用データ ━━━━━━━━━━━━━━━━━━━━ 会社名:株式会社〇〇 氏名:田中 太郎(タナカ タロウ) 部署:営業部 役職:部長 メール:tanaka@example.co.jp 電話:03-1234-5678 / 090-1234-5678 住所:〒100-0001 東京都千代田区〇〇1-2-3 備考:〇〇展示会で名刺交換
💡 読み取れなかった項目は「不明」と明記されます。推測で補完しないのが精度の高さの秘訣です。
3. ビジョン機能とは?初めての方向け30秒解説
DifyのLLMブロックでビジョン機能をONにすると、AIが写真・画像を読み取れるようになります。名刺・レシート・書類・商品写真などをそのまま入力として使えます。
| 比較項目 | ビジョン機能なし | ビジョン機能あり |
| 入力できるもの | テキストのみ | テキスト+写真・画像 |
| 名刺データ化 | 手打ちが必要 | 写真を撮るだけでOK |
| 対応モデル | 全モデル | GPT-4o・Claude3以上 |
| 設定方法 | なし | LLMブロックでONにする |
⚠️ ビジョン機能はGPT-4oが必要です。GPT-3.5・gpt-4o-miniでは画像認識ができません。
4. 全体のブロック構成
| # | ブロック名 | 種類 | 役割 |
| 1 | ユーザー入力 | 開始 | 名刺写真・CRM種類・メモを入力 |
| 2 | 名刺テキスト読み取り | LLM①(ビジョンON) | 写真から全テキストを読み取る |
| 3 | 情報の構造化 | LLM② | 項目別に整理して構造化する |
| 4 | CRMフォーマット変換 | LLM③ | 選択したCRMの形式に変換する |
| 5 | 最終出力整形 | テンプレート変換 | 全情報を見やすくまとめる |
| 6 | 出力 | 終了 | 最終結果を出力する |
5. 事前準備|必要なものはこれだけ
- Difyのアカウント(無料プランOK)
- OpenAIのAPIキー(GPT-4oが使えるプラン)
- テスト用の名刺(自分の名刺でOK)
- 所要時間:20〜30分
6. 【作り方】ステップごとに丁寧に解説
STEP 1|新しいワークフローアプリを作成する
- Difyにログインして「アプリを作成」をクリック
- 種類は「ワークフロー」を選ぶ ← チャットボットではない!
- アプリ名に「名刺写真→CRM入力データ自動生成くん」と入力
- 「作成する」をクリック
STEP 2|開始ブロックを設定する(変数3つ)
| 変数名 | 表示名 | 種類 | 必須 |
| business_card | 名刺写真 | ファイル | ✅ 必須 |
| crm_format | CRMの種類 | セレクトボックス | ✅ 必須 |
| memo | 補足メモ | テキスト(短文) | 任意 |
「crm_format」セレクトボックスの選択肢(6つ)
- Salesforce
- HubSpot
- kintone
- Notion
- Excel・スプレッドシート
- 汎用フォーマット
STEP 3|LLM①(ビジョンON)を設定する ← 今回の一番の核心!
このブロックがこのアプリの心臓部です。通常のLLMブロックと違い「ビジョン機能をON」にする手順が必要です。
- LLMブロックを追加して「名刺テキスト読み取り」と名前をつける
- モデルを「GPT-4o」に設定する ← 必ずGPT-4oにすること
- 「ビジョン」のトグルをONにする
- 画像ソースに「{{開始.business_card}}」を設定する
- 以下のプロンプトを貼り付ける
# Role あなたは名刺OCRの専門家です。 # Task 添付された名刺画像から全てのテキストを 正確に読み取って出力してください。 # Rules ## Must – 名刺に書かれている文字を全て読み取る – 日本語・英語・数字・記号を正確に読み取る – 縦書き・横書きどちらにも対応する ## Must Not – 読み取れなかった文字を推測で補完しない – 読み取れない場合は「読み取り不可」と明記する – テキスト以外の情報を出力しない # Output Format 読み取ったテキストをそのまま出力すること。 説明・補足は一切不要。
💡 temperatureは0.1に設定してください。OCRは正確性が命です。
STEP 4|LLM②(情報の構造化)を設定する
# Role & Expertise あなたは名刺情報の構造化専門家です。 # Input 読み取り済みテキスト:{{LLM1.text}} 補足メモ:{{開始.memo}} # Pre-Processing(出力しないこと) 以下の項目を特定する 氏名・読み仮名・会社名・部署名・役職名 メール・電話(直通/携帯/FAX)・住所・URL・SNS # Rules ## Must – 全12項目を必ず出力する(不明な場合も「不明」で出力) – 電話番号はハイフン付きで統一(090-1234-5678) – メールアドレスは小文字で統一 – {{開始.memo}}は「備考」欄に追記する ## Must Not – 読み取れなかった情報を推測で補完しない – 「不明」以外の代替表現を使わない # Output Format 【氏名】{フルネーム} 【氏名(読み)】{読み仮名 or 不明} 【会社名】{会社名} 【部署名】{部署名 or 不明} 【役職名】{役職名 or 不明} 【メール】{メールアドレス or 不明} 【電話(直通)】{番号 or 不明} 【電話(携帯)】{番号 or 不明} 【FAX】{番号 or 不明} 【住所】{住所 or 不明} 【URL】{URL or 不明} 【SNS】{SNSアカウント or 不明} 【備考】{メモの内容 or なし}
STEP 5|LLM③(CRMフォーマット変換)を設定する
# Role あなたはCRMデータ入力の専門家です。 # Input 構造化データ:{{LLM2.text}} CRMの種類 :{{開始.crm_format}} # Pre-Processing(出力しないこと) {{開始.crm_format}}に合わせた出力形式を選択する Salesforce→取引先名・氏名・タイトル・電話・メール・住所 HubSpot →名・姓・会社名・職種・電話・メール・住所 kintone →レコード形式・フィールド名:値 Notion →プロパティ形式・テーブル行 Excel →列ヘッダー付きCSV形式 汎用 →見やすい箇条書き形式 # Rules ## Must – {{開始.crm_format}}の形式に厳密に従う – 「不明」の項目は空白または「-」で出力する – コピーしてすぐ使えるフォーマットにする ## Must Not – 指定外の形式で出力しない – 説明文・補足を出力に含めない # Output Format {{開始.crm_format}}に合わせたフォーマットで データのみを出力すること。
STEP 6|テンプレート変換+終了ブロックを設定する
テンプレートブロックの入力変数を以下のように設定します。
| 変数名(左) | 参照先(右) | 内容 |
| arg1 | LLM①.text | 読み取り生テキスト |
| arg2 | LLM②.text | 構造化データ |
| arg3 | LLM③.text | CRM用フォーマット |
| arg4 | 開始.crm_format | 選択したCRM名 |
━━━━━━━━━━━━━━━━━━━━ 📇 名刺データ読み取り結果 ━━━━━━━━━━━━━━━━━━━━ 📝 読み取り生テキスト {{arg1}} ━━━━━━━━━━━━━━━━━━━━ ✅ 構造化データ ━━━━━━━━━━━━━━━━━━━━ {{arg2}} ━━━━━━━━━━━━━━━━━━━━ 💾 {{arg4}} 入力用データ ━━━━━━━━━━━━━━━━━━━━ {{arg3}}
終了ブロックを追加してテンプレート変換の出力を設定すれば完成です。

7. テスト実行と確認ポイント
| 項目 | 入力内容 |
| 名刺写真 | 手持ちの名刺を撮影してアップロード |
| CRMの種類 | 汎用フォーマット(まずはこれでテスト) |
| 補足メモ | 〇〇展示会で名刺交換(任意) |
- 読み取り生テキストが名刺の内容と一致しているか
- 構造化データで全12項目が出力されているか
- 読み取れなかった項目が「不明」になっているか(推測補完されていないか)
- CRM用フォーマットが選択したCRMに合った形式になっているか
⚠️ ビジョン機能が動作しない場合はモデルがGPT-4oになっているか・ビジョンのトグルがONになっているかを確認してください。
8. さらに便利にする3つのカスタマイズ
① 複数枚まとめて処理する
繰り返しブロック(Iterator)を追加すると複数の名刺を一括処理できます。展示会後に100枚まとめて処理するシーンに最適です。
② Google Sheetsに自動蓄積する
Google Sheets連携ブロックを追加すると読み取ったデータが自動的にスプレッドシートに記録されます。CRMへのコピペ作業すら不要になります。
③ 名刺認識精度を上げる
LLM①のプロンプトに「縦書き名刺の場合は右から左に読む」などの指示を追加することで特殊な名刺への対応精度が上がります。
9. よくある質問(FAQ)
Q1. 手書きの名刺も読み取れますか?
印刷された名刺であれば高精度で読み取れます。手書きは精度が下がることがあります。また斜めになっていたり暗い場所で撮影した写真は認識精度が落ちることがあります。
Q2. 英語・中国語の名刺にも対応していますか?
GPT-4oは多言語対応しているため英語・中国語・韓国語などの名刺も読み取れます。
Q3. 名刺のデータはどこに保存されますか?
Difyのサーバー上で処理されて出力されます。センシティブな情報を扱う場合は社内のDify環境(セルフホスティング)での運用をおすすめします。
Q4. 1枚あたりのコストはいくらですか?
GPT-4oの料金体系により1枚あたり数円〜10円程度が目安です。展示会後に100枚処理しても数百円〜1000円程度で収まります。
10. まとめ
- 名刺写真をアップするだけで6種類のCRM対応データを自動生成
- DifyのビジョンAI機能(画像認識)を使った入門として最適な構成
- 読み取れない項目は「推測補完しない」設計で精度を担保
- 5ブロック構成。手順通りに進めれば20〜30分で完成
- 展示会後の名刺入力作業が1枚あたり数秒に短縮
今回もそんなに難しくはないので皆さん作ってみてください。
次におすすめの記事
【Dify】コード実行ブロックとは?初心者が最初に知るべき基本解説
xもやってるので良かったら見に来てください
次回も是非お楽しみに!


コメント