AI Детектор бланков КСЭ
бланк · подпись · печать — структурированный JSON

Загрузите фотографию

Перетащите фото сюда или нажмите для выбора
JPEG / PNG / WebP, до 12 МБ

Браузерный тест ограничен 30 запросами в час с одного IP. Для интеграции используйте API с токеном.

Результат

Загрузите фото и нажмите «Проверить».

REST API — интеграция для внешних систем

Сервис определяет по фотографии наличие бланка «Курьер Сервис Экспресс» (в том числе частично видимого, повёрнутого или оборотной стороны) и наличие подписей/печати. Ответ — структурированный JSON.

Почему REST, а не SOAP: JSON-REST проще в интеграции (любой HTTP-клиент, curl, 1С, Python, PHP), не требует WSDL/XML-конвертов, нативно работает с multipart-загрузкой файлов и удобен для мобильных клиентов. SOAP оправдан только при жёстком корпоративном требовании WS-* — при необходимости обёртку можно добавить отдельно.

Базовый URL: https://pics.tikhov.de/api. Аутентификация: заголовок Authorization: Bearer <токен> (или X-Api-Key). Токен выпускается на вкладке «API-токены».

GET /v1/health — проверка доступности сервиса. Без аутентификации.

POST /v1/analyze — анализ фотографии.

Три способа передать изображение:

1. multipart/form-data, поле image (+ необязательное поле model):

curl -X POST https://pics.tikhov.de/api/v1/analyze \
  -H "Authorization: Bearer kse_ВАШ_ТОКЕН" \
  -F "image=@photo.jpg"

2. JSON + base64:

curl -X POST https://pics.tikhov.de/api/v1/analyze \
  -H "Authorization: Bearer kse_ВАШ_ТОКЕН" \
  -H "Content-Type: application/json" \
  -d '{"image_base64": "<base64-строка>", "model": "claude-sonnet-4-6"}'

3. JSON + URL: {"image_url": "https://…/photo.jpg"}

Ответ 200

{
  "status": "ok",
  "processing_ms": 8412,
  "result": {
    "is_kse_form": true,          // на фото есть бланк КСЭ (целиком или частично)
    "confidence": 0.98,           // уверенность 0..1
    "form_visibility": "full",    // full | partial | none
    "form_side": "front",         // front | back | both | unknown
    "matched_features": ["логотип КСЭ", "www.cse.ru", "номер 497-…", "разделы 1-11"],
    "waybill_number": "497-020135258",
    "has_signature": true,        // есть хоть одна рукописная подпись
    "signatures": {
      "recipient": true,          // подпись получателя (разд. 11 / оборот)
      "sender_or_courier": false, // подпись отправителя/курьера
      "stamp": true               // печать организации
    },
    "signature_confidence": 0.93,
    "image_quality": "ok",        // ok | blurry | dark | partial_glare | unreadable
    "reason": "Виден полный бланк КСЭ: логотип, номер, разделы…",
    "model": "claude-sonnet-4-6",
    "usage": {"input_tokens": 2731, "output_tokens": 214}
  }
}

Ошибки

HTTPcodeОписание
400bad_input / no_image / bad_base64Неверные входные данные
401unauthorizedНет или неверный токен
413too_largeФайл больше лимита
429rate_limitedПревышен лимит запросов в минуту
502/503upstream_errorВременный сбой AI-провайдера — повторите с backoff

POST /v1/tokens · GET /v1/tokens · DELETE /v1/tokens/{id} — управление токенами. Требуют заголовок X-Admin-Key.

GET /v1/stats — статистика использования (X-Admin-Key).

Рекомендации для продакшна

Оптимальный размер фото — до 1600px по длинной стороне (крупнее сервис сожмёт сам). Модель по умолчанию claude-sonnet-4-6 — точность 24/24 на эталонном наборе; claude-haiku-4-5 — быстрее и дешевле (23/24). При массовой обработке шлите запросы параллельно (лимит токена по умолчанию 60/мин, настраивается при выпуске). Решение принимайте по паре полей: is_kse_form && confidence ≥ 0.8, подпись — has_signature && signature_confidence ≥ 0.7; пограничные случаи отправляйте на ручную проверку.

Выпустить API-токен

Выпущенные токены

Введите административный ключ и нажмите «Обновить список».