
HunyuanOCR
轻量 OCR 大模型,一张图直接出结构化文字
HunyuanOCR 是腾讯混元团队开源的轻量级 OCR 视觉语言模型系列,当前版本 HunyuanOCR-1.5 主打「更快更好」。它把传统 OCR 流水线(检测、识别、版面分析)统一到一个端到端 VLM 中,用较小的参数量完成文字检测、识别、关键信息抽取和文档理解等任务,解决传统方案模块多、部署重、维护成本高的问题。核心能力包括多语言文字识别、复杂版面(表格、票据、证件)结构化解析,以及基于自然语言指令的定向信息提取。相比通用大模型,它针对 OCR 场景做了轻量化优化,推理速度和精度更平衡,适合在有限算力下批量处理图片文档。项目用 Python 实现,提供模型权重与推理代码,可直接接入现有文档处理流程,也方便二次微调适配垂直场景。
项目数据
使用教程
环境要求
- Linux 环境 + Python 3.12(README 用 uv venv --python 3.12 创建环境)
- NVIDIA GPU,快速开始为单卡(-tp 1、GPU=0)
- 依赖 vllm>=0.25.1 与 flash-attn==2.8.3(需源码编译安装)
- 需提前准备 HunyuanOCR 模型权重目录(示例 MODEL_PATH=./HunyuanOCR)
安装与启动步骤
-
1获取代码仓库
把 HunyuanOCR 仓库克隆到本地并进入目录,后续所有相对路径(如 inference/vLLM)都以仓库根目录为基准。
git clone https://github.com/Tencent-Hunyuan/HunyuanOCR.git cd HunyuanOCR -
2创建 Python 环境
安装 uv 并用它创建 Python 3.12 虚拟环境,创建后必须激活,后续 uv pip 才会装到该环境。
pip install uv uv venv --python 3.12 && source .venv/bin/activate -
3安装推理依赖
依次安装 vLLM 与 flash-attn;flash-attn 需关闭构建隔离并从源码编译,安装耗时较长。
uv pip install "vllm>=0.25.1" uv pip install --no-build-isolation --no-cache-dir "flash-attn==2.8.3" -
4启动 vLLM 服务
用 serve.sh 拉起 OpenAI 兼容服务,模型名 tencent/HunyuanOCR,-tp 1 单卡,最大上下文 131072。
MODEL_PATH=./HunyuanOCR GPU=0 PORT=8000 bash inference/vLLM/serve.sh -
5检查服务就绪
请求 /v1/models 接口,能返回模型列表说明服务已启动成功,可以开始发送图片。
curl -sf http://127.0.0.1:8000/v1/models -
6单张图片推理
用客户端脚本请求刚才启动的服务,--task-type 锁定官方任务类型,例如 doc_parse 文档解析。
python inference/vLLM/infer_vllm_client.py --image /path/to/document.png --task-type doc_parse --model tencent/HunyuanOCR --port 8000 --max-tokens 32768 -
7批量目录推理
对图片目录批量推理,支持多端点并发与断点续跑,--concurrency 控制并发数,结果写入 out-dir。
python inference/vLLM/batch_infer.py --image-dir /path/to/images --out-dir /path/to/output --ports 8000 --task-type doc_parse --max-tokens 32768 --concurrency 16
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
MODEL_PATH | 是 | 本地模型权重目录,传给 serve.sh 决定加载哪个 checkpoint | ./HunyuanOCR |
GPU | 否 | 指定使用的 GPU 编号,单卡示例为 0 | 0 |
PORT | 否 | 服务监听端口,客户端与批量脚本需保持一致 | 8000 |
--task-type | 是 | 锁定官方任务类型,共 12 种,可用 --list-tasks 查看 | doc_parse |
--model | 否 | 请求时传给客户端的模型名,与服务端保持一致 | tencent/HunyuanOCR |
如何确认成功
执行 curl -sf http://127.0.0.1:8000/v1/models,能正常返回模型列表即表示服务启动成功、可接收请求。
常见问题
Q:快速开始需要几张显卡?
A:README 的单卡快速开始用 -tp 1、GPU=0 即可跑通;多 GPU 的部署方式需参考 docs/inference/inference.md。
Q:没有 GPU / 想在笔记本上跑怎么办?
A:可用 llama.cpp 做 PC 端部署,支持 CPU、消费级显卡和笔记本,但需先把 checkpoint 转换成 GGUF 格式。
Q:支持哪些任务类型?
A:共 12 种官方任务类型,通过 --task-type 指定,运行 --list-tasks 可以列出全部可选项。
Q:怎么让推理更快?
A:使用 DFlash 投机解码加速,改用 inference/DFlash 下的 serve_DFlash.sh 启动服务。
Q:不想用 vLLM,可以直接用 transformers 吗?
A:可以,README 提供了 inference/transformers 作为原生 transformers 推理方式。
注意事项
- 采样参数已内置:temperature=0.0、top_p=1.0、top_k=-1、repetition_penalty=1.08,并内置尾部重复早停与结果清理。
- README 未给出模型权重的具体下载步骤,需自行按 MODE_PATH 指向的目录准备好 HunyuanOCR 权重再启动服务。
- flash-attn==2.8.3 必须加 --no-build-isolation --no-cache-dir 安装,否则容易编译失败。
- 旧的 HunyuanOCR-1.0 在 v1.0 分支或 HunyuanOCR_v1.0/README_v1.0.md 中查看,与本教程的 1.5 命令不通用。
核心亮点
- 端到端统一检测、识别与版面理解,省去多模型串联的工程复杂度
- 轻量化设计,参数量小、推理更快,适合算力受限的批量文档处理
- 支持自然语言指令做定向抽取,票据、证件等结构化场景开箱可用
不足之处
- 当前星标约 2000,社区生态和第三方教程相对头部项目仍偏少
- 轻量模型在极端复杂版面或低质量图片上的精度可能不及重型方案
适用场景
- 发票、票据批量录入,自动抽取金额、日期等字段
- 证件、卡证识别,用于实名认证或信息登记流程
- 扫描文档、PDF 转结构化文本,做知识库或档案数字化
替代项目
PaddleOCR、MinerU、GOT-OCR2.0
项目介绍
同类项目推荐
modlens
开源
给纯文本编码代理装上眼睛,粘贴图片即刻获得结构化视觉证据。
The first vision plugin for DeepSeek Harness, and the vision bridge for every text-o···
opencv
开源
开箱即用的视觉算法库,搞定图像视频处理与识别
Open Source Computer Vision Library
OpenCVTutorials
开源
中文 OpenCV 教程,从入门到实战,边看边跑代码
OpenCV-Python4.1 中文文档
DEIMv2
开源
用DINOv3做实时检测,又快又准,直接落地。
[DEIMv2] Real Time Object Detection Meets DINOv3