🔍

GPT-4oのOCRを試してみました

2024/05/16に公開

GPT-4oについて

GPT-4oは5/13に発表されたGPT-4をさらに強力にした生成AIです。
GPT-4に比べて処理速が速く、音声にも対応しています。

その中でOCRの機能もかなり進化したという記事が散見されたため、実際に動かして試してみました。

OCRを試してみる

先日投稿した私の記事Microsoft Build 2024予習 Lab~LLM~編をPDF化し、GPT-4oのプロンプトとして投げて試してみます。

要約

まずは、普通に要約してもらいました。

🔳プロンプト
添付したPDFの内容を要約してください。

🔳回答
PDF「Microsoft Build 2024予習 LabLLM編」の内容を要約します。

**はじめに**
・著者がMicrosoft Build 2024のセッション「Learn how to interact with Large Language Models」に参加予定で、その予習内容をまとめたものです。

**セッションの内容**
・**Few-shot learning**:少数の例文をプロンプトに入力して簡単な学習をさせる方法。例として、奇数・偶数を判断するプロンプトが示されています。
・**Chain of thought**:思考の連鎖を使って具体的なプロセスをプロンプトに入力し、問題を解く手順を学習させる方法。段階的なダイエット計画の例が示されています。
・**Image creation**:Azure OpenAIのDALL-Eモデルを使った画像生成。APIを使って画像のサイズや画質を指定可能です。
・**Multi-modal scenarios**:テキストや画像などの情報を組み合わせる大規模マルチモーダルモデル(LMM)。GPT-4を例に、アイディア生成や説明文作成のプロセスが説明されています。

**まとめ**
・セッションで得られる知識やスキルは、生成AIを業務で活用する際のヒントになると述べています。
・オンライン視聴可能なLLM関連セッションもあることが案内されています。

このPDFは、Microsoft Build 2024に参加するための準備として、LLM(大規模言語モデル)の基本的な学習方法や実践例を紹介しています。

ほぼ完璧に要約してくれました。

修正

次に文章の修正を依頼してみます。
今回は初心者にもわかりやすくという指示を出しました。

🔳プロンプト
添付したPDFの内容を初心者にもわかりやすくて読みやすい内容に直してください。

🔳回答
**Microsoft Build 2024 予習 Lab ~LLM 編~**

**はじめに**
Microsoft Build 2024に参加するための予習として、特にLLM(大規模言語モデル)に関するセッション「Learn how to interact with Large Language Models」の内容を事前に学習します。

**セッション内容**
このセッションでは、次の内容について学びます:

・Few-shot learning:少数の例だけでモデルを学習させる方法
・Chain of thought:思考の連鎖を使って問題を解く方法
・Image creation:AIを使って画像を生成する方法
・Multi-modal scenarios:テキストや画像を組み合わせて使う方法

**Few-shot learning**
Few-shot learning(ヒューショット学習)は、少数の例文を使ってモデルを学習させる方法です。例えば、奇数や偶数を判断するモデルを作る場合、以下のように入力します。

ユーザー:6
アシスタント:偶数
ユーザー:11
アシスタント:奇数
ユーザー:7
アシスタント:奇数
このように簡単な例文をいくつか入力することで、モデルに意図した回答をさせることができます。

**Chain of thought**
Chain of thought(思考の連鎖)は、問題を解くための具体的なプロセスを示す方法です。例えば、「最も効果的で継続できるダイエット方法は?」と質問すると、単純な回答が返ってきます。しかし、「段階的に説明して」と付け加えると、以下のように詳細な回答が得られます。

段階1:自己評価(現在の食習慣、活動レベルの確認)
段階2:目標設定(具体的で達成可能な目標を設定)
段階3:食事の計画(バランスの取れた食事計画を立てる)
段階4:運動計画(定期的な運動の実施)
段階5:心のサポート(心理的なサポートも考慮)
段階6:レビューと調整(進行状況を定期的に見直し、必要に応じて調整)

**Image creation**
Azure OpenAIのDALL-Eモデルを使って、画像を生成することができます。例えば、指定したサイズや画質で必要な画像を生成できます。

**Multi-modal scenarios**
Multi-modal scenariosは、テキストや画像を組み合わせて使う方法です。例えば、ブランドのアイディアを考えるときに、生成AIを使ってアイディアを出してもらい、その結果を元に画像や説明文を作成することができます。

**まとめ**
このセッションを通じて、生成AIの効果的な使い方を学び、業務で活用する際のヒントを得ることができます。オンライン視聴可能なセッションもあるので、ぜひ参加してみてください。

専門用語を省くといったこともプロンプトから判断して直してくれました。
内容も特に違和感はないですね。

json形式

OCRで得た結果をプロプラムの中で使う場合、json形式の方が扱いやすいです。
そこでjson形式でPDFの中身を返してもらう指示を出して試してみます。

まずはkeyの部分を指定して返してもらいます。

🔳プロンプト
添付したPDFのキーワード(keyword)、文字数(wordcount)、感情(emotion)をjson形式で返してください。

