
Description
A few hundred invoices, contracts and statements as PDFs, and you need the vendor, the amounts, the dates and every line item in a spreadsheet. Each sender uses a different layout, and the template rules you write get broken by the next new format.
lift works the other way round: you give it a JSON schema describing the fields you want, and it pulls a matching JSON object straight out of the PDF or image. It is a 9B vision model open-sourced by Datalab, and schema-constrained decoding guarantees valid output, with no truncated JSON or stray fields. Fields it can't find come back as null instead of invented. Multi-page documents go through in one pass, and values that span pages are handled.
On the authors' 225-document benchmark (6 to 64 pages each, about 11,000 scored fields) it reaches 90.2% field accuracy with a 9.5 s median latency, well ahead of the equally sized Qwen3.5-9B. One pip package gets it running, with no environment to build and no templates to write.
Extraction by schema: pass any JSON schema and get JSON in that shape; in the invoice example 11 fields come out of a single page with no templates or field mapping.
Multi-page in one pass: the whole document is read in a single pass, including values that span pages and exhaustive lists.
Two inference modes: local HuggingFace, or a remote vLLM server (recommended, lighter install).
A friendly CLI: after
Schema Studio: a Streamlit app to build and save schemas and test them against your own documents.
Mind the license: code is Apache-2.0 but the model weights are OpenRAIL-M, and commercial self-hosting needs a license from Datalab; the managed platform offers higher accuracy.
lift works the other way round: you give it a JSON schema describing the fields you want, and it pulls a matching JSON object straight out of the PDF or image. It is a 9B vision model open-sourced by Datalab, and schema-constrained decoding guarantees valid output, with no truncated JSON or stray fields. Fields it can't find come back as null instead of invented. Multi-page documents go through in one pass, and values that span pages are handled.
On the authors' 225-document benchmark (6 to 64 pages each, about 11,000 scored fields) it reaches 90.2% field accuracy with a 9.5 s median latency, well ahead of the equally sized Qwen3.5-9B. One pip package gets it running, with no environment to build and no templates to write.
Features
Extraction by schema: pass any JSON schema and get JSON in that shape; in the invoice example 11 fields come out of a single page with no templates or field mapping.
Multi-page in one pass: the whole document is read in a single pass, including values that span pages and exhaustive lists.
Two inference modes: local HuggingFace, or a remote vLLM server (recommended, lighter install).
A friendly CLI: after
pip install lift-pdf, lift_extract handles one file, an inline schema or a whole directory.Schema Studio: a Streamlit app to build and save schemas and test them against your own documents.
Mind the license: code is Apache-2.0 but the model weights are OpenRAIL-M, and commercial self-hosting needs a license from Datalab; the managed platform offers higher accuracy.

