0.9B 小模型,OCR 大能力——GLM-OCR 模型实战教程

简介: 智谱开源多模态OCR模型GLM-OCR,基于GLM-V架构,融合CogViT视觉编码器与GLM-0.5B语言解码器,支持公式、表格、代码等复杂文档识别,性能达OmniDocBench榜首(94.62分),仅0.9B参数,轻量高效,开箱即用。

日前,智谱开源发布了专为复杂文档理解设计的多模态 OCR 模型 GLM-OCR。该模型基于 GLM-V 编码器 - 解码器架构,集成了在大规模图文数据上预训练的 CogViT 视觉编码器、具有高效令牌下采样机制的轻量级跨模态连接器,以及 GLM-0.5B 语言解码器。为进一步提升性能,GLM-OCR 引入了多令牌预测(MTP)损失函数和稳定的全任务强化学习机制,并结合基于 PP-DocLayout-V3 的“版面分析与并行识别”两阶段流程,显著提高了训练效率、识别准确率和泛化能力,在各种文档布局中均展现出强大且高质量的 OCR 性能。


凭借这些技术优势,GLM-OCR 能够广泛适用于多种实际场景,包括:文档数字化与归档、发票/票据自动识别、合同/报告信息抽取、学术论文公式识别、复杂表格结构化以及代码截图文字提取。


GitHub: https://github.com/zai-org/GLM-OCR

模型链接:https://modelscope.cn/models/ZhipuAI/GLM-OCR


模型核心特性

特性 描述
SOTA 性能 OmniDocBench V1.5 综合排名第一(94.62 分)
轻量高效 仅 0.9B 参数,支持端侧部署
全场景覆盖 公式识别、表格识别、代码文档、印章等
易于集成 提供完整 SDK,一行代码调用
多部署方式 支持 vLLM、SGLang、Ollama、MLX 等


模型架构


模型下载

从 ModelScope 下载

# 安装 ModelScope SDK
pip install modelscope
modelscope download ZhipuAI/GLM-OCR --local_dir ./GLM-OCR

模型推理

使用 ModelScope 推理(兼容Transformers)

from modelscope import AutoModel, AutoTokenizer, AutoProcessor
from PIL import Image
# 加载模型和处理器
model_path = "ZhipuAI/GLM-OCR"  # 或本地路径
model = AutoModel.from_pretrained(
    model_path,
    trust_remote_code=True,
    torch_dtype="auto",
    device_map="auto"
)
processor = AutoProcessor.from_pretrained(model_path, trust_remote_code=True)
# 加载图像
image = Image.open("document.png")
# 构建输入
prompt = "Recognize the text in the image and output in Markdown format."
messages = [
    {
        "role": "user",
        "content": [
            {"type": "image", "image": image},
            {"type": "text", "text": prompt}
        ]
    }
]
# 处理输入
inputs = processor(
    messages,
    return_tensors="pt",
    padding=True
).to(model.device)
# 生成输出
outputs = model.generate(
    **inputs,
    max_new_tokens=4096,
    temperature=0.8,
    top_p=0.9,
    do_sample=True
)
# 解码结果
result = processor.batch_decode(outputs, skip_special_tokens=True)[0]
print(result)


使用 GLM-OCR SDK 推理

便捷函数调用

from glmocr import parse
# 解析单张图片
result = parse("document.png")
# 查看结果
print(result.markdown_result)  # Markdown 格式
print(result.json_result)      # JSON 结构化格式
# 保存结果
result.save(output_dir="./output")


类接口调用

from glmocr import GlmOcr
# 使用上下文管理器
with GlmOcr() as parser:
    # 单张图片
    result = parser.parse("document.png")
    # 多页文档(作为同一文档的多页处理)
    results = parser.parse(["page1.png", "page2.png", "page3.png"])
    # URL 输入
    result = parser.parse("https://example.com/document.png")
    # 获取结果
    print(result.json_result)
    print(result.markdown_result)
    print(result.to_dict())
    # 保存结果
    result.save(output_dir="./results")


