E se você pudesse extrair texto de PDFs complexos, tabelas e fórmulas com um modelo menor do que a maioria dos aplicativos de smartphone? O GLM-OCR alcança uma compreensão de documentos de última geração com apenas 0,9 bilhão de parâmetros. Ele é leve o suficiente para rodar em hardware modesto, mas preciso o suficiente para liderar o ranking OmniDocBench V1.5 com 94,62 pontos.
Ferramentas OCR tradicionais têm dificuldade com a estrutura de documentos. Elas perdem a formatação de tabelas, interpretam mal fórmulas matemáticas e falham em layouts de múltiplas colunas. APIs em nuvem resolvem esses problemas, mas cobram por solicitação e enviam seus documentos sensíveis para servidores de terceiros. O GLM-OCR elimina ambos os problemas: ele lida com layouts complexos localmente com precisão de nível de produção, tudo sob uma licença MIT que permite uso comercial sem taxas de licenciamento.
Entendendo a Arquitetura do GLM-OCR
O GLM-OCR utiliza uma arquitetura codificador-decodificador de três componentes otimizada para compreensão de documentos. O codificador visual CogViT processa imagens de documentos usando pesos pré-treinados em bilhões de pares imagem-texto. Ele extrai características visuais enquanto preserva relações espaciais críticas para a compreensão do layout.
Um conector cross-modal leve se encontra entre o codificador e o decodificador. Este componente subamostra eficientemente os tokens visuais, reduzindo a sobrecarga computacional sem sacrificar a precisão. O decodificador de linguagem GLM-0.5B então gera saída de texto estruturado, lidando com tudo, desde parágrafos simples até tabelas aninhadas complexas.
O modelo emprega um pipeline de inferência em duas etapas. Primeiro, o PP-DocLayout-V3 analisa a estrutura do documento — identificando cabeçalhos, parágrafos, tabelas e figuras. Segundo, o reconhecimento paralelo processa cada região simultaneamente. Essa abordagem mantém a hierarquia do documento onde o OCR tradicional achata tudo em texto não estruturado.
Inovações no treinamento impulsionam ainda mais o desempenho. A perda de previsão de múltiplos tokens melhora a eficiência do treinamento, prevendo múltiplos tokens simultaneamente. O aprendizado por reforço de tarefa completa estável aprimora a generalização em diversos tipos de documentos. O resultado: 96,5% de precisão no reconhecimento de fórmulas, 86,0% no reconhecimento de tabelas e desempenho líder em tarefas de extração de informações.
Na inferência, o GLM-OCR processa 1,86 páginas PDF por segundo em uma única GPU — significativamente mais rápido que modelos comparáveis. A contagem de 0,9 bilhão de parâmetros significa que você pode implantar em hardware de consumo, em vez de clusters empresariais.

