StableLearn Logo

搜索内容

AI Tools 13 min read

HunyuanOCR 教程:1B 参数超越 DeepSeek/PaddleOCR/Qwen 的腾讯开源 OCR 模型部署指南

HunyuanOCR 开源教程:腾讯混元 1B 参数 OCR 模型,性能全面超越 DeepSeek-OCR、PaddleOCR 和 Qwen3-VL-235B。卡证识别 92% vs DeepSeek 10%,视频字幕提取 92% vs 5%。支持 100+ 语言,提供 vLLM OpenAI API 部署完整代码。

Cover image for HunyuanOCR 教程:1B 参数超越 DeepSeek/PaddleOCR/Qwen 的腾讯开源 OCR 模型部署指南

本文发布于 297 天前,内容可能已过时,请注意甄别。

HunyuanOCR 是什么?

HunyuanOCR 是腾讯混元团队推出的一款端到端 OCR 专家级视觉语言模型(VLM)。它基于混元原生多模态架构,仅用 1B 参数就在多个行业基准测试中达到了 SOTA(最先进)水平。

这个模型最厉害的地方在于它的”端到端”理念——单条指令、单次推理就能完成复杂任务,比那些需要多个模型级联的方案效率高多了。

💡 简单来说,HunyuanOCR 就是一个小而强的 OCR 模型,能处理各种复杂的文档识别任务,还支持 100 多种语言。

核心特性与功能

💪 高效轻量架构

  • 1B 参数设计:基于混元原生多模态架构和训练策略,用极少的参数量实现了 SOTA 性能
  • 部署成本低:相比动辄几十上百 B 的大模型,部署门槛大大降低
  • 端到端推理:单次推理完成任务,不需要复杂的级联流程

📑 全面的 OCR 能力

一个模型覆盖多种经典 OCR 任务:

  • 文本检测与识别:精准定位和识别图片中的文字
  • 复杂文档解析:处理包含公式、表格、图表的复杂文档
  • 开放域信息提取:从卡证、票据等提取结构化信息
  • 视频字幕提取:自动提取视频画面中的字幕
  • 图片翻译:端到端的图片文字翻译
  • 文档问答:基于文档内容进行问答

🌏 广泛的语言支持

  • 支持 100+ 种语言
  • 在单语言和混合语言场景下都表现出色
  • 特别优化了 14 种常用小语种(德语、西班牙语、土耳其语、意大利语、俄语、法语、葡萄牙语、阿拉伯语、泰语、越南语、印尼语、马来语、日语、韩语)到中英文的翻译

系统要求

🖥️ 硬件要求

跑这个模型对硬件还是有一定要求的:

  • 操作系统:Linux
  • Python:3.12+(推荐)
  • CUDA:12.8
  • PyTorch:2.7.1
  • GPU:支持 CUDA 的 NVIDIA 显卡
  • 显存:80GB
  • 硬盘空间:6GB

⚠️ 注意:80GB 显存的要求意味着你需要 A100 或 H100 这样的专业显卡,普通消费级显卡可能跑不动完整模型。

快速开始

🚀 使用 vLLM(推荐)

vLLM 是官方推荐的推理方式,性能更好。

安装

使用 pip

   pip install vllm --pre --extra-index-url https://wheels.vllm.ai/nightly

使用 uv

   uv pip install vllm --extra-index-url https://wheels.vllm.ai/nightly

模型推理

   from vllm import LLM, SamplingParams
from PIL import Image
from transformers import AutoProcessor

def clean_repeated_substrings(text):
    """清理文本中的重复子串"""
    n = len(text)
    if n < 8000:
        return text
    for length in range(2, n // 10 + 1):
        candidate = text[-length:] 
        count = 0
        i = n - length
        
        while i >= 0 and text[i:i + length] == candidate:
            count += 1
            i -= length

        if count >= 10:
            return text[:n - length * (count - 1)]  

    return text

# 加载模型
model_path = "tencent/HunyuanOCR"
llm = LLM(model=model_path, trust_remote_code=True)
processor = AutoProcessor.from_pretrained(model_path)
sampling_params = SamplingParams(temperature=0, max_tokens=16384)

# 准备输入
img_path = "/path/to/image.jpg"
img = Image.open(img_path)
messages = [
    {"role": "user", "content": [
        {"type": "image", "image": img_path},
        {"type": "text", "text": "检测并识别图片中的文字,将文本坐标格式化输出。"}
    ]}
]

# 推理
prompt = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = {"prompt": prompt, "multi_modal_data": {"image": [img]}}
output = llm.generate([inputs], sampling_params)[0]
print(clean_repeated_substrings(output.outputs[0].text))

部署 OpenAI 兼容 API 服务

vLLM 还支持部署 OpenAI 兼容的 API 服务器,方便集成到现有系统中:

启动服务:

   vllm serve tencent/HunyuanOCR \
    --no-enable-prefix-caching \
    --mm-processor-cache-gb 0

使用 OpenAI 客户端调用:

   from openai import OpenAI

# 创建客户端
client = OpenAI(
    api_key="EMPTY",
    base_url="http://localhost:8000/v1",
    timeout=3600
)

# 构建请求
messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "image_url",
                "image_url": {
                    "url": "https://example.com/your-image.png"
                }
            },
            {
                "type": "text",
                "text": (
                    "提取文档图片中正文的所有信息用 markdown 格式表示,"
                    "其中页眉、页脚部分忽略,表格用 html 格式表达,"
                    "文档中公式用 latex 格式表示,按照阅读顺序组织进行解析。"
                )
            }
        ]
    }
]

