# 画像の英数字認識

> YesCaptcha で画像内の英字と数字を認識します。ImageToTextTaskOcrBase と ImageToTextTaskMuggle は同期で結果を返し、ImageToTextTask と ImageToTextTaskM1 は非同期で、大文字小文字の区別、数字のみ、計算式などの条件に対応します。モデルのカスタマイズも可能です。

Source: https://docs.yescaptcha.com/ja/tasks/image-to-text/ · Last verified: 2026-10-15

> This page was machine-translated from the Chinese version. If anything differs, the Chinese version prevails: https://docs.yescaptcha.com/zh/tasks/image-to-text/

文字キャプチャの画像を Base64 に変換して送信すると、画像内の英字と数字(`solution.text`)が返ります。`ImageToTextTaskOcrBase` は 1 枚あたり 2 ポイント（約 $0.30 / 1k） で、同期で結果を返します。つまり 1 回の `createTask` リクエストで結果を取得できます。大文字小文字の区別、数字のみ、計算式などの条件を指定する場合は、非同期の `ImageToTextTask` を使用してください。

- POST `https://api.yescaptcha.com/createTask` (グローバルエンドポイント)
- POST `https://cn.yescaptcha.com/createTask` (中国エンドポイント)

リクエストボディは JSON で、`clientKey` で認証します。

## タイプと価格

| タスクタイプ | 価格 | 返却方式 | 備考 |
| --- | --- | --- | --- |
| `ImageToTextTaskOcrBase` | $0.30 / 1k; 2 ポイント/タスク · ¥2 / 1k | 同期 |  |
| `ImageToTextTaskMuggle` | $0.30 / 1k; 2 ポイント/タスク · ¥2 / 1k | 同期 | case や numeric などのオプションには対応していません。project\_name でカスタムモデルを指定できます |
| `ImageToTextTask` | $0.60 / 1k; 4 ポイント/タスク · ¥4 / 1k | 非同期 |  |
| `ImageToTextTaskM1` | $2.25 / 1k; 15 ポイント/タスク · ¥15 / 1k | 非同期 |  |

米ドル価格は US$1 ≈ ¥6.67 での概算です。タスクはポイントで課金されます。

| 用途 | 使用するタイプ |
| --- | --- |
| 一般的な英数字キャプチャ(最も安価で高速) | `ImageToTextTaskOcrBase`、`ImageToTextTaskMuggle`(同期) |
| 専用にカスタマイズしたモデルで認識する | `ImageToTextTaskMuggle` に `project_name` を指定 |
| 大文字小文字の区別、数字のみ、計算式の評価、文字数の制限が必要 | `ImageToTextTask`、`ImageToTextTaskM1`(非同期) |

タイプごとにモデルと経路が異なるため、同じ種類の画像でも結果が変わることがあります。いくつか試してから選んでください。

## リクエストパラメータ

| フィールド | 型 | 必須 | 説明 |
| --- | --- | --- | --- |
| `type` | string | はい | タスクタイプ。値はこのページの「タイプと料金」を参照してください |
| `body` | string | はい | 画像の Base64 エンコード文字列。`data:image/...;base64,` のプレフィックスと改行は含めないでください |
| `project_name` | string | いいえ | カスタムモデルの名前。`ImageToTextTaskMuggle` のみ対応しています。指定しない場合は汎用の英数字モデルが使われます。カスタムモデルが必要な場合はサポートまでお問い合わせください（ImageToTextTaskMuggle のみ） |
| `phrase` | boolean | いいえ | true の場合、答えに少なくとも 1 つのスペースが含まれます（ImageToTextTask、ImageToTextTaskM1 のみ） |
| `case` | boolean | いいえ | true の場合、答えは大文字と小文字を区別します（ImageToTextTask、ImageToTextTaskM1 のみ） |
| `numeric` | integer | いいえ | 0 は指定なし、1 は数字のみ、2 は数字を含まない（ImageToTextTask、ImageToTextTaskM1 のみ） |
| `math` | boolean | いいえ | true の場合、画像は計算式であり、答えはその計算結果です（ImageToTextTask、ImageToTextTaskM1 のみ） |
| `minLength` | integer | いいえ | 答えの最小の長さ。0 は制限なし（ImageToTextTask、ImageToTextTaskM1 のみ） |
| `maxLength` | integer | いいえ | 答えの最大の長さ。0 は制限なし（ImageToTextTask、ImageToTextTaskM1 のみ） |

`body` は画像ファイルの Base64 エンコードです。WebP 画像は自動的に変換されます。

> **注意:** Base64 に `data:image/...;base64,` プレフィックスや改行を含めないでください。

