This model is the layout stage of an end-to-end document-parsing pipeline. Pair it with
FionaGu1019/PaddleOCR-VL-1.5-ov
(the recognition VLM) to get layout detection → reading order → text/table/formula recognition.
1from modelscope import snapshot_download
2
3# Download both stages of the pipeline
4layout_dir = snapshot_download("FionaGu1019/PP-DocLayoutV3-ov")
5vl_dir = snapshot_download("FionaGu1019/PaddleOCR-VL-1.5-ov")
1import cv2
2import numpy as np
3import openvino as ov
4
5model_dir = "PP-DocLayoutV3-ov" # local path or snapshot_download(...) result
6core = ov.Core()
7compiled = core.compile_model(f"{model_dir}/inference.xml", "GPU") # "CPU" / "GPU" / "NPU"
8
9# Preprocess: resize to 800x800 (no keep-ratio), CHW, float32
10img = cv2.imread("document.jpg")
11h, w = img.shape[:2]
12resized = cv2.resize(img, (800, 800), interpolation=cv2.INTER_LINEAR)
13blob = resized.astype(np.float32).transpose(2, 0, 1)[None] # [1,3,800,800]
14scale_factor = np.array([[800 / h, 800 / w]], dtype=np.float32) # [1,2]
15
16results = compiled({"image": blob, "scale_factor": scale_factor})
17# Outputs are DETR detections (class id, score, box); filter by draw_threshold=0.5
18# and map class ids via the label_list in inference.yml.
If you find PP-DocLayoutV3 helpful, feel free to give the original project a star and citation.
1@misc{cui2026paddleocrvl15multitask09bvlm,
2 title={PaddleOCR-VL-1.5: Towards a Multi-Task 0.9B VLM for Robust In-the-Wild Document Parsing},
3 author={Cheng Cui and Ting Sun and Suyin Liang and Tingquan Gao and Zelun Zhang and Jiaxuan Liu and Xueqing Wang and Changda Zhou and Hongen Liu and Manhui Lin and Yue Zhang and Yubo Zhang and Yi Liu and Dianhai Yu and Yanjun Ma},
4 year={2026},
5 eprint={2601.21957},
6 archivePrefix={arXiv},
7 primaryClass={cs.CV},
8 url={https://arxiv.org/abs/2601.21957},
9}