
日常工作中,我们经常需要从扫描件、拍照文档、复杂表格中提取文字信息。传统 OCR 工具遇到手写体、印章、多语言混排、代码片段等复杂场景时,识别效果往往不尽如人意。
GLM-OCR 是智谱推出的一款轻量化多模态 OCR 模型,参数量仅 0.9B,却在多项文档理解基准测试中取得了优异成绩。本文将介绍如何在海光 DCU 环境下完成 GLM-OCR 的部署,用 vLLM 搭建高性能推理服务,轻松应对各类复杂文档识别需求。
PART 01
🔍 模型亮点
GLM-OCR 基于 GLM-V 编码器-解码器架构构建,融合了 CogViT 视觉编码器和 GLM-0.5B 语言解码器,采用两阶段处理流程:先做版面分析,再并行识别。
它有几个值得关注的特点:
PART 02
🛠️ 环境准备
软件依赖
启动 Docker 容器
推荐使用官方预构建镜像,已集成 vLLM 0.15.1 和 DTK 26.04 环境:
启动命令如下,-v 挂载地址请根据实际模型存放路径修改:
docker run -it \
--shm-size 200g \
--network=host \
--name GLM-OCR \
--privileged \
--device=/dev/kfd \
--device=/dev/dri \
--device=/dev/mkfd \
--group-add video \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
-u root \
-v /opt/hyhal/:/opt/hyhal/:ro \
-v /path/your_code_data/:/path/your_code_data/ \
harbor.sourcefind.cn:5443/dcu/admin/base/custom:vllm0.15.1-ubuntu22.04-dtk26.04-0130-py3.10-20260220 bash
更多可用镜像可前往光源社区(sourcefind.cn)下载。DCU 显卡所需的特殊深度学习库可从光合开发者社区(developer.sourcefind.cn/tool/)获取。
安装依赖
进入容器后,需要卸载预装的 vLLM 并安装项目提供的 DCU 适配版本:
git clone http://developer.sourcefind.cn/codes/modelzoo/glm-ocr_vllm.git
cd GLM-OCR_vllm
pip uninstall vllm
pip install vllm-0.15.1+das.opt1.alpha.dtk2604-cp310-cp310-linux_x86_64.whl
pip install -r requirements.txt
PART 03
📦 模型下载
GLM-OCR 权重托管在 ModelScope 平台,可直接通过 SDK 下载:
也可以配置 VLLM_USE_MODELSCOPE=true 环境变量,让 vLLM 在启动时自动从 ModelScope 拉取模型。
PART 04
🚀 部署实战
第一步:启动 vLLM 推理服务
进入容器后一条命令即可启动 OpenAI 兼容的推理服务:
export HIP_VISIBLE_DEVICES=0
VLLM_USE_MODELSCOPE=true \
vllm serve ZhipuAI/GLM-OCR/ \
--served-model-name GLM-OCR \
--allowed-local-media-path / \
--port 8080
参数说明:
HIP_VISIBLE_DEVICES:指定使用的 GPU/DCU 编号 --served-model-name:对外暴露的模型名称 --allowed-local-media-path:允许读取本地文件路径(用于传入本地图片) --port:服务监听端口
如果需要处理大图或大 PDF,可以增加 --max-model-len 和 --gpu-memory-utilization 参数来调整上下文长度和显存占用比例。
第二步:测试推理服务
服务启动后,用 curl 发送一个 OpenAI 格式的请求来验证:
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "GLM-OCR",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "这张图片里有什么?"},
{"type": "image_url", "image_url": {"url": "file://./paper.png"}}
]
}
]
}'
请求格式与 OpenAI Chat Completions API 完全一致,支持传入本地文件路径(file://协议)或远程 URL。
第三步:集成到业务流程
GLM-OCR 提供了完整的 SDK,可以通过多种方式调用:
Python API 调用
pip install glmocr
SDK 内置了完整的处理流水线:版面检测 → 区域 OCR → 结果格式化,一行代码即可完成文档识别。
CLI 命令行
SDK 支持命令行直接调用,适合批量处理和脚本集成。
Flask 服务
可以将 GLM-OCR 封装为 HTTP 服务,方便团队共享调用。
SDK Server + Client 模式
在 GPU 机器上部署 SDK Server,其他机器作为 Client 通过网络调用,Client 端无需 GPU。适合多团队共享 GPU 资源的场景。
PART 05
📐 架构解析
GLM-OCR 的两阶段处理流程是其实现高精度识别的关键:
第一阶段:版面分析
基于 PP-DocLayout-V3 对文档图像进行版面检测,识别出文本区域、表格、图片、公式等不同类型的版面元素,输出各区域的位置坐标和类别标签。
第二阶段:并行识别
将检测到的各个区域并行送入 GLM-OCR 模型进行识别。CogViT 视觉编码器提取图像特征,轻量级跨模态连接器进行高效的 token 下采样,GLM-0.5B 语言解码器生成识别文本。
这种"先分析后识别"的流水线设计,让模型能够针对不同版面区域采用不同的识别策略,在复杂文档上也能保持稳定的识别质量。
模块化组件一览:
PART 06
⚡ 性能与精度
GLM-OCR 在 DCU 上的推理精度与 GPU 环境一致,推理框架为 vLLM。
在实际业务场景中,GLM-OCR 对以下类型文档的识别效果尤为突出:
- 复杂表格
:合并单元格、不规则表格结构、多层表头 - 手写体文档
:手写笔记、签名、批注 - 代码密集文档
:技术文档中的代码片段、终端截图 - 印章与水印
:公章、财务章、骑缝章等 - 多语言混排
:中英文混合、数学公式与文本混排 - 扫描件与拍照件
:倾斜、模糊、光照不均的文档图像
0.9B 的参数量意味着更低的推理延迟和更小的显存占用,非常适合高并发在线服务和边缘设备部署。
PART 07
📖 参考资料
源码仓库: developer.sourcefind.cn/codes/modelzoo/glm-ocr_vllm GitHub 项目: github.com/zai-org/GLM-OCR 模型权重: modelscope.cn/models/ZhipuAI/GLM-OCR 技术报告: arxiv.org/abs/2603.10910 API 文档: docs.bigmodel.cn/cn/guide/models/vlm/glm-ocr
如在部署过程中遇到问题,可前往光合开发者社区反馈交流。
THANKS FOR READING
🦐 龙虾 · OpenClaw 技术分享
夜雨聆风