GLM-OCR实战:如何把一份PDF从图片变成结构化Markdown
【免费下载链接】GLM-OCRGLM-OCR: Accurate × Fast × Comprehensive项目地址: https://gitcode.com/GitHub_Trending/gl/GLM-OCR
📄 如果你正在找一款能快速把 PDF 变成结构化 Markdown 的 OCR 工具,那么 GLM-OCR 值得放进你的工具箱。GLM-OCR 是一款面向复杂文档理解的多模态 OCR 模型,它能把扫描件、拍照件甚至整份 PDF 逐页转成带表格、公式(LaTeX)和版式坐标的结构化 Markdown,总参数量仅 0.9B,支持云端 API 与本地自部署,是新手上手文档结构化成本很低的"高精度 × 快 × 全面"方案。
为什么选 GLM-OCR:不止"识别文字"
传统 OCR 往往只吐出一堆纯文本,段落错位、表格散架、公式变成乱码。GLM-OCR 走的是"两阶段"路线:
- 版面分析:基于 PP-DocLayout-V3 先找出页面上的文本、表格、公式、图片等区域;
- 并行识别:把每个区域裁剪后并行送入视觉语言模型识别,再按阅读顺序合并。
关键特性一览:
- 🏆 在 OmniDocBench V1.5 上取得 94.62 分,综合排名第一
- 🧩 复杂表格、代码密集文档、印章、手写体等真实高难场景表现稳定
- ⚡ 0.9B 参数,支持 vLLM、SGLang、Ollama 部署,推理成本低
- 📦 全面开源,提供完整 SDK 与 Web 应用,一行命令即可调用
原始输入文档(论文页图片)长这样,版面元素混杂着正文与数学公式:
三步流水线:PDF 是怎么变成 Markdown 的
GLM-OCR 的核心是一条三段式异步流水线,源码在 glmocr/pipeline/pipeline.py:
| 阶段 | 模块 | 做什么 |
|---|---|---|
| ① 加载页面 | PageLoader | 读取图片;PDF 先转成逐页图片 |
| ② 版面检测 | LayoutDetector | 检测每页的文本/表格/公式/图片区域 |
| ③ 区域识别 | OCRClient | 调用 GLM-OCR 模型服务并行识别各区域 |
| ④ 结果格式化 | ResultFormatter | 按阅读顺序合并,输出 JSON + Markdown |
各模块可单独替换扩展:页面加载见 glmocr/dataloader/page_loader.py,版面检测见 glmocr/layout/layout_detector.py,结果格式化见 glmocr/postprocess/result_formatter.py。
下图是第②步的效果——版面上每个区域都被框出并标注类型:
最快上手:四步完成配置
第 1 步:安装 SDK
按场景选择最轻量的安装方式:
# 云端 API 模式(无需 GPU,安装最快) pip install glmocr # 本地自部署完整流水线(含版面分析) pip install "glmocr[selfhosted]"第 2 步:安装 Poppler(PDF 转图片依赖)
PDF 输入依赖 Poppler 工具集(pdftoppm等)。参考 examples/example.py 中的检测逻辑,macOS 可执行brew install poppler,Linux 可用apt install poppler-utils。
第 3 步:准备 OCR 模型服务
三种方式任选其一,配置文件为 glmocr/config.yaml:
- MaaS 云端 API(推荐新手):在
config.yaml中启用pipeline.maas并填入 API Key,SDK 只负责转发请求,直接返回 Markdown + JSON 版面详情,本地无需 GPU - vLLM / SGLang 自部署:本地起模型服务,SDK 跑完整流水线,数据完全可控
- SDK Server + Client:GPU 机器上跑服务,其他机器免 GPU 远程调用
第 4 步:一行命令解析
# 解析整份 PDF,结果输出到指定目录 glmocr parse 文档.pdf --output ./results/ # 也可以直接解析目录里所有图片 glmocr parse examples/source/Python 调用同样简洁:from glmocr import parse,result = parse("文档.pdf")后调用result.save()即可(见 glmocr/api.py)。
读懂结果:.md、.json 和版面可视化
解析完成后,输出目录会生成三类产物:
results/ └── 文档名/ ├── 文档名.md # 结构化 Markdown(正文 + 表格 + LaTeX 公式) ├── 文档名.json # 逐元素的结构化数据 └── layout_vis/ # 版面检测可视化图片其中.json是"结构化"的关键。每个元素都有index、label(文本/公式/表格)、content和bbox_2d(像素坐标),例如论文页的输出节选自 examples/result/paper/paper.json:
{ "index": 2, "label": "formula", "content": "$$\\sum_{i=1}^{n} x_i \\frac{\\partial R}{\\partial x_i} = d R.$$ ", "bbox_2d": [234, 200, 341, 234] }对应的 Markdown 版本见 examples/result/paper/paper.md——公式已转为可渲染的 LaTeX。坐标信息则让你可以反向定位原文位置,比如做"原文 ↔ 识别结果"高亮联动。
实战:一份 41 页 PDF 的解析效果
仓库自带了一份 41 页的真实 PDF 测试文档(examples/source/GLM-4.5V.pdf),解析结果完整保存在 examples/result/GLM-4.5V/,包括 41 页的 Markdown、JSON 和逐页版面可视化。下图是其中一页的检测结果,段落、公式、图表区域都被准确划分:
多元素混合页面同样不在话下,比如财务报表中的大表格:
表格会被输出为带<thead>/<tbody>的 HTML 表格,数据一个不少(见 examples/result/table/table.json)。
覆盖更多真实场景
GLM-OCR 针对真实业务痛点做了优化,仓库examples/result/下有对应的效果展示:
- ✍️手写文档:见 examples/result/handwritten/handwritten.md
- 🔒印章识别:见 examples/result/seal/seal.md
- 📊代码截图:见 examples/result/code/code.md
- 🧪化学式微调:还附了基于 LLaMA-Factory 的微调示例,见 examples/finetune/README_zh.md
进阶:开箱即用的 Web 应用 🚀
不想敲命令行?仓库内置了一套完整的 Web 文档处理应用:FastAPI 异步后端 + React 前端,支持上传 PDF → 实时进度跟踪 → 页面级高亮联动 → Markdown 预览/导出,还带任务队列、自动重试与多 Worker 并发(架构说明见 apps/backend/README.md)。
# 用 Docker 一键启动前后端 bash apps/start-docker.sh # 或本地开发模式 bash apps/start-local.sh # 前端 http://localhost:5173,后端 API 文档 http://localhost:8000/docs其中 PDF 转图片步骤的实现在 apps/backend/app/core/steps/pdf_to_image.py,结果合并步骤在 apps/backend/app/core/steps/merge_results.py,想定制流程可以从这里入手。
此外,GLM-OCR 还支持 Agent Skill 模式:pip install glmocr+ 配置 API Key,即可让 AI 助手直接把"提取这张图片/这份 PDF 的文字"这类任务委托给 GLM-OCR,详见 skills/glmocr/SKILL.md。
小结
| 你的需求 | 推荐路径 |
|---|---|
| 快速体验、无 GPU | MaaS 云端 API +pip install glmocr |
| 数据不出内网 | vLLM/SGLang 自部署 +glmocr[selfhosted] |
| 团队批量处理 | Web 应用(apps/)或 Flask 服务(python -m glmocr.server) |
| 接入 AI Agent | Skill 模式(skills/glmocr/) |
一句话总结:装好 SDK、配好模型服务、执行glmocr parse 你的文档.pdf,几分钟后你就拿到一份干净的结构化 Markdown 和可定位每个元素的 JSON——这就是 GLM-OCR 把"图片 PDF 变结构化文档"的全部成本。
【免费下载链接】GLM-OCRGLM-OCR: Accurate × Fast × Comprehensive项目地址: https://gitcode.com/GitHub_Trending/gl/GLM-OCR
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考