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

目录
相关文章
|
19天前
|
机器学习/深度学习 人工智能 编解码
四款国产VLM OCR模型横评
春节前,DeepSeek、智谱、百度、腾讯四大团队密集开源新一代OCR小模型,全面采用视觉语言模型(VLM)架构,摒弃传统流水线,迈向“语义结构化”新纪元。DeepSeek-OCR2首创“视觉因果流”,GLM-OCR以0.9B参数登顶OmniDocBench榜首,PaddleOCR-VL-1.5攻克真实退化场景,Youtu-Parsing实现22倍推理加速——国产OCR正以架构创新实现垂直领域“换道超车”。
355 4
|
20天前
|
机器学习/深度学习 存储 自然语言处理
蚂蚁集团 Ling-2.5-1T 开源:万亿参数,重新定义"又快又强"
Ling-2.5-1T是蚂蚁集团inclusionAI推出的开源即时大模型(MIT协议),以“效率×效果”为核心:万亿参数、63B激活,首创混合线性注意力架构,支持百万token上下文;推理吞吐大幅提升,AIME任务仅需1/3 token即达前沿思考模型水平。ModelScope可下载。
405 4
蚂蚁集团 Ling-2.5-1T 开源:万亿参数,重新定义"又快又强"
|
13天前
|
机器学习/深度学习 人工智能 文字识别
小红书开源FireRed-OCR,2B 参数登顶文档解析榜单
小红书FireRed团队开源的FireRed-OCR(仅20亿参数),在OmniDocBench v1.5端到端评测中以92.94%综合得分登顶,超越Gemini 3.0 Pro等大模型。专注解决文档解析中的“结构幻觉”问题,通过三阶段训练+格式约束强化学习,精准还原表格、公式、多栏等复杂结构。Apache 2.0协议,ModelScope开源,支持本地商用部署。(239字)
488 22
|
19天前
|
人工智能 自然语言处理 JavaScript
Deepseek百万 Token 窗口的极限实践:一位非专业人员使用实录
摘要:此文非技术评测,而是一份关于Deepseek最新百万token窗口的真实工程“长程思考”实录。本人非AI与计算机专业,从事生物医学与心理学工作,人文爱好者。利用十天时间,通过浏览器deepseek云端模型百万token对话窗口,实现了一套从本地环境设置、工具流搭建、数据建库与向量化的整个工程。本文记录了主要的过程与指标。 时间:2026 年 2 月
|
1月前
|
人工智能 文字识别 物联网
ModelScope魔搭社区发布月报 -- 26年2月
临近年关,ModelScope迎来春节模型发布潮:Qwen3、GLM-4.7、MiniMax M2.1等大模型密集上新;AIGC生图、语音合成、具身智能全面突破;OpenAPI、OAuth、Gallery等生态基建同步升级,加速AI开源普惠。(239字)
364 7
|
20天前
|
自然语言处理 前端开发 测试技术
魔搭社区+OpenVINO™ 加速部署 Qwen3-ASR 实战
通义千问新推Qwen3-ASR语音识别模型(1.7B/0.6B),支持52种语言及方言,具备高鲁棒性与流式长音频转写能力。联合魔搭社区与Intel® OpenVINO™,实现Intel平台极致加速部署,提供完整开源教程、Notebook示例及Gradio交互Demo。(239字)
669 6
|
17天前
|
JSON 人工智能 Shell
用 4B 小模型做Code Agent的SubAgent?这个开源项目做到了
LocoOperator-4B 是 LocoreMind 推出的 4B 开源蒸馏模型,专为代码库探索优化:本地运行、零 API 成本,结构化工具调用(Read/Grep/Glob/Bash 等)准确率达 100%。它替代 Code Agent 中的子智能体,显著降本增效。(239 字)
347 18
|
20天前
|
机器学习/深度学习 自然语言处理 API
Qwen3.5:迈向原生多模态智能体
除夕夜,通义千问发布Qwen3.5-397B-A17B:全球首个原生多模态MoE大模型,总参3970亿、仅激活170亿参数,性能媲美万亿模型;支持201种语言、超强视觉理解与GUI智能体能力,已开源至GitHub与ModelScope。
2076 4
Qwen3.5:迈向原生多模态智能体
|
18天前
|
机器学习/深度学习 测试技术 API
Qwen3.5 中等规模模型系列正式开源:更强智能,更低算力
通义千问Qwen3.5发布四款中等规模多模态模型,支持256K原生上下文(可扩至1M)、201种语言及统一视觉语言训练。凭借Gated Delta+MoE混合架构与百万Agent强化学习,35B-A3B仅激活3B参数即超越旧旗舰,性能、效率与部署成本兼具。(239字)
3298 23
|
14天前
|
机器学习/深度学习 人工智能 边缘计算
转行AI需谨慎:那些半途而废的人,都忽略了这几点。
2025年AI岗位需求暴增543%,但超六成转行者半年内放弃。本文揭示五大陷阱:盲目跟风忽视赛道适配、混淆工具使用与真实能力、碎片化学习缺实战闭环、急功近利轻视伦理、为高薪而非兴趣出发,并指出科学路径才是破局关键。(239字)
407 12

热门文章

最新文章