文档智能专题:HunyuanOCR-1.5用DFlash把整页解码压到1.4秒

(1)《三年面试五年模拟》AIGC / LLM / AI Agent 算法工程师与开发工程师求职面试秘籍,独家资源见 WeThinkIn/AIGC-Interview-Book,欢迎 Star!

(2)AIGC / LLM / AI Agent 算法岗与开发岗求职面试内推学习社群 ,涵盖 AIGC、LLM 大模型、AI Agent、传统深度学习、自动驾驶、机器学习、计算机视觉、自然语言处理、强化学习、大数据挖掘、具身智能、元宇宙、AGI 等方向的最新面试干货与核心知识,欢迎加入(https://t.zsxq.com/33pJ0)!


论文标题:HunyuanOCR-1.5: Making Lightweight OCR VLMs Faster and Better

论文作者:中国科学院信息工程研究所、腾讯混元、南开大学

发表时间:2026年7月6日


目录

本文要点

(1)HunyuanOCR-1.5是中科院信工所、腾讯混元和南开2026年7月发布的1B端到端OCR模型,现行论文为9月17日的v3。

(2)vLLM单请求整页平均延迟从3.032秒降到1.408 秒,加速比2.14× ,对照组里最快。

(3)骨架沿用1.0,分辨率提到4K、上下文提到128K,解码加速靠约90.7M参数的DFlash块扩散草稿。

(4)OmniDocBench v1.6端到端组94.74,总榜已被PaddleOCR-VL-1.6和后来的OvisOCR2超过。CHAOS-Bench页均召回14.15,绝对值仍低。

(5)文末附官方模型卡的Transformers、vLLM、DFlash服务和llama.cpp命令。


中科院信工所、腾讯混元和南开大学在2026年7月6日放出HunyuanOCR-1.5的技术报告。我把报告、GitHub README和Hugging Face模型卡对了一遍,现行版本是9月17日的v3。

端到端OCR慢在解码。密文档、表格、公式要吐很长一段结构化文本。报告没重做骨干,输入抬到4K和128K,解码靠DFlash。vLLM单请求从3.032秒降到1.408 秒,吞吐从466.9 token/s升到1002.3 token/s,加速比2.14×。Transformers朴素对照是6.37×,线上更该看vLLM。

一、Hunyuan-ViT升到4K与128K上下文

HunyuanOCR-1.0已经验证过这条轻量端到端路线,1.5沿用同一套三件套。最底下是原生分辨率视觉编码器Hunyuan-ViT,中间是自适应MLP连接器,上面是带XD-RoPE的Hunyuan-0.5B语言模型。评测表里整模按1B计。

1.5在骨干上几乎只动了一处。视觉输入上限从2K提到4K ,上下文窗口提到128K。高分辨率用来保住密排文档、超大表和复杂图的细节,长窗口用来接多页、多图和长结构化输出。

连接器把高分辨率特征压成更短的视觉token,输出直接是Markdown、HTML表格或LaTeX公式,没有任务专用后处理。宽高比按原图走。XD-RoPE按文本、高、宽、时间四个维度编位置,多图和视频字幕靠这一项接进同一套语言器。

二、DFlash用块扩散一次起草16个token

端到端OCR的延迟,大头在自回归解码。投机解码让小草稿模型先猜一段候选,目标模型一次核对,接受最长合法前缀,输出分布不变。

很多投机方法的草稿仍是逐token写的,候选越长草稿越贵。DFlash换成块扩散,一次前向吐出整块B=16,目标模型并行验证。

训练时目标模型冻结,只优化草稿。每条序列先跑一遍目标模型缓存隐状态,再随机抽K=16个锚点,K块拼在一次前向里训,注意力用FlexAttention的块对角掩码。

每个block只看见锚点 a j a_j aj之前的目标隐状态和自己块内的mask token,块与块之间切断,所以K个起草任务可以并行。草稿大约90.7M 参数,5层Transformer,从目标模型最后5层解码器初始化。损失是带位置权重的下一词交叉熵,锚点本身不计入, γ = 7.0 \gamma=7.0 γ=7.0,远处token权重更低。

单请求或低并发时,目标模型的自回归往往卡在显存带宽上,算力有一截闲着。DFlash拿这截闲算力一次写出16个草稿token,目标模型一次核对就能往前走好几个位置。HTML表格、公式、结构化Markdown局部规律强,接受前缀往往更长。

三、vLLM上整页1.408秒,表格页加速最大

速度测在OmniDocBench上,batch size为1。vLLM数字按930条样本的SOTA速度对照来报。双阶段系统报的是整页流水线延迟,含版面分析、区域识别和结果合并。各家分词器和输出格式不同,跨模型token/s不好比,主要看页延迟和页吞吐。

系统 路线 解码 平均延迟(秒/页) 页/秒 相对Hunyuan AR
dots.ocr 端到端 自回归 7.154 0.136 0.41×
DeepSeek-OCR 2 端到端 自回归 5.460 0.179 0.54×
Unlimited-OCR 端到端 自回归 3.659 0.255 0.77×
HunyuanOCR-1.5 端到端 自回归 3.032 0.330 1.00×
PaddleOCR-VL-1.6 双阶段 级联 1.744 0.562 1.71×
GLM-OCR 双阶段 级联 1.649 0.604 1.83×
HunyuanOCR-1.5 端到端 DFlash 1.408 0.706 2.14×

没开DFlash时,1.5的vLLM自回归比PaddleOCR-VL-1.6的1.744秒和GLM-OCR的1.649秒都慢。打开之后才反超,大约比GLM-OCR快1.17倍,比PaddleOCR-VL-1.6快1.24倍,比dots.ocr快5.08倍。端到端要在延迟上追上流水线,靠的就是这一步。

Transformers从34.850秒降到5.474秒,加速比6.37×,有效接受长度8.89。vLLM有效接受长度8.36,一次写16个位置,实际接受大约八到九个。

输出越长加速比越高。vLLM上0到256 token只有1.31×,2048以上到2.30×。短输出的时间多半耗在预填充和固定开销上,投机解码摊不平。

按OmniDocBench版面标注分成文本、公式、表格三类,表格页加速最大。vLLM上表格页2.39×、有效接受长度10.45,公式页2.06×,文本页1.81×。Transformers上表格页到7.81×。HTML表标签规律太强,草稿更容易猜中下一截。

并发从1到32,加速比一直高于1.8×,并发4时到2.26×,并发32仍有1.80×。GPU打满后闲算力变少,草稿那次并行前向就不那么划算。

四、OmniDocBench端到端94.74,总榜已经不是第一

文档解析看OmniDocBench v1.6。HunyuanOCR-1.5总分94.74,在报告自己的端到端专家组里最高,1.0是92.03,Unlimited-OCR是93.92。

模型 参数 Overall↑ 文本Edit↓ 公式CDM↑ 表格TEDS↑ 顺序Edit↓
HunyuanOCR 1B 92.03 0.048 88.60 92.37 0.138
Unlimited-OCR 3B-A0.5B 93.92 0.042 95.79 90.16 0.129
HunyuanOCR-1.5 1B 94.74 0.039 94.50 93.67 0.129

公式CDM 94.50,没过Unlimited-OCR的95.79。报告说自家倾向用begin/end一次写完多行公式,现行匹配会先拆成单行,端到端输出可能被低估。这个口径争议写在正文里,没有另开附录辩解。

后来的OvisOCR2报告里,PaddleOCR-VL-1.6是96.33,OvisOCR2是96.58。Hunyuan赢的是端到端组和速度,解析分不是全场第一。报告摘要写的是top-tier end-to-end,不宜写成OmniDocBench总冠军。

古文Chronicles-OCR古文字0.54、成熟书体0.79。MORE总分91.90,对照表里最高,表格子项80.77仍低于GLM-OCR的82.48。ChartArena英文平均48.9、中文64.1。TableVerse-5K的TEDS 79.37、TEDS-S 86.05,专家OCR里最高,结构分仍低于Gemini 2.5 Pro的87.13。

DUDE验证集54.64,没超过Qwen3.5-0.8B的56.41。Spotting内部榜71.40,无文字负样本从78.1%到99.8%,艺术字从56.76掉到53.21,屏幕和视频也略降。卡片92.40、票据92.55、字幕93.07,OCRBench 861,相对1.0只多1分。

CHAOS-Bench把渲染页上两三个词改成无意义形近词,看模型会按看见的写,还是按语言习惯改回词典词。页均召回14.15,对照里最高,DeepSeek-OCR 2和MinerU2.5-Pro只有6.33。绝对值仍低。

数据侧叫Agentic Data Flow。算法工程师用自然语言点出短板,智能体去搜语料和字体、调1.0和Qwen3.5做质检、写渲染脚本。低资源OCR覆盖331种语言,古文对汉字七种历史形态做合成。预训练只重做Stage3,把这些数据和1.0的历史OCR数据混在一起。合成细节放到MinerU和PaddleOCR那两篇。

后训练把难题留给RL,算法换成IcePop,按token校准训练引擎和推理引擎的概率比,落在0.2, 5.0之外的token不更新。SFT检查点OmniDocBench 92.92,RL之后94.74,这一段贡献了1.82分。

五、本地部署与推理实践

权重在Hugging Face的tencent/HunyuanOCR,根目录是1.5,DFlash草稿在dflash/,1.0归档在v1.0/。协议是腾讯混元社区许可,和1.0相同,不是Apache,商用前要自己读LICENSE。

官方统一环境要求CUDA 13,同一套安装覆盖vLLM自回归、DFlash和原生Transformers。缺CUDA 13时,仓库docs/inference/inference.md指向更轻的分配置安装。

bash 复制代码
pip install uv
uv venv --python 3.12.11 && source .venv/bin/activate
uv pip install "vllm>=0.25.1"
uv pip install --no-build-isolation --no-cache-dir "flash-attn==2.8.3"

pip install -U "huggingface_hub[cli]"
huggingface-cli download tencent/HunyuanOCR --local-dir ./HunyuanOCR --exclude "v1.0/*"
git clone https://github.com/Tencent-Hunyuan/HunyuanOCR.git
cd HunyuanOCR

三种配置共用同一套权重、任务提示和采样。模型卡锁定temperature=0.0、top_p=1.0、top_k=-1、repetition_penalty=1.08。文档解析要确定性输出,温度给0说得通,1.08用来压长输出里的循环重复。

Transformers要求transformers>=5.13.0,类名HunYuanVLForConditionalGeneration。模型卡最小示例如下。

python 复制代码
import torch
from transformers import AutoProcessor, HunYuanVLForConditionalGeneration

MODEL_ID = "tencent/HunyuanOCR"
processor = AutoProcessor.from_pretrained(MODEL_ID, trust_remote_code=True, use_fast=False)
model = HunYuanVLForConditionalGeneration.from_pretrained(
    MODEL_ID, torch_dtype=torch.bfloat16, device_map="auto",
    trust_remote_code=True,
).eval()

prompt = (
    "提取文档图片中正文的所有信息用markdown格式表示,其中页眉、页脚部分忽略,"
    "表格用html格式表达,文档中公式用latex格式表示,按照阅读顺序组织进行解析。"
)
messages = [{
    "role": "user",
    "content": [
        {"type": "image", "image": "/path/to/document.png"},
        {"type": "text",  "text":  prompt},
    ],
}]
inputs = processor.apply_chat_template(
    messages, add_generation_prompt=True, tokenize=True,
    return_dict=True, return_tensors="pt",
).to(model.device)
with torch.inference_mode():
    out = model.generate(**inputs, max_new_tokens=8000, do_sample=False)
gen = out[:, inputs["input_ids"].shape[1]:]
print(processor.batch_decode(gen, skip_special_tokens=True)[0])

最小示例max_new_tokens=8000。仓库脚本上限32768,服务端--max-model-len 131072。

vLLM自回归和DFlash共用客户端。

bash 复制代码
MODEL_PATH=./HunyuanOCR GPU=0 PORT=8000 bash inference/vLLM/serve.sh
# DFlash草稿已在 ./HunyuanOCR/dflash ,默认不用再拷
MODEL_PATH=./HunyuanOCR GPU=0 PORT=8000 bash inference/DFlash/serve_DFlash.sh

python inference/vLLM/infer_vllm_client.py \
    --host 127.0.0.1 --port 8000 \
    --model tencent/HunyuanOCR \
    --image /path/to/document.png \
    --task-type doc_parse \
    --max-tokens 32768

--task-type锁官方任务,--list-tasks可看全表,常见的有doc_parse、spotting_json、chart_parse、doc_trans_en2zh。流式客户端带尾部重复提前停止和文档解析Markdown规范化。

PC端走llama.cpp。社区版能跑基座,DFlash要用wendadawen/llama.cpp的dflash-adapt-hunyuanocr-hunyuanstyle。

bash 复制代码
git clone https://github.com/ggml-org/llama.cpp.git && cd llama.cpp
cmake -B build -DLLAMA_BUILD_EXAMPLES=ON
cmake --build ./build --config Release -j

hf download tencent/HunyuanOCR --local-dir ./HunyuanOCR --exclude "v1.0/*"
python3 convert_hf_to_gguf.py --outfile ./HunyuanOCR/hyocr-f16.gguf --outtype f16 ./HunyuanOCR
python3 convert_hf_to_gguf.py --outfile ./HunyuanOCR/mmproj-hyocr-f16.gguf --outtype f16 --mmproj ./HunyuanOCR

build/bin/llama-server \
  --model ./HunyuanOCR/hyocr-f16.gguf \
  --mmproj ./HunyuanOCR/mmproj-hyocr-f16.gguf \
  --host 0.0.0.0 --port 8080 --alias HYVL \
  --ctx-size 10240 --n-predict 4096

这里--ctx-size 10240、--n-predict 4096,和论文宣传的128K不是一档。端侧示例按这个窗口来,不要默认笔记本上也能喂满长文档。DFlash版和完整说明在仓库docs/llama_cpp.md。

六、总结与思考

HunyuanOCR-1.5把端到端OCR的部署问题拆成两半。一半是让已有小模型在长结构化输出上少走自回归步,DFlash吃的是表格、公式、HTML这种局部可预测的输出。另一半是把输入规格抬到4K和128K。

速度数字里,我更信vLLM的2.14×,不把Transformers的6.37×当成线上口径。没开DFlash时它比Paddle和GLM慢,打开之后才是对照里最快的端到端系统。投机解码靠闲算力,并发打满加速比会掉。

短板也清楚。OmniDocBench总榜已被流水线和后来的OvisOCR2拿走。CHAOS-Bench召回14.15,多数冲突仍听语言模型。多图问答没超过同尺寸通用VLM。协议也不是Apache。llama.cpp公开示例只有10240上下文,部署按脚本窗口来。


参考链接

相关推荐
薛定谔的猫-菜鸟程序员16 小时前
从 SEO 到 GEO:生成式引擎优化的原理、证据与骗局
人工智能·seo·geo
sunshine22 girl16 小时前
copilot vscode 使用技巧
人工智能·vscode·编辑器
雨后的天空16 小时前
周末花两天手撸了一个车牌识别,CCPD 上 99%,换张手机照片就翻车了 🚗
人工智能
蒲公英eric16 小时前
元胞自动机:从森林火灾到交通流
人工智能·数学建模·元胞自动机·数学建模模型
AI的探索之旅16 小时前
OpenCV Day39 —— 无缝克隆 seamless cloning(cloning_demo / cloning_gui)
人工智能·opencv
滼16 小时前
AI 数据安全面试应答框架:从大框架到小点
大数据·人工智能·安全·面试·安全架构
科技云报道16 小时前
科技云报到:AI没有杀死软件,只是重写了它的“收银台“
人工智能·科技
武子康16 小时前
同一台 ESP32,GSM 能消回声,VoIP 为什么不行?
人工智能·后端·agent
微尘hjx16 小时前
【数据集 11】面向城市道路的坑洞检测数据集(含8760张,已按比例划分训练、验证、测试集,支持YOLO全系列训练)
人工智能·yolo·目标检测·数据集·道路坑洞·路坑数据集·路坑