Especificações do Modelo
O GLM-OCR lida com documentos de até 8K de resolução (7680×4320 pixels). Ele reconhece 8 idiomas, incluindo inglês, chinês, japonês e coreano. O modelo processa tanto imagens raster (PNG, JPEG) quanto entradas vetoriais. A inferência típica consome 4-6GB de VRAM em precisão FP16, cabendo em GPUs de consumo como a RTX 3060 ou instâncias de nuvem como a AWS g4dn.xlarge.
> | Hardware | VRAM Necessário | Páginas/seg | Caso de Uso |
--------------------------------------------------------------------
> | RTX 3060 | 4-6GB | ~1.5 | Desenvolvimento |
> | RTX 4090 | 4-6GB | ~2.5 | Produção |
> | AWS g4dn.xlarge | 16GB | ~1.8 | Implantação em Nuvem |
> | 4x A100 (TPS=4) | 80GB | ~7.0 | Empresarial |Opções de Implantação Local
O GLM-OCR suporta quatro métodos de implantação, dependendo da sua infraestrutura e requisitos de desempenho. Cada um usa os mesmos pesos de modelo subjacentes do Hugging Face, mas otimiza para diferentes cenários.
- vLLM oferece o melhor equilíbrio entre throughput e latência para cargas de trabalho de produção. Ele implementa PagedAttention para gerenciamento eficiente de memória e suporta batching contínuo para cenários de alta concorrência.
- SGLang oferece desempenho máximo através de sua otimização de tempo de execução. Ele se destaca na decodificação especulativa e na geração estruturada, tornando-o ideal quando você precisa da inferência mais rápida possível.
- Ollama oferece a configuração mais simples. Um comando baixa e executa o modelo localmente — sem dependências Python ou arquivos de configuração. Perfeito para prototipagem e uso pessoal.
- Transformers permite a integração direta com Python. Use isso para desenvolvimento, depuração ou quando precisar de controle refinado sobre o pipeline de inferência.
Todos os métodos exigem os pesos do GLM-OCR do Hugging Face (zai-org/GLM-OCR). O modelo roda em GPUs NVIDIA com suporte CUDA. A inferência somente via CPU funciona, mas com velocidade significativamente reduzida.
Configurando o vLLM para Produção
O vLLM oferece inferência pronta para produção com endpoints de API compatíveis com OpenAI. Isso permite que você substitua o GLM-OCR em aplicativos existentes que atualmente usam modelos de visão da OpenAI.
Instalação
Instale o vLLM com suporte CUDA:
pip install -U vllm --extra-index-url https://wheels.vllm.ai/nightly
Para implantação em contêiner, use a imagem oficial do Docker:
docker pull vllm/vllm-openai:nightly
Instale os Transformers compatíveis — o vLLM requer a versão de desenvolvimento mais recente para suporte ao GLM-OCR:
pip install git+https://github.com/huggingface/transformers.git
Iniciando o Serviço
Inicie o servidor vLLM com GLM-OCR:
vllm serve zai-org/GLM-OCR \
--allowed-local-media-path / \
--port 8080 \
--speculative-config '{"method": "mtp", "num_speculative_tokens": 1}'
A flag --allowed-local-media-path permite que o modelo acesse arquivos de imagem locais. Defina isso para o seu diretório de documentos ou / para acesso irrestrito (use com cautela em produção).
A flag --speculative-config habilita a Previsão de Múltiplos Tokens (Multi-Token Prediction), um recurso do GLM-OCR que acelera a inferência prevendo múltiplos tokens simultaneamente.
Integração do Cliente
Uma vez em execução, interaja com o GLM-OCR através de requisições HTTP padrão:
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"}
]
}
]
}'
O formato de resposta compatível com OpenAI significa que os SDKs existentes funcionam sem modificação. Aponte seu cliente OpenAI para http://localhost:8080 e use zai-org/GLM-OCR como nome do modelo.
Configuração de Produção
Para implantações de alto throughput, adicione paralelismo de tensor em múltiplas GPUs:
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
Ajuste --tensor-parallel-size para corresponder ao número de suas GPUs. Monitore a utilização da GPU e aumente os tamanhos de lote para maximizar o throughput.
Monitoramento e Escalabilidade
Acompanhe o desempenho do vLLM através de seu endpoint de métricas integrado em /metrics. Os dados compatíveis com Prometheus incluem latência de requisição, profundidade da fila e utilização da GPU. Configure alertas quando a profundidade da fila exceder 10 requisições ou a memória da GPU atingir 90%. Para escalabilidade horizontal, implante múltiplas instâncias vLLM atrás de um balanceador de carga com sessões "sticky" para manter o contexto entre as requisições.
Considere usar os recursos de monitoramento de API do Apidog para acompanhar métricas de produção juntamente com o desempenho do seu modelo.
Inferência de Alta Performance SGLang
O SGLang oferece otimizações avançadas de tempo de execução para máxima velocidade de inferência. Ele se destaca na decodificação especulativa e na geração estruturada, tornando-o ideal para aplicativos sensíveis à latência.
Instalação
Instale o SGLang via Docker (recomendado para isolamento de dependências):
docker pull lmsysorg/sglang:dev
Ou instale a partir do código-fonte:
pip install git+https://github.com/sgl-project/sglang.git#subdirectory=python
Instale os Transformers compatíveis:
pip install git+https://github.com/huggingface/transformers.git
Iniciando o Serviço
Inicie o SGLang com decodificação especulativa otimizada:
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
Os parâmetros de decodificação especulativa aceleram a inferência rascunhando múltiplos tokens simultaneamente e verificando-os em paralelo. Ajuste --speculative-num-steps com base no seu hardware — valores mais altos aumentam a velocidade, mas exigem mais memória.
Saída Estruturada
A geração estruturada do SGLang garante que o GLM-OCR produza JSON válido ou outros esquemas:
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"])
Isso garante uma saída legível por máquina sem pós-processamento ou lógica de repetição. Para endpoints de API que servem respostas estruturadas, a validação de esquema do Apidog pode verificar automaticamente se os formatos de saída correspondem às estruturas JSON esperadas.
Quando Escolher SGLang em Vez de vLLM
Selecione SGLang quando precisar de saídas estruturadas ou decodificação especulativa. Sua geração restrita por regex garante esquemas JSON válidos, eliminando a lógica de repetição. O algoritmo especulativo acelera a geração de tokens em 30-40% em GPUs com memória suficiente.
> | Funcionalidade | vLLM | SGLang |
---------------------------------------------------------------
> | Throughput | Alto | Muito Alto |
> | Latência | Boa | Excelente |
> | Compatível com OpenAI | Sim | Não |
> | Saída Estruturada | Manual | Integrada |
> | Suporte da Comunidade | Excelente | Crescente |
> | Complexidade da Configuração | Média | Alta |
> | Melhor Para | APIs de Produção | Apps sensíveis à velocidade |Para OCR padrão sem requisitos de latência estritos, o vLLM oferece desempenho suficiente com configuração mais simples e melhor suporte da comunidade.
Integração Direta com Transformers
Para desenvolvimento, depuração ou pipelines personalizados, use a biblioteca Transformers diretamente. Isso oferece máxima flexibilidade ao custo de menor throughput em comparação com vLLM ou SGLang.
Instalação
Instale os Transformers mais recentes a partir do código-fonte:
pip install git+https://github.com/huggingface/transformers.git
Inferência Básica
Carregue e execute o GLM-OCR em 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)
O device_map="auto" distribui automaticamente as camadas do modelo pelas GPUs disponíveis. Para implantação em uma única GPU, isso carrega o modelo completo em um dispositivo. Para inferência somente em CPU, mude para device_map="cpu" — espere um desempenho significativamente mais lento.
Processamento em Lote
Processe múltiplos documentos de forma eficiente:
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:
# Convert PDF to images if needed
if doc_path.suffix == ".pdf":
images = convert_pdf_to_images(doc_path)
else:
images = [doc_path]
for image in images:
text = extract_text(image) # Your extraction function
results.append({
"file": str(doc_path),
"page": image.page_num if hasattr(image, 'page_num') else 1,
"text": text
})
# Save results
with open(output_file, 'w') as f:
json.dump(results, f, indent=2)
# Usage
batch_process("./invoices/", "extracted_data.json")
Ao processar documentos em produção, o gerenciamento de workspace do Apidog ajuda a organizar múltiplos endpoints de processamento de documentos em grupos lógicos, tornando mais fácil testar e monitorar diferentes fluxos de trabalho.
Otimização de Memória
Para GPUs com VRAM limitada, use quantização:
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",
)
A quantização de 4 bits reduz o uso de memória em 75% com impacto mínimo na precisão para tarefas de compreensão de documentos.
Lidando com Casos de Borda
Documentos com muita escrita à mão ou ângulos de inclinação extremos reduzem a precisão. Pré-processe as imagens com algoritmos de correção de inclinação antes de enviá-las ao GLM-OCR. Para PDFs de várias páginas, extraia as páginas como imagens separadas em vez de passar o arquivo inteiro. Isso permite o processamento paralelo e simplifica o tratamento de erros quando páginas individuais falham. Documentos com marca d'água ocasionalmente acionam falsos positivos em regiões de texto — experimente ajustar o contraste se você vir saída ilegível em áreas específicas.
Casos de Uso Reais do GLM-OCR
O GLM-OCR se destaca em vários cenários de produção:
Processamento de Faturas
Equipes financeiras extraem itens, datas e totais de faturas digitalizadas. O modelo mantém a estrutura da tabela, garantindo cálculos de totais precisos sem revisão manual. Processe milhares de faturas por dia com implantação local e custo zero de API.
Documentação Técnica
Equipes de engenharia convertem manuais e especificações em PDF para texto pesquisável. O reconhecimento de fórmulas preserva equações matemáticas, tornando o conteúdo técnico legível por máquina. Ideal para projetos de modernização de documentação legada.

