
2026/02/07 23:15
**GLM‑OCR:正確さ × 高速さ × 網羅性**
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
要約
GLM‑OCR は、軽量でオープンソースのマルチモーダル OCR システムです。最先端の性能を提供しつつ、デプロイが容易です。GLM‑V エンコーダ–デコーダアーキテクチャに基づき、Multi‑Token Prediction (MTP) ロスと安定したフルタスク強化学習を組み込んでおり、効率的なトレーニングと精度向上が実現されています。ビジュアル フロントエンドは CogViT を使用し、軽量なクロスモーダルコネクタとしてトークンを効率的にダウンサンプルします;言語デコーダは 0.5 B パラメータの GLM モデルです。レイアウト解析には PP‑DocLayout‑V3 を二段階パイプラインで統合しています。
主な実績
- OmniDocBench V1.5 で 94.62(総合 #1)を達成し、数式認識・表認識・情報抽出ベンチマーク全てでトップの結果を示しました。
- パラメータはわずか 0.9 B で、vLLM、SGLang、Ollama を通じた低レイテンシ推論が可能。高同時実行サービスやエッジデバイスに適しています。
デプロイと統合
- Hugging Face と ModelScope(BF16)で Apache 2.0(コード)/MIT(モデル)のライセンスの下で公開されています。
- SDK は単一行 CLI コマンド (
)、Python API(glmocr parse
関数またはparse()
クラス)、Flask サービス (GlmOcr
) を提供し、ホスト・ポート・タイムアウト・ロギングを設定可能です。python -m glmocr.server - 出力は構造化 JSON と Markdown。レイアウトモードが有効な場合は切り出した画像領域も返します。
- モジュラーアーキテクチャ(PageLoader、OCRClient、PPDocLayoutDetector、ResultFormatter)によりカスタム拡張が容易です。
デプロイオプション
- クラウドホスト型 Zhipu MaaS API – GPU不要で Markdown + JSON レイアウト情報を返します。
- vLLM または SGLang で自己ホストし、フルコントロールを実現。MTP スペクタティブデコードもオプションで使用可能です。
- エッジシナリオ向けにローカル Ollama/MLX デプロイメント。
オープンソースライセンスと包括的 SDK により、GLM‑OCR は業界横断で迅速かつコスト効率の高い OCR ソリューションを提供し、推論を軽量化・スケーラブルに保ちます。
本文
GLM‑OCR
コミュニティに参加しよう
- 🤝 Discord
GLM‑OCR API の利用方法
モデル紹介
GLM‑OCR は、複雑な文書理解を目的としたマルチモーダル OCR モデルで、GLM‑V エンコーダ―デコーダーアーキテクチャに基づいて構築されています。主な特徴は以下の通りです。
- Multi‑Token Prediction (MTP) 損失
- 安定したフルトスクール学習
主要コンポーネント:
- 大規模画像・テキストデータで事前学習された CogViT ビジュアルエンコーダー
- 効率的なトークンダウンサンプリングを備えた軽量クロスモーダルコネクタ
- GLM‑0.5B 言語デコーダ
PP‑DocLayout‑V3 に基づくレイアウト解析と並列認識の二段階パイプラインにより、GLM‑OCR は多様な文書レイアウトで堅牢かつ高品質な OCR を実現します。
主な特徴
| Feature | Description |
|---|---|
| 最先端性能 | OmniDocBench V1.5 で 94.62 点(全体トップ #1)。数式認識、表認識、情報抽出で優れた結果を示します。 |
| 実世界に最適化 | 複雑な表やコード中心の文書、印章など難しいレイアウトでも安定した性能を発揮します。 |
| 効率的な推論 | 0.9 B パラメータで、vLLM、SGLang、Ollama 等でデプロイ可能。低い遅延と計算コストで、高同時接続サービスやエッジデプロイに最適です。 |
| 使いやすさ | 完全オープンソースで包括的な SDK と推論ツールチェーンを提供。ワンライナー呼び出しで本番パイプラインへのシームレス統合が可能です。 |
モデルダウンロード
| Model | Precision | Links |
|---|---|---|
| GLM‑OCR | BF16 | 🤗 Hugging Face / 🤖 ModelScope |
GLM‑OCR SDK
インストール(uv)
git clone https://github.com/zai-org/glm-ocr.git cd glm-ocr uv venv --python 3.12 --seed && source .venv/bin/activate uv pip install -e .
モデルデプロイ
オプション 1 – Zhipu MaaS API(クイックスタート推奨)
- https://open.bigmodel.cn から API キーを取得
を設定:config.yaml
pipeline: maas: enabled: true # MaaS モード有効化 api_key: your-api-key # 必須
SDK はドキュメントをクラウド API に転送し、Markdown + JSON レイアウト情報を返します。ローカル GPU は不要です。
オプション 2 – vLLM / SGLang を使ったセルフホスト
vLLM の使用例
uv pip install -U vllm --torch-backend=auto \ --extra-index-url https://wheels.vllm.ai/nightly # Docker 版 docker pull vllm/vllm-openai:nightly
起動:
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
SGLang の使用例
docker pull lmsysorg/sglang:dev # ソースからビルドする場合 uv pip install git+https://github.com/sgl-project/sglang.git#subdirectory=python
起動:
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
起動後、
config.yaml を更新:
pipeline: maas: enabled: false # MaaS モードを無効化(デフォルト) ocr_api: api_host: localhost api_port: 8080
オプション 3 – Ollama / MLX
Apple Silicon 用の
mlx-vlm や、Ollama を使ったシンプルなローカルデプロイに関する詳細ガイドは別途ご確認ください。
SDK 使用ガイド
CLI
# 単一画像を解析 glmocr parse examples/source/code.png # ディレクトリ内の画像を解析 glmocr parse examples/source/ # 出力ディレクトリを指定 glmocr parse examples/source/code.png --output ./results/ # カスタム設定ファイルを使用 glmocr parse examples/source/code.png --config my_config.yaml # デバッグログとプロファイリング有効化 glmocr parse examples/source/code.png --log-level DEBUG
Python API
from glmocr import GlmOcr, parse # シンプル関数呼び出し result = parse("image.png") result = parse(["img1.png", "img2.jpg"]) result = parse("https://example.com/image.png") result.save(output_dir="./results") # クラスベース API with GlmOcr() as parser: result = parser.parse("image.png") print(result.json_result) result.save()
Flask サービス
python -m glmocr.server # サービス起動 python -m glmocr.server --log-level DEBUG # デバッグログ付きで起動 # API 呼び出し例 curl -X POST http://localhost:5002/glmocr/parse \ -H "Content-Type: application/json" \ -d '{"images": ["./example/source/code.png"]}'
意味論
は文字列またはリストで指定可能。images- リストの場合、1 つのドキュメントのページとして扱われます。
- 複数の独立したドキュメントを処理する場合は、リクエストごとにエンドポイントを呼び出してください。
設定ファイル (glmocr/config.yaml
)
glmocr/config.yamlserver: host: "0.0.0.0" port: 5002 debug: false logging: level: INFO # DEBUG を設定するとプロファイリングが有効になる pipeline: ocr_api: api_host: localhost api_port: 8080 api_key: null connect_timeout: 300 request_timeout: 300 page_loader: max_tokens: 16384 temperature: 0.01 image_format: JPEG min_pixels: 12544 max_pixels: 71372800 result_formatter: output_format: both # json, markdown, or both enable_layout: false
出力フォーマット
JSON
[ { "index": 0, "label": "text", "content": "...", "bbox_2d": null } ]
Markdown
# Document Title Body... | Table | Content | | ----- | ------- | | ... | ... |
パイプライン実行例
python examples/example.py
出力構成(入力ごとにフォルダを作成):
– 構造化 OCR 結果result.json
– Markdown 結果result.md
– レイアウトモード有効時の切り抜き画像領域imgs/
モジュラーアーキテクチャ
| コンポーネント | 説明 |
|---|---|
| PageLoader | 前処理と画像エンコーディング |
| OCRClient | GLM‑OCR モデルサービスへの呼び出し |
| PPDocLayoutDetector | PP‑DocLayout によるレイアウト検出 |
| ResultFormatter | 後処理、JSON/Markdown 出力 |
カスタムパイプライン例
from glmocr.dataloader import PageLoader from glmocr.ocr_client import OCRClient from glmocr.postprocess import ResultFormatter class MyPipeline: def __init__(self, config): self.page_loader = PageLoader(config) self.ocr_client = OCRClient(config) self.formatter = ResultFormatter(config) def process(self, request_data): # カスタムロジックを実装 pass
謝辞
本プロジェクトは以下の優れた研究成果に基づいて構築されています。
- PP‑DocLayout‑V3
- PaddleOCR
- MinerU
ライセンス
| コンポーネント | ライセンス |
|---|---|
| コード(リポジトリ) | Apache License 2.0 |
| GLM‑OCR モデル | MIT |
| PP‑DocLayout‑V3 | Apache License 2.0 |
本プロジェクトを利用する際は、両方のライセンスに準拠してください。