ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

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

GLM-OCR Flask服务实战:用python -m glmocr.server搭建文档解析HTTP服务 GLM-OCR Flask服务实战用python -m glmocr.server搭建文档解析HTTP服务【免费下载链接】GLM-OCRGLM-OCR: Accurate × Fast × Comprehensive项目地址: https://gitcode.com/GitHub_Trending/gl/GLM-OCRGLM-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否则返回 400curl -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_title、abstract、chart、figure_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 集中在一台机器客户端零成本GPU 机器按上文启动python -m glmocr.server客户端机器只需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( modemaas, api_urlhttp://服务器IP:5002/glmocr/parse, api_keyany-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/jsonOCR 阶段大量 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),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进