NuExtract3
Collection
Quantized NuExtract3 models for efficient image-text understanding (AutoRound W4A16) • 3 items • Updated
W4A16 (4-bit integer weights, 16-bit activations) quantized builds of numind/NuExtract3 created using Intel's AutoRound algorithm.
True)quant_nontext_module): Kept in BF16 to preserve visual document parsing and OCR accuracymtp, mtp.fc) kept in native bfloat16Vishva007/NuExtract3-W4A16-AutoRoundVishva007/NuExtract3-W4A16-AutoRound-GPTQVishva007/NuExtract3-W4A16-AutoRound-LLM-Compressorvllm serve Vishva007/NuExtract3-W4A16-AutoRound \
--trust-remote-code \
--limit-mm-per-prompt '{"image": 10, "video": 0}' \
--chat-template-content-format openai \
--generation-config vllm \
--max-model-len 16384 \
--dtype bfloat16 \
--gpu-memory-utilization 0.90
import base64
import json
from openai import OpenAI
client = OpenAI(api_key="EMPTY", base_url="http://localhost:8000/v1")
def encode_image(image_path):
with open(image_path, "rb") as f:
return base64.b64encode(f.read()).decode("utf-8")
data_url = f"data:image/png;base64,{encode_image('document.png')}"
# Structured JSON Extraction
template = {
"invoice_number": "verbatim-string",
"date": "date-time",
"total": "number",
"line_items": [{"description": "verbatim-string", "amount": "number"}]
}
response = client.chat.completions.create(
model="Vishva007/NuExtract3-W4A16-AutoRound",
temperature=0.2,
messages=[
{"role": "user", "content": [{"type": "image_url", "image_url": {"url": data_url}}]}
],
extra_body={
"chat_template_kwargs": {
"enable_thinking": False
}
}
)
print(response.choices[0].message.content)
For Markdown OCR: Replace
templateinchat_template_kwargswith"mode": "markdown".