# GLM-OCR

## 论文
`
GLM-OCR Technical Report
`
- https://arxiv.org/abs/2603.10910

## 模型简介
GLM-OCR 是一个基于 GLM-V 编码器-解码器架构的多模态 OCR 模型，专为复杂文档理解而设计。它引入了多令牌预测（Multi-Token Prediction, MTP）损失和稳定的全任务强化学习，以提升训练效率、识别准确率和泛化能力。该模型集成了在大规模图文数据上预训练的 CogViT 视觉编码器、具备高效令牌下采样的轻量级跨模态连接器，以及 GLM-0.5B 语言解码器。结合基于 PP-DocLayout-V3 的两阶段流程（布局分析与并行识别），GLM-OCR 在各种文档布局下均能提供稳健且高质量的 OCR 性能。

- 核心特性
    - 顶尖性能：在 OmniDocBench V1.5 上取得 94.62 分，综合排名第一，并在公式识别、表格识别和信息抽取等主流文档理解基准测试中均达到当前最优水平。
    - 面向真实场景优化：专为实际业务场景设计和优化，在复杂表格、含大量代码的文档、印章以及其他具有挑战性的真实世界布局上保持稳健表现。
    - 高效推理：仅含 0.9B 参数，支持通过 vLLM、SGLang 和 Ollama 部署，显著降低推理延迟和计算成本，非常适合高并发服务和边缘部署。
    - 易于使用：完全开源，并配备完整的 SDK 和推理工具链，安装简单、一行代码即可调用，并可无缝集成到现有生产流程中。。

<div align=center>
    <img src="./asserts/model.png"/>
</div>

## 环境依赖
- 列举基础环境需求，根据实际情况填写

| 软件 | 版本 |
| :------: | :------: |
| DTK | dtk26.04 |
| python |3.10 |
| transformers | 5.3.0 |
| torch | 2.9.0+das.opt1.dtk2604.20260206.g275d08c2 |
| vllm | 0.15.1+das.opt1.alpha.dtk2604-cp310-cp310-linux_x86_64 |

当前支持以下镜像: harbor.sourcefind.cn:5443/dcu/admin/base/custom:vllm0.15.1-ubuntu22.04-dtk26.04-0130-py3.10-20260220

挂载地址-v 根据实际模型情况修改
```bash
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
```
更多镜像可前往[光源](https://sourcefind.cn/#/service-list)下载使用。

关于本项目DCU显卡所需的特殊深度学习库可从[光合](https://developer.sourcefind.cn/tool/)开发者社区下载安装

需要单独安装:
```
cd /path/your_code_data
pip install vllm-0.15.1+das.opt1.alpha.dtk2604-cp310-cp310-linux_x86_64.whl
pip install -r requirements.txt
```
## 数据集
暂无

## 训练
暂无

## 推理
### vllm
#### 单机单卡推理

vllm推理脚本
```
cd /path/your_code_data

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

# 或者 直接运行脚本
cd /path/your_code_data
bash vllm_inf.sh
```
vllm服务测试脚本
```
cd /path/your_code_data

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"}}
        ]
      }
    ]
  }'


# 或者shell脚本启动
cd /path/your_code_data
bash vllm_test.sh
```

## 效果展示
<div align=center>
    <img src="./asserts/result-dcu.png"/>
</div>

### 精度
DCU与GPU精度一致，推理框架：vllm。

## 预训练权重
|  模型名称  | 权重大小 | DCU型号  | 最低卡数需求 |         下载地址          |
|:------:|:----:|:----------:|:------:|:---------------------:|
| glm-cor | 1.33B | BW1000 |   1  | [Hugging Face](https://huggingface.co/moonshotai/Kimi-K2.5) |

## 源码仓库及问题反馈
- https://developer.sourcefind.cn/codes/modelzoo/glm-ocr_vllm

## 参考资料
- https://github.com/zai-org/GLM-OCR/tree/main
- https://www.modelscope.cn/models/ZhipuAI/GLM-OCR