Análise de Documentos Jurídicos
Profissionais jurídicos revisam contratos e acordos com OCR que respeita a hierarquia do documento. O tratamento de layout de múltiplas colunas garante que os parágrafos não sejam mesclados incorretamente. A abordagem que prioriza a privacidade mantém dados sensíveis on-premises.
Registros de Saúde
Consultórios médicos digitalizam formulários de pacientes e prescrições. Reconhece 8 idiomas, útil para ambientes de saúde multilíngues. A implantação local atende aos requisitos de conformidade HIPAA, mantendo os dados internamente.
Conclusão
O GLM-OCR oferece compreensão de documentos de nível de produção em um pacote de 0,9 bilhão de parâmetros. Você o implanta localmente, mantém a privacidade dos dados e alcança taxas de throughput que rivalizam com as APIs em nuvem — tudo sem preços por solicitação. A arquitetura lida com layouts complexos, tabelas e fórmulas que o OCR tradicional perde, enquanto a licença MIT permite uso comercial irrestrito.
Escolha o vLLM para implantações de produção que exigem alto throughput e compatibilidade com OpenAI. Use o SGLang quando a velocidade máxima de inferência for crucial. Selecione o Transformers para desenvolvimento e pipelines personalizados. Cada opção executa o mesmo modelo subjacente, permitindo que você alterne os métodos de implantação sem retreinar ou reajustar.
Ao construir pipelines de processamento de documentos — seja extraindo dados de faturas, analisando documentação técnica ou automatizando o processamento de formulários — otimize seus testes de API com o Apidog. Ele oferece construção visual de requisições, geração automatizada de documentação e ferramentas de depuração colaborativa que complementam seu fluxo de trabalho de implantação GLM-OCR.
