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
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:
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.
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.
