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.