Cara Deploy GLM-OCR: Panduan Lengkap untuk Memahami Dokumen

Ashley Goolam

Ashley Goolam

5 February 2026

Cara Deploy GLM-OCR: Panduan Lengkap untuk Memahami Dokumen

Apidog untuk Perusahaan

Penerapan On-Premises

SSO & RBAC

Sesuai SOC 2

Jelajahi Apidog Enterprise

Bagaimana jika Anda bisa mengekstrak teks dari PDF, tabel, dan rumus kompleks dengan model yang lebih kecil dari kebanyakan aplikasi ponsel pintar? GLM-OCR mencapai pemahaman dokumen canggih (state-of-the-art) hanya dengan 0,9 miliar parameter. Model ini cukup ringan untuk dijalankan pada perangkat keras sederhana namun cukup akurat untuk menduduki puncak papan peringkat OmniDocBench V1.5 dengan 94,62 poin.

Alat OCR tradisional kesulitan dengan struktur dokumen. Mereka kehilangan format tabel, salah membaca rumus matematika, dan gagal pada tata letak multi-kolom. API Cloud mengatasi masalah ini tetapi mengenakan biaya per permintaan dan mengirimkan dokumen sensitif Anda ke server pihak ketiga. GLM-OCR menghilangkan kedua masalah tersebut: ia menangani tata letak kompleks secara lokal dengan akurasi tingkat produksi, semuanya di bawah lisensi MIT yang mengizinkan penggunaan komersial tanpa biaya lisensi.

💡
Saat membangun alur pemrosesan dokumen yang membutuhkan pengujian API yang andal—baik mengekstrak data dari faktur, mengurai dokumentasi teknis, atau mengotomatiskan pemrosesan formulir—Apidog menyederhanakan seluruh alur kerja. Ini menyediakan pembangunan permintaan visual, pembuatan dokumentasi otomatis, dan alat debugging kolaboratif yang bekerja dengan mulus dengan deployment GLM-OCR Anda.
tombol

Memahami Arsitektur GLM-OCR

GLM-OCR menggunakan arsitektur encoder-decoder tiga komponen yang dioptimalkan untuk pemahaman dokumen. Encoder visual CogViT memproses gambar dokumen menggunakan bobot yang telah dilatih sebelumnya (pretrained) pada miliaran pasangan gambar-teks. Ini mengekstrak fitur visual sambil mempertahankan hubungan spasial yang krusial untuk memahami tata letak.

Konektor lintas-modal (cross-modal) yang ringan terletak di antara encoder dan decoder. Komponen ini mengurangi sampel token visual secara efisien, mengurangi overhead komputasi tanpa mengorbankan akurasi. Decoder bahasa GLM-0.5B kemudian menghasilkan keluaran teks terstruktur, menangani semuanya mulai dari paragraf biasa hingga tabel bertingkat yang kompleks.

Model ini menggunakan alur inferensi dua tahap. Pertama, PP-DocLayout-V3 menganalisis struktur dokumen—mengidentifikasi header, paragraf, tabel, dan gambar. Kedua, pengenalan paralel memproses setiap wilayah secara bersamaan. Pendekatan ini mempertahankan hierarki dokumen di mana OCR tradisional meratakan semuanya menjadi teks tidak terstruktur.

Inovasi pelatihan semakin meningkatkan kinerja. Kerugian prediksi multi-token meningkatkan efisiensi pelatihan dengan memprediksi beberapa token secara bersamaan. Pembelajaran penguatan (reinforcement learning) tugas penuh yang stabil meningkatkan generalisasi di berbagai jenis dokumen. Hasilnya: akurasi 96,5% pada pengenalan rumus, 86,0% pada pengenalan tabel, dan kinerja terdepan pada tugas ekstraksi informasi.

Pada saat inferensi, GLM-OCR memproses 1,86 halaman PDF per detik pada satu GPU—secara signifikan lebih cepat daripada model sejenis. Jumlah parameter 0,9 miliar berarti Anda melakukan deployment pada perangkat keras konsumen daripada kluster perusahaan.

model glm-ocr

