OllamaでVLMモデルの動作を比較してみた

# はじめに

Ollamaを使ってVisionモデルの動作確認を行った記録です。Ollamaの[Vision対応モデルのリスト](https://ollama.com/search?c=vision&o=newest)より確認できます。

検証の対象として選定したモデルは`gemma3:12b`、`llama3.2-vision:11b`、`qwen2.5vl:7b`となります。`llava:7b`、`llava-llama:8b`についても検証を試みましたが、いずれのモデルについても各タスクの結果がイマイチだったため、検証対象としませんでした。

3つのタスクを実施しました。英検2級相当の英文穴埋め問題、人数カウント、表の解釈となります。またプロンプトを記述する言語を英語と日本語で比較しています。

Mac mini M1 2020 16GBメモリでは、処理にかなり時間がかかります。実質使い物にはならないかなー、と思えるレスポンスです。もう少し強力なGPUを持ったマシンで動作させる方が良いと思います。

# 検証環境

- Mac mini M1 2020
- 16GBメモリ
- macOS Sequoia 15.5
- ollama 0.7.1

## 検証環境の準備

準備方法については[こちらの記事の検証環境の準備](https://qiita.com/vfuji/items/1c9e2242a5341ae8ce76)をご参照ください。

# 検証内容

## 英文穴埋め

画像から文字を読み取り、さらに英文の穴埋めを行う問題。よくある英語の問題を想定しています。[英検2級の過去問](https://www.eiken.or.jp/eiken/exam/grade_2/)より英文の穴埋め問題の1ページを画像とて入力しています。

![english_questions.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1557529/0a3b6329-2043-4c8f-9207-e65d8c408d3e.png)

## 人数カウント

画像から人数をカウントする問題。[Unsplash](https://unsplash.com/ja/)で見つけた画像をSサイズでダウンロードしたものです。画像は[こちらにある３名の白衣を着た医師が写っている写真](https://unsplash.com/ja/%E5%86%99%E7%9C%9F/x%E7%B7%9A%E3%81%AE%E5%89%8D%E3%81%A7%E6%82%A3%E8%80%85%E3%81%A8%E8%A9%B1%E3%81%99%E5%8C%BB%E5%B8%AB-NzjSwGLhY5U)です。

## 表の解釈

画像にある表の情報を読み取り、条件から回答を導き出す問題。

![table_question.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1557529/a04bb109-558a-4790-9e90-60c27ffb92d2.png)



# 検証結果一覧

| モデル | 問題種別 | プロンプト | 結果 |
| -------- | ------- | ------ | ------ |
| Gemma3:12b | 英文穴埋め | 英語 | 期待通り |
| Gemma3:12b | 英文穴埋め | 日本語 | 文章としては正解だが数字が違う |
| Gemma3:12b | 人数カウント | 英語 | 期待通り |
| Gemma3:12b | 人数カウント | 日本語 | 期待通り |
| Gemma3:12b | 表の解釈 | 英語 | 期待通り |
| Gemma3:12b | 表の解釈 | 日本語 | 期待通り |
| Llama3.2-vision:11b | 英文穴埋め | 英語 | 回答として成立していない |
| Llama3.2-vision:11b | 英文穴埋め | 日本語 | 結果が得られなかった |
| Llama3.2-vision:11b | 人数カウント | 英語 | 期待通り |
| Llama3.2-vision:11b | 人数カウント | 日本語 | 結果が得られなかった |
| Llama3.2-vision:11b | 表の解釈 | 英語 | 期待する回答が得られなかった |
| Llama3.2-vision:11b | 表の解釈 | 日本語 | 結果が得られなかった |
| qwen2.5vl:7b | 英文穴埋め | 英語 | 期待通り |
| qwen2.5vl:7b | 英文穴埋め | 日本語 | 期待通り |
| qwen2.5vl:7b | 人数カウント | 英語 | 期待通り |
| qwen2.5vl:7b | 人数カウント | 日本語 | 期待通り |
| qwen2.5vl:7b | 表の解釈 | 英語 | 期待する回答が得られなかった |
| qwen2.5vl:7b | 表の解釈 | 日本語 | 期待する回答が得られなかった |


# 検証結果詳細

## 検証手順

Ollamaでは、URLとしてする情報を提供する方法は機能しませんので、Base64による画像埋め込み実行しています。

画像ファイルをbase64エンコードしてIMGBASE64に格納します。

```
IMGBASE64=`cat {画像ファイル}|base64`
```

上記の変数をcurlに渡しています。また、最終行の`| jq .`はjsonを整形して出力したかったので追加しています。不要な場合は無視してください。

## 検証結果 Gemma3:12b
### 英文穴埋め | 英語プロンプト

次のコマンドにて実行しました。

```
curl http://localhost:11434/api/chat -d '{
  "model": "gemma3:12b",
  "messages": [
    {
      "role": "user",
      "content": "pelase select correct word from list on each questions", 
      "images": ["'${IMGBASE64}'"]
    }
  ],
  "stream": false
}'| jq .
```

回答結果はこちらになります。

```
{
  "model": "gemma3:12b",
  "created_at": "2025-05-25T04:08:28.840895Z",
  "message": {
    "role": "assistant",
    "content": "Okay, let's break down each question and select the best word from the provided options.\n\n**(1)** Jane used to get her favorite magazine delivered to her home every month. However, she now has an **(1) subscription** to read it on her tablet or smartphone.\n\n*   **Why:** A subscription is a recurring payment for a service or product, like a magazine.\n\n**(2)** A: Jeff, I can't believe you said my painting was bad in class today. B: I'm sorry, Diana. I didn't mean to **(4) offend** you. I shouldn't have said that.\n\n*   **Why:** \"Offend\" means to upset or hurt someone's feelings, which fits the context of the conversation.\n\n**(3)** Greg likes his new apartment because it has a lot of room for **(1) storage**. His last place didn't have enough closet space for all of his things.\n\n*   **Why:** \"Storage\" refers to space for keeping things, which is what Greg is lacking.\n\n**(4)** Ms. Walker asks her students to think about the **(4) consequences** of their actions. She wants them to understand that their behavior will have effects on themselves and others.\n\n*   **Why:** \"Consequences\" are the results or effects of actions.\n\n**(5)** Mike's meeting went on longer than expected, so he and his wife went **(1) separately** to their friends' dinner party. Mike took a taxi, while his wife drove.\n\n*   **Why:** \"Separately\" means individually or apart from each other, which describes how Mike and his wife traveled.\n\n\n\nLet me know if you'd like me to explain any of these choices in more detail!"
  },
  "done_reason": "stop",
  "done": true,
  "total_duration": 123263988792,
  "load_duration": 7229462667,
  "prompt_eval_count": 279,
  "prompt_eval_duration": 63545603375,
  "eval_count": 373,
  "eval_duration": 52483885541
}
```

### 英文穴埋め | 日本語プロンプト

次に日本語で質問した結果です。

```
curl http://localhost:11434/api/chat -d '{
  "model": "gemma3:12b",
  "messages": [
    {
      "role": "user",
      "content": "次の英語問題を解答してください。( )に入れるのに最も適切なものを1, 2, 3, 4の中から 一つ選んでください。",            
      "images": ["'${IMGBASE64}'"]
    }
  ],             
  "stream": false
}'| jq .
```

回答結果はパッと見ると正解に見えますが、問2では選択肢4がoffendなのに、3. offendと書いてあります。一部おかしいです。

```
{
  "model": "gemma3:12b",
  "created_at": "2025-05-25T05:11:47.133396Z",
  "message": {
    "role": "assistant",
    "content": "Okay, let's solve these English problems. Here are the answers with explanations:\n\n**1. (1)**\n\n*   **Answer: 4. subscription**\n*   **Explanation:** The sentence describes a change from receiving a physical magazine to accessing it digitally. \"Subscription\" fits perfectly as it refers to the service of receiving the magazine.\n\n**2. (2)**\n\n*   **Answer: 3. to offend**\n*   **Explanation:** The speaker is apologizing for saying something that hurt someone's feelings. \"To offend\" means to cause someone to feel hurt or upset.\n\n**3. (4)**\n\n*   **Answer: 4. consequences**\n*   **Explanation:** The sentence indicates that Ms. Walker wants her students to consider the results or effects of their actions. \"Consequences\" directly refers to those results.\n\n**4. (1)**\n\n*   **Answer: 1. separately**\n*   **Explanation:** The sentence describes two people traveling to the same event in different ways. \"Separately\" means individually or in different ways.\n\nLet me know if you'd like me to explain any of these in more detail!"
  },
  "done_reason": "stop",
  "done": true,
  "total_duration": 109875764500,
  "load_duration": 7695213167,
  "prompt_eval_count": 297,
  "prompt_eval_duration": 66853950209,
  "eval_count": 248,
  "eval_duration": 35318721708
}
```

### 人数カウント | 英語プロンプト

次のコマンドにて実行しました。

```
curl http://localhost:11434/api/chat -d '{
  "model": "gemma3:12b",
  "messages": [
    {
      "role": "user",
      "content": "pelase count person in the image.",
      "images": ["'${IMGBASE64}'"]
    }
  ],
  "stream": false
}'| jq .
```

正しく3名と回答してくれました。また、レントゲン写真の前であることも解説しています。

```
{
  "model": "gemma3:12b",
  "created_at": "2025-05-25T13:10:46.755394Z",
  "message": {
    "role": "assistant",
    "content": "Based on the image, I can identify **three** people.\n\n*   One person is clearly visible, appearing to be a doctor or medical professional, standing and pointing at the X-ray images.\n*   Two other people are partially visible, seated and looking at the X-ray images."
  },
  "done_reason": "stop",
  "done": true,
  "total_duration": 80252022375,
  "load_duration": 7462861500,
  "prompt_eval_count": 277,
  "prompt_eval_duration": 64277773083,
  "eval_count": 62,
  "eval_duration": 8509121625
}
```

### 人数カウント | 日本語プロンプト

次に日本語で質問した結果です。

```
curl http://localhost:11434/api/chat -d '{
  "model": "gemma3:12b",
  "messages": [
    {
      "role": "user",
      "content": "何人の人か写っているのかカウントしてください",
      "images": ["'${IMGBASE64}'"]
    }
  ],             
  "stream": false
}'| jq .
```

正しく3名と回答してくれました。また、レントゲン写真の前であることも解説しています。

```
{
  "model": "gemma3:12b",
  "created_at": "2025-05-25T13:13:04.885037Z",
  "message": {
    "role": "assistant",
    "content": "写真には3人の人物が写っています。\n\n*   医師（または医療専門家）がX線画像を説明しています。\n*   2人の人物が医師に注目しています。"
  },
  "done_reason": "stop",
  "done": true,
  "total_duration": 8798336917,
  "load_duration": 78012375,
  "prompt_eval_count": 278,
  "prompt_eval_duration": 3420885708,
  "eval_count": 39,
  "eval_duration": 5298136458
}
```


### 表の解釈 | 英語プロンプト

次のコマンドにて実行しました。

```
curl http://localhost:11434/api/chat -d '{
  "model": "gemma3:12b",
  "messages": [
    {
      "role": "user",
      "content": "pelase answer Japanese question on the image. Step-by-step explanation requred.",
      "images": ["'${IMGBASE64}'"]
    }
  ],
  "stream": false
}'| jq .

```

2つの箱の合計が1620円と正しく解答しました。

```
{
  "model": "gemma3:12b",
  "created_at": "2025-05-25T15:28:56.635704Z",
  "message": {
    "role": "assistant",
    "content": "Okay, let's break down the question and answer it step-by-step.\n\n**Question:**\n\n\"高さ40cmのものと、1m20cmのものをそれぞれ一つずつ配達した場合、料金はいくだろうか？\"\n(If you deliver one item with a height of 40cm and one item with a height of 1m 20cm, what would the delivery fee be?)\n\n**Step-by-step Solution:**\n\n1. **Understand the Table:** The table shows the delivery fee based on the height of the item.\n   *  0-10cm: 300 yen\n   *  10-30cm: 500 yen\n   *  30cm-1m: 620 yen\n   *  1m+: 1000 yen\n\n2. **Determine the Fee for the 40cm Item:**  40cm falls within the \"30cm-1m\" category.  Therefore, the fee for the 40cm item is 620 yen.\n\n3. **Determine the Fee for the 1m 20cm Item:** 1m 20cm (which is 1.2 meters) falls within the \"1m+\" category. Therefore, the fee for the 1m 20cm item is 1000 yen.\n\n4. **Calculate the Total Fee:**  Add the fees for both items: 620 yen + 1000 yen = 1620 yen.\n\n**Answer:**\n\n料金は1620円になります。\n(The delivery fee would be 1620 yen.)"
  },
  "done_reason": "stop",
  "done": true,
  "total_duration": 117079345459,
  "load_duration": 79417042,
  "prompt_eval_count": 287,
  "prompt_eval_duration": 66334694750,
  "eval_count": 362,
  "eval_duration": 50663862792
}
```

### 表の解釈 | 日本語プロンプト

次に日本語で質問した結果です。

```
curl http://localhost:11434/api/chat -d '{
  "model": "gemma3:12b",
  "messages": [
    {
      "role": "user",
      "content": "画像に含まれる質問に解答してください。ステップバイステップで説明してください。",   
      "images": ["'${IMGBASE64}'"]
    }
  ],
  "stream": false
}'| jq .
```

2つの箱の合計が1620円と正しく解答しました。

```
{
  "model": "gemma3:12b",
  "created_at": "2025-05-25T14:58:41.137724Z",
  "message": {
    "role": "assistant",
    "content": "はい、承知いたしました。画像に示された表に基づいて、質問に答えます。\n\n**質問:** 大きさ40cmのものと、1m20cmのものをそれぞれ一つずつ配達を頼んだ場合、料金はいくらになるか。\n\n**解答:**\n\n1.  **40cmのものの料金:** 表を見ると、40cmは30cm～1mの範囲に含まれます。したがって、料金は620円です。\n2.  **1m20cmのものの料金:** 1m20cmは1mを超えます。したがって、料金は1000円です。\n3.  **合計料金:** 620円 + 1000円 = 1620円\n\n**したがって、料金は1620円になります。**"
  },
  "done_reason": "stop",
  "done": true,
  "total_duration": 27959288500,
  "load_duration": 83196500,
  "prompt_eval_count": 284,
  "prompt_eval_duration": 3289597375,
  "eval_count": 177,
  "eval_duration": 24584194417
}
```

## Llama3.2-vision:11b
### 英文穴埋め | 英語プロンプト

次のコマンドにて実行しました。

```
curl http://localhost:11434/api/chat -d '{
  "model": "llama3.2-vision:11b", 
  "messages": [
    {
      "role": "user",
      "content": "pelase select correct word from list on each questions",
      "images": ["'${IMGBASE64}'"]
    }
  ],
  "stream": false
}'| jq .
```

回答結果はこちらになります。

```
{
  "model": "llama3.2-vision:11b",
  "created_at": "2025-05-25T08:11:58.44007Z",
  "message": {
    "role": "assistant",
    "content": "**Question 1:** The correct word is **opportunity**.\n\n**Question 2:** The correct word is **replace**.\n\n**Question 3:** The correct word is **storage**.\n\n**Question 4:** The correct word is **reverse**.\n\n**Question 5:** The correct word is **consequences**.\n\n**Question 6:** The correct word is **separately**.\n\n**Question 7:** The correct word is **nowadays**."
  },
  "done_reason": "stop",
  "done": true,
  "total_duration": 128442908500,
  "load_duration": 10419082709,
  "prompt_eval_count": 20,
  "prompt_eval_duration": 103121981292,
  "eval_count": 97,
  "eval_duration": 14893012542
}
```

### 英文穴埋め | 日本語プロンプト

次に日本語で質問した結果です。

```
curl http://localhost:11434/api/chat -d '{
  "model": "llama3.2-vision:11b",
  "messages": [
    {
      "role": "user",
      "content": "次の英語問題を解答してください。( )に入れるのに最も適切なものを1, 2, 3, 4の中から 一つ選んでください。",            
      "images": ["'${IMGBASE64}'"]
    }
  ],             
  "stream": false
}'| jq .
```

:::note warn
15分待ってもレスポンスが得られなかったので、試験結果には含めていません。
:::

### 人数カウント | 英語プロンプト

次のコマンドにて実行しました。

```
curl http://localhost:11434/api/chat -d '{
  "model": "llama3.2-vision:11b",
  "messages": [
    {
      "role": "user",
      "content": "pelase count person in the image.",
      "images": ["'${IMGBASE64}'"]
    }
  ],
  "stream": false
}'| jq .
```

正しく3名と回答してくれました。追加の説明はありません。

```
{
  "model": "llama3.2-vision:11b",
  "created_at": "2025-05-25T13:15:56.819935Z",
  "message": {
    "role": "assistant",
    "content": "There are 3 people in the image."
  },
  "done_reason": "stop",
  "done": true,
  "total_duration": 92569772791,
  "load_duration": 5544148541,
  "prompt_eval_count": 18,
  "prompt_eval_duration": 85668480459,
  "eval_count": 10,
  "eval_duration": 1355517458
}
```

### 人数カウント | 日本語プロンプト

次に日本語で質問した結果です。

```
curl http://localhost:11434/api/chat -d '{
  "model": "llama3.2-vision:11b",
  "messages": [
    {
      "role": "user",
      "content": "何人の人か写っているのかカウントしてください",
      "images": ["'${IMGBASE64}'"]
    }
  ],             
  "stream": false
}'| jq .
```

:::note warn
15分待ってもレスポンスが得られなかったので、試験結果には含めていません。
:::

### 表の解釈 | 英語プロンプト

次のコマンドにて実行しました。

```
curl http://localhost:11434/api/chat -d '{
  "model": "llama3.2-vision:11b",
  "messages": [
    {
      "role": "user",
      "content": "pelase answer question on the image. Having two boxes and check shipping cost of each box. Step-by-step explanation requred.", 
      "images": ["'${IMGBASE64}'"]
    }
  ],
  "stream": false
}'| jq .
```

どこからか、箱の重量が必要ということで、10 cm (1 kg)と断定されています。そして、1 kg あたり300円としています。もう一つの箱は100cmなので、1000円としています。そして合計が1300円となっています。どの値も間違いの結果となります。

```
{
  "model": "llama3.2-vision:11b",
  "created_at": "2025-05-25T15:36:57.555774Z",
  "message": {
    "role": "assistant",
    "content": "To calculate the shipping cost for each box, we need to determine the total weight of the items in each box and then apply the corresponding shipping rate.\n\n**Box 1:**\n\n* Weight of the item: 10 cm (1 kg)\n* Shipping rate: 300 yen per kg\n\n**Shipping Cost for Box 1:**\n\n* Total weight: 1 kg\n* Shipping rate: 300 yen per kg\n* Shipping cost: 1 kg x 300 yen/kg = 300 yen\n\n**Box 2:**\n\n* Weight of the item: 1 m (100 cm) = 100 cm\n* Shipping rate: 1000 yen per 100 cm\n\n**Shipping Cost for Box 2:**\n\n* Total weight: 100 cm\n* Shipping rate: 1000 yen per 100 cm\n* Shipping cost: 100 cm x 10 yen/cm = 1000 yen\n\n**Total Shipping Cost:**\n\n* Box 1: 300 yen\n* Box 2: 1000 yen\n* Total: 300 yen + 1000 yen = 1300 yen\n\nTherefore, the total shipping cost is 1300 yen."
  },
  "done_reason": "stop",
  "done": true,
  "total_duration": 135063652750,
  "load_duration": 5402919750,
  "prompt_eval_count": 36,
  "prompt_eval_duration": 91784602375,
  "eval_count": 243,
  "eval_duration": 37872456292
}
```

### 表の解釈 | 日本語プロンプト

次に日本語で質問した結果です。

```
curl http://localhost:11434/api/chat -d '{
  "model": "llama3.2-vision:11b",
  "messages": [
    {
      "role": "user",
      "content": "画像に含まれる質問に解答してください。ステップバイステップで説明してください。",
      "images": ["'${IMGBASE64}'"]
    }
  ],
  "stream": false
}'| jq .
```

意味を成さない回答となりました。

```
{
  "model": "llama3.2-vision:11b",
  "created_at": "2025-05-25T15:44:22.171146Z",
  "message": {
    "role": "assistant",
    "content": "### 1. 大きさ\n\n*   1 m² = 10 cm × 10 cm = 100 cm²\n*   10 m² = 100 cm × 100 cm = 10,000 cm²\n\n### 2. 料金\n\n*   1 m² = 300円\n*   10 m² = 3,000円\n\n### 3. 大きさと料金の関係\n\n*   1 m² = 300円\n*   10 m² = 3,000円\n\n### 4. 1 m²の場合\n\n*   1 m² = 100 cm² = 10 cm × 10 cm\n*   1 m² = 300円\n\n### 5. 10 m²の場合\n\n*   10 m² = 100 cm² = 10 cm × 10 cm\n*   10 m² = 3,000円\n\n### 6. 100 cm²の場合\n\n*   100 cm² = 10 cm × 10 cm = 1 m²\n*   100 cm² = 300円\n\n### 7. 1,000 cm²の場合\n\n*   1,000 cm² = 10 cm × 10 cm = 10 m²\n*   1,000 cm² = 3,000円\n\n### 8. 10,000 cm²の場合\n\n*   10,000 cm² = 10 cm × 10 cm = 100 m²\n*   10,000 cm² = 3,000 x 10 = 30,000円\n\n### 9. 100,000 cm²の場合\n\n*   100,000 cm² = 10 cm × 10 cm = 1,000 m²\n*   100,000 cm² = 3,000 x 100 = 300,000円\n\n### 10. 1,000,000 cm²の場合\n\n*   1,000,000 cm² = 10 cm × 10 cm = 10,000 m²\n*   1,000,000 cm² = 3,000 x 1,000 = 3,000,000円\n\n### 11. 10,000,000 cm²の場合\n\n*   10,000,000 cm² = 10 cm × 10 cm = 100,000 m²\n*   10,000,000 cm² = 3,000 x 10,000 = 30,000,000\n\n### 12. 100,000,000 cm²の場合\n\n*   100,000,000 cm² = 10 cm × 10 cm = 1,000,000 m²\n*   100,000,000 cm² = 3,000 x 100,000 = 300,000,000\n\n### 13. 1,000,000,000 cm²の場合\n\n*   1,000,000,000 cm² = 10 cm × 10 cm = 10,000,000 m²\n*   1,000,000,000 cm² = 3,000 x 1,000,000 = 3,000,000,000\n\n### 14. 10,000,000,000 cm²の場合\n\n*   10,000,000,000 cm² = 10 cm × 10 cm = 100,000,000 m²\n*   10,000,000,000 cm² = 3,000 x 10,000,000 = 30,000,000,000\n\n### 15. 100,000,000,000 cm²の場合\n\n*   100,000,000,000 cm² = 10 cm × 10 cm = 1,000,000,000 m²\n*   100,000,000,000 cm² = 3,000 x 100,000,000 = 300,000,000,000\n\n### 16. 1,000,000,000,000 cm²の場合\n\n*   1,000,000,000,000 cm² = 10 cm × 10 cm = 10,000,000,000 m²\n*   1,000,000,000,000 cm² = 3,000 x 1,000,000,000 = 3,000,000,000,000\n\n### 17. 10,000,000,000,000 cm²の場合\n\n*   10,000,000,000,000 cm² = 10 cm × 10 cm = 100,000,000,000 m²\n*   10,000,000,000,000 cm² = 3,000 x 10,000,000,000 = 30,000,000,000,000\n\n### 18. 100,000,000,000,000 cm²の場合\n\n*   100,000,000,000,000 cm² = 10 cm × 10 cm = 1,000,000,000,000 m²\n*   100,000,000,000,000 cm² = 3,000 x 100,000,000,000 = 300,000,000,000,000\n\n### 19. 1,000,000,000,000,000 cm²の場合\n\n*   1,000,000,000,000,000 cm² = 10 cm × 10 cm = 10,000,000,000,000 m²\n*   1,000,000,000,000,000 cm² = 3,000 x 1,000,000,000,000 = 3,000,000,000,000,000\n\n### 20. 10,000,000,000,000,000 cm²の場合\n\n*   10,000,000,000,000,000 cm² = 10 cm × 10 cm = 100,000,000,000,000 m²\n*   10,000,000,000,000,000 cm² = 3,000 x 10,000,000,000,000 = 30,000,000,000,000\n\n### 21. 100,000,000,000,000,000 cm²の場合\n\n*   100,000,000,000,000,000 cm² = 10 cm × 10 cm = 1,000,000,000,000,000 m²\n*   100,000,000,000,000,000 cm² = 3,000 x 100,000,000,000,000 = 300,000,000,000,000\n\n### 22. 1,000,000,000,000,000,000 cm²の場合\n\n*   1,000,000,000,000,000,000 cm² = 10 cm × 10 cm = 10,000,000,000,000,000 m2\n*   1,000,000,000,000,000,000 cm2 = 3,000 x 1,000,000,000,000,000 = 3,000,000,000,000,000\n\n### 23. 10,000,000,000,000,000 cm2の場合\n\n*   10,000,000,000,000,000 cm2 = 10 cm × 10 cm = 100,000,000,000,000,000 m2\n*   10,000,000,000,000,000 cm2 = 3,000 x 10,000,000, 000,000 = 30,000,000,000,000\n\n### 24. 100,000,000,000,000,000 cm2の場合\n\n*   100,000,000,000,000,000 cm2 = 10 cm × 10 cm = 1,000,000,000,000,000,000 m2\n*   100,000,000,000,000,000 cm2 = 3,000 x 100,000,000,000,000 = 300,000,000,000,000\n\n### 25. 1,000,000,000,000,000,000 cm2の場合\n\n*   1,000,000,000,000,000,000 cm2 = 10 cm × 10 cm = 10,000,000,000,000,000 m2\n*   1,000,000,000,000,000,000 cm2 = 3,000 x 1,000,000,000,000,000 = 3,000,000,000,000,000\n\n### 26. 10,000,000,000,000,000 cm2の場合\n\n*   10,000,000,000,000,000 cm2 = 10 cm × 10 cm = 100,000,000,000,000,000 m2\n*   10,000,000,000,000,000 cm2 = 3,000 x 10,000,000,000,000 = 30,000,000,000,000\n\n### 27. 100,000,000,000,000,000 cm2の場合\n\n*   100,000,000,000,000,000 cm2 = 10  cm × 10  cm = 1,000,000,000,000,000  cm2\n*   100,000,000,000,000,000  cm2 = 3,000 x 100,000,000,000,000  = 3,000,000,000,000\n\n### 28. 1,000,000,000,000,000,000  cm2  の場合\n\n*   1,000,000,000,000,000,000  cm2 = 10  cm × 10  cm = 10,000,000,000,000,000  cm2\n*   1,000,000,000,000,  000  cm2 = 3,000 x 1,000,000,  000   = 3,000,000,  000\n\n### 29. 10,000,000,000,000,000  cm2   の場合\n\n*   10,000,000,  000                               "
  },
  "done": false
}

```


## qwen2.5vl:7b
### 英文穴埋め | 英語プロンプト

次のコマンドにて実行しました。

```
curl http://localhost:11434/api/chat -d '{
  "model": "qwen2.5vl:7b",       
  "messages": [
    {
      "role": "user",
      "content": "pelase select correct word from list on each questions", 
      "images": ["'${IMGBASE64}'"]
    }
  ],
  "stream": false
}'| jq .
```

回答結果は正しいように見えます。

```
{
  "model": "qwen2.5vl:7b",
  "created_at": "2025-05-25T12:51:07.120951Z",
  "message": {
    "role": "assistant",
    "content": "Sure, here are the correct words for each question:\n\n1. Jane used to get her favorite magazine delivered to her home every month. However, she now has an online (subscription), so she can read the magazine on her tablet or smartphone.\n   - Correct answer: 4. subscription\n\n2. A: Jeff, I can't believe you said my painting was bad in class today.\n   B: I'm sorry, Diana. I didn't mean to (offend) you. I shouldn't have said that.\n   - Correct answer: 4. offend\n\n3. Greg likes his new apartment because it has a lot of room for (storage).\n   - Correct answer: 1. storage\n\n4. Ms. Walker asks her students to think about the (consequences) of their actions.\n   - Correct answer: 4. consequences\n\n5. Mike's meeting went on longer than expected, so he and his wife went (separately) to their friends' dinner party. Mike took a taxi, while his wife drove their car.\n   - Correct answer: 1. separately"
  },
  "done_reason": "stop",
  "done": true,
  "total_duration": 117342255667,
  "load_duration": 3657837375,
  "prompt_eval_count": 1111,
  "prompt_eval_duration": 93684159875,
  "eval_count": 225,
  "eval_duration": 19950408916
}

```

### 英文穴埋め | 日本語プロンプト

次に日本語で質問した結果です。

```
curl http://localhost:11434/api/chat -d '{
  "model": "qwen2.5vl:7b",
  "messages": [
    {
      "role": "user",
      "content": "次の英語問題を解答してください。( )に入れるのに最も適切なものを1, 2, 3, 4の中から 一つ選んでください。",
      "images": ["'${IMGBASE64}'"]
    }
  ],
  "stream": false
}'| jq .
```

回答結果は日本語になりました。自然な日本語で解説してくれました。

```
{
  "model": "qwen2.5vl:7b",
  "created_at": "2025-05-25T12:53:50.122288Z",
  "message": {
    "role": "assistant",
    "content": "この問題は、文脈を理解し、適切な語彙を選択するためのもので、日本語の文脈を理解してから選択肢を判断する必要があります。以下に解答を示します：\n\n1. (1) は「subscription」が最も適切です。なぜなら、オンラインで雑誌を読むためには、その雑誌のサブスクリプションが必要だからです。\n\n2. (2) は「offend」が最も適切です。なぜなら、Dianaが自分の絵を評価されたことに不満を示したため、JeffがDianaを傷つけるような言葉を言ったからです。\n\n3. (3) は「storage」が最も適切です。なぜなら、新しいアパートメントには十分な収納スペースがあり、彼の物を収納できるからです。\n\n4. (4) は「consequences」が最も適切です。なぜなら、Ms. Walkerが生徒たちに自分の行動の結果を考えるように求めているからです。\n\n5. (5) は「separately」が最も適切です。なぜなら、Mikeと彼の妻は別々に友人のディナーのパーティに参加したからです。\n\nしたがって、解答は以下の通りです：\n\n1. (1) subscription\n2. (2) offend\n3. (3) storage\n4. (4) consequences\n5. (5) separately"
  },
  "done_reason": "stop",
  "done": true,
  "total_duration": 29408684541,
  "load_duration": 55454541,
  "prompt_eval_count": 1136,
  "prompt_eval_duration": 719791709,
  "eval_count": 321,
  "eval_duration": 28622101375
}
```

### 人数カウント | 英語プロンプト

次のコマンドにて実行しました。

```
curl http://localhost:11434/api/chat -d '{
  "model": "qwen2.5vl:7b",
  "messages": [
    {
      "role": "user",
      "content": "pelase count person in the image.",
      "images": ["'${IMGBASE64}'"]
    }
  ],
  "stream": false
}'| jq .
```

正しく3名と回答してくれました。追加の説明はありません。

```
{
  "model": "qwen2.5vl:7b",
  "created_at": "2025-05-25T13:39:36.103064Z",
  "message": {
    "role": "assistant",
    "content": "There are three people in the image."
  },
  "done_reason": "stop",
  "done": true,
  "total_duration": 1152825917,
  "load_duration": 53619917,
  "prompt_eval_count": 381,
  "prompt_eval_duration": 437552750,
  "eval_count": 9,
  "eval_duration": 660079500
}
```

### 人数カウント | 日本語プロンプト

次に日本語で質問した結果です。

```
curl http://localhost:11434/api/chat -d '{
  "model": "qwen2.5vl:7b",
  "messages": [
    {
      "role": "user",
      "content": "何人の人か写っているのかカウントしてください",
      "images": ["'${IMGBASE64}'"]
    }
  ],             
  "stream": false
}'| jq .
```

正しく3名と回答してくれました。追加の説明はありません。

```
{
  "model": "qwen2.5vl:7b",
  "created_at": "2025-05-25T13:40:56.202075Z",
  "message": {
    "role": "assistant",
    "content": "この画像には3人の人が写っています。"
  },
  "done_reason": "stop",
  "done": true,
  "total_duration": 1239194875,
  "load_duration": 51080333,
  "prompt_eval_count": 384,
  "prompt_eval_duration": 442642000,
  "eval_count": 10,
  "eval_duration": 743540125
}
```

### 表の解釈 | 英語プロンプト

次のコマンドにて実行しました。

```
curl http://localhost:11434/api/chat -d '{
  "model": "qwen2.5vl:7b",
  "messages": [
    {
      "role": "user",
      "content": "pelase answer question on the image. Having two boxes and check shipping cost of each box. Step-by-step explanation requred.", 
      "images": ["'${IMGBASE64}'"]
    }
  ],
  "stream": false
}'| jq .
```

箱が二つあり、それぞれのサイズは正しく理解しているのですが、表を正しく読み取ることができていません。はこちらになります。

```
{
  "model": "qwen2.5vl:7b",
  "created_at": "2025-05-25T15:49:50.928283Z",
  "message": {
    "role": "assistant",
    "content": "Certainly! Let's break down the problem step-by-step to determine the shipping costs for the two boxes.\n\n### Step 1: Identify the dimensions of the boxes\n- The first box has a dimension of 40 cm.\n- The second box has a dimension of 120 cm.\n\n### Step 2: Determine the shipping cost for the first box (40 cm)\n- According to the table, the shipping cost for a box with a dimension of 10 cm or less is 300 yen.\n\n### Step 3: Determine the shipping cost for the second box (120 cm)\n- According to the table, the shipping cost for a box with a dimension between 10 cm and 30 cm is 500 yen.\n\n### Step 4: Summarize the shipping costs\n- The first box (40 cm) costs 300 yen.\n- The second box (120 cm) costs 500 yen.\n\n### Final Answer:\nThe shipping cost for the first box (40 cm) is 300 yen, and the shipping cost for the second box (120 cm) is 500 yen."
  },
  "done_reason": "stop",
  "done": true,
  "total_duration": 36083312166,
  "load_duration": 4499064666,
  "prompt_eval_count": 304,
  "prompt_eval_duration": 10801986042,
  "eval_count": 248,
  "eval_duration": 20731701666
}
```

### 表の解釈 | 日本語プロンプト

次に日本語で質問した結果です。

```
curl http://localhost:11434/api/chat -d '{
  "model": "qwen2.5vl:7b",
  "messages": [
    {
      "role": "user",
      "content": "画像に含まれる質問に解答してください。ステップバイステップで説明してください。",
      "images": ["'${IMGBASE64}'"]
    }
  ],             
  "stream": false
}'| jq .
```

表は正しく読み取っているのですが、それぞれの箱のサイズが表のどの項目に当てはまるのか、特定できておらず、結果として期待する回答が得られていません。

```
{
  "model": "qwen2.5vl:7b",
  "created_at": "2025-05-25T15:52:02.967971Z",
  "message": {
    "role": "assistant",
    "content": "この問題は、荷物の大きさによって異なる料金が適用されることを示しています。以下に、ステップバイステップで解答を説明します。\n\n1. **問題の理解**: 荷物の大きさによって料金が決まり、それぞれの大きさに対する料金が表に示されています。例えば、10cm以下の荷物は300円、10cmから30cmの荷物は500円、30cmから1mの荷物は620円、1m以上の荷物は1000円です。\n\n2. **与えられた荷物の大きさ**: 40cmの荷物と120cmの荷物について料金を計算します。\n\n3. **40cmの荷物の料金**: 40cmは10cmから30cmの範囲に含まれます。したがって、40cmの荷物は500円です。\n\n4. **120cmの荷物の料金**: 120cmは30cmから1mの範囲に含まれます。したがって、120cmの荷物は620円です。\n\n5. **総料金**: 40cmの荷物と120cmの荷物の料金を合計します。\n   - 40cmの荷物の料金: 500円\n   - 120cmの荷物の料金: 620円\n   - 総料金: 500円 + 620円 = 1120円\n\nしたがって、40cmの荷物と120cmの荷物をそれぞれ1つずつ配送した場合の料金は1120円です。"
  },
  "done_reason": "stop",
  "done": true,
  "total_duration": 34038114334,
  "load_duration": 53110334,
  "prompt_eval_count": 299,
  "prompt_eval_duration": 446862584,
  "eval_count": 400,
  "eval_duration": 33536145958
}
```