## リクエスト例

POST https://api.yescaptcha.com/createTask

```json
{
  "clientKey": "YOUR_CLIENT_KEY",
  "task": {
    "type": "ImageToTextTaskOcrBase",
    "body": "BASE64_IMAGE"
  }
}
```

完全なコード(カレントディレクトリの `captcha.png` を読み込みます):

**curl**

```bash
# Replace BASE64_IMAGE with the Base64-encoded image
curl -s https://api.yescaptcha.com/createTask \
  -H 'Content-Type: application/json' \
  -d '{
  "clientKey": "YOUR_CLIENT_KEY",
  "task": {
    "type": "ImageToTextTaskOcrBase",
    "body": "BASE64_IMAGE"
  }
}'
```

**Python**

solve.py

```python
import os
import base64

import requests

API = "https://api.yescaptcha.com"
CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"]  # Read the clientKey from an environment variable

def call(method, payload):
    r = requests.post(f"{API}/{method}", json={"clientKey": CLIENT_KEY, **payload}, timeout=30)
    data = r.json()
    if data.get("errorId"):
        raise RuntimeError(f"{data.get('errorCode')}: {data.get('errorDescription')}")
    return data

def solve(task):
    return call("createTask", {"task": task})["solution"]

# Base64-encode the image (no data: prefix)
with open("captcha.png", "rb") as f:
    image_b64 = base64.b64encode(f.read()).decode()

solution = solve({
    "type": "ImageToTextTaskOcrBase",
    "body": image_b64,
})
print(solution["text"])
```

**Node.js**

solve.mjs

```js
import { readFileSync } from 'node:fs';

const API = 'https://api.yescaptcha.com';
const CLIENT_KEY = process.env.YESCAPTCHA_CLIENT_KEY; // Read the clientKey from an environment variable

async function call(method, payload) {
  const res = await fetch(`${API}/${method}`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ clientKey: CLIENT_KEY, ...payload }),
  });
  const data = await res.json();
  if (data.errorId) throw new Error(`${data.errorCode}: ${data.errorDescription}`);
  return data;
}

async function solve(task) {
  const { solution } = await call('createTask', { task });
  return solution;
}

// Base64-encode the image (no data: prefix)
const imageB64 = readFileSync('captcha.png').toString('base64');

const solution = await solve({
  type: "ImageToTextTaskOcrBase",
  body: imageB64,
});
console.log(solution.text);
```

条件付きの非同期タスク:

POST https://api.yescaptcha.com/createTask

```json
{
  "clientKey": "YOUR_CLIENT_KEY",
  "task": {
    "type": "ImageToTextTask",
    "body": "BASE64_IMAGE",
    "case": true,
    "numeric": 0,
    "minLength": 4,
    "maxLength": 6
  }
}
```

## レスポンス

同期タイプは `createTask` のレスポンスで直接結果を返します。

```json
{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "text": "LMResm"
  },
  "taskId": "2376919c-1863-11ec-a012-94e6f7355a0b"
}
```

非同期タイプ(`ImageToTextTask`、`ImageToTextTaskM1`)はまず `taskId` を返します。その後 5 秒ごとに `getTaskResult` でポーリングしてください。完了時の `solution` の形式は同じです。

| フィールド | 型 | 説明 |
| --- | --- | --- |
| `text` | string | 認識されたテキスト |

## カスタムモデル

汎用モデルはあらゆる英数字キャプチャに使えますが、特定のスタイル向けに学習したモデルよりは精度がやや下がります。認識したい画像が常に同じスタイルであれば、[サポートに問い合わせて](https://docs.yescaptcha.com/ja/help/contact.md)モデルをカスタマイズできます。作成後は `ImageToTextTaskMuggle` に `project_name` を指定して使用します。

## よくある質問

### 認識結果が間違っていた場合も課金されますか?

同期タイプは、結果が返された時点で課金されます。結果が誤っていても同様です。別のタイプで比較するか、モデルのカスタマイズをご検討ください。

### `ERROR_ZERO_CAPTCHA_FILESIZE` または `ERROR_PARSE_IMAGE_FAIL` が返ります

画像の Base64 が不完全であるか、`data:` プレフィックスや改行が含まれています。エンコードを確認してください。詳しくは[エラーコード](https://docs.yescaptcha.com/ja/api/errors.md)をご覧ください。

## 関連サンプル

-   [クイックスタート](https://docs.yescaptcha.com/ja/getting-started/quickstart.md): `ImageToTextTaskOcrBase` で最初のリクエストを送信
-   [Python サンプル](https://docs.yescaptcha.com/ja/samples/python.md)
