alt.freeweights.text / PaddleOCR-VL-1.6
From: PaddlePaddle <huggingface.co/PaddlePaddle>Newsgroups: alt.freeweights.textSubject:

PaddleOCR-VL-1.6

Date: 2026-11-15Commit: 132c45fSigned: 2DC28CC7B26A283B ✓

Image text to text model with 959M parameters. Safetensors weights, 1.93 GB in all. Published by PaddlePaddle under Apache-2.0.

959M params1.93GBPaddleOCR-VL-1.6safetensorspermissive
FactsParams959MSize1.93 GBFormatssafetensorsTaskimage text to textLicenseApache-2.0From sourcepermissive
$ fw get PaddlePaddle/PaddleOCR-VL-1.6
# manifest sha256 7bd396bb3f3a… · 1.93 GB · 20 files
$ fw verify ./PaddleOCR-VL-1.6 PaddlePaddle/PaddleOCR-VL-1.6
From sourceHosted (signed)PaddlePaddle/PaddleOCR-VL-1.6Last check: 2026-11-15 02:30 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Works with

Overview

Size
1.93 GB
Weights
1.92 GB (safetensors)
Parameters
959M
Formats
safetensors
Task
image text to text
License
Apache-2.0 (permissive)
Files
20, each with a sha256
Publisher
PaddlePaddle
Added
2026-11-15
Section
alt.freeweights.text
Lineage

Original release from the publisher.

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 02:30 UTCpassed

Model card

From the publisher at commit 132c45f. Shown as plain text with links; images open at the publisher.

PaddleOCR-VL-1.6: Expanding the Frontier of Document Parsing with Under-Optimized Region Refinement and Progressive Post-Training

repo HuggingFace ModelScope HuggingFace ModelScope Discord X License

🔥 Official Website 📝 Technical Report

Image: image

Introduction#

We introduce PaddleOCR-VL-1.6, an upgraded compact document parsing model built upon PaddleOCR-VL-1.5. PaddleOCR-VL-1.6 introduces a region-aware data optimization framework that identifies weak regions from the previous model, applies targeted enhancement to those regions, and improves the reliability of supervision signals. It further adopts a progressive post-training recipe based on curated data selection and reinforcement learning, pushing model performance to a higher level through staged optimization. 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.

Key Capabilities of PaddleOCR-VL-1.6#

🚀 New SOTA Accuracy: OmniDocBench v1.6 achieves 96.33%, setting new state-of-the-art records on OmniDocBench v1.5 and Real5-OmniDocBench as well. It delivers comprehensive leading performance across text, formula, and table recognition, surpassing both open-source and closed-source solutions.

⚡ Fully Upgraded Capabilities: Significant improvements in table, Chinese ancient document, and Chinese rare character recognition, along with notable enhancements in seal/stamp recognition, text spotting, chart recognition, and more diverse scenarios.

🔄 Seamless Migration: The model architecture is fully compatible with PaddleOCR-VL-1.5 — zero adaptation cost, plug-and-play replacement.

PaddleOCR-VL-1.6 Architecture#

Image: image

PaddleOCR-VL-1.6 Data Engine#

Image: image

News#

  • 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.
Install Dependencies#

Install PaddlePaddle and PaddleOCR:

# 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
python -m pip install paddlepaddle-gpu==3.2.1 -i https://www.paddlepaddle.org.cn/packages/stable/cu126/
python -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.

Basic Usage#

CLI usage:

paddleocr doc_parser -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/paddleocr_vl_demo.png --pipeline_version v1.6

Python API usage:

from paddleocr import PaddleOCRVL
pipeline = PaddleOCRVL(pipeline_version="v1.6")
output = pipeline.predict("https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/paddleocr_vl_demo.png")
for res in output:
    res.print()
    res.save_to_json(save_path="output")
    res.save_to_markdown(save_path="output")
Accelerate VLM Inference via Optimized Inference Servers#
  1. Start the VLM inference server: You can start the vLLM inference service using one of two methods:
    • Method 1: PaddleOCR method bash docker run \ --rm \ --gpus all \ --network host \ ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddleocr-genai-vllm-server:latest-nvidia-gpu \ paddleocr genai_server --model_name PaddleOCR-VL-1.6-0.9B --host 0.0.0.0 --port 8080 --backend vllm
    • Method 2: vLLM method vLLM: PaddleOCR-VL Usage Guide
  2. Call the PaddleOCR CLI or Python API: bash paddleocr doc_parser \ -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/paddleocr_vl_demo.png \ --pipeline_version v1.6 \ --vl_rec_backend vllm-server \ --vl_rec_server_url http://127.0.0.1:8080/v1 python from paddleocr import PaddleOCRVL pipeline = PaddleOCRVL(pipeline_version="v1.6", vl_rec_backend="vllm-server", vl_rec_server_url="http://127.0.0.1:8080/v1") output = pipeline.predict("https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/paddleocr_vl_demo.png") for res in output: res.print() res.save_to_json(save_path="output") res.save_to_markdown(save_path="output")