# 发送请求
response = client.chat.completions.create(
    model="tencent/HunyuanOCR",
    messages=messages,
    temperature=0.0,
)

print(f"识别结果: {response.choices[0].message.content}")

配置建议:

  • 使用贪婪采样(temperature=0.0)或低温度采样以获得最佳 OCR 性能
  • OCR 任务通常不需要前缀缓存或图像复用,建议关闭这些功能以避免不必要的哈希和缓存开销
  • 根据硬件能力调整 max_num_batched_tokens 参数以获得更好的吞吐量

🔧 使用 Transformers

如果你更熟悉 Transformers 框架,也可以用这种方式:

安装

   pip install git+https://github.com/huggingface/transformers@82a06db03535c49aa987719ed0746a76093b1ec4

注意:目前 Transformers 相比 vLLM 框架有一定的性能下降,官方正在修复中。

模型推理

   from transformers import AutoProcessor
from transformers import HunYuanVLForConditionalGeneration
from PIL import Image
import torch

# 加载模型和处理器
model_name_or_path = "tencent/HunyuanOCR"
processor = AutoProcessor.from_pretrained(model_name_or_path, use_fast=False)

# 准备输入
img_path = "path/to/your/image.jpg"
image_inputs = Image.open(img_path)
messages1 = [
    {
        "role": "user",
        "content": [
            {"type": "image", "image": img_path},
            {"type": "text", "text": "检测并识别图片中的文字,将文本坐标格式化输出。"},
        ],
    }
]
messages = [messages1]

# 处理输入
texts = [
    processor.apply_chat_template(msg, tokenize=False, add_generation_prompt=True)
    for msg in messages
]
inputs = processor(
    text=texts,
    images=image_inputs,
    padding=True,
    return_tensors="pt",
)

# 加载模型并推理
model = HunYuanVLForConditionalGeneration.from_pretrained(
    model_name_or_path,
    attn_implementation="eager",
    dtype=torch.bfloat16,
    device_map="auto"
)

with torch.no_grad():
    device = next(model.parameters()).device
    inputs = inputs.to(device)
    generated_ids = model.generate(**inputs, max_new_tokens=16384, do_sample=False)

# 解码输出
if "input_ids" in inputs:
    input_ids = inputs.input_ids
else:
    input_ids = inputs.inputs

generated_ids_trimmed = [
    out_ids[len(in_ids):] for in_ids, out_ids in zip(input_ids, generated_ids)
]
output_texts = processor.batch_decode(
    generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False
)
print(output_texts)

应用场景与提示词

HunyuanOCR 支持多种任务,下面是常用的提示词:

📝 文本检测与识别(Spotting)

   检测并识别图片中的文字,将文本坐标格式化输出。

📄 文档解析(Document Parsing)

任务提示词
公式识别识别图片中的公式,用 LaTeX 格式表示。
表格解析把图中的表格解析为 HTML。
图表解析解析图中的图表,对于流程图使用 Mermaid 格式表示,其他图表使用 Markdown 格式表示。
完整文档提取文档图片中正文的所有信息用 markdown 格式表示,其中页眉、页脚部分忽略,表格用 html 格式表达,文档中公式用 latex 格式表示,按照阅读顺序组织进行解析。

📋 通用解析

   提取图中的文字。

🔍 信息提取

任务提示词
单字段提取输出 Key 的值。
多字段提取提取图片中的: [‘key1’,‘key2’, …] 的字段内容,并按照 JSON 格式返回。
字幕提取提取图片中的字幕。

🌐 翻译

   先提取文字,再将文字内容翻译为英文。若是文档,则其中页眉、页脚忽略。公式用latex格式表示,表格用html格式表示。

性能评测

📊 文本检测识别性能

在内部基准测试中,HunyuanOCR 的整体表现:

