Что такое Datalab lift?
lift — это 9‑молчный визуальный моделъ для структурированного извлечения. На вход вы передаёте обычную JSON‑схему, а модель возвращает JSON, полностью совпадающий с этой схемой. При этом она умеет читать PDF‑файлы и изображения «как есть», без предварительного разбиения на страницы.
Модель работает в двух режимах: локальное инференс‑приложение через HuggingFace и удалённый сервис vLLM, который Datalab советует использовать в продакшене. Код открыт под Apache 2.0, а веса — под модифицированной лицензией OpenRAIL‑M.
Схема‑ограниченное декодирование: как это работает
Перед выработкой ответа lift компилирует вашу JSON‑схему в Pydantic‑модель, а затем в строгую JSON‑схему, которую передаёт серверу vLLM как response_format. На каждом шаге генерации токенов сервер маскирует недопустимые символы, поэтому модель может выбрать только те токены, которые сохраняют валидность структуры.
Это гарантирует, что полученный JSON всегда соответствует заданному типу и форме. Однако такое ограничение контролирует лишь структуру, а не семантику: поле типа number может содержать любое число, в том числе и ошибочное.
Lift автоматически разрешает null для каждого скалярного листа, что позволяет модели «отказываться» от заполнения отсутствующих полей, не разрушая структуру.
Поддерживаемые типы: string, number, integer, boolean, массивы и вложенные объекты. Операторы enum, anyOf/oneOf, $ref и additionalProperties не поддерживаются – в таком случае модель просто генерирует без ограничения.
Практический совет: держите схемы в поддерживаемом подмножестве и проверяйте полученный JSON против схемы на стороне клиента.
Абстиненция по умолчанию
Если в документе нет запрашиваемого поля, lift возвращает null вместо вымышленного значения. Поэтому помечайте обязательными только действительно необходимые поля – иначе вы получите null, что будет воспринято как «поле отсутствует», а не как ошибка.
Бенчмарк
На 225‑документальном наборе Datalab lift достиг 90,2 % точности полей и медианной задержки 9,5 сек на документ. Это лучший показатель среди самохостируемых моделей того же размера.
Полная точность документов (все поля правильны) составила 20,9 % – показатель, характерный для сложных многостраничных документов, где требуется единственный проход.
Практический рабочий процесс
- 1. Определите схему. Добавьте
descriptionк неочевидным полям и пометьте обязательными только действительно обязательные. - 2. Запустите извлечение. Передайте схему и файл в lift (CLI или Python‑API).
- 3. Обработайте результаты. Если вызов завершился ошибкой или какое‑то обязательное поле вернуло
null, отправьте документ на ручную проверку. - 4. Проверьте JSON. Валидируйте полученный объект против исходной схемы – это поможет обнаружить случаи, когда схема не смогла компилироваться.
Самый простой пример кода
CLI (Python 3.12+)
pip install lift-pdf lift_vllm # запустить сервер vLLM lift_extract invoice.pdf schema.json --output result.json
Python‑API
from lift import extract
schema = {
"type": "object",
"properties": {
"invoice_number": {"type": "string", "description": "Идентификатор счета"},
"total": {"type": "number", "description": "Сумма к оплате"},
"due_date": {"type": "string", "description": "Дата оплаты (ISO 8601)"},
"line_items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"description": {"type": "string"},
"amount": {"type": "number"}
}
}
}
},
"required": ["invoice_number", "total"]
}
result = extract("invoice.pdf", schema)
if result.error or result.extraction is None:
# отправить на проверку
pass
else:
data = result.extraction
if data.get("total") is None:
# поле отсутствует – тоже отправляем на проверку
pass
else:
# сохраняем валидные данные
save(data)
Самые полезные советы по проектированию схем
- Добавляйте
descriptionк полям с неоднозначными именами – это основной рычаг повышения точности. - Сохраняйте схемы в поддерживаемом подмножестве и валидируйте вывод позже.
- Отдавайте предпочтение «плоским», небольшим по глубине структурам.
- Помечайте обязательными только действительно обязательные поля.
- Для больших PDF используйте параметр
page_range(CLI) илиpage_range(Python), чтобы ограничить диапазон страниц. - Переиспользуйте один
InferenceManagerмежду вызовами, чтобы уменьшить накладные расходы загрузки модели.
Самохостинг против облака
| Самохостинг lift | Требуется соблюдение условий лицензии OpenRAIL‑M; подходит при ограничениях резидентности данных, необходимости контроля затрат и задержек, а также при работе в офлайн‑режиме. |
| Облачный API Datalab | Предоставляет per‑field верификацию, ссылки на источники и confidence‑оценки; удобно, если не хотите управлять инфраструктурой и объём запросов невелик. |
Запуск и первые шаги
Установите CLI‑утилиту:
pip install lift-pdf lift_vllm
Схемы можно создавать в виде JSON‑файлов или Python‑словарей. Для интерактивного тестирования существует Schema Studio – небольшое Streamlit‑приложение (pip install lift-pdf[app] && lift_app).
Заключение
lift — практичный инструмент для быстрой, однопроходной экстракции полей из PDF и изображений. Он отлично подходит для пайплайнов, где после извлечения следует ручная проверка или агрегирующая аналитика. Если нужны автоматические confidence‑оценки и верификация, стоит рассмотреть облачный сервис Datalab.
Полный набор исходных кодов и документации доступен на GitHub: chandra, marker, surya, а модель lift – под лицензией Apache 2.0 (веса – OpenRAIL‑M).




