For more usage details and parameter explanations, see the documentation.

PaddleOCR-VL-1.6-0.9B Usage with transformers#

Currently, the PaddleOCR-VL-1.6-0.9B model facilitates seamless inference via the 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.

# ensure the transformers v5 is installed
python -m pip install "transformers>=5.0.0"
from PIL import Image
import torch
from transformers import AutoProcessor, AutoModelForImageTextToText

# ---- Settings ----
model_path = "PaddlePaddle/PaddleOCR-VL-1.6"
image_path = "test.png"
task = "ocr" # Options: 'ocr' | 'table' | 'chart' | 'formula' | 'spotting' | 'seal'
# ------------------

# ---- Image Preprocessing For Spotting ----
image = Image.open(image_path).convert("RGB")
orig_w, orig_h = image.size
spotting_upscale_threshold = 1500

if task == "spotting" and orig_w < spotting_upscale_threshold and orig_h < spotting_upscale_threshold:
    process_w, process_h = orig_w * 2, orig_h * 2
    try:
        resample_filter = Image.Resampling.LANCZOS
    except AttributeError:
        resample_filter = Image.LANCZOS
    image = image.resize((process_w, process_h), resample_filter)

# Set max_pixels: use 1605632 for spotting, otherwise use default ~1M pixels
max_pixels = 2048 * 28 * 28 if task == "spotting" else 1280 * 28 * 28
# ---------------------------

# -------- Inference --------
DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
PROMPTS = {
    "ocr": "OCR:",
    "table": "Table Recognition:",
    "formula": "Formula Recognition:",
    "chart": "Chart Recognition:",
    "spotting": "Spotting:",
    "seal": "Seal Recognition:",
}

model = AutoModelForImageTextToText.from_pretrained(model_path, torch_dtype=torch.bfloat16).to(DEVICE).eval()
processor = AutoProcessor.from_pretrained(model_path)

messages = [
    {
        "role": "user",
        "content": [
            {"type": "image", "image": image},
            {"type": "text", "text": PROMPTS[task]},
        ]
    }
]
inputs = processor.apply_chat_template(
    messages,
    add_generation_prompt=True,
    tokenize=True,
    return_dict=True,
    return_tensors="pt",
    images_kwargs={"size": {"shortest_edge": processor.image_processor.min_pixels, "longest_edge": max_pixels}},
).to(model.device)

outputs = model.generate(**inputs, max_new_tokens=512)
result = processor.decode(outputs[0][inputs["input_ids"].shape[-1]:-1])
print(result)
# ---------------------------

👉 Click to expand: Use flash-attn to boost performance and reduce memory usage

# ensure the flash-attn2 is installed
pip install flash-attn --no-build-isolation
model = AutoModelForImageTextToText.from_pretrained(model_path, torch_dtype=torch.bfloat16, attn_implementation="flash_attention_2").to(DEVICE).eval()

Performance#

Document Parsing#
1. OmniDocBench v1.6#
PaddleOCR-VL-1.6 achieves SOTA performance for overall, text, formula, tables on OmniDocBench v1.6#

Image: image

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.
2. Real5-OmniDocBench#
Across all five diverse and challenging scenarios—scanning, warping, screen-photography, illumination, and skew—PaddleOCR-VL-1.6 consistently sets new SOTA records#

Image: image

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.

Acknowledgments#

We would like to thank PaddleFormers, Keye, MinerU, OmniDocBench for providing valuable code, model weights and benchmarks. We also appreciate everyone's contribution to this open-source project!

Citation#

If you find PaddleOCR-VL-1.6 helpful, feel free to give us a star and citation.

@misc{zhang2026paddleocrvl16expandingfrontierdocument,
      title={PaddleOCR-VL-1.6: Expanding the Frontier of Document Parsing with Under-Optimized Region Refinement and Progressive Post-Training}, 
      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},
      year={2026},
      eprint={2606.03264},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2606.03264}, 
}

Files

