Документация API

Интегрируйте FreeOCR.AI в ваши приложения с помощью нашего API.

Аутентификация

Все запросы к API требуют API-ключ, передаваемый в заголовке Authorization в виде Bearer-токена.

Authorization: Bearer focr_your_api_key_id

Создавайте и управляйте API-ключами на странице API-ключи.


Ограничения скорости

Ограничение скорости по умолчанию: 200 запросов в минуту на API-ключ.

Ограничения скорости могут быть настроены для каждого ключа. Свяжитесь с поддержкой для индивидуальных лимитов.


Извлечение текста из изображений с сохранением разметки.

Параметры

multipartimage(обязательно) - Файл изображения
queryformat(необязательно) - Формат ответа: json (по умолчанию), text, docx
queryversion(необязательно) - Версия модели: 260428 (по умолчанию)

Ответ

jsonContent-Type: application/json
{
  "text": "# Document Title\n\nExtracted markdown content..."
}

Возвращает GitHub Flavored Markdown с сохранением разметки, включая HTML-таблицы и формулы LaTeX.

textContent-Type: application/json
{
  "text": "Document Title\n\nExtracted plain text content..."
}

Markdown преобразуется в обычный текст с помощью внутренней конвертации.

docxContent-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document

Скачивание бинарного файла. Content-Disposition: attachment; filename="result.docx"

Пример

Format:
curl -X POST "https://freeocr.ai/api/v1/platform/ocr" \
  -H "Authorization: Bearer focr_your_key" \
  -F "image=@document.png"

Извлечение таблиц из изображений в структурированные данные.

Параметры

multipartimage(обязательно) - Файл изображения
queryformat(необязательно) - Формат ответа: json (по умолчанию), csv, xlsx
queryversion(необязательно) - Версия модели: 260428 (по умолчанию)

Ответ

jsonContent-Type: application/json
{
  "tables": [
    {
      "title": "Sales Report",
      "html": "<table><tr><th>Item</th><th>Qty</th></tr><tr><td>Apple</td><td>10</td></tr></table>"
    }
  ]
}

Каждая таблица содержит title и содержимое в виде строки HTML-таблицы.

csvContent-Type: text/csv; charset=utf-8

Скачивание CSV-файла в виде обычного текста. Несколько таблиц разделяются разделителями --- SheetName ---. Content-Disposition: attachment; filename="tables.csv"

xlsxContent-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

Скачивание бинарного файла XLSX. Каждая таблица становится отдельным листом с именем по её заголовку. Content-Disposition: attachment; filename="tables.xlsx"

Пример

Format:
curl -X POST "https://freeocr.ai/api/v1/platform/table" \
  -H "Authorization: Bearer focr_your_key" \
  -F "image=@spreadsheet.png"

POST /extract

Живое демо

Извлечение определённых полей из изображений с помощью ИИ.

Параметры

multipartimage(обязательно) - Файл изображения
queryfields(обязательно) - Поля для извлечения (повторяющийся параметр или JSON-массив)
queryformat(необязательно) - Формат ответа: json (по умолчанию), csv, xlsx
queryversion(необязательно) - Версия модели: 260428 (по умолчанию), 260215

Ответ

jsonContent-Type: application/json
{
  "result": [
    { "key": "name", "values": ["John Doe"] },
    { "key": "date", "values": ["2024-03-15"] },
    { "key": "amount", "values": ["$1,234.56"] }
  ]
}

Каждое запрошенное поле возвращается как key с массивом извлечённых values.

csvContent-Type: text/csv; charset=utf-8

CSV-файл с ключами полей в качестве заголовков столбцов и извлечёнными значениями в качестве строк. Content-Disposition: attachment; filename="extraction.csv"

xlsxContent-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

XLSX-файл с единственным листом "Results", та же структура, что и CSV. Content-Disposition: attachment; filename="extraction.xlsx"

Пример

Format:
curl -X POST "https://freeocr.ai/api/v1/platform/extract?fields=name&fields=date&fields=amount" \
  -H "Authorization: Bearer focr_your_key" \
  -F "image=@invoice.png"

Ответы об ошибках

401

Не авторизован

{ "error": { "code": "unauthorized", "message": "Недействительный API-ключ" } }
402

Недостаточный баланс

{ "error": { "code": "insufficient_credits", "message": "Недостаточный баланс. Пожалуйста, пополните." } }
429

Превышен лимит скорости

{ "error": { "code": "rate_limit_exceeded", "message": "Превышен лимит скорости. Попробуйте позже." } }
500

Внутренняя ошибка

{ "error": { "code": "internal_error", "message": "Не удалось обработать изображение" } }