Downloads · 30 days
19
26% of all-time downloads
Fiona1019/PaddleOCR-VL-1.5-ov
PaddleOCR-VL-1.5-ov is a image-text-to-text model from Fiona1019. Use it for the image-text-to-text task on the model card, and read the license before you ship it in a product. It is set up for openvino. The card lists the license as apache-2.0.
Downloads · 30 days
19
26% of all-time downloads
All-time downloads
73
Public
Repo size
1.5 GB
Likes
0
Public
Click a slice to open those files.
.bin1.5 GB · 100%
From the Hugging Face model README
PaddleOCR-VL-1.5 · OpenVINO IR
</h1> <p align="center">Recognition VLM of the PaddleOCR-VL-1.5 document-parsing pipeline — converted to OpenVINO™ IR for local inference on Intel CPU / GPU / NPU</p>🔥 Official Website | 📝 Technical Report
</div>This repository hosts the OpenVINO™ IR build of the PaddleOCR-VL-1.5 recognition model — the ~0.9B multi-task vision-language model (VLM) that performs the actual content recognition in the PaddleOCR-VL-1.5 document-parsing pipeline. The original PaddlePaddle weights have been converted to OpenVINO Intermediate Representation so the model runs fully locally on Intel CPU, integrated/discrete GPU, and NPU via the OpenVINO runtime — no cloud service and no PaddlePaddle runtime required.
本仓库提供 PaddleOCR-VL-1.5 识别模型的 OpenVINO™ IR 版本——即 PaddleOCR-VL-1.5 文档解析流程中 负责实际内容识别的约 0.9B 多任务视觉语言大模型(VLM)。原始 PaddlePaddle 权重已转换为 OpenVINO 中间表示, 可在 Intel CPU / 集显 / 独显 / NPU 上完全本地运行,无需联网、无需安装 PaddlePaddle。
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.
The model is exported as a multi-stage OpenVINO pipeline:
| Stage | Files | Role |
|---|---|---|
| Vision encoder | vision_encoder.xml / .bin | Patch embed + transformer encoder over image patches |
| Projector | projector.xml / .bin | Projects visual features into the text embedding space |
| Text embedding | text_embed.xml / .bin | Token → embedding |
| Text decoder | text_decoder.xml / .bin | Autoregressive decoder (stateful KV-cache) |
| LM head | lm_head.xml / .bin | Hidden state → vocabulary logits |
| Tokenizer | tokenizer.xml / .bin, detokenizer.xml / .bin | OpenVINO Tokenizers (no sentencepiece needed) |
| Aux | position_embedding.npy, config.json, preprocessor_config.json, tokenizer_config.json, added_tokens.json | Pos-embed table + configs |
ocr (text), table, formula, chartsentencepiece/torch tokenizer dependency is removed)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:
from modelscope import snapshot_download
vl_dir = snapshot_download("FionaGu1019/PaddleOCR-VL-1.5-ov") # this model (recognition)
layout_dir = snapshot_download("FionaGu1019/PP-DocLayoutV3-ov") # layout detection
The pipeline then runs: layout detection (PP-DocLayoutV3) → crop regions in reading order → recognition (this model) → markdown output. It supports image / multi-page TIFF / PDF / directory / URL inputs and runs on the Intel GPU by default (CPU fallback).
import openvino as ov
import openvino_tokenizers # registers custom tokenizer ops; import before Core()
core = ov.Core()
core.set_property({"CACHE_DIR": ".ov_cache"}) # cache compiled kernels (big GPU speedup)
device = "GPU" # "CPU" / "GPU" / "NPU"
md = "PaddleOCR-VL-1.5-ov"
vision_encoder = core.compile_model(f"{md}/vision_encoder.xml", device)
projector = core.compile_model(f"{md}/projector.xml", device)
text_embed = core.compile_model(f"{md}/text_embed.xml", device)
text_decoder = core.compile_model(f"{md}/text_decoder.xml", device) # stateful KV cache
lm_head = core.compile_model(f"{md}/lm_head.xml", device)
tokenizer = core.compile_model(f"{md}/tokenizer.xml", device)
detokenizer = core.compile_model(f"{md}/detokenizer.xml", device)
# Orchestration (preprocess, pos-embed interpolation, 2x2 spatial merge, greedy decode loop)
# is non-trivial — please reuse the reference pipeline rather than re-implementing it.
openvino +
openvino-tokenizers (no sentencepiece).If you find PaddleOCR-VL helpful, feel free to give the original project a star and citation.
@misc{cui2026paddleocrvl15multitask09bvlm,
title={PaddleOCR-VL-1.5: Towards a Multi-Task 0.9B VLM for Robust In-the-Wild Document Parsing},
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},
year={2026},
eprint={2601.21957},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2601.21957},
}