Two open-weight OCR models, one API

GLM-OCR vs PaddleOCR-VL
compared side by side.

GLM-OCR and PaddleOCR-VL both detect layout with PP-DocLayoutV3, then read each region with a small vision-language model. OpenParser hosts both at the same page price, so you can switch with one field.

Same price per pageSame output formatSwitch with ocr_model

GLM-OCR and PaddleOCR-VL compared

Model facts from each model card, and how each runs on OpenParser.

AttributeGLM-OCRPaddleOCR-VL 1.6
DeveloperZ.ai (zai-org)Baidu (PaddlePaddle)
Weights licenseMITApache-2.0
Recognition modelCogViT encoder with a GLM-0.5B decoder, about 0.9B parametersPaddleOCR-VL vision-language model
Layout detectionPP-DocLayoutV3PP-DocLayoutV3
Published benchmark94.62 on OmniDocBench v1.5 (model card)96.34 on OmniDocBench v1.6_full (leaderboard)
Request optionsNoneImage-block OCR, chart recognition, layout-block merging
Output on OpenParseropenparser@1 elements, boxes, markdownopenparser@1 elements, boxes, markdown
ocr_model idglm-ocrpaddleocr-vl-1.6
OpenParser price$1 per 1,000 pages$1 per 1,000 pages

The benchmark scores use different OmniDocBench versions and are not directly comparable. Test both on your own documents.

When to choose each model

Both are open weights at the same price. Pick by document type and the options you need.

Choose GLM-OCR when

  • You want an MIT-licensed model with no per-request options to tune.
  • Your pages are dense with tables and formulas, such as reports, statements, and papers.
  • You want a second open-weight opinion on pages where PaddleOCR-VL struggles.

Choose PaddleOCR-VL when

  • You need chart recognition or OCR inside image blocks.
  • You want to control how layout blocks merge.
  • You already tuned a pipeline on PaddleOCR-VL output and want no changes.

Switch models with ocr_model

The request, jobs API, and openparser@1 output stay the same. Only the model id changes.

request
# PaddleOCR-VL
-F 'request={"ocr_model":"paddleocr-vl-1.6","output_format":"openparser@1"};type=application/json'

# GLM-OCR: same request, same output format
-F 'request={"ocr_model":"glm-ocr","output_format":"openparser@1"};type=application/json'

GLM-OCR vs PaddleOCR FAQ

Quality, price, switching, and self-hosting for the two open-weight models.

Is GLM-OCR better than PaddleOCR-VL?

Neither wins on every document. The published scores use different OmniDocBench versions (v1.5 for GLM-OCR, v1.6_full for PaddleOCR-VL), so they are not directly comparable. Run a sample of your own pages through both in the playground and compare the elements.

Is GLM-OCR a good PaddleOCR alternative?

Yes, if you want another open-weight model with the same layout regions. Both use PP-DocLayoutV3, so headings, tables, formulas, and figures come back as the same element types on OpenParser.

Do they cost the same?

Yes. Both cost $1 per 1,000 pages on OpenParser. New accounts get $10 in credits, enough for about 10,000 pages on either model.

Can I switch between them without code changes?

Change the ocr_model field from paddleocr-vl-1.6 to glm-ocr. The request shape, jobs API, and openparser@1 output stay the same.

Can I self-host GLM-OCR or PaddleOCR-VL instead?

Yes, both are open weights. Self-hosting replaces page fees with GPU, vLLM, and on-call cost. OpenParser is the hosted path when you would rather pay per page.

Try both

Parse the same PDF with GLM-OCR and PaddleOCR-VL

Upload a document in the playground, switch ocr_model, and compare elements and markdown. New accounts get $10 in free credits.