Views
No views yet



2026.06.03 🚀 We release PaddleOCR-VL-1.6 Technical Report.2026.05.28 🚀 We release PaddleOCR-VL-1.6. PaddleOCR-VL-1.6 achieves a new state-of-the-art score of 96.33% on OmniDocBench v1.6, sets new records on OmniDocBench v1.5 and Real5-OmniDocBench as well, and demonstrates strong competitiveness against top-tier VLMs. The model architecture is fully compatible with PaddleOCR-VL-1.5, enabling zero-cost plug-and-play migration.1# The following command installs the PaddlePaddle version for CUDA 12.6. For other CUDA versions and the CPU version, please refer to https://www.paddlepaddle.org.cn/en/install/quick?docurl=/documentation/docs/en/develop/install/pip/linux-pip_en.html
2python -m pip install paddlepaddle-gpu==3.2.1 -i https://www.paddlepaddle.org.cn/packages/stable/cu126/
3python -m pip install -U "paddleocr[doc-parser]>=3.6.0"Please ensure that you install PaddlePaddle framework version 3.2.1 or above, along with the special version of safetensors. For macOS users, please use Docker to set up the environment.
paddleocr doc_parser -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/paddleocr_vl_demo.png --pipeline_version v1.61from paddleocr import PaddleOCRVL
2pipeline = PaddleOCRVL(pipeline_version="v1.6")
3output = pipeline.predict("https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/paddleocr_vl_demo.png")
4for res in output:
5 res.print()
6 res.save_to_json(save_path="output")
7 res.save_to_markdown(save_path="output")1docker run \
2 --rm \
3 --gpus all \
4 --network host \
5 ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddleocr-genai-vllm-server:latest-nvidia-gpu \
6 paddleocr genai_server --model_name PaddleOCR-VL-1.6-0.9B --host 0.0.0.0 --port 8080 --backend vllm1paddleocr doc_parser \
2 -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/paddleocr_vl_demo.png \
3 --pipeline_version v1.6 \
4 --vl_rec_backend vllm-server \
5 --vl_rec_server_url http://127.0.0.1:8080/v11from paddleocr import PaddleOCRVL
2pipeline = PaddleOCRVL(pipeline_version="v1.6", vl_rec_backend="vllm-server", vl_rec_server_url="http://127.0.0.1:8080/v1")
3output = pipeline.predict("https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/paddleocr_vl_demo.png")
4for res in output:
5 res.print()
6 res.save_to_json(save_path="output")
7 res.save_to_markdown(save_path="output")transformers library, supporting comprehensive text spotting and the recognition of complex elements including formulas, tables, charts, and seals. Below is a simple script we provide to support inference using the PaddleOCR-VL-1.5-0.9B model with transformers.[!NOTE] Note: We currently recommend using the official method for inference, as it is faster and supports page-level document parsing. The example code below only supports element-level recognition and text spotting.
1# ensure the transformers v5 is installed
2python -m pip install "transformers>=5.0.0"1from PIL import Image
2import torch
3from transformers import AutoProcessor, AutoModelForImageTextToText
4
5# ---- Settings ----
6model_path = "PaddlePaddle/PaddleOCR-VL-1.6"
7image_path = "test.png"
8task = "ocr" # Options: 'ocr' | 'table' | 'chart' | 'formula' | 'spotting' | 'seal'
9# ------------------
10
11# ---- Image Preprocessing For Spotting ----
12image = Image.open(image_path).convert("RGB")
13orig_w, orig_h = image.size
14spotting_upscale_threshold = 1500
15
16if task == "spotting" and orig_w < spotting_upscale_threshold and orig_h < spotting_upscale_threshold:
17 process_w, process_h = orig_w * 2, orig_h * 2
18 try:
19 resample_filter = Image.Resampling.LANCZOS
20 except AttributeError:
21 resample_filter = Image.LANCZOS
22 image = image.resize((process_w, process_h), resample_filter)
23
24# Set max_pixels: use 1605632 for spotting, otherwise use default ~1M pixels
25max_pixels = 2048 * 28 * 28 if task == "spotting" else 1280 * 28 * 28
26# ---------------------------
27
28# -------- Inference --------
29DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
30PROMPTS = {
31 "ocr": "OCR:",
32 "table": "Table Recognition:",
33 "formula": "Formula Recognition:",
34 "chart": "Chart Recognition:",
35 "spotting": "Spotting:",
36 "seal": "Seal Recognition:",
37}
38
39model = AutoModelForImageTextToText.from_pretrained(model_path, torch_dtype=torch.bfloat16).to(DEVICE).eval()
40processor = AutoProcessor.from_pretrained(model_path)
41
42messages = [
43 {
44 "role": "user",
45 "content": [
46 {"type": "image", "image": image},
47 {"type": "text", "text": PROMPTS[task]},
48 ]
49 }
50]
51inputs = processor.apply_chat_template(
52 messages,
53 add_generation_prompt=True,
54 tokenize=True,
55 return_dict=True,
56 return_tensors="pt",
57 images_kwargs={"size": {"shortest_edge": processor.image_processor.min_pixels, "longest_edge": max_pixels}},
58).to(model.device)
59
60outputs = model.generate(**inputs, max_new_tokens=512)
61result = processor.decode(outputs[0][inputs["input_ids"].shape[-1]:-1])
62print(result)
63# ---------------------------1# ensure the flash-attn2 is installed
2pip install flash-attn --no-build-isolationmodel = AutoModelForImageTextToText.from_pretrained(model_path, torch_dtype=torch.bfloat16, attn_implementation="flash_attention_2").to(DEVICE).eval()
Notes:
- Performance metrics are cited from the OmniDocBench official leaderboard, except for Gemini-3 Pro, Qwen3-VL-235B-A22B-Instruct and our model, which were evaluated independently.

Notes:
- Real5-OmniDocBench is a brand-new benchmark oriented toward real-world scenarios, which we constructed based on the OmniDocBench v1.5 dataset. The dataset comprises five distinct scenarios: Scanning, Warping, Screen-photography, Illumination, and Skew. For further details, please refer to Real5-OmniDocBench.
1@misc{zhang2026paddleocrvl16expandingfrontierdocument,
2 title={PaddleOCR-VL-1.6: Expanding the Frontier of Document Parsing with Under-Optimized Region Refinement and Progressive Post-Training},
3 author={Zelun Zhang and Hongen Liu and Suyin Liang and Yubo Zhang and Yiqing Xiang and Jiaxuan Liu and Ting Sun and Manhui Lin and Yue Zhang and Changda Zhou and Tingquan Gao and Cheng Cui and Yi Liu and Dianhai Yu and Yanjun Ma},
4 year={2026},
5 eprint={2606.03264},
6 archivePrefix={arXiv},
7 primaryClass={cs.CV},
8 url={https://arxiv.org/abs/2606.03264},
9}