CLI 命令行使用

# 解析单张图片
glmocr parse document.png
# 解析整个目录
glmocr parse ./documents/
# 指定输出目录
glmocr parse document.png --output ./results/
# 使用自定义配置
glmocr parse document.png --config my_config.yaml
# 开启调试日志
glmocr parse document.png --log-level DEBUG

输出格式说明

JSON 格式

[
  [
    {
      "index": 0,
      "label": "doc_title",
      "content": "Annual Financial Report 2024",
      "bbox_2d": [100, 50, 900, 120]
    },
    {
      "index": 1,
      "label": "text",
      "content": "This report presents the financial performance...",
      "bbox_2d": [100, 140, 900, 400]
    },
    {
      "index": 2,
      "label": "table",
      "content": "| Item | Q1 | Q2 |\n|------|-----|-----|\n| Revenue | $1M | $1.2M |",
      "bbox_2d": [100, 420, 900, 600]
    }
  ]
]


Markdown 格式

# Annual Financial Report 2024
This report presents the financial performance...
| Item | Q1 | Q2 |
|------|-----|-----|
| Revenue | $1M | $1.2M |

高级配置

编辑 glmocr/config.yaml 进行自定义配置:

pipeline:
  # 页面加载器配置
  page_loader:
    max_tokens: 4096        # 最大生成 token 数
    temperature: 0.8        # 采样温度
    top_p: 0.9             # Top-p 采样
    image_format: JPEG      # 图像格式
    min_pixels: 12544       # 最小像素数
    max_pixels: 71372800    # 最大像素数
  # 版面检测配置(可选)
  enable_layout: true       # 启用版面检测
  layout:
    model_dir: PaddlePaddle/PP-DocLayoutV3_safetensors
    threshold: 0.3          # 检测阈值
  # 结果格式化
  result_formatter:
    output_format: both     # json, markdown, 或 both

模型部署

部署方式概览

部署方式 适用场景 性能 易用性
MaaS 云服务 快速测试、无 GPU 依赖网络 ⭐⭐⭐⭐⭐
vLLM 生产环境、高并发 ⭐⭐⭐⭐⭐ ⭐⭐⭐
SGLang 生产环境、低延迟 ⭐⭐⭐⭐⭐ ⭐⭐⭐
Ollama 本地测试、CPU 推理 ⭐⭐⭐ ⭐⭐⭐⭐⭐
MLX Apple Silicon Mac ⭐⭐⭐⭐ ⭐⭐⭐

Ollama 部署

Ollama 是最简单的本地部署方式,适合快速测试和 CPU 推理场景。

  • 安装 Ollama
# macOS / Linux
curl -fsSL https://ollama.ai/install.sh | sh
# Windows
# 从 https://ollama.ai/download 下载安装程序
# 验证安装
ollama --version
  • 拉取模型并启动服务
# 启动服务(默认端口 11434)
ollama run glm-ocr Text Recognition: ./image.png


vLLM 部署

  • 安装 vLLM
# 使用 pip 安装
uv pip install -U vllm --torch-backend=auto --extra-index-url https://wheels.vllm.ai/nightly
# 或使用 Docker
docker pull vllm/vllm-openai:nightly
  • 安装最新 Transformers
# vLLM 需要最新版 transformers
uv pip install git+https://github.com/huggingface/transformers.git
  • 启动 vLLM 服务
# 基础启动
VLLM_USE_MODELSCOPE=true vllm serve zai-org/GLM-OCR \
  --allowed-local-media-path / \
  --port 8080 \
  --served-model-name glm-ocr
# 启用 MTP 加速(推荐)
VLLM_USE_MODELSCOPE=true vllm serve zai-org/GLM-OCR \
  --allowed-local-media-path / \
  --port 8080 \
  --speculative-config '{"method": "mtp", "num_speculative_tokens": 1}' \
  --served-model-name glm-ocr
  • Docker 部署
