Instructions to use cloudraker/rakedoc-nano with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use cloudraker/rakedoc-nano with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="cloudraker/rakedoc-nano") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("cloudraker/rakedoc-nano") model = AutoModelForMultimodalLM.from_pretrained("cloudraker/rakedoc-nano", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use cloudraker/rakedoc-nano with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "cloudraker/rakedoc-nano" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "cloudraker/rakedoc-nano", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/cloudraker/rakedoc-nano
- SGLang
How to use cloudraker/rakedoc-nano with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "cloudraker/rakedoc-nano" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "cloudraker/rakedoc-nano", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "cloudraker/rakedoc-nano" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "cloudraker/rakedoc-nano", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use cloudraker/rakedoc-nano with Docker Model Runner:
docker model run hf.co/cloudraker/rakedoc-nano
rakedoc-nano
A 1.2B-parameter document parser (Qwen2-VL architecture) fine-tuned for table structure. It is a LoRA fine-tune of florin-inc/florin-parser-nano, itself a fine-tune of KDLAI/KDL-Frontier-Parser-nano. Weights are merged; no adapter loading is needed.
This model powers the document parsing pipeline of the CloudRaker Paperwork API.
Lineage and license
| Link | Owner | License |
|---|---|---|
| Qwen2-VL | Alibaba | Apache-2.0 |
| KDL-Frontier-Parser-nano | KoreaDeep | AGPL-3.0 |
| florin-parser-nano | florin-inc | AGPL-3.0 |
| rakedoc-nano | CloudRaker | AGPL-3.0 |
AGPL-3.0 is inherited from the KDL weights and applies to this model. See LICENSE
and NOTICE.
ParseBench
Official result — mean of 3 full runs on ParseBench main (plus the
florin_parser_nano layout-adapter registration fix submitted with the
leaderboard PR), single H100 SXM, vllm/vllm-openai:0.28.0, all defaults,
LLM normalization off:
| Model | Overall | Tables | Charts | Content Faithfulness | Semantic Formatting | Visual Grounding |
|---|---|---|---|---|---|---|
| rakedoc-nano (mean of 3, submitted) | 77.23 | 86.44 | 64.89 | 88.84 | 71.68 | 74.28 |
Per-run Overall: 77.24 / 77.23 / 77.21 (run-to-run sigma about 0.015).
Earlier measurement (commit facdaf02)
Scores at commit facdaf02,
single run, LLM normalization off unless stated.
| Model | Overall | Tables | Content Faithfulness | Semantic Formatting | Visual Grounding | Charts |
|---|---|---|---|---|---|---|
| rakedoc-nano | 76.04 | 86.49 | 87.27 | 67.89 | 74.08 | 64.45 |
| rakedoc-nano, LLM normalization on (Claude Haiku 4.5 judge) | 76.04 | 86.40 | 87.26 | 67.87 | 74.20 | 64.48 |
| rakedoc-nano, fixed-harness normalization (non-official, see below) | 76.06 | 86.38 | 87.23 | 67.85 | 74.10 | 64.76 |
At commit facdaf02 the judge's label normalizer receives no table headers
(llm_normalization/postprocess.py:209 passes table_headers=[]), so normalization on and off
score the same; both are reported for transparency.
"Fixed-harness" rows use a two-line patch that threads the predicted markdown into the
judge and extracts header cells from Markdown and HTML tables (_table_headers_from_content).
It is not the official harness and is not comparable to the public leaderboard; it is shown
so the effect of the judge bug can be seen (about +0.3 on Charts, nothing elsewhere).
Run-to-run noise measured on this harness: about ±0.1 Overall, ±0.05 Tables, ±0.3 Charts.
Three-pillar mean (Tables, Content Faithfulness, Semantic Formatting), the metric used in Cohere's Parse announcement: rakedoc-nano 80.55 versus Cohere Parse 79.2.
What moved: merged-cell structure. Perfect table record match rose from 0.584 to 0.606 and hard-table GriTS from 0.792 to 0.794. Text, layout, and chart behaviour are unchanged within noise.
Training
- LoRA r=16, alpha 32, on language attention and MLP projections; vision tower and projector frozen. 1 epoch, LR 2e-5, cosine schedule, bf16, one H100, about 12 minutes.
- Data: 3,000 synthetic table region crops rendered from HTML with exact OTSL targets, calibrated to the ParseBench ground-truth distribution (median 4 columns, hierarchical headers, row and column spans, multi-line cells). No text-stage data; no benchmark data.
- The table stage prompt is
"\nTable Recognition:\n"and the output is OTSL (<fcel>,<ecel>,<lcel>,<ucel>,<xcel>,<nl>), identical to the base model.
Serving
Drop-in replacement for the base model in the KDL pipeline:
vllm serve CloudRaker/rakedoc-nano --served-model-name kdl-frontier-parser-nano \
--max-model-len 8192 --gpu-memory-utilization 0.85 --max-num-seqs 24 \
--trust-remote-code --limit-mm-per-prompt '{"image":1}'
Stage prompts, sampling parameters, and post-processing are those of the ParseBench
kdl_frontier_nano pipeline.
Limitations
- Charts (64) and layout detection are unchanged from the base model; they were out of scope.
- Underline, highlight, and code-block marks are never emitted by the pipeline.
- Evaluated on English-heavy financial and insurance documents plus the ParseBench mix; other domains are untested.
- Downloads last month
- 167
Model tree for cloudraker/rakedoc-nano
Base model
KDLAI/KDL-Frontier-Parser-nano