🔳回答
{
  "keywords": [
    "Microsoft",
    "Build",
    "2024予習",
    "Lab~LLM~編",
    "2024/05/16",
    "0:42",
    "https://zenn.dev/yamatat/articles/29df56cce51383",
    "of",
    "Azure",
    "段階"
  ],
  "wordcount": 443,
  "emotion": "neutral"
}

"Few-shot learning"とかも返ってくるかと思ったのですが、そこは少し予想と外れました。
ですが、プロンプト次第で柔軟に対応してくれそうです。

では、最後にもっと自由にjsonで返してもらうように指示してみます。

🔳プロンプト
添付したPDFをjson形式で返してください。jsonの内容は必要と判断したkeyを定義して作ってください。

🔳回答
どちらの回答がお好みですか?
============
{
  "title": "Microsoft Build 2024予習 Lab~LLM~編",
  "author": "yamamoto_tat",
  "date": "2024/05/14",
  "introduction": "Microsoft Build2024に参加するための予習内容。現地参加可能なLLMセッションに関する予習。",
  "sections": [
    {
      "title": "セッションの内容",
      "content": "LLMに関するセッション。few-shot learning、chain of thought、image creation、multi-modal scenariosについて学習。"
    },
    {
      "title": "few-shot learning",
      "content": "少数の例文をプロンプトに入力し、ファインチューニングなしで学習する手法。Azure OpenAIでも利用可能。"
    },
    {
      "title": "chain of thought",
      "content": "具体的なプロセスをプロンプトに入力し、問題解決手順を学習する手法。Azure OpenAIでも利用可能。"
    },
    {
      "title": "image creation",
      "content": "Azure OpenAIでDALL-Eモデルを利用し、画像生成が可能。"
    },
    {
      "title": "multi-modal scenarios",
      "content": "テキストや画像などの情報を組み合わせるモデル。LMM(大規模マルチモーダルモデル)を指す。"
    },
    {
      "title": "まとめ",
      "content": "生成AIの効果的な活用方法を学ぶセッション。LLMをテーマにしたオンラインセッションもあり。"
    }
  ],
  "links": [
    "https://zenn.dev/yamatat/articles/29df56cce51383",
    "https://learn.microsoft.com/ja-jp/training/modules/apply-prompt-engineering-azure-openai/4-provide-context-to-improve-accuracy?pivots=python"
  ]
}
============
============
{
    "title": "Microsoft Build 2024予習 Lab~LLM~編",
    "date_published": "2024/05/14",
    "author": "yamamoto_tat",
    "sections": [
        {
            "title": "はじめに",
            "content": [
                "投稿する",
                "🪢",
                "Microsoft Build 2024予習 Lab~LLM~編",
                "2024/05/14 に公開",
                "Edit",
                "2024/05/15",
                "AI",
                "Microsoft",
                "# LLM",
                "# ⽣成 AI",
                "# microsoftbuild",
                "Idea",
                "はじめに",
                "Microsoft Build2024に参加す",
                "るにあたり予習をしておりま",
                "す。",
                "Labという現地で参加可能で事",
                "前予約をして参加する形のセッ",
                "ションがあります。",
                "その中で、私はLLMに関する",
                "セッション Learn how to",
                "interact with Large Language",
                "Models に参加する予定なの",
                "で、LLMの予習をしておきま",
                "す。",
                "yamamoto_tat",
                "株式会社ワークスアプリケーションズ",
                "ソフトウェアエンジニア 会計パッケー",
                "ジシステム開発",
                "⽬次",
                "はじめに",
                "セッションの内容",
                "few-shot learning",
                "chain of thought",
                "image creation",
                "multi-modal scenarios",
                "まとめ",
                "2024/05/16 0:42",
                "Microsoft Build 2024 予習  Lab~LLM~ 編",
                "https://zenn.dev/yamatat/articles/29df56cce51383",
                "1/9"
            ]
        },
        {
            "title": "セッションの内容",
            "content": [
                "セッションの内容",
                "Learn how to interact with",
                "Large Language Models の内容",
                "を⾒ると、以下の記載がありま",
                "す。",
                "This lab provides a hands-on",
                "and engaging learning",
                "opportunity for working with",
                "Large Language Models.",
                "Learn how to use methods",
                "such as few-shot learning and",
                "chain of thought. See the",
                "creative possibilities of",
                "generative AI for image",
                "creation and multi-modal",
                "scenarios, master the skill of",
                "function calling and",
                "understand how the model",
                "can apply existing knowledge.",
                "⼤規模⾔語モデルで few-shot",
                "learning chain of thought",
                "を使った対話や、",
                "image creation multi-modal",
                "scenarios に関する記載があ",
                "ります。",
                "2024/05/16 0:42",
                "Microsoft Build 2024 予習  Lab~LLM~ 編",
                "https://zenn.dev/yamatat/articles/29df56cce51383",
                "2/9",
                "https://build.microsoft.com/en-US/sessions/f2c631ee-4f32-488d-9739-3f3c99010717?source=/schedule",
                "https://build.microsoft.com/en-US/sessions/f2c631ee-4f32-488d-9739-3f3c99010717?source=/schedule"
            ]
        },
        {
            "title": "few-shot learning",
            "content": [
                "few-shot learning",
                "⽇本語ではそのまま「ヒュー",
                "ショット学習」です。",
                "これは⼤規模⾔語モデルで利⽤",
                "される⼀般的な⼿法で、少数の",
                "例⽂等をプロンプトに⼊⼒する",
                "ことで、",
                "ファインチューニングなしで簡",
                "単な学習をさせることができま",
                "す。",
                "例えば以下のようにプロンプト",
                "⼊⼒で意図した回答が得られま",
                "す。",
                "Azure OpenAIにおいても同様",
                "の⼿法が利⽤でき、以下の",
                "Learnでも紹介されています。",
                "Azure OpenAI Service を使⽤し",
                "🔳プロンプト",
                "ユーザー:6",
                "アシスタント:偶数",
                "ユーザー:11",
                "アシスタント:奇数",
                "ユーザー:7",
                "アシスタント:",
                "🔳回答",
                "奇数",
                "2024/05/16 0:42",
                "Microsoft Build 2024 予習  Lab~LLM~ 編",
                "https://zenn.dev/yamatat/articles/29df56cce51383",
                "3/9",
                "https://learn.microsoft.com/ja-jp/training/modules/apply-prompt-engineering-azure-openai/4-provide-context-to-improve-accuracy?pivots=python",
                "てプロンプト エンジニアリン",
                "グを適⽤する - 精度を⾼めるよ",
                "うにコンテキストを提供する"
            ]
        },
        {
            "title": "chain of thought",
            "content": [
                "chain of thought",
                "⽇本語で「思考の連鎖」と⾔わ",
                "れています。",
                "こちらもヒューショット学習同",
                "様に⼤規模⾔語モデルで利⽤さ",
                "れる⼀般的な⼿法です。",
                "問題を紐解くまでの具体的なプ",
                "ロセスをプロンプトに⼊⼒する",
                "ことで、",
                "問題を解く⼿順を簡単に学習さ",
                "せることができます。",
                "例えば '最も効果的で継続でき",
                "るダイエット⽅法はなんです",
                "か?' と質問すると単純な⼿段",
                "の羅列が返されますが、",
                "'最も効果的で継続できるダイ",
                "エット⽅法はなんですか?あな",
                "たの考えを段階的に説明し、最",
                "後に答えを導き出してくださ",
                "い。' と質問すると、段階を踏",
                "んだ説明を⼊れて1つの結論を",
                "導き出してくれます。",
                "実際にGPT-4に質問したところ",
                "以下のような回答を得られまし",
                "た。",
                "🔳回答",
                "ダイエットを成功させるためには、長",
                "2024/05/16 0:42",
                "Microsoft Build 2024 予習  Lab~LLM~ 編",
                "https://zenn.dev/yamatat/articles/29df56cce51383",
                "4/9",
                "https://learn.microsoft.com/ja-jp/training/modules/apply-prompt-engineering-azure-openai/4-provide-context-to-improve-accuracy?pivots=python",
                "https://learn.microsoft.com/ja-jp/training/modules/apply-prompt-engineering-azure-openai/4-provide-context-to-improve-accuracy?pivots=python",
                "https://learn.microsoft.com/ja-jp/training/modules/apply-prompt-engineering-azure-openai/4-provide-context-to-improve-accuracy?pivots=python",
                "こちらもヒューショット学習と",
                "同様のLearnページで紹介され",
                "ております。",
                "Azure OpenAI Service を使⽤し",
                "てプロンプト エンジニアリン",
                "グを適⽤する - 精度を⾼めるよ",
                "うにコンテキストを提供する"
            ]
        },
        {
            "title": "image creation",
            "content": [
                "image creation",
                "Azure OpenAIではDALL-Eモデ",
                "ルを利⽤して画像⽣成をするこ",
                "とが可能です。",
                "Azure OpenAIのAPIを利⽤し",
                "段階 1: 自己評価",
                "まず、現在の食習慣、活動レベル、",
                "段階 2: 目標設定",
                "具体的で達成可能な目標を設定し",
                "段階 3: 食事の計画",
                "バランスの取れた食事計画を立て 
============
*文字数が長いので一部省略

2種類提案してくれました。
title author date content とブログを構成する要素としてはほぼ揃えてくれています。

プログラムの中で使う場合、keyの値がわかっていた方が扱いやすいですが、
GPT-4oを対話しながらkeyを決めて開発をするということは全然できそうです。

最後に

GPT-4oのOCRを試した結果、速度はGPT-4に比べると格段に速いです。
また、GPT-4より日本語の精度は高いと感じます。
今回は比較的が難しくない文章でしたが、もう少し難しい文章(例えば法令等)とか、構造化された資料とかでどの程度威力を発揮するかは試してみたいです。

Discussion