Spesifikasi Model

GLM-OCR menangani dokumen hingga resolusi 8K (7680×4320 piksel). Ia mengenali 8 bahasa termasuk Inggris, Cina, Jepang, dan Korea. Model ini memproses gambar raster (PNG, JPEG) dan input vektor. Inferensi tipikal mengonsumsi 4-6GB VRAM pada presisi FP16, sesuai untuk GPU konsumen seperti RTX 3060 atau instans cloud seperti AWS g4dn.xlarge.

> | Perangkat Keras | VRAM yang Dibutuhkan | Halaman/dtk | Kasus Penggunaan   |
 --------------------------------------------------------------------
> | RTX 3060        | 4-6GB                | ~1.5        | Pengembangan       |
> | RTX 4090        | 4-6GB                | ~2.5        | Produksi           |
> | AWS g4dn.xlarge | 16GB                 | ~1.8        | Deployment Cloud   |
> | 4x A100 (TPS=4) | 80GB                 | ~7.0        | Perusahaan         |

Opsi Deployment Lokal

GLM-OCR mendukung empat metode deployment tergantung pada infrastruktur dan persyaratan kinerja Anda. Masing-masing menggunakan bobot model dasar yang sama dari Hugging Face tetapi dioptimalkan untuk skenario yang berbeda.

  1. vLLM memberikan keseimbangan terbaik antara throughput dan latensi untuk beban kerja produksi. Ini mengimplementasikan PagedAttention untuk manajemen memori yang efisien dan mendukung batching berkelanjutan untuk skenario konkurensi tinggi.
  2. SGLang menawarkan kinerja maksimum melalui optimasi runtime-nya. Ini unggul dalam speculative decoding dan structured generation, menjadikannya ideal ketika Anda membutuhkan inferensi secepat mungkin.
  3. Ollama memberikan pengaturan paling sederhana. Satu perintah mengunduh dan menjalankan model secara lokal—tanpa dependensi Python atau file konfigurasi. Sempurna untuk prototyping dan penggunaan pribadi.
  4. Transformers memungkinkan integrasi Python secara langsung. Gunakan ini untuk pengembangan, debugging, atau ketika Anda membutuhkan kontrol yang sangat terperinci atas alur inferensi.

Semua metode memerlukan bobot GLM-OCR dari Hugging Face (zai-org/GLM-OCR). Model ini berjalan pada GPU NVIDIA dengan dukungan CUDA. Inferensi hanya CPU berfungsi tetapi dengan kecepatan yang jauh berkurang.

Menyiapkan vLLM untuk Produksi

vLLM menyediakan inferensi siap produksi dengan titik akhir API yang kompatibel dengan OpenAI. Ini memungkinkan Anda menukar GLM-OCR ke aplikasi yang ada yang saat ini menggunakan model visi OpenAI.

Instalasi

Instal vLLM dengan dukungan CUDA:

pip install -U vllm --extra-index-url https://wheels.vllm.ai/nightly

Untuk deployment dalam kontainer, gunakan citra Docker resmi:

docker pull vllm/vllm-openai:nightly

Instal Transformers yang kompatibel—vLLM memerlukan versi pengembangan terbaru untuk dukungan GLM-OCR:

pip install git+https://github.com/huggingface/transformers.git

Meluncurkan Layanan

Mulai server vLLM dengan GLM-OCR:

vllm serve zai-org/GLM-OCR \
  --allowed-local-media-path / \
  --port 8080 \
  --speculative-config '{"method": "mtp", "num_speculative_tokens": 1}'

Flag --allowed-local-media-path memungkinkan model mengakses file gambar lokal. Atur ini ke direktori dokumen Anda atau / untuk akses tak terbatas (gunakan dengan hati-hati dalam produksi).

--speculative-config memungkinkan Prediksi Multi-Token (Multi-Token Prediction), fitur GLM-OCR yang mempercepat inferensi dengan memprediksi beberapa token secara bersamaan.

Integrasi Klien

Setelah berjalan, berinteraksi dengan GLM-OCR melalui permintaan HTTP standar:

