Downloads · 30 days
14
10% of all-time downloads
vanishingradient/qwen-docs-finetuned
qwen-docs-finetuned is a image-text-to-text model from vanishingradient. Use it for the image-text-to-text task on the model card, and read the license before you ship it in a product. It is set up for transformers. The card lists the license as apache-2.0.
Developed by: vanishingradient License: Apache-2.0 Base model: unsloth/Qwen3-VL-8B-Instruct-unsloth-bnb-4bit
Downloads · 30 days
14
10% of all-time downloads
All-time downloads
138
Public
Parameters
8.8B
17.5 GB on disk
Likes
3
Public
Click a slice to open those files.
.safetensors17.5 GB · 100%
From the Hugging Face model README
Developed by: vanishingradient
License: Apache-2.0
Base model: unsloth/Qwen3-VL-8B-Instruct-unsloth-bnb-4bit
This is a fine-tuned Qwen3-VL-8B Vision-Language model optimized for document understanding and structured markdown generation from images such as scanned pages, PDFs, screenshots, and technical documents.
The model was fine-tuned using Unsloth and Hugging Face TRL, enabling faster training and reduced VRAM usage while maintaining output fidelity.
from transformers import AutoModelForVision2Seq, AutoProcessor, TextStreamer
import torch
from PIL import Image
model_id = "vanishingradient/qwen-docs-finetuned"
# Load model (4-bit, fits on 16GB VRAM)
model = AutoModelForVision2Seq.from_pretrained(
model_id,
torch_dtype=torch.float16,
device_map="auto",
trust_remote_code=True,
load_in_4bit=True,
)
processor = AutoProcessor.from_pretrained(
model_id,
trust_remote_code=True
)
# --------------------------------------------------
# PLACEHOLDER: path to your local image file
# --------------------------------------------------
image = Image.open("/path/to/your/document_image.png")
messages = [
{
"role": "user",
"content": [
{"type": "image"},
{"type": "text", "text": "Convert this image to markdown format."}
]
}
]
text = processor.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
inputs = processor(
text=[text],
images=[image],
return_tensors="pt"
).to("cuda")
streamer = TextStreamer(
processor.tokenizer,
skip_prompt=True
)
_ = model.generate(
**inputs,
streamer=streamer,
max_new_tokens=1024,
temperature=0.1,
)