乐于分享
好东西不私藏

复杂文档识别不用愁:GLM-OCR在海光DCU上的部署实战

复杂文档识别不用愁:GLM-OCR在海光DCU上的部署实战

日常工作中,我们经常需要从扫描件、拍照文档、复杂表格中提取文字信息。传统 OCR 工具遇到手写体、印章、多语言混排、代码片段等复杂场景时,识别效果往往不尽如人意。

GLM-OCR 是智谱推出的一款轻量化多模态 OCR 模型,参数量仅 0.9B,却在多项文档理解基准测试中取得了优异成绩。本文将介绍如何在海光 DCU 环境下完成 GLM-OCR 的部署,用 vLLM 搭建高性能推理服务,轻松应对各类复杂文档识别需求。

PART 01

🔍 模型亮点

GLM-OCR 基于 GLM-V 编码器-解码器架构构建,融合了 CogViT 视觉编码器和 GLM-0.5B 语言解码器,采用两阶段处理流程:先做版面分析,再并行识别。

它有几个值得关注的特点:

轻量高效:总参数量仅 0.9B,权重文件 1.33GB(BF16),单卡即可运行,推理延迟低、算力成本小
场景覆盖广:针对手写体、复杂表格、代码文档、印章识别、多语言混排等真实场景做了专项优化
性能出色:在 OmniDocBench V1.5 上取得 94.62 分,在公式识别、表格识别、信息抽取等主流基准上表现优异
部署灵活:支持 vLLM、SGLang、Ollama 等多种推理框架,可适配从服务端到边缘设备的不同场景
项目
详情
模型架构
GLM-V 编码器-解码器
总参数量
0.9B
权重大小
1.33B (BF16)
视觉编码器
CogViT
语言解码器
GLM-0.5B
版面分析
PP-DocLayout-V3
适配加速卡
海光 DCU
推理框架
vLLM 0.15.1

PART 02

🛠️ 环境准备

软件依赖

软件
版本
DTK
26.04
Python
3.10
Transformers
5.3.0
Torch
2.9.0 (dtk2604)
vLLM
0.15.1 (das.opt1.alpha)
Numpy
1.25.0
ModelScope
≥1.18.1

启动 Docker 容器

推荐使用官方预构建镜像,已集成 vLLM 0.15.1 和 DTK 26.04 环境:

harbor.sourcefind.cn:5443/dcu/admin/base/custom:vllm0.15.1-ubuntu22.04-dtk26.04-0130-py3.10-20260220

启动命令如下,-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 下载:

模型
大小
精度
最低卡数
下载地址
GLM-OCR
1.33B
BF16
1 卡
ModelScope ZhipuAI/GLM-OCR

也可以配置 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 语言解码器生成识别文本。

这种"先分析后识别"的流水线设计,让模型能够针对不同版面区域采用不同的识别策略,在复杂文档上也能保持稳定的识别质量。

模块化组件一览:

组件
功能
PageLoader
图像预处理与编码
PPDocLayoutDetector
版面分析与区域检测
OCRClient
调用 GLM-OCR 模型推理
ResultFormatter
后处理,输出 JSON/Markdown

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 技术分享