GLM-OCR Flask服务实战:用python -m glmocr.server搭建文档解析HTTP服务
2026/9/15 18:19:33 网站建设 项目流程

GLM-OCR Flask服务实战:用python -m glmocr.server搭建文档解析HTTP服务

【免费下载链接】GLM-OCRGLM-OCR: Accurate × Fast × Comprehensive项目地址: https://gitcode.com/GitHub_Trending/gl/GLM-OCR

GLM-OCR 是一款面向复杂文档理解的多模态 OCR 模型,其官方 SDK 内置了一个基于 Flask 的轻量 HTTP 服务。本文带你用一条命令python -m glmocr.server搭建文档解析 HTTP 服务,把论文、表格、手写件、化学公式统一转成 Markdown 和 JSON 布局结果,让无 GPU 的机器也能通过 HTTP 调用你的 GPU 服务器。🚀

为什么要把 GLM-OCR 部署成 HTTP 服务?

很多场景下,OCR 能力需要被多个客户端共享:内部系统、脚本、甚至手机 App。与其让每台机器都装一遍模型和依赖,不如在 GPU 服务器上跑一个文档解析 HTTP 服务,其他机器发一个 POST 请求就能拿到结果。

GLM-OCR 的服务端把完整的解析流水线封装在一个 Flask 应用里:

  • 布局检测:基于 PP-DocLayout-V3 定位标题、正文、表格、公式等区域;
  • 并行识别:对每个区域并发调用 GLM-OCR 模型服务;
  • 结果格式化:输出 JSON 布局明细 + Markdown 正文两种格式。

服务端实现全部集中在 glmocr/server.py 一个文件里,核心路由定义在 server.py 的parse()函数中,代码非常易读,适合想理解 OCR 服务内部机制的读者。

上面这张来自 examples/source/paper.png 的论文页面,就是典型的"硬骨头":双栏排版、行间公式、分栏定理编号。这正是 Flask 文档解析服务要解决的场景。

安装步骤:一条命令装好服务依赖

服务依赖按场景拆分成了可选依赖(extras),定义在 pyproject.toml:

安装方式适用场景
pip install "glmocr[server]"只想跑 Flask 服务(云端 API 模式)
pip install "glmocr[selfhosted,server]"自托管流水线 + Flask 服务(推荐)
# 完整能力:本地布局检测 + OCR 流水线 + Flask 服务 pip install "glmocr[selfhosted,server]"

💡 如果你的机器没有 GPU,只想调用云端或远程服务,装最轻量的pip install glmocr即可作为纯客户端使用。

也可以从源码安装进行开发:

git clone https://gitcode.com/GitHub_Trending/gl/GLM-OCR cd GLM-OCR uv venv --python 3.12 --seed && source .venv/bin/activate uv pip install -e ".[selfhosted,server]"

一键启动:python -m glmocr.server

安装完成后,启动服务只需要一条命令:

# 默认配置启动 python -m glmocr.server # 指定配置文件 python -m glmocr.server --config config.yaml # 打开调试日志(含各阶段耗时 profiling) python -m glmocr.server --log-level DEBUG

启动后终端会打印类似提示:

GlmOcr Server starting on 0.0.0.0:5002... API endpoint: /glmocr/parse

服务默认监听0.0.0.0:5002,监听地址与端口由 config.yaml 的server段控制:

server: host: "0.0.0.0" port: 5002 debug: false

改端口、开 debug 热重载,只需调整这几行,无需改任何代码。

调用 /glmocr/parse 接口:最小可用请求

服务只暴露两个接口:

  • POST /glmocr/parse:文档解析主接口;
  • GET /health:健康检查,返回{"status": "ok"},方便接入容器编排探活。

最小请求长这样(注意必须带 JSON 的 Content-Type,否则返回 400):

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

关于images字段的几个细节(见 server.py):

  • 既可以是字符串,也可以是列表;列表会被视为同一份文档的多个页面
  • 支持http/httpsURL、本地file路径和data:数据 URI;
  • 兼容 MaaS 协议的file字段,老客户端可以直接迁移;
  • 要解析多份独立文档?发多次请求即可,一次请求 = 一份文档。

如上图所示(来自 GLM-4.5V_page0.jpg),服务内部会先对文档做布局检测,把doc_titleabstractchartfigure_title等区域框出来,再分别送去识别——这是结果准确的关键第一步。

读懂响应:同时兼容 SDK 与 MaaS 两种协议

响应体由 _build_response 构造,同时携带两套字段:

{ "json_result": "[...]", "markdown_result": "……", "layout_details": "[...]", "md_results": "……", "model": "glm-ocr", "id": "chatcmpl-...", "created": 1709234567 }
字段说明
json_result/layout_details布局明细(区域类型、坐标、识别文本)
markdown_result/md_results排版好的 Markdown 正文,可直接渲染
id/created/model对齐 MaaS 协议,方便现有客户端无缝切换

多页文档的 Markdown 会用---分隔符拼接各页结果(见 server.py),方便下游按页切分。

对于财务报表这类复杂表格(如 table.jpg),服务会把整块表格识别为 HTML 表格结构写入 Markdown,行列对应关系基本可还原。

进阶:让无 GPU 的客户端直连你的服务

这是 Flask 服务模式最大的价值——GPU 集中在一台机器,客户端零成本

  1. GPU 机器按上文启动python -m glmocr.server
  2. 客户端机器只需pip install glmocr,把config.yaml的 MaaS 配置指向你的服务:
pipeline: maas: enabled: true api_url: http://<服务器IP>:5002/glmocr/parse api_key: any-string # 自建服务不校验 key verify_ssl: false

之后客户端就能像调用云端 API 一样,用 CLI 或 Python API 解析本地文档:

from glmocr import GlmOcr with GlmOcr( mode="maas", api_url="http://<服务器IP>:5002/glmocr/parse", api_key="any-string", ) as parser: result = parser.parse("document.png") print(result.markdown_result)

完整架构与协议细节可参考 examples/self-host/README.md。

效果一览:从手写件到化学式

这套文档解析 HTTP 服务覆盖的场景包括论文、财报表格、手写笔记和化学结构式。下图是一份化学分子的编号结构式(4.png),服务会将其中的编号、官能团与连接关系一并识别:

常见问题速查 🧩

问题解决方法
返回Flask server support requires...未装服务依赖,执行pip install "glmocr[server]"
请求返回 400Invalid Content-Type必须携带-H "Content-Type: application/json"
OCR 阶段大量 503/超时调低 config.yaml 中pipeline.max_workers(默认 32)
布局模型吃显存导致 OOM--set pipeline.layout.device cpu把布局检测放到 CPU
想看每个阶段耗时启动时加--log-level DEBUG

总结

GLM-OCR 的 Flask 服务把"布局检测 + 并行 OCR + 结果格式化"整条流水线压缩成了两个接口:装好依赖后,python -m glmocr.server一条命令即可对外提供文档解析 HTTP 服务;客户端无论走原生 SDK 还是 MaaS 协议都能直接消费结果。对于需要把 OCR 能力共享给团队、嵌入内部系统的读者,这是当前最轻量的落地方式。核心源码入口在 glmocr/server.py,配置参考 glmocr/config.yaml,照着本文跑一遍即可上手。

【免费下载链接】GLM-OCRGLM-OCR: Accurate × Fast × Comprehensive项目地址: https://gitcode.com/GitHub_Trending/gl/GLM-OCR

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询