Provision OCR
Распознавание текста из изображений и PDF-документов с точностью до 99.5%. Self-hosted развёртывание, поддержка CPU и GPU, REST API с клиентами для популярных языков.
Инструкция по установке и запуске
Выберите платформу для пошаговой инструкции.
Trial-версия Provision OCR предназначена для ознакомления и тестирования.
Ограничения: макс. 100 страниц/день,
водяной знак в ответе,
отсутствует техподдержка.
📄 Полный документ с ограничениями (PDF)
🪟 Windows
ProvisionOCR.exe из
директории ProvisionScan/Provision Scan: READY
Listening
on будет указан URL для API
ProvisionOCR.exe🐧 Linux
🐳 Docker
# Скачайте докер образ:
docker pull registry.provlabs.tech/hub/trial/provision_ocr:latest
# Запустите контейнер:
docker run -d `
--name provision_ocr `
--gpus all `
-p 8098:8098 `
--restart always `
registry.provlabs.tech/hub/trial/provision_ocr:latest
GPU. Для запуска на CPU или MacOS нужно исключить
данный тег
- API:
http://localhost:8101/ - Swagger UI:
http://localhost:8101/docs - Health check:
http://localhost:8101/health
Совместимость
Provision OCR работает на CPU и GPU. Для высокой скорости обработки рекомендуется GPU с 8+ GB VRAM.
GPU
Операционные системы
Шаблоны документов
Передаётся в URL как параметр {template} при вызове /processing/{template}.
API Reference
Base URL: http://localhost:8098.
Все ответы в формате JSON.
📄 OCR Endpoints
passport, snils, agreement, default requiredfile / body requiredПоддерживаемые форматы:
image/jpeg,
image/png,
image/bmp,
image/tiff,
multipart/form-data
{
"documents": [
{
"width": 715,
"height": 999,
"schema_version": 1,
"pages": [
{
"page_number": 1,
"loc": { "x1": 0, "y1": 0, "x2": 715, "y2": 999 },
"blocks": [ ... ],
"paragraphs": [ ... ],
"tables": [ ... ],
"figures": [ ... ]
}
]
}
]
}
/processing2 путь.
passport, snils, agreement, default requiredfile / body requiredПоддерживаемые форматы:
image/jpeg,
image/png,
image/bmp,
image/tiff,
multipart/form-data
{
"documents": [
{
"width": 715,
"height": 999,
"schema_version": 1,
"pages": [
{
"page_number": 1,
"loc": { "x1": 0, "y1": 0, "x2": 715, "y2": 999 },
"blocks": [ ... ],
"paragraphs": [ ... ],
"tables": [ ... ],
"figures": [ ... ]
}
]
}
]
}
🔗 Общие эндпоинты
{ "status": "ok" }
Перезагружает модели: Mask R-CNN, CRAFT, TextRecognizer, CharRecognizer, EfficientNet, Edge. Полезно после замены весов на диске.
{ "status": "ok" }
📋 Формат ответа
Все эндпоинты распознавания возвращают единую структуру.
Структура верхнего уровня
Объект Page
Объект Block
Объект Paragraph (пустой в шаблоне default)
Группирует несколько Block-ов в одно
логическое поле. text —
конкатенация всех блоков.
Объект Table (шаблон default)
cells — двумерный массив
строк и столбцов.
Теги полей паспорта
Примеры кода
Готовые сниппеты для работы с Provision OCR API.
🐍 Python — передача изображения в бинарном виде
import requests
with open("passport.jpg", "rb") as f:
response = requests.post(
"http://localhost:8098/processing/passport",
data=f,
headers={"Content-Type": "image/jpeg"},
)
result = response.json()
doc = result["documents"][0]
page = doc["pages"][0]
# Извлечь все поля по тегу из параграфов
fields = {p["tag"]: p["text"] for p in page["paragraphs"]}
print(fields)
# {'birthPlace': 'ГОР.', 'codeIssued': '741-002', 'dateIssued': '16.03.2007', ...}
🐍 Python — передача через multipart/form-data
import requests
with open("snils.jpg", "rb") as f:
response = requests.post(
"http://localhost:8098/processing/snils",
files={"file": ("snils.jpg", f, "image/jpeg")},
)
result = response.json()
page = result["documents"][0]["pages"][0]
fields = {p["tag"]: p["text"] for p in page["paragraphs"]}
print(fields)
🐍 Python — обход таблиц (шаблон default)
import requests
with open("balance.jpg", "rb") as f:
response = requests.post(
"http://localhost:8098/processing/default",
data=f,
headers={"Content-Type": "image/jpeg"},
)
page = response.json()["documents"][0]["pages"][0]
for table in page["tables"]:
for row in table["cells"]:
print([cell["text"] for cell in row])
🐍 Python — получить все блоки со страницы
import requests
with open("document.png", "rb") as f:
response = requests.post(
"http://localhost:8098/processing/default",
data=f,
headers={"Content-Type": "image/png"},
)
page = response.json()["documents"][0]["pages"][0]
for block in page["blocks"]:
print(block["text"], block["tag"], block["prob"], block["loc"])
⚡ curl
curl -X POST http://localhost:8098/health
curl -X POST http://localhost:8098/processing/passport \
-H "Content-Type: image/jpeg" \
--data-binary @passport.jpg
FAQ / Поддержка
Ответы на часто задаваемые вопросы по Provision OCR.
async:
true).
provision.yml задайте api_key:
your-secret-key. После перезапуска все запросы должны содержать заголовок Authorization:
Bearer your-secret-key. Для Docker используйте переменную PROVISION_API_KEY.
provision-ocr-linux-amd64.
help@provisionlabs.ru.
Для срочных вопросов — Telegram-канал поддержки.