96.33% 新SOTA!PaddleOCR-VL-1.6 发布,大模型时代的数据基座再升级

简介: PaddleOCR-VL-1.6正式发布!在OmniDocBench v1.6达96.33% SOTA,全面领先开源/闭源方案;支持表格、公式、图表、古籍、生僻字、印章等多场景高精度识别,异形框定位更优;模型结构兼容1.5版,零成本升级。代码与权重已开源。

过去几个月,PaddleOCR相继发布了PaddleOCR-VL和PaddleOCR-VL-1.5,凭借强大而稳定的文档解析能力,已经被业界广泛用于大模型训练数据和应用数据构建。PaddleOCR-VL-1.5更是创新性地支持了异形框定位,在真实文档场景中表现优异。

最近,PaddleOCR正式推出PaddleOCR-VL-1.6,PaddleOCR-VL-1.6是在PaddleOCR-VL-1.5的基础上,通过对数据和训练策略的极致优化,在OmniDocBench v1.6 突破96.3%,在OmniDocBench v1.5、Real5-OmniDocBench上同样刷新SOTA,文本、公式、表格识别全面领先开源与闭源方案。此外,表格、古籍、生僻字识别大幅提升,印章、spotting、图表识别等多场景均有显著增强。值得一提的是,模型结构与PaddleOCR-VL-1.5完全一致,零成本适配,即换即用。




PaddleOCR-VL-1.6代码和模型权重已全面开源,欢迎下载使用。

  • PaddleOCR官网:http://paddleocr.com
  • Github:http://github.com/PaddlePaddle/PaddleOCR
  • ModelScope:https://modelscope.cn/models/PaddlePaddle/PaddleOCR-VL-1.6

效果预览

1. 表格识别场景





2. 图表识别场景





3. 公式识别场景




4. 古籍识别场景







5. 生僻字识别场景




6. 印章识别场景





7. 真实畸变场景


















核心指标

1. OmniDocBench v1.6指标

OmniDocBench v1.6是OmniDocBench的最新版本,在原有版本新增了较多困难样本。PaddleOCR-VL-1.6总指标96.33%,领跑全球所有通用大模型和专用OCR模型。




2. Real5-OmniDocBench指标

Real5-OmniDocBench是基于OmniDocBench v1.5构建的多场景文档解析评估集,涵盖了扫描、弯折、屏幕拍照、光线变化、倾斜5大场景,PaddleOCR-VL-1.6总指标93.19%,全面领先,总指标领先Gemini3 Pro近4个百分点。



核心技术点

1. 整体框架:模型驱动的数据构建与渐进式后训练

PaddleOCR-VL-1.6 并不是一次简单的模型放大或数据堆叠,而是在 PaddleOCR-VL-1.5 已经具备强大基础能力的前提下,进一步追问:模型真正没有学好的地方在哪里?通过对历史模型的分析发现,剩余错误并非均匀分布,而是集中出现在一批欠优化区域中——包括预测不稳定、数据覆盖不足、监督信号不可靠等局部弱区。

因此,PaddleOCR-VL-1.6 采用了 “模型驱动的数据引擎 + 渐进式后训练策略” 的整体优化框架:先从当前模型出发定位弱点,再围绕这些弱点构建高价值数据,最后通过继续预训练、监督微调、强化学习的渐进式后训练流程,将新增数据的价值稳定注入模型。最终,在不改变 0.9B 高效架构的前提下,模型实现了更强的文档解析性能、鲁棒性和泛化能力。


从整体优化路线可以看到,PaddleOCR-VL-1.6 的升级路径非常清晰:左侧延续 PaddleOCR-VL-1.5 的高效架构和任务体系,中间通过欠优化区域驱动的数据引擎挖掘并修复模型弱点,右侧再通过继续预训练、监督微调、强化学习三阶段后训练逐步吸收高质量数据。整个流程体现了一个核心思想:不是通过盲目数据扩增来让模型变得更大,而是通过对模型弱点的定向分析,让每一份数据更精准地服务于模型能力提升。

2. 数据引擎:从“盲目扩量”到“面向模型弱点的精准优化”

PaddleOCR-VL-1.6 提出的欠优化区域驱动的数据引擎,是模型提升的核心数据机制。它不是随机扩充样本,而是围绕模型残余弱点进行针对性挖掘与修复。