20 files · 1.93 GBWeights 1.92 GB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 20 files with their sha256
FileSizesha256
.eval_results/real5_omnidocbench.yaml1.42 KB99219214a2793f849b55dc875a356917b8fc6d178455467e5a98e71a00689cf5
.gitattributes1.57 KB34448b82c17d60fec9b65b1f093c115ddbaadc04beb1b0140b6bfed2e012a930
LICENSE11.4 KBb8c4d7deccd236af023af1c88c4d4e8f0fc2f41914e0fb23a3ec9678fb5a8456
README.md21.4 KBd6c5b77a660577f6e18021defccd835bdc93a8c6538f5a479d597f3e94288abf
added_tokens.json25.4 KBf59f889088e0fe21c523e7cf121bb6dca3b0bb148cb7159fbb4572c74dfc5644
chat_template.jinja1.47 KB2f27812dab7f333e471884e0c803d807f11953d5453140dfb1aaba234f872bc8
config.json2.06 KBce7f4565f8b1db78532ad5d1b9ebe55c2139d49bd4cb04778b580a08a598f171
configuration_paddleocr_vl.py8.10 KB753dd93654c3a9c8c85a3eaee1e3092dd12591b0f2dce0305e1abfb7a41ff160
generation_config.json133 Ba6701d78ab3b4d972307cdec3b69d4c13f46e0d5140514f50ab7d84259324b94
image_processing_paddleocr_vl.py25.0 KBa4fa521b9cb16e207f94b7f2d16427771776dfc634420d319fc4916ee58049ec
inference.yml43 B1587aece2d6442366efce34161d5f7d5f67f09ebfbf043168e5fade892c2780e
model.safetensors1.92 GB85a479d506a11e724e7285d395c551be69f41dbc16b6342d3cacfb189aed71db
modeling_paddleocr_vl.py111 KB4b2f0c894be95b48fa6dcf18745b8307efe1290725a258f65c6c8b503b69c060
preprocessor_config.json641 B111872ab1e8bb7fd040ac5087bfced7ab8f011f02139b088cba294964c3b1d0e
processing_paddleocr_vl.py12.3 KBe29cb1e5f275f2bd3ce051bd5c9983a33894e693b2823a0e13d4c07c8c4f9e13
processor_config.json137 B1568858960a9760c54431dae693a6152e601ff55cdf6d2eab97a4a99958faea0
special_tokens_map.json1.15 KBd3a125c03103deb2acaf7730791bdbbf196f620e5a2213b664511ff9b4b25bab
tokenizer.json11.2 MBc8a215a59183d0d0781adc33bacd3ce6162716f7fd568fb30234a74d69803a7d
tokenizer.model1.61 MB34ef7db83df785924fb83d7b887b6e822a031c56e15cff40aaf9b982988180df
tokenizer_config.json187 KB1f979337347cc0cb72a6282d8a23ed183539aa81a87a906f022aee2bab83c7c5
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
132c45f52c pinned now2026-11-15 02:30 UTC20 files · 1.93 GB

Use it

$ fw get PaddlePaddle/PaddleOCR-VL-1.6
# manifest sha256 7bd396bb3f3a… · 1.93 GB · 20 files
$ fw verify ./PaddleOCR-VL-1.6 PaddlePaddle/PaddleOCR-VL-1.6
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/PaddlePaddle/PaddleOCR-VL-1.6.json --dir ./PaddleOCR-VL-1.6 $ python3 fw.py verify ./PaddleOCR-VL-1.6 ./PaddlePaddle__PaddleOCR-VL-1.6.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download PaddlePaddle/PaddleOCR-VL-1.6 --revision 132c45f52c0a26ed5a6b2f6bd8e3985794cc27dd --local-dir ./PaddleOCR-VL-1.6
transformersLoad the weights in Python.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import AutoModelForImageTextToText, AutoProcessor processor = AutoProcessor.from_pretrained("PaddlePaddle/PaddleOCR-VL-1.6", revision="132c45f52c0a26ed5a6b2f6bd8e3985794cc27dd") model = AutoModelForImageTextToText.from_pretrained("PaddlePaddle/PaddleOCR-VL-1.6", revision="132c45f52c0a26ed5a6b2f6bd8e3985794cc27dd", device_map="auto")
vLLMServe an OpenAI-compatible API.
$ HF_ENDPOINT=https://freeweights.allternit.com vllm serve PaddlePaddle/PaddleOCR-VL-1.6 --revision 132c45f52c0a26ed5a6b2f6bd8e3985794cc27dd

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
LICENSE
Text sha256
b8c4d7deccd236af023af1c88c4d4e8f0fc2f41914e0fb23a3ec9678fb5a8456
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: PaddlePaddle <huggingface.co/PaddlePaddle>Newsgroups: alt.freeweights.textSubject: PaddleOCR-VL-1.6Date: 2026-11-15Commit: 132c45fSigned: 2DC28CC7B26A283B ✓
Upstream
PaddlePaddle/PaddleOCR-VL-1.6
Pinned commit
132c45f52c0a26ed5a6b2f6bd8e3985794cc27dd
Manifest
PaddleOCR-VL-1.6.json · .minisig
Manifest sha256
7bd396bb3f3a7fbfde6c033b2f13143449bedd1123db40bc97c10bb72e4c1f3f
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 02:30 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/PaddlePaddle/PaddleOCR-VL-1.6.json $ curl -O https://freeweights.allternit.com/manifests/PaddlePaddle/PaddleOCR-VL-1.6.json.minisig $ minisign -Vm PaddleOCR-VL-1.6.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

2 models in the catalog name this one as their parent.

Quantizations
2
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download PaddlePaddle/PaddleOCR-VL-1.6
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. PaddleOCR-VL-1.6.json. Provenance. Takedown history: none.

Variants

2 quantized or adapter builds of PaddleOCR-VL-1.6. Each has its own license check and page.

From: laion <huggingface.co/laion>Subject: a2-rl-e2egit_large-50-32B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_e2egit-large-15-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_e2egit-v2-10-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_pymethods2test-large-80-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_unitsyn-python-large-10-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_mix_h2_language_proportional-65-8B