この記事のポイント
- プロンプトの書き方ひとつで名刺OCRの精度が大きく変わることを実例で解説
- 「ペルソナ設定」「Few-shot例」「出力形式の制御」の3つのテクニック
- やりすぎると逆効果になるケースと、適切なバランスの取り方
はじめに
「名刺をGeminiに読み取らせたら、会社名と部署が混ざって出力された…」
LLM-OCRは非常に便利ですが、プロンプトの書き方によって精度が大きく左右されます。特に名刺は、限られたスペースに様々な情報が詰め込まれているため、AIが「どの情報を何の項目として抽出すべきか」を迷いやすい書類です。
本記事では、3つのプロンプトテクニックを使って名刺OCRの精度を段階的に改善する方法を解説します。
検証環境
| 項目 | 内容 |
|---|---|
| モデル | Gemini 2.0 Flash(Vertex AI) |
| テストデータ | 名刺PDF 10枚(IT・企業・医療・和風・飲食など) |
| 評価方法 | 各プロンプトで同じ名刺10枚を読み取り、項目分類の正確性を比較 |
テクニック1:基本プロンプト vs 構造化プロンプト
まず、最もシンプルなプロンプトと、出力形式を指定したプロンプトを比較します。
検証に使用したIT企業名刺はこちらです。

プロンプトA:シンプル指示
この名刺の内容を読み取ってください。
出力例(IT企業名刺):
氏名: 渡辺 亮太 (RYOTA WATANABE)
役職: CTO / Co-Founder
会社名: 株式会社ノヴァテック (NOVATECH Inc.)
住所: 〒106-0032 東京都港区六本木4-2-8 六本木テックスクエア7F
電話番号: 03-6789-0123
携帯電話: 080-4567-8901
メールアドレス: r.watanabe@novatech.io
ウェブサイト: https://novatech.io
情報自体は正確ですが、形式がバラバラでそのままデータベースに取り込めません。
プロンプトB:JSON形式を指定
この名刺画像からすべての情報を読み取り、以下のJSON形式で出力してください。
該当する情報がない場合は空文字 "" としてください。JSONのみを出力してください。
{
"会社名": "",
"部署": "",
"役職": "",
"氏名": "",
"電話番号": "",
"メールアドレス": "",
"住所": "",
"URL": ""
}
出力例(同じIT企業名刺):
{
"会社名": "株式会社ノヴァテック",
"部署": "",
"役職": "CTO / Co-Founder",
"氏名": "渡辺亮太",
"氏名(フリガナ)": "",
"郵便番号": "〒106-0032",
"住所": "東京都港区六本木4-2-8 六本木テックスクエア7F",
"電話番号": "03-6789-0123",
"FAX": "",
"メールアドレス": "r.watanabe@novatech.io",
"URL": "https://novatech.io",
"その他": ""
}
JSON形式を指定するだけで、構造化されたデータとして出力されます。
比較結果
| 観点 | プロンプトA(シンプル) | プロンプトB(JSON指定) |
|---|---|---|
| テキスト認識 | ◎ | ◎ |
| 構造化 | ✗(自由文) | ◎(JSON) |
| DB取り込み | 不可(要加工) | そのまま可能 |
| 10枚の出力安定性 | △(形式がバラつく) | ◎(全件同一形式) |
教訓: LLM-OCRでは「何を読み取るか」だけでなく「どう出力するか」を明示することが重要。
テクニック2:ペルソナ設定
AIに「名刺管理の専門家」という役割を与えることで、分類精度が向上するか検証します。
プロンプトC:ペルソナ付き
あなたは企業の人事・総務部門で名刺管理を10年担当してきた専門家です。
名刺に記載されている情報を正確に読み取り、項目ごとに分類する能力に長けています。
以下の名刺画像から情報を読み取り、JSON形式で出力してください。
分類のルール:
- 「代表取締役」「部長」「課長」などは「役職」に分類
- 「営業部」「開発部」「○○事業部」などは「部署」に分類
- 「○○ディレクター」は文脈に応じて役職または部署に分類
{
"会社名": "",
"部署": "",
"役職": "",
"氏名": "",
"電話番号": "",
"メールアドレス": "",
"住所": "",
"URL": "",
"その他": ""
}
ペルソナ設定で改善された具体例
問題ケース1:モダンデザイン名刺

この名刺には「クリエイティブディレクター / デザイン事業部」と書かれています。
| プロンプト | 部署 | 役職 |
|---|---|---|
| B(JSON指定のみ) | クリエイティブディレクター / デザイン事業部 | (空欄) |
| C(ペルソナ付き) | デザイン事業部 | クリエイティブディレクター |
問題ケース2:建築・設計事務所の名刺

この名刺には「一級建築士 / 設計部長」と書かれています。
| プロンプト | 部署 | 役職 |
|---|---|---|
| B(JSON指定のみ) | 設計部長 | (空欄) |
| C(ペルソナ付き) | (空欄) | 設計部長 |
ペルソナ設定の「○○長は役職に分類」「○○ディレクターは役職に分類」というルールが効き、正確に分離されました。
10枚での比較(役職・部署の分類精度)
| プロンプト | 役職の正確な分類 | 部署の正確な分類 |
|---|---|---|
| B(JSON指定のみ) | 8/10 (80%) | 8/10 (80%) |
| C(ペルソナ付き) | 10/10 (100%) | 10/10 (100%) |
プロンプトBでは10枚中2枚(モダン・建築)で役職と部署の混同が発生しましたが、ペルソナ設定で全件正確に分類されました。
教訓: ペルソナ設定は「曖昧な分類」を解消するのに効果的。ただし役割は簡潔に。
テクニック3:Few-shot(読み取り例の提示)
AIに「正しい出力例」を1〜2件見せることで、出力の一貫性と精度をさらに向上させます。
プロンプトD:Few-shot付き
あなたは名刺管理の専門家です。名刺画像から情報を正確に読み取り、
JSON形式で構造化してください。
【読み取り例】
入力:医療系クリニックの名刺(院長の名刺)
出力:
{
"会社名": "さくら内科クリニック",
"部署": "",
"役職": "院長",
"氏名": "山本花子",
"氏名(フリガナ)": "",
"電話番号": "03-1111-2222",
"メールアドレス": "hanako@sakura-clinic.jp",
"住所": "東京都新宿区西新宿1-1-1",
"URL": "",
"その他": "内科・小児科"
}
注意事項:
- 診療科目は「その他」に分類
- 資格名(医学博士など)は「役職」に含める
- 不明な情報は空文字にし、推測で埋めないこと
では、以下の名刺を読み取ってください。
Few-shot で改善された具体例
問題ケース:和食料理店の名刺

