NuExtract3
by numind
Template-driven structured extraction from documents and images (VLM)
numind/NuExtract3mixpeek://document_extractor@v1/numind_nuextract3_v1Overview
NuExtract 3 turns a vision-language model (built on Qwen3.5-4B) into a structured-extraction engine. Instead of returning free text, you hand it a schema, a JSON template describing the fields you want, and it fills that template from the input, whether the input is plain text or a document *image*. Because it sees the page, it reads scanned PDFs, invoices, forms, and screenshots directly, with no separate OCR stage, and it can also emit clean document-to-markdown.
On Mixpeek, NuExtract 3 is the extraction step that converts messy documents into queryable structured records: pull line items, dates, parties, and amounts into typed fields, then filter and search them like any other metadata.
Architecture
Vision-language model fine-tuned from Qwen3.5-4B (~4B params) for template-conditioned extraction. Takes an image or text plus a JSON schema/example and generates the populated structure, with light reasoning before committing values. Multilingual; handles document images at native resolution (inherited from the Qwen vision encoder), so layout and figures are read directly rather than flattened to a text dump.
Mixpeek SDK Integration
// No extractor parameter takes a Hugging Face model id (checked against
// GET /v1/discovery/extractors, which returns 13), so NuExtract3 runs
// on your side and the output is upserted through POST
// /v1/namespaces/{namespace_id}/documents/upsert. On Enterprise the other
// path is to upload the weights instead: POST /v1/namespaces/{id}/models
// accepts the huggingface format and a custom plugin loads them.
const res = await fetch(
"https://api.mixpeek.com/v1/namespaces/ns_your_namespace/documents/upsert",
{
method: "POST",
headers: {
Authorization: "Bearer API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
collection_id: "col_your_collection",
documents: [
{
document_id: "asset-00412",
// The model produces text, so it lands in payload. Give the
// collection a text vector index and embed that text to make it
// searchable rather than only filterable.
payload: { extracted_text: modelOutput, source_key: "archive/2026/asset-00412" },
vectors: { "text-embedding": embeddingOfModelOutput },
},
],
}),
},
);
// Managed alternative, if this exact model is not the requirement:
// universal_extractor@v1 runs google/gemini-embedding-2
// (3072-d) over a bucket, with no inference of your own.Capabilities
- Schema/template-driven extraction: you define the fields, it fills them
- Reads document images directly (scanned PDFs, invoices, forms): no separate OCR step
- Document-to-markdown conversion for clean downstream chunking
- Multilingual extraction with reasoning before value assignment
- Open weights (Apache-2.0), self-hostable
Use Cases on Mixpeek
Common Pipeline Companions
Explore on Mixpeek
Compare alternatives in this category
Hand-picked tools & platforms compared
Deep-dive technical guide
See how Mixpeek runs models as extractors
Store & search embeddings at scale
Usage-based pricing for pipelines
Compare models, APIs & infrastructure
Specification
Research Paper
NuExtract 3 (NuMind): model card
arxiv.orgBuild a pipeline with NuExtract3
Add this model to a processing pipeline alongside other extractors. Combine with retrieval stages for end-to-end search.
Run it on your own data, free