curl --location --request POST 'http://localhost:8080/v1/chat/completions' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "model": "zai-org/GLM-OCR",
    "messages": [
      {
        "role": "user",
        "content": [
          {"type": "image_url", "image_url": {"url": "file:///path/to/document.png"}},
          {"type": "text", "text": "Extract all text from this document"}
        ]
      }
    ]
  }'

Format respons yang kompatibel dengan OpenAI berarti SDK yang ada berfungsi tanpa modifikasi. Arahkan klien OpenAI Anda ke http://localhost:8080 dan gunakan zai-org/GLM-OCR sebagai nama model.

Konfigurasi Produksi

Untuk deployment dengan throughput tinggi, tambahkan paralelisme tensor di beberapa GPU:

vllm serve zai-org/GLM-OCR \
  --tensor-parallel-size 4 \
  --gpu-memory-utilization 0.95 \
  --max-model-len 8192 \
  --allowed-local-media-path / \
  --port 8080

Sesuaikan --tensor-parallel-size agar sesuai dengan jumlah GPU Anda. Pantau pemanfaatan GPU dan tingkatkan ukuran batch untuk memaksimalkan throughput.

Pemantauan dan Skalabilitas

Lacak kinerja vLLM melalui titik akhir metrik bawaannya di /metrics. Data yang kompatibel dengan Prometheus mencakup latensi permintaan, kedalaman antrean (queue depth), dan pemanfaatan GPU. Atur peringatan ketika kedalaman antrean melebihi 10 permintaan atau memori GPU mencapai 90%. Untuk skalabilitas horizontal, deploy beberapa instans vLLM di belakang load balancer dengan sticky sessions untuk mempertahankan konteks di seluruh permintaan.

Pertimbangkan untuk menggunakan fitur pemantauan API Apidog untuk melacak metrik produksi bersama dengan kinerja model Anda.

Inferensi Berkinerja Tinggi SGLang

SGLang menyediakan optimasi runtime tingkat lanjut untuk kecepatan inferensi maksimum. Ini unggul dalam speculative decoding dan structured generation, menjadikannya ideal untuk aplikasi yang sensitif terhadap latensi.

Instalasi

Instal SGLang melalui Docker (direkomendasikan untuk isolasi dependensi):

docker pull lmsysorg/sglang:dev

Atau instal dari sumber:

pip install git+https://github.com/sgl-project/sglang.git#subdirectory=python

Instal Transformers yang kompatibel:

pip install git+https://github.com/huggingface/transformers.git

Meluncurkan Layanan

Mulai SGLang dengan speculative decoding yang dioptimalkan:

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

Parameter speculative decoding mempercepat inferensi dengan membuat draf beberapa token secara bersamaan dan memverifikasinya secara paralel. Sesuaikan --speculative-num-steps berdasarkan perangkat keras Anda—nilai yang lebih tinggi meningkatkan kecepatan tetapi memerlukan lebih banyak memori.

Output Terstruktur

Structured generation SGLang memastikan GLM-OCR menghasilkan output JSON yang valid atau skema lainnya:

import sglang as sgl

@sgl.function
def extract_invoice(s, image_path):
    s += sgl.user(sgl.image(image_path) + "Extract invoice data as JSON")
    s += sgl.assistant(sgl.gen("json_output", json_schema={
        "type": "object",
        "properties": {
            "invoice_number": {"type": "string"},
            "date": {"type": "string"},
            "total": {"type": "number"},
            "items": {
                "type": "array",
                "items": {
                    "type": "object",
                    "properties": {
                        "description": {"type": "string"},
                        "quantity": {"type": "integer"},
                        "price": {"type": "number"}
                    }
                }
            }
        }
    }))

result = extract_invoice.run(image_path="invoice.png")
print(result["json_output"])

Ini menjamin keluaran yang dapat dibaca mesin tanpa pasca-pemrosesan atau logika coba ulang (retry logic). Untuk titik akhir API yang menyajikan respons terstruktur, validasi skema Apidog dapat secara otomatis memverifikasi format keluaran Anda cocok dengan struktur JSON yang diharapkan.