| プロンプト | 会社名 | フリガナの扱い | 営業時間の扱い |
|---|---|---|---|
| C(ペルソナのみ) | (空欄) | 「にほんりょうり かげつ」→ フリガナに誤分類 | 「その他」に分類 |
| D(Few-shot付き) | 花月 | (空欄)→ 正しく無視 | 「その他:営業時間 昼11:30-14:00 / 夜17:00-22:00」と整形 |
ペルソナのみのCでは「にほんりょうり かげつ」を人名のフリガナと誤解し、店名(会社名)が空欄になりました。Few-shot付きのDでは、読み取り例で「クリニック名→会社名」というパターンを示したことで、「花月」を正しく会社名に分類できました。
10枚での比較(全項目の総合精度)
| プロンプト | JSON出力 | 役職・部署の正確な分類 | 付随情報の分類 |
|---|---|---|---|
| A(シンプル) | 0/10(全件自由文) | ―(構造化なし) | ― |
| B(JSON指定) | 10/10 | 8/10 (80%) | △ |
| C(ペルソナ付き) | 10/10 | 10/10 (100%) | ○ |
| D(Few-shot付き) | 10/10 | 10/10 (100%) | ◎ |
やりすぎ注意:過剰なプロンプトの逆効果
NG例:指示が多すぎるプロンプト
あなたは大企業の総務部で20年以上名刺管理を担当してきたベテランです。
年間10万枚以上の名刺を処理した経験があり、どんなデザインの名刺でも
一瞬で情報を読み取れます。あなたの目は名刺に特化したOCRエンジンの
ように精密です。
以下の37項目を必ず抽出してください:
会社名(正式名称)、会社名(略称)、会社名(英語)、
部署名(第1階層)、部署名(第2階層)、部署名(英語)、
役職(日本語)、役職(英語)、...
このような過剰なプロンプトは以下の問題を引き起こします。
| 問題 | 説明 |
|---|---|
| 過度な推測 | 名刺にない情報まで埋めようとする |
| 出力の肥大化 | 空欄だらけの37項目JSONが出力される |
| レスポンス遅延 | プロンプトが長いほど処理時間・コストが増加 |
| 精度低下 | 指示が多すぎてAIが混乱し、基本的な分類ミスが増える |
適切なバランス
推奨される項目数:8〜12項目
推奨されるFew-shot例:1〜2件
推奨されるペルソナ:2〜3文
名刺に一般的に記載される情報は限られています。抽出項目を増やしすぎるより、よくある分類ミスをルールとして明示する方が効果的です。
実践テンプレート
以下は、本記事の検証結果を踏まえた推奨プロンプトです。
あなたは名刺管理の専門家です。名刺画像から正確に情報を読み取り、
JSON形式で構造化してください。
【分類ルール】
- 「○○長」「○○取締役」「○○ディレクター」→ 役職
- 「○○部」「○○課」「○○事業部」→ 部署
- 診療科目・資格・営業時間など → その他
- 不明な情報は空文字にし、推測で埋めないこと
【出力形式】JSONのみ出力してください。
{
"会社名": "",
"部署": "",
"役職": "",
"氏名": "",
"氏名(フリガナ)": "",
"郵便番号": "",
"住所": "",
"電話番号": "",
"FAX": "",
"メールアドレス": "",
"URL": "",
"その他": ""
}
まとめ
名刺OCRのプロンプト設計は、3つのステップで段階的に改善できます。
| ステップ | テクニック | 改善内容 |
|---|---|---|
| 1 | 出力形式(JSON)の指定 | 自由文 → 構造化JSON(10/10成功) |
| 2 | ペルソナ設定の追加 | 役職・部署の分類精度 80% → 100% |
| 3 | Few-shot例の追加 | 店名・診療科目など付随情報の分類が安定 |
最も重要なのは ステップ1の「出力形式の指定」 です。これだけでJSON出力が安定します。ペルソナ設定は「役職と部署の混同」を解消し、Few-shotは「飲食店名を会社名に分類する」といった業種特有のパターンに対応するのに効果的です。
関連記事
- 名刺OCRで人脈データベースを自動作成する方法【Gemini API × Python】
- 名刺OCRツール比較:Gemini vs Dots-OCR vs EasyOCR
- OCR精度が変わる!プロンプト「ペルソナ設定」の効果と注意点
- プロンプトエンジニアリング実践ガイド:AIの回答精度を劇的に上げる技術
困ったときは
名刺OCRのプロンプト設計やチューニングでお困りでしたら、AI DARUMAにご相談ください。貴社の名刺フォーマットに最適化されたプロンプトを設計いたします。
〒723-0062 広島県三原市本町 1丁目7-29 2階 コワーキングスペースarica内