docker run --gpus all \
  -v /path/to/images:/data \
  -p 8080:8080 \
  vllm/vllm-openai:nightly \
  --model zai-org/GLM-OCR \
  --allowed-local-media-path /data \
  --served-model-name glm-ocr
  • 配置 SDK
pipeline:
  maas:
    enabled: false
  ocr_api:
    api_host: localhost
    api_port: 8080
    api_path: /v1/chat/completions    # OpenAI 兼容端点
    model: glm-ocr                     # 匹配 --served-model-name
    api_mode: openai
  • 性能调优参数
VLLM_USE_MODELSCOPE=true vllm serve zai-org/GLM-OCR \
  --allowed-local-media-path / \
  --port 8080 \
  --served-model-name glm-ocr \
  --speculative-config '{"method": "mtp", "num_speculative_tokens": 1}' \
  --max-model-len 8192 \              # 最大序列长度
  --gpu-memory-utilization 0.9 \      # GPU 内存利用率
  --max-num-seqs 16 \                 # 最大并发序列数
  --tensor-parallel-size 1            # 张量并行(多 GPU)

SGLang 部署

  • 安装 SGLang
# 使用 Docker
docker pull lmsysorg/sglang:dev
# 或从源码安装
uv pip install git+https://github.com/sgl-project/sglang.git
#subdirectory
=python


  • 启动 SGLang 服务
# 安装 transformers
uv pip install git+https://github.com/huggingface/transformers.git
# 基础启动
SGLANG_USE_MODELSCOPE=true python -m sglang.launch_server \
  --model zai-org/GLM-OCR \
  --port 8080 \
  --served-model-name glm-ocr
# 启用 MTP 加速(推荐)
SGLANG_USE_MODELSCOPE=true python -m sglang.launch_server \
  --model zai-org/GLM-OCR \
  --port 8080 \
  --speculative-algorithm NEXTN \
  --speculative-num-steps 3 \
  --speculative-eagle-topk 1 \
  --speculative-num-draft-tokens 4 \
  --served-model-name glm-ocr


  • 配置 SDK

配置与 vLLM 相同(都使用 OpenAI 兼容接口):

pipeline:
  maas:
    enabled: false
  ocr_api:
    api_host: localhost
    api_port: 8080
    api_path: /v1/chat/completions
    model: glm-ocr
    api_mode: openai

MLX 部署(Apple Silicon)

MLX 是 Apple 专为 Apple Silicon 优化的机器学习框架

  • 环境要求
  • Apple Silicon Mac(M1/M2/M3 系列)
  • macOS 14.0 (Sonoma) 或更高版本
  • Python 3.10+


  • 设置双环境

由于依赖版本冲突,需要两个独立的 Python 环境

# 环境 1: mlx-vlm 服务器
conda create -n mlx-env python=3.12 -y
conda activate mlx-env
pip install git+https://github.com/Blaizzy/mlx-vlm.git
# 环境 2: GLM-OCR SDK
conda create -n sdk-env python=3.12 -y
conda activate sdk-env
cd glm-ocr
pip install -e .
pip install git+https://github.com/huggingface/transformers.git


  • 启动 mlx-vlm 服务
# 终端 1
conda activate mlx-env
mlx_vlm.server --trust-remote-code
# 服务运行在 http://localhost:8080


  • 配置 SDK
pipeline:
  maas:
    enabled: false
  ocr_api:
    api_host: localhost
    api_port: 8080
    model: mlx-community/GLM-OCR-bf16  # MLX 模型
    api_path: /chat/completions        # 注意:没有 /v1 前缀
    verify_ssl: false


  • 运行 SDK
# 终端 2
conda activate sdk-env
glmocr parse document.png


Flask Web 服务部署

GLM-OCR SDK 内置了 Flask Web 服务,便于集成到现有系统。