Kapan Memilih SGLang daripada vLLM

Pilih SGLang ketika Anda membutuhkan output terstruktur atau speculative decoding. Generasi yang dibatasi regex-nya menjamin skema JSON yang valid, menghilangkan logika coba ulang. Algoritma spekulatif mempercepat pembuatan token sebesar 30-40% pada GPU dengan memori yang cukup.

> | Fitur                  | vLLM              | SGLang                  |
 -----------------------------------------------------------------------
> | Throughput             | Tinggi            | Sangat Tinggi           |
> | Latensi                | Baik              | Sangat Baik             |
> | Kompatibel OpenAI      | Ya                | Tidak                   |
> | Output Terstruktur     | Manual            | Bawaan                  |
> | Dukungan Komunitas     | Sangat Baik       | Berkembang              |
> | Kompleksitas Setup     | Sedang            | Tinggi                  |
> | Terbaik Untuk          | API Produksi      | Aplikasi Penting Kecepatan |

Untuk OCR standar tanpa persyaratan latensi yang ketat, vLLM memberikan kinerja yang memadai dengan konfigurasi yang lebih sederhana dan dukungan komunitas yang lebih baik.

Integrasi Langsung Transformers

Untuk pengembangan, debugging, atau alur kerja kustom, gunakan pustaka Transformers secara langsung. Ini memberikan fleksibilitas maksimum dengan biaya throughput yang lebih rendah dibandingkan dengan vLLM atau SGLang.

Instalasi

Instal Transformers terbaru dari sumber:

pip install git+https://github.com/huggingface/transformers.git

Inferensi Dasar

Muat dan jalankan GLM-OCR di Python:

from transformers import AutoProcessor, AutoModelForImageTextToText
import torch

MODEL_PATH = "zai-org/GLM-OCR"

# Prepare input
messages = [
    {
        "role": "user",
        "content": [
            {"type": "image", "url": "document.png"},
            {"type": "text", "text": "Text Recognition:"}
        ],
    }
]

# Load model and processor
processor = AutoProcessor.from_pretrained(MODEL_PATH)
model = AutoModelForImageTextToText.from_pretrained(
    MODEL_PATH,
    torch_dtype="auto",
    device_map="auto",
)

# Process input
inputs = processor.apply_chat_template(
    messages,
    tokenize=True,
    add_generation_prompt=True,
    return_dict=True,
    return_tensors="pt"
).to(model.device)

inputs.pop("token_type_ids", None)

# Generate output
generated_ids = model.generate(**inputs, max_new_tokens=8192)
output_text = processor.decode(
    generated_ids[0][inputs["input_ids"].shape[1]:],
    skip_special_tokens=False
)

print(output_text)

device_map="auto" secara otomatis mendistribusikan lapisan model ke seluruh GPU yang tersedia. Untuk deployment satu GPU, ini memuat model penuh pada satu perangkat. Untuk inferensi hanya CPU, ubah ke device_map="cpu"—harap harapkan kinerja yang jauh lebih lambat.

Pemrosesan Batch

Proses beberapa dokumen secara efisien:

import os
from pathlib import Path

def batch_process(directory, output_file):
    documents = list(Path(directory).glob("*.png")) + \
                list(Path(directory).glob("*.pdf"))
    
    results = []
    for doc_path in documents:
        # Konversi PDF ke gambar jika diperlukan
        if doc_path.suffix == ".pdf":
            images = convert_pdf_to_images(doc_path)
        else:
            images = [doc_path]
        
        for image in images:
            text = extract_text(image)  # Fungsi ekstraksi Anda
            results.append({
                "file": str(doc_path),
                "page": image.page_num if hasattr(image, 'page_num') else 1,
                "text": text
            })
    
    # Simpan hasil
    with open(output_file, 'w') as f:
        json.dump(results, f, indent=2)

# Penggunaan
batch_process("./invoices/", "extracted_data.json")

Saat memproses dokumen dalam produksi, manajemen ruang kerja Apidog membantu mengatur beberapa titik akhir pemrosesan dokumen ke dalam grup logis, sehingga lebih mudah untuk menguji dan memantau alur kerja yang berbeda.

