It recognizes
text, tables, formulas and charts (mixed Chinese/English) from cropped document
regions and outputs markdown-style content. In an end-to-end pipeline it is paired with a layout model
(
FionaGu1019/PP-DocLayoutV3-ov) that
provides region detection and reading order.
This is a multi-stage VLM (vision encode → projector → embed → decode-with-KV → lm-head), so the
easiest way to use it is through the end-to-end pipeline, paired with the layout model. Download both:
1from modelscope import snapshot_download
2
3vl_dir = snapshot_download("FionaGu1019/PaddleOCR-VL-1.5-ov") # this model (recognition)
4layout_dir = snapshot_download("FionaGu1019/PP-DocLayoutV3-ov") # layout detection
1import openvino as ov
2import openvino_tokenizers # registers custom tokenizer ops; import before Core()
3
4core = ov.Core()
5core.set_property({"CACHE_DIR": ".ov_cache"}) # cache compiled kernels (big GPU speedup)
6device = "GPU" # "CPU" / "GPU" / "NPU"
7
8md = "PaddleOCR-VL-1.5-ov"
9vision_encoder = core.compile_model(f"{md}/vision_encoder.xml", device)
10projector = core.compile_model(f"{md}/projector.xml", device)
11text_embed = core.compile_model(f"{md}/text_embed.xml", device)
12text_decoder = core.compile_model(f"{md}/text_decoder.xml", device) # stateful KV cache
13lm_head = core.compile_model(f"{md}/lm_head.xml", device)
14tokenizer = core.compile_model(f"{md}/tokenizer.xml", device)
15detokenizer = core.compile_model(f"{md}/detokenizer.xml", device)
16# Orchestration (preprocess, pos-embed interpolation, 2x2 spatial merge, greedy decode loop)
17# is non-trivial — please reuse the reference pipeline rather than re-implementing it.
If you find PaddleOCR-VL 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}