zai-org/GLM-OCR

GLM-OCR: Accurate × Fast × Comprehensive

GLM‑OCR – 복잡한 문서를 위한 멀티모달 OCR 모델

개요 – GLM‑OCR은 GLM‑V 인코더‑디코더 아키텍처를 기반으로 구축된 0.9 B 파라미터 규모의 멀티모달 OCR 시스템입니다. 이 모델은 시각 인코더(CogViT)와 경량 교차 모달 커넥터, GLM‑0.5B 언어 디코더를 결합했으며, PP‑DocLayout‑V3 기반의 2단계 파이프라인(레이아웃 분석 → 병렬 영역 인식)을 사용합니다. 복잡한 문서(표, 수식, 코드, 도장 등)에 대한 정확도와 일반화 성능을 높이기 위해 Multi‑Token Prediction 손실 함수와 전체 작업 강화 학습으로 훈련되었습니다.

주요 기능

  • 최첨단 정확도 – OmniDocBench V1.5에서 94.62 %를 기록하며 여러 문서 이해 벤치마크에서 최상위권 달성.
  • 컴팩트하고 빠른 속도 – 0.9 B 파라미터로 vLLM, SGLang 또는 Ollama를 통해 서비스할 수 있어 낮은 지연 시간과 적은 컴퓨팅 비용을 보장.
  • 유연한 배포 – 클라우드 MaaS API(GPU 불필요), vLLM/SGLang을 통한 자체 호스팅, Apple Silicon 최적화 MLX 또는 Ollama 지원. GPU가 없는 클라이언트‑서버 모드도 지원.
  • 쉬운 통합 – Python SDK(glmocr), CLI, Flask 서버 및 에이전트 스타일 호출을 위한 “Skill” 모드 제공.

설치

# 빠른 클라우드 지향 사용 (GPU 불필요)
pip install glmocr

# 자체 호스팅 파이프라인 (레이아웃 탐지기 포함)
pip install "glmocr[selfhosted]"

# 선택적 Flask 서버
pip install "glmocr[server]"

개발을 위해 uv 가상 환경을 사용하여 소스에서 설치할 수 있습니다.

일반적인 사용법

  • CLI – glmocr parse path/to/image.png (디렉토리, 사용자 정의 설정, 레이아웃 장치 선택 등 지원).
  • Python API –
    from glmocr import parse, GlmOcr
    result = parse("image.png")
    result.save("./out")
    # 또는 더 많은 제어를 위한 클래스 기반 사용
    with GlmOcr(layout_device="cpu") as ocr:
        r = ocr.parse("image.png")
    
  • Flask 서비스 – python -m glmocr.server 실행 후 JSON {"images": ["./doc.png"]}을 POST 요청.

배포 옵션

  1. Zhipu MaaS API – config.yaml에 API 키를 설정하면 SDK가 요청을 전달하며 로컬 GPU가 필요하지 않습니다.
  2. 자체 호스팅 vLLM – vllm serve zai-org/GLM-OCR --port 8080 … (추론 MTP 디코딩 지원).
  3. 자체 호스팅 SGLang – 추론 설정과 함께 유사한 실행 명령 사용.
  4. Apple Silicon / MLX – examples/mlx-deploy 참조.
  5. Ollama – examples/ollama-deploy 참조.
  6. GPU 없는 클라이언트 – GPU 머신에서 SDK 서버를 실행하고 다른 머신에서 api_url을 통해 연결.

모델 다운로드 – Hugging Face 및 ModelScope에 호스팅됨 (BF16 정밀도).

라이선스 – 코드는 Apache 2.0; GLM‑OCR 모델 가중치는 MIT; 레이아웃 탐지기는 Apache 2.0.

리소스

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트