2026年3月25日星期三

Qianfan-OCR:4B参数端到端文档智能模型,超越DeepSeek/Gemini,支持192种语言,单GPU高效部署

Qianfan-OCR是百度千帆团队开发的4B参数端到端文档智能模型,在OmniDocBench v1.5中排名第一(93.12分),超越DeepSeek和Gemini。支持192种语言,单A100 GPU上W8A8量化可达1.024 PPS。开源,提供论文、源码和试用。

Tags:

点击下方名片关注AIGC Studio公众号获取最新AI前沿应用/AIGC实践教程
扫描下方二维码,加入AIGC Studio知识星球可以获得最新AI前沿应用/AIGC实践教程/大厂面试经验/算法刷题IT各学科入门到精通学习资料学习/科研/工作/副业,强烈推荐!
图片
图片

Qianfan-OCR是由百度千帆团队开发的4B参数端到端文档智能模型。它将文档解析、布局分析和文档理解统一到一个视觉语言架构中。与传统的将单独的布局检测、文本识别和语言理解模块串联起来的多阶段 OCR 流程不同,千帆 OCR 可直接执行图像到 Markdown 的转换,并支持各种提示驱动的任务——从结构化文档解析和表格提取到图表理解、文档问答和关键信息提取——所有这些都在一个模型中完成。

图片

主要亮点

  • OmniDocBench v1.5 端到端模型排名第一: 总分93.12,超越 DeepSeek-OCR-v2 (91.09)、Gemini-3 Pro (90.33) 以及所有其他端到端模型
  • OlmOCR 测试中排名第一的端到端模型: 得分79.8。
  • 关键信息提取排名第一: 在五个公开的关键信息提取基准测试中,总体平均得分达到87.9分,超越了 Gemini-3.1-Pro、Gemini-3-Pro、Seed-2.0 和 Qwen3-VL-235B-A22B。
  • 布局即思考⟨think⟩: 一种创新的可选思考阶段,它通过令牌在端到端范式中恢复显式布局分析。
  • 192 种语言: 支持多种文字的多语言 OCR 识别
  • 高效部署: 在单个 A100 GPU 上使用 W8A8 量化算法可实现1.024 PPS(每秒页面数)

unsetunset相关链接unsetunset

  • 论文:https://arxiv.org/pdf/2603.13398
  • 源码:https://github.com/baidubce/Qianfan-VL
  • 试用:https://huggingface.co/spaces/baidu/Qianfan-OCR-Demo
  • 主页:https://cloud.baidu.com/product-s/qianfan_home

unsetunset方法概述unsetunset

图片Qianfan-OCR 采用了Qianfan-VL的多模态桥接架构,由三个核心组件构成:

  • 视觉编码器:Qianfan-ViT,24 个 Transformer 层,任意分辨率设计(最高可达 4K),每个 448×448 图块 256 个视觉标记,每幅图像最多 4,096 个标记
  • 语言模型 Qwen3-4B(3.6B 非嵌入),36 层,2560 个隐藏维度,GQA(32 个查询头/8 个 KV 头),32K 上下文(可扩展至 131K)
  • 跨模态适配器:采用GELU激活的双层多层感知器,投影尺寸从1024维到2560维。

布局即思考

一项关键创新是"布局即思考":这是一个由标记触发的可选思考阶段⟨think⟩,模型在此阶段生成结构化的布局表示(边界框、元素类型、阅读顺序),然后再生成最终输出。

该机制有两个作用:

  • 功能方面:在端到端模式下恢复布局分析能力——用户可直接获得结构化的布局结果。
  • 增强功能:针对布局复杂、元素杂乱或阅读顺序非标准的文档,提供有针对性的准确性提升。
  • 何时使用:启用此功能可处理包含混合元素类型的异构页面(例如试卷、技术报告、报纸)。对于同质文档(例如单栏文本、简单表单),禁用此功能可获得更好的结果和更低的延迟。

unsetunset实验unsetunset

图片
图片
图片

unsetunset快速入门unsetunset

import torch
import torchvision.transforms as T
from torchvision.transforms.functional import InterpolationMode
from transformers import AutoModel, AutoTokenizer
from PIL import Image

IMAGENET_MEAN = (0.485, 0.456, 0.406)
IMAGENET_STD = (0.229, 0.224, 0.225)