模型类型方法整体得分
传统方法PaddleOCR53.38
传统方法BaiduOCR61.9
通用 VLMQwen3VL-2B-Instruct29.68
通用 VLMQwen3VL-235B-Instruct53.62
通用 VLMSeed-1.6-Vision59.23
OCR 专用 VLMHunyuanOCR70.92

总结:HunyuanOCR 在各种场景下都取得了最佳的整体性能(70.92%),显著超越了传统 OCR 方法和通用 VLM。

📑 文档解析性能

在 OmniDocBench 和多语言内部基准测试中:

模型类型方法参数量OmniDocBench 整体
通用 VLMGemni-2.5-pro-88.03
通用 VLMQwen3-VL-235B235B89.15
专用 VLM(模块化)MinerU2.51.2B90.67
专用 VLM(模块化)PaddleOCR-VL0.9B92.86
专用 VLM(端到端)Deepseek-OCR3B87.01
专用 VLM(端到端)dots.ocr3B88.41
专用 VLM(端到端)HunyuanOCR1B94.10

总结:HunyuanOCR 在多语言文档解析方面表现卓越,在大多数类别中都达到了最低的编辑距离。

📋 信息提取与 VQA 性能

模型卡证票据视频字幕OCRBench
DeepSeek-OCR10.0440.545.41430
Qwen3-VL-2B-Instruct67.6264.623.75858
Gemini-2.5-Pro80.5980.6653.65872
Qwen3-VL-235B-A22B-Instruct75.5978.450.74920
HunyuanOCR92.2992.5392.87860

总结:HunyuanOCR 在卡证/票据处理和视频字幕提取方面显著超越了更大的模型,同时在 OCRBench 上保持了有竞争力的表现。

🌐 图片翻译性能

方法参数量Other2EnOther2ZhDoTA (en2zh)
Gemini-2.5-Flash-79.2680.0685.60
Qwen3-VL-235B-Instruct235B73.6777.2080.01
Qwen3-VL-2B-Instruct2B66.3066.7773.49
HunyuanOCR1B73.3873.6283.48

总结:HunyuanOCR 仅用 1B 参数,在图片翻译任务中达到了与 Qwen3-VL-235B 相当的效果。

应用场景展示

🔤 文本检测与识别

模型能够在行级别输出文本图像中所有文字的内容和对应坐标信息,在文档、艺术字体、街景、手写、广告、发票、截图、游戏、视频等场景下都表现出色。

📚 复杂文档处理

能够将扫描或拍摄的多语言文档图像数字化,具体包括:

  • 按阅读顺序组织文本内容
  • 公式使用 LaTeX 格式
  • 复杂表格使用 HTML 格式表达

📋 开放域信息提取

对于常见的卡证票据,可以使用标准 JSON 格式解析感兴趣的字段(如姓名/地址/公司等)。

示例提示词:

   提取图片中的: ['单价', '上车时间', '发票号码', '省前缀', '总金额', '发票代码', '下车时间', '里程数'] 的字段内容,并按照 JSON 格式返回。

示例输出:

   {
    "单价": "3.00",
    "上车时间": "09:01",
    "发票号码": "42609332",
    "省前缀": "",
    "总金额": "¥77.10元",
    "发票代码": "161002018100",
    "下车时间": "09:51",
    "里程数": "26.1km"
}

🎬 视频字幕提取

模型能够自动提取视频中的字幕,包括双语字幕。

🌍 图片文字翻译

模型能够端到端地将拍摄的小语种图片翻译成中文或英文文本格式。在 ICDAR2025 文档端到端翻译竞赛小模型赛道中获得冠军。

与其他 OCR 方案对比

特性HunyuanOCRPaddleOCRDeepSeek-OCR通用 VLM
参数量1B-3B2B-235B
端到端
多语言支持100+有限有限广泛
文档解析优秀良好良好一般
信息提取优秀一般一般良好
视频字幕优秀一般一般
图片翻译优秀一般-良好

写在最后

HunyuanOCR 是腾讯混元团队在 OCR 领域的一次重要突破。它用仅 1B 的参数量,在多个任务上超越了参数量大得多的模型,充分体现了”小而精”的设计理念。

主要优点

  • 🎯 参数高效:1B 参数实现 SOTA 性能,部署成本低
  • 🚀 端到端:单次推理完成任务,效率高
  • 🌏 多语言:支持 100+ 种语言,覆盖面广
  • 📑 功能全面:文本识别、文档解析、信息提取、翻译一应俱全
  • ⚡ 性能强劲:在多个基准测试中领先

需要注意的地方

  • 💾 显存要求高:需要 80GB 显存,普通消费级显卡难以运行
  • 🐧 仅支持 Linux:目前只支持 Linux 系统

如果你有合适的硬件条件,HunyuanOCR 绝对是目前最值得尝试的开源 OCR 模型之一。

参考资源

分享文章

更多文章