# 启动服务
python -m glmocr.server
# 指定端口和日志级别
python -m glmocr.server --port 5002 --log-level DEBUG


API 调用示例:

curl -X POST http://localhost:5002/glmocr/parse \
  -H "Content-Type: application/json" \
  -d '{"images": ["./document.png"]}'


模型微调

ms-swift支持了对GLM-OCR进行微调,训练和推理脚本参考:https://github.com/modelscope/ms-swift/tree/main/examples/train/multimodal

在开始微调之前,请确保您的环境已准备妥当。

# pip install git+https://github.com/modelscope/ms-swift.git
git clone https://github.com/modelscope/ms-swift.git
cd ms-swift
pip install -e .
pip install "transformers==5.1.0"


如果您需要自定义数据集微调模型,你可以将数据准备成以下格式,并在命令行中设置--dataset train.jsonl --val_dataset val.jsonl,验证集为可选。

{"messages": [{"role": "user", "content": "<image>Text Recognition:"}, {"role": "assistant", "content": "..."}], "images": ["/xxx/x.jpg"]}
{"messages": [{"role": "user", "content": "<image>Formula Recognition:"}, {"role": "assistant", "content": "xxx"}], "images": ["/xxx/x.jpg"]}
{"messages": [{"role": "user", "content": "<image>Table Recognition:"}, {"role": "assistant", "content": "xxx"}], "images": ["/xxx/x.jpg"]}


示例微调脚本如下,显存占用为4GiB:

CUDA_VISIBLE_DEVICES=0 \
swift sft \
    --model ZhipuAI/GLM-OCR \
    --dataset 'AI-ModelScope/LaTeX_OCR:human_handwrite
#20000
' \
    --load_from_cache_file true \
    --split_dataset_ratio 0.01 \
    --tuner_type lora \
    --torch_dtype bfloat16 \
    --num_train_epochs 1 \
    --per_device_train_batch_size 1 \
    --per_device_eval_batch_size 1 \
    --learning_rate 1e-4 \
    --lora_rank 8 \
    --lora_alpha 32 \
    --target_modules all-linear \
    --freeze_vit true \
    --freeze_aligner true \
    --gradient_accumulation_steps 16 \
    --eval_steps 50 \
    --save_steps 50 \
    --save_total_limit 2 \
    --logging_steps 5 \
    --max_length 4096 \
    --output_dir output \
    --warmup_ratio 0.05 \
    --dataset_num_proc 4 \
    --dataloader_num_workers 4


训练完成后,使用以下命令对验证集进行推理:

swift infer \
    --adapters output/vx-xxx/checkpoint-xxx \
    --stream true \
    --load_data_args true \
    --max_new_tokens 2048


推送模型到ModelScope:

swift export \
    --adapters output/vx-xxx/checkpoint-xxx \
    --push_to_hub true \
    --hub_model_id '<your-model-id>' \
    --hub_token '<your-sdk-token>'


点击即可跳转模型链接https://modelscope.cn/models/ZhipuAI/GLM-OCR