def build_transform(input_size):
    MEAN, STD = IMAGENET_MEAN, IMAGENET_STD
    transform = T.Compose([
        T.Lambda(lambda img: img.convert('RGB'if img.mode != 'RGB'else img),
        T.Resize((input_size, input_size), interpolation=InterpolationMode.BICUBIC),
        T.ToTensor(),
        T.Normalize(mean=MEAN, std=STD)
    ])
    return transform

def find_closest_aspect_ratio(aspect_ratio, target_ratios, width, height, image_size):
    best_ratio_diff = float('inf')
    best_ratio = (1, 1)
    area = width * height
    for ratio in target_ratios:
        target_aspect_ratio = ratio[0] / ratio[1]
        ratio_diff = abs(aspect_ratio - target_aspect_ratio)
        if ratio_diff < best_ratio_diff:
            best_ratio_diff = ratio_diff
            best_ratio = ratio
        elif ratio_diff == best_ratio_diff:
            if area > 0.5 * image_size * image_size * ratio[0] * ratio[1]:
                best_ratio = ratio
    return best_ratio

def dynamic_preprocess(image, min_num=1, max_num=12, image_size=448, use_thumbnail=False):
    orig_width, orig_height = image.size
    aspect_ratio = orig_width / orig_height

    # calculate the existing image aspect ratio
    target_ratios = set(
        (i, j) for n in range(min_num, max_num + 1) for i in range(1, n + 1) for j in range(1, n + 1) if
        i * j <= max_num and i * j >= min_num)
    target_ratios = sorted(target_ratios, key=lambda x: x[0] * x[1])

    # find the closest aspect ratio to the target
    target_aspect_ratio = find_closest_aspect_ratio(
        aspect_ratio, target_ratios, orig_width, orig_height, image_size)

    # calculate the target width and height
    target_width = image_size * target_aspect_ratio[0]
    target_height = image_size * target_aspect_ratio[1]
    blocks = target_aspect_ratio[0] * target_aspect_ratio[1]

    # resize the image
    resized_img = image.resize((target_width, target_height))
    processed_images = []
    for i in range(blocks):
        box = (
            (i % (target_width // image_size)) * image_size,
            (i // (target_width // image_size)) * image_size,
            ((i % (target_width // image_size)) + 1) * image_size,
            ((i // (target_width // image_size)) + 1) * image_size
        )
        # split the image
        split_img = resized_img.crop(box)
        processed_images.append(split_img)
    assert len(processed_images) == blocks
    if use_thumbnail and len(processed_images) != 1:
        thumbnail_img = image.resize((image_size, image_size))
        processed_images.append(thumbnail_img)
    return processed_images

def load_image(image_file, input_size=448, max_num=12):
    image = Image.open(image_file).convert('RGB')
    transform = build_transform(input_size=input_size)
    images = dynamic_preprocess(image, image_size=input_size, use_thumbnail=True, max_num=max_num)
    pixel_values = [transform(image) for image in images]
    pixel_values = torch.stack(pixel_values)
    return pixel_values

# Load model
MODEL_PATH = "baidu/Qianfan-OCR"
model = AutoModel.from_pretrained(
    MODEL_PATH,
    torch_dtype=torch.bfloat16,
    trust_remote_code=True,
    device_map="auto"
).eval()
tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH, trust_remote_code=True)

# Load and process image
pixel_values = load_image("./Qianfan-OCR/examples/document.png").to(torch.bfloat16).to(model.device)

# Inference
prompt = "Parse this document to Markdown."
with torch.no_grad():
    response = model.chat(
        tokenizer,
        pixel_values=pixel_values,
        question=prompt,
        generation_config={"max_new_tokens": 16384}
    )
print(response)

unsetunset结论unsetunset

Qianfan-OCR是一个 4B 参数的端到端模型,它将文本识别、布局分析和语义理解统一到一个视觉语言架构中。主要贡献包括:

  1. 在 OmniDocBench v1.5 和 OlmOCR Bench 测试中取得了端到端模型中最先进的结果,这表明端到端架构在识别准确率方面可以与流水线系统相媲美;
  2. 引入了"布局即思维"(Layout-as-Thought)机制,该机制将布局推理作为可选的思维链集成,使模型能够动态地对复杂文档进行结构分析;
  3. 提供了实证证据,表明两阶段 OCR+LLM 流水线在需要空间和视觉推理的任务上性能显著下降,在布局信息至关重要的图表解释基准测试中准确率为零。 这些结果表明,对于需要视觉和文本联合理解的文档智能任务,在整个处理流程中保留视觉上下文比仅包含文本的中间表示具有显著优势。

感谢你看到这里,添加小助手 AIGC_Tech 加入官方 AIGC读者交流群,下方扫码加入 AIGC Studio 星球,获取前沿AI应用、AIGC实践教程、大厂面试经验、AI学习路线以及IT类入门到精通学习资料等,欢迎一起交流学习💗~

图片

没有评论:

发表评论

淘宝开源生成式视频复原模型Vivid-VR,AI重塑视频质量新突破

淘天音视频团队在ICIR 2026提出Vivid-VR,一种生成式视频复原模型。通过"概念蒸馏"训练策略,将T2V模型的概念理解迁移至复原任务,有效解决分布漂移问题,在纹理真实感和时序一致性上超越现有方法。论文、代码和主页均已开源,适合AI研究者与视频处理开发...