CAPTCHA / TEXT

Текст

Распознавание символов на картинке. Модель под конкретный сайт выбирается полем model; в ответе — строка для поля капчи.

Входные данные

Сохраните исходную картинку капчи как captcha.png. Требования к картинке у моделей разные — см. таблицу моделей.

Параметры

ПараметрТипОбязателенПо умолчаниюНазначение
imagestringДа—Исходное изображение в base64.
modelstringДа—Модель: gaijin, mojeid, nova.

Модели

modelСайтКартинкаОсобенности ответа
gaijinlogin.gaijin.netИсходная картинка капчи без рамки страницы, подписи и поля ввода.extra.char_confidences — оценка каждого символа в порядке text; extra.length — длина строки.
mojeidMojeIDВсё изображение целиком. Не вырезайте символы вручную: сервер сам их отделяет.Только text и confidence. Не меняйте регистр строки без требования сайта.
novaNova88Исходная цветная картинка. Не переводите её в чёрно-белую: цветовой фильтр — часть обработки.text уже нормализован: если найдено не меньше четырёх цифр, берутся первые четыре. extra.raw_ocr — сырой OCR до исправлений, для ввода не используйте. confidence может быть 0.

Ответ

Данные распознаванияТипНазначение
modelstringМодель из запроса.
textstringРаспознанная строка. Передайте её в поле капчи как есть.
confidencenumberСредняя оценка уверенности по символам.
extraobjectПоля конкретной модели — см. таблицу моделей.

Применение

Передайте result["text"] в поле капчи в той же сессии сайта, в которой получена картинка.

Частые ошибки

  • Модель не определяется по картинке: без model сервер отвечает 400.
  • Прозрачность, цвет и исходный масштаб влияют на предобработку; предпочтителен оригинальный файл.
Ошибки сценария и повторы →

Пример запроса

Python · requests
import base64
from pathlib import Path
import os
import uuid
import requests

def image64(filename):
    return base64.b64encode(Path(filename).read_bytes()).decode("ascii")

payload = {
    "image": image64("captcha.png"),
    "model": "nova",
}

# Создайте один ID на задачу; сохраняйте его для сетевых повторов.
request_id = str(uuid.uuid4())
response = requests.post(
    "https://capi.z3n.pro/v1/solve/text",
    headers={
        "Authorization": f"Bearer {os.environ['CAPI_API_KEY']}",
        "Content-Type": "application/json",
        "Idempotency-Key": request_id,
    },
    json=payload,
    timeout=90,
)
response.raise_for_status()
result = response.json()
print(result["text"])
Оплата и все маршруты →