Optimasi Memori

Untuk GPU dengan VRAM terbatas, gunakan kuantisasi:

from transformers import BitsAndBytesConfig

quantization_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_compute_dtype=torch.float16
)

model = AutoModelForImageTextToText.from_pretrained(
    MODEL_PATH,
    quantization_config=quantization_config,
    device_map="auto",
)

Kuantisasi 4-bit mengurangi penggunaan memori sebesar 75% dengan dampak akurasi minimal untuk tugas pemahaman dokumen.

Menangani Kasus Khusus

Dokumen dengan tulisan tangan yang banyak atau sudut kemiringan yang ekstrem mengurangi akurasi. Pra-proses gambar dengan algoritma deskewing sebelum dikirim ke GLM-OCR. Untuk PDF multi-halaman, ekstrak halaman sebagai gambar terpisah daripada meneruskan seluruh file. Ini memungkinkan pemrosesan paralel dan menyederhanakan penanganan kesalahan ketika halaman individual gagal. Dokumen ber-watermark kadang-kadang memicu positif palsu di wilayah teks—bereksperimenlah dengan penyesuaian kontras jika Anda melihat keluaran yang kacau di area tertentu.

Kasus Penggunaan GLM-OCR di Dunia Nyata

GLM-OCR unggul dalam beberapa skenario produksi:

Pemrosesan Faktur

Tim keuangan mengekstrak item baris, tanggal, dan total dari faktur yang dipindai. Model ini mempertahankan struktur tabel, memastikan perhitungan total yang akurat tanpa tinjauan manual. Proses ribuan faktur per hari dengan deployment lokal dan tanpa biaya API.

Dokumentasi Teknis

Tim teknik mengubah manual dan spesifikasi PDF menjadi teks yang dapat dicari. Pengenalan rumus mempertahankan persamaan matematika, membuat konten teknis dapat dibaca mesin. Ideal untuk proyek modernisasi dokumentasi lama.

contoh glm-ocr

Analisis Dokumen Hukum

Profesional hukum meninjau kontrak dan perjanjian dengan OCR yang menghormati hierarki dokumen. Penanganan tata letak multi-kolom memastikan paragraf tidak digabungkan secara salah. Pendekatan yang mengutamakan privasi menjaga data sensitif tetap berada di lokasi (on-premises).

Catatan Kesehatan

Kantor medis mendigitalisasi formulir pasien dan resep. Mengenali 8 bahasa, berguna untuk lingkungan perawatan kesehatan multibahasa. Deployment lokal memenuhi persyaratan kepatuhan HIPAA dengan menjaga data tetap internal.

Kesimpulan

GLM-OCR memberikan pemahaman dokumen tingkat produksi dalam paket parameter 0,9 miliar. Anda dapat melakukan deployment secara lokal, menjaga privasi data, dan mencapai tingkat throughput yang menyaingi API cloud—semuanya tanpa biaya per permintaan. Arsitekturnya menangani tata letak kompleks, tabel, dan rumus yang terlewatkan oleh OCR tradisional, sementara lisensi MIT mengizinkan penggunaan komersial tanpa batasan.

Pilih vLLM untuk deployment produksi yang membutuhkan throughput tinggi dan kompatibilitas OpenAI. Gunakan SGLang ketika kecepatan inferensi maksimum menjadi prioritas. Pilih Transformers untuk pengembangan dan alur kerja kustom. Setiap opsi menjalankan model dasar yang sama, jadi Anda dapat beralih metode deployment tanpa melatih ulang atau menyetel ulang.

Saat membangun alur pemrosesan dokumen—baik mengekstrak data dari faktur, mengurai dokumentasi teknis, atau mengotomatiskan pemrosesan formulir—sederhanakan pengujian API Anda dengan Apidog. Ini menyediakan pembangunan permintaan visual, pembuatan dokumentasi otomatis, dan alat debugging kolaboratif yang melengkapi alur kerja deployment GLM-OCR Anda.

tombol

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.