docparser-models
Every model file DocParser (a Rust
document-parsing engine: Triton serving + an in-process ONNX Runtime
backend) loads, flat, one commit per deployment. The checkout's
models/MANIFEST.toml pins a commit and maps each file to its place in
the Triton model repository; scripts/fetch-models.sh downloads and
verifies them against MANIFEST.txt here (sha256 per file). Nothing is
trained here: the files are PaddlePaddle's own ONNX exports and scripted
derivations of them, all Apache-2.0.
Each file is named <official PaddlePaddle model name>_<part>, so the name
says which published checkpoint it came from.
| File | What | Provenance | Licence |
|---|---|---|---|
PP-DocLayoutV3_fp32.onnx |
PP-DocLayoutV3 (RT-DETR-L, 25 classes + reading order), FP32 | bit-identical copy of PaddlePaddle/PP-DocLayoutV3_onnx inference.onnx @ 46bbdf18 (sha256 45bf7175…) |
Apache-2.0 |
PP-DocLayoutV3_fp16_batchable.onnx |
the same, output reshaped to [B,300,7] and converted to FP16 (GridSample / NMS kept FP32) for Triton batching on TensorRT |
scripts/models/batchable_layout.py + convert_fp16.py over the file above (onnx 1.21, onnxconverter-common 1.16) |
Apache-2.0 |
PP-OCRv6_medium_det.onnx |
PP-OCRv6 text detection, medium tier (OCR_DET_MODEL=medium) |
bit-identical copy of PaddlePaddle/PP-OCRv6_medium_det_onnx inference.onnx @ 61323801 (eb13b44b…) |
Apache-2.0 |
PP-OCRv6_small_det.onnx |
PP-OCRv6 text detection, small tier — the tier served by default (OCR_DET_MODEL) |
bit-identical copy of PaddlePaddle/PP-OCRv6_small_det_onnx inference.onnx @ 28fe5895 (d73e0058…) |
Apache-2.0 |
PP-OCRv6_tiny_det.onnx |
PP-OCRv6 text detection, tiny tier (0.43 M parameters) | bit-identical copy of PaddlePaddle/PP-OCRv6_tiny_det_onnx inference.onnx @ 2ba1506c (193bab7a…) |
Apache-2.0 |
PP-OCRv6_tiny_rec_fp32.onnx |
PP-OCRv6 text recognition, tiny tier (6906-way CTC) | bit-identical copy of PaddlePaddle/PP-OCRv6_tiny_rec_onnx inference.onnx @ 2612ab37 (9ef676d6…) |
Apache-2.0 |
PP-OCRv6_tiny_rec_fp16.onnx |
the same in FP16 | convert_fp16.py over the file above |
Apache-2.0 |
PP-OCRv6_small_rec_fp32.onnx |
PP-OCRv6 text recognition, small tier (18710-way CTC) — the tier served by default (OCR_REC_MODEL) |
bit-identical copy of PaddlePaddle/PP-OCRv6_small_rec_onnx inference.onnx @ b8f84f0b (5435fd74…) |
Apache-2.0 |
PP-OCRv6_small_rec_fp16.onnx |
the same in FP16 | convert_fp16.py over the file above |
Apache-2.0 |
PP-OCRv6_medium_rec_fp32.onnx |
PP-OCRv6 text recognition, medium tier (18710-way CTC, the same dictionary as small) | bit-identical copy of PaddlePaddle/PP-OCRv6_medium_rec_onnx inference.onnx @ 50c7eaca (9c09abf0…) |
Apache-2.0 |
PP-OCRv6_medium_rec_fp16.onnx |
the same in FP16 | convert_fp16.py over the file above |
Apache-2.0 |
SLANet_plus_encoder.onnx |
SLANet-Plus encoder (PP-LCNet), the official graph up to the GRU loop's feature input | onnx.utils.extract_model over PaddlePaddle/SLANet_plus_onnx inference.onnx @ 7dbe640e (7790c0c1…) — scripts/models/export_slanet_plus.py::extract_encoder |
Apache-2.0 |
SLANet_plus_decoder.bin |
the GRU decoder's 16 parameter tensors as float32 (DocParser's host decoder) | export_slanet_plus.py::dump_decoder over the same file; byte-identical to TurboOCR's slanet_plus_decoder.bin (f4b9f9b2…), and 16 of 16 tensors bit-equal to the named head. subtree of SLANet_plus_pretrained.pdparams (--verify-decoder) |
Apache-2.0 |
PP-FormulaNet_plus-M_encoder.onnx, _prep.onnx, _decoder_step.onnx, _tokenizer.json |
PP-FormulaNet_plus-M split for a host decode loop: vision encoder, the cross-attention K/V computed once per crop, and one greedy step against a static KV cache | scripts/models/export_ppformulanet.py --model plus_m over PaddlePaddle/PP-FormulaNet_plus-M — the encoder cut from the paddle2onnx graph, the decoder's 165 tensors read by name from the official training checkpoint (PP-FormulaNet_plus-M_pretrained.pdparams, 165 of 165 bit-equal to the conversion's own numbering); gated at 12/12 identical tokens against PaddleX's own runtime |
Apache-2.0 |
PP-FormulaNet_plus-S_encoder.onnx, _prep.onnx, _decoder_step.onnx, _tokenizer.json |
the same split for plus-S, which decodes three tokens per step (parallel_step: 3) — the throughput tier |
scripts/models/export_ppformulanet.py --model plus_s; decoder weights by name likewise (61 of 61); same gate, 12/12 |
Apache-2.0 |
Contracts (inputs, normalisation, post-processing) follow each source's
inference.yml; the pre/post-processing code is in the DocParser checkout
(crates/docparser-inference/src/preprocess/,
deploy/triton_model_repository/). The CTC dictionary of the recogniser is
a text file in that checkout, not here. Why these models and not their
siblings is measured in docparser-bench/docs/BENCH-2026-09.md (OmniDocBench
v1.6 §8, the per-slot ablations §1–7).
Redistribution: all files are Apache-2.0, under that licence with this attribution. (Texo, an AGPL-3.0 checkpoint, served the formula slot's throughput tier until Stage 14 and was replaced by PP-FormulaNet_plus-S; nothing here is copyleft any more.)