具体来说,数据引擎从三个视角定位 欠优化区域:决策边界脆弱区域用于挖掘在训练末期不同权重或语义不变扰动下不稳定的样本,定位模型不稳定的决策边界;数据分布稀疏覆盖区域用于发现特征空间中覆盖不足、容易被主流分布淹没的长尾区域;不可靠的监督信号区域用于识别原始训练集中监督信号不可靠的样本。随后,前两类区域被用作种子,从大规模内部数据池中进行定向检索,以扩展模型未充分覆盖的分布;第三类区域则用于修正已有标注噪声。对于新检索和待修复样本,系统进一步结合多专家共识与 ERNIE 5.0 的 判别-修正 流程,构建更可靠高质量的训练数据。

由此,PaddleOCR-VL-1.6 的数据建设从传统的规模驱动,转向了更高效的模型弱点驱动。


图中进一步展示了数据引擎的内部工作方式:左侧对应三类 欠优化区域 的挖掘过程,中间通过定向检索、多专家共识和迭代式标注修复完成数据增强,最终沉淀为更高质量的训练数据。

这个流程的关键价值在于,它同时解决了“缺数据”和“数据不可靠”两个问题:既扩展了模型在边界分布上的覆盖,也提升了监督信号的可信度,更确定了数据的难度,从而为后续 继续预训练、监督微调 和 强化学习 提供更稳定的数据基础。

3. 强化学习优化:以高潜力样本筛选稳定小模型强化学习优化

在强化学习阶段,PaddleOCR-VL-1.6 面临一个典型小模型挑战:0.9B 模型,尤其是其中语言模型的部分仅有 0.3B,对强化学习数据质量和奖励信号非常敏感。如果样本过难,模型无法产生有效正向轨迹;如果样本过易,训练几乎没有提升空间;如果采样轨迹之间奖励差异过小,GRPO 也难以形成有效的相对优势信号。

为此,PaddleOCR-VL-1.6 设计了面向GRPO的高潜力样本挖掘策略,用 监督微调后的模型对候选样本进行多次轨迹采样,并从提升潜力、生成不确定性和奖励方差三个维度筛选真正“可学习、有区分度、有收益空间”的样本。同时,针对文档解析任务输出形式复杂、二值奖励过稀疏的问题,PaddleOCR-VL-1.6 进一步精心设计可验证的奖励函数,将输出映射到任务相关的规范表示,并通过合法性、结构修正约束、真实得分三个维度提供稳定、可验证、任务对齐的奖励信号。

最终,强化学习不再是简单的额外训练阶段,而成为对强 监督微调后的模型的高精度收尾优化,进一步提升性能并规范输出风格。


模型推理

使用Paddlepaddle框架推理

请确保安装 PaddlePaddle 框架 3.2.1 或更高版本,以及特殊版本的 safetensors。 对于 macOS 用户,请使用 Docker 配置环境。

环境安装:

# 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"

命令行使用:

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使用:

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")

使用transformers推理

PaddleOCR-VL-1.6-0.9B 模型可通过 transformers 库实现无缝推理,支持全面的文本检测以及对公式、表格、图表和印章等复杂元素的识别。

环境安装:

# ensure the transformers v5 is installed
python -m pip install "transformers>=5.0.0"

推理脚本

from PIL import Image
import torch
from modelscope 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)
# ---------------------------

模型微调

ms-swift 支持了 PaddleOCR-VL-1.6 系列模型的微调与RL。ms-swift是魔搭社区官方提供的大模型训练框架,开源地址:https://github.com/modelscope/ms-swift

环境准备:

# pip install git+https://github.com/modelscope/ms-swift.git
git clone https://github.com/modelscope/ms-swift.git
cd ms-swift
pip install -e .
pip install "transformers>=5" -U

微调脚本如下:

CUDA_VISIBLE_DEVICES=0 \
swift sft \
    --model PaddlePaddle/PaddleOCR-VL-1.6 \
    --dataset 'AI-ModelScope/LaTeX_OCR:human_handwrite#2000' \
    --load_from_cache_file true \
    --split_dataset_ratio 0.01 \
    --tuner_type lora \
    --torch_dtype bfloat16 \
    --num_train_epochs 1 \
    --padding_free true \
    --attn_impl flash_attention_2 \
    --per_device_train_batch_size 16 \
    --per_device_eval_batch_size 16 \
    --learning_rate 1e-4 \
    --lora_rank 8 \
    --lora_alpha 32 \
    --target_modules all-linear \
    --freeze_vit true \
    --freeze_aligner true \
    --gradient_accumulation_steps 1 \
    --eval_steps 50 \
    --save_steps 50 \
    --save_total_limit 2 \
    --logging_steps 5 \
    --max_length 4096 \
    --output_dir output \
    --warmup_ratio 0.05 \
    --dataset_num_proc 4 \
    --dataloader_num_workers 4

自定义数据集格式:

{"messages": [{"role": "user", "content": "<image><OCR:"}, {"role": "assistant", "content": "ms-swift是魔搭社区提供的大模型与多模态大模型微调部署框架"}], "images": ["/xxx/x.png"]}
{"messages": [{"role": "user", "content": "<image>Table Recognition:"}, {"role": "assistant", "content": "..."}], "images": ["/xxx/y.png"]}

训练后对验证集推理:

CUDA_VISIBLE_DEVICES=0 \
swift infer \
  --adapters output/vx-xxx/checkpoint-xxx \
  --stream true \
  --load_data_args true


目录
相关文章
|
15天前
|
人工智能 自然语言处理 文字识别
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
Qwen3.7-Max是阿里云百炼面向智能体时代推出的新一代旗舰模型,对标GPT-5.5、Claude Opus 4.7等闭源旗舰。该模型支持百万级token上下文窗口,具备顶级推理能力、多模态搜索与视觉理解增强、流式输出低延迟响应等核心优势,覆盖编程、办公、长周期自主执行等复杂场景。同时支持OpenAI接口兼容,便于系统快速迁移。用户可通过Token Plan团队或节省计划等订阅方式灵活调用,适合企业级高要求场景使用。
5728 29
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
|
10天前
|
存储 定位技术 数据库
CodeGraph 如何让 Claude Code减少 7 成工具调用?
CodeGraph 为 Coding Agent 提供本地代码知识图谱,把函数、类、调用链和框架路由提前整理成“项目地图”,减少盲目搜索和文件读取。它不是新 Agent,而是上下文基础设施,让 Agent 更快找到正确代码路径,平均减少 7 成工具调用。
1165 2
|
7天前
|
人工智能 安全 定位技术
CodeGraph深度解析 让Claude Code工具调用直降七成的核心原理与实操教程
如今以Claude Code为代表的AI编程智能体已经成为开发者日常编码、项目重构、漏洞修复的必备工具。但在长期使用过程中,几乎所有开发者都会遇到同一个明显痛点:AI虽然具备强大的代码生成与分析能力,却常常陷入盲目探索的循环中。
927 1
|
17天前
|
人工智能 自然语言处理 供应链
|
7天前
|
人工智能 弹性计算 安全
阿里云618活动时间、活动入口、优惠活动详细解读
2026年阿里云618创新加速季已全面开启,作为年度力度最大的云产品促销活动,本次大促覆盖轻量应用服务器、ECS云服务器、GPU云服务器、数据库、AI算力、安全服务、CDN等全品类产品,推出5亿元算力补贴、新用户限时秒杀、普惠满减、企业专享、免费试用、云大使返佣等多重福利,个人开发者、中小企业、AI团队均可享受专属低价。本文将系统梳理2026年阿里云618活动的完整时间节点、官方参与入口、各类优惠细则、使用规则、热门产品推荐及实操代码,帮助用户精准参与、高效省钱,以最低成本完成上云部署。
704 3
|
23天前
|
人工智能 开发工具 iOS开发
Claude Code 新手完全上手指南:安装、国产模型配置与常用命令全解
Claude Code 是一款运行在终端环境中的 AI 编程助手,能够直接在命令行中完成代码生成、项目分析、文件修改、命令执行、Git 管理等开发全流程工作。它最大的特点是**任务驱动、终端原生、轻量高效、多模型兼容**,无需图形界面、不依赖 IDE 插件,能够深度融入开发者日常工作流。
3826 15
|
8天前
|
运维
欢迎报名|2026 Agentic AICon—智能体基础设施与AgentOps专场,邀您参会
欢迎报名|2026 Agentic AICon—智能体基础设施与AgentOps专场,邀您参会
1421 0

热门文章

最新文章