目录
相关文章
|
28天前
|
人工智能 自然语言处理 Shell
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
本教程指导用户在开源AI助手Clawdbot中集成阿里云百炼API,涵盖安装Clawdbot、获取百炼API Key、配置环境变量与模型参数、验证调用等完整流程,支持Qwen3-max thinking (Qwen3-Max-2026-01-23)/Qwen - Plus等主流模型,助力本地化智能自动化。
37393 150
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
|
10天前
|
人工智能 自然语言处理 监控
OpenClaw skills重构量化交易逻辑:部署+AI全自动炒股指南(2026终极版)
2026年,AI Agent领域最震撼的突破来自OpenClaw(原Clawdbot)——这个能自主规划、执行任务的智能体,用50美元启动资金创造了48小时滚雪球至2980美元的奇迹,收益率高达5860%。其核心逻辑堪称教科书级:每10分钟扫描Polymarket近千个预测市场,借助Claude API深度推理,交叉验证NOAA天气数据、体育伤病报告、加密货币链上情绪等多维度信息,捕捉8%以上的定价偏差,再通过凯利准则将单仓位严格控制在总资金6%以内,实现低风险高频套利。
4639 34
|
6天前
|
存储 人工智能 负载均衡
阿里云OpenClaw多Agent实战宝典:从极速部署到AI团队搭建,一个人=一支高效军团
在AI自动化时代,单一Agent的“全能模式”早已无法满足复杂任务需求——记忆臃肿导致响应迟缓、上下文污染引发逻辑冲突、无关信息加载造成Token浪费,这些痛点让OpenClaw的潜力大打折扣。而多Agent架构的出现,彻底改变了这一现状:通过“单Gateway+多分身”模式,让一个Bot在不同场景下切换独立“大脑”,如同组建一支分工明确的AI团队,实现创意、写作、编码、数据分析等任务的高效协同。
1278 22
|
23天前
|
人工智能 安全 机器人
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
OpenClaw(原Clawdbot)是一款开源本地AI助手,支持钉钉、飞书等多平台接入。本教程手把手指导Linux下部署与钉钉机器人对接,涵盖环境配置、模型选择(如Qwen)、权限设置及调试,助你快速打造私有、安全、高权限的专属AI助理。(239字)
8385 24
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
|
22天前
|
人工智能 机器人 Linux
OpenClaw(Clawdbot、Moltbot)汉化版部署教程指南(零门槛)
OpenClaw作为2026年GitHub上增长最快的开源项目之一,一周内Stars从7800飙升至12万+,其核心优势在于打破传统聊天机器人的局限,能真正执行读写文件、运行脚本、浏览器自动化等实操任务。但原版全英文界面对中文用户存在上手门槛,汉化版通过覆盖命令行(CLI)与网页控制台(Dashboard)核心模块,解决了语言障碍,同时保持与官方版本的实时同步,确保新功能最快1小时内可用。本文将详细拆解汉化版OpenClaw的搭建流程,涵盖本地安装、Docker部署、服务器远程访问等场景,同时提供环境适配、问题排查与国内应用集成方案,助力中文用户高效搭建专属AI助手。
5526 12
|
5天前
|
人工智能 JavaScript Linux
别再花钱买云服务器了!OpenClaw 本地部署保姆级教程,10分钟拥有私人AI助理(附阿里云简单部署流程)
2026年,AI私人助理已从“高端配置”变成“日常刚需”,而OpenClaw(原Clawdbot,曾用名Moltbot)作为开源界的“黑马”,凭借自然语言驱动、多技能扩展、零门槛上手的核心优势,成为无数人打造私人AI助理的首选——它无需复杂代码基础,无需高价云服务器,只要你有一台普通电脑(Windows、Mac、Linux均可),跟着步骤操作,10分钟就能完成本地部署,同时也支持阿里云简单部署,兼顾“零成本本地使用”与“云端稳定托管”双重需求,彻底打破“AI助理必花钱”的误区。
1185 5
|
8天前
|
人工智能 JavaScript API
Windows系统OpenClaw保姆级部署指南:本地+云端双方案,零技术基础也能玩转AI助手
在AI办公自动化全面普及的2026年,OpenClaw(原Clawdbot、Moltbot)凭借“自然语言指令操控、多任务自动化执行、多工具无缝集成”的核心优势,成为个人与轻量办公群体打造专属AI助手的首选。它不仅能通过聊天互动响应需求,更具备“动手”和“跑腿”的硬核能力——“手”可读写本地文件、执行代码、操控命令行,“脚”能联网搜索、访问网页并分析内容,“大脑”则可灵活接入Qwen、OpenAI等云端API,或利用本地GPU运行模型,真正实现“聊天框里办大事”。
1123 6

热门文章

最新文章