All models

rednote-hilab

dots.mocr

About

dots.mocr is a 3B open-weight model from rednote-hilab. Multilingual document layout parsing and markdown OCR. It accepts text, images, and documents. Context window is 32K. Released March 19, 2026.

  • Parameters

    3B

    Published parameter count.

  • Context window

    32K

    Tokens of context on a request.

  • License

    Apache-2.0

    License on the weights.

Pricing

Token rates are US dollars per 1M tokens. Image rates are per 1K images. Audio rates are per 1M audio seconds.

RatePrice
Input / 1M$0.20
Cached input / 1M$0.03
Output / 1M$0.40

Compare

dots.mocr is one of the catalog's OCR models. The table is each model's published price, size, and context.

ModelWhat it doesPriceParametersContext
dots.mocrMultilingual document layout parsing and markdown OCR.$0.20 / 1M input3B32K
PP-OCRv6PaddleOCR PP-OCRv6 medium text detection and recognition; scene OCR JSONL on image chat; text returns plain text; document_url fan-out via text.$0.02 / 1M input20M—
DeepSeek-OCR-2DeepSeek OCR 2 and markdown extraction.$0.25 / 1M input3.4B32K
GLM-OCRCompact multilingual document OCR and markdown extraction.$0.10 / 1M input0.9B8K

Benchmarks

Published scores for dots.mocr, from the Infinity-Parser2 technical report.

Evals
ReadingExample
QualitativeClear structure, grounded in the input
QuantitativeParseBench: 55.8.
Cost and performanceLower listed rate, mid-pack latency

Performance

Latency is the end-to-end round trip. Throughput is completion tokens divided by that time. It is a request rate, not decode speed.

  • Latency

    2,182 ms

  • Throughput

    —

  • Requests

    308

Supported inputs

  • textIgnored

    A text part beside the media is accepted and ignored. A request with no media part is a 400.

  • image_urlYes

    One per request. A second image_url part is a 400.

  • video_urlNo

    Not accepted.

  • document_urlYes

    One PDF, up to 128 pages, rasterized per page at document_dpi (default 96). See Document Inputs.

  • Default method markdown. parse_layout and parse_layout_only emit layout regions; ocr and markdown emit strings.
  • Context window 32,768 tokens, with a maximum output of 16,384 tokens.
  • Alias: dots.mocr. Weights: rednote-hilab/dots.mocr.

Methods

Methods this model serves. Payload shapes are in the docs.

MethodReturns
markdownReading-order Markdown string (default)
ocrPlain OCR text
parse_layoutRegion items with bbox_xywh, label, text
parse_layout_onlyRegion items with bbox_xywh and label, no text

The payload kind is the same for an image and for each page of a PDF. Text mode emits the payload alone for one image, and one <document> / <page> block per PDF, each page declaring its kind in format. In JSON mode an image content is the tagged container above, and a document page content is always doc.page.blocks. Coordinates are normalized 0-1 at precision decimals (default 4). See Methods & Response Format.

Estimate cost

Estimate. A page is 2,500 input tokens and 1,000 output tokens.

$0.90

Quick start

Call this model on the OpenAI-compatible gateway. The model id is already filled in.

from openai import OpenAI

client = OpenAI(
    base_url="https://gateway.vlm.run/v1/openai",
    api_key="<VLMRUN_API_KEY>",
)

response = client.chat.completions.create(
    model="rednote-hilab/dots.mocr",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "document_url",
                    "document_url": {
                        "url": "https://storage.googleapis.com/vlm-data-public-prod/hub/examples/finance.sec-filings/tsla-8k.pdf"
                    },
                },
            ],
        }
    ],
    extra_body={"method": "markdown"},
)

print(response.choices[0].message.content)

Response

One <document> block per PDF, one <page> block per page. A failed page is self-closing, with status="error" and no body:

tsla-8k.pdf2 pages

Page 0

Annual Report 2024

Overview

The company reported revenue of $1.2M.

Page 1 · failed

This page returned no body.

With method="parse_layout" each page body is the block container instead, and the page carries format="json".

Get an API key. Ship vision today.