> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vlm.run/llms.txt
> Use this file to discover all available pages before exploring further.

# paddlepaddle/paddleocr-vl-1.6

> Page OCR plus table, formula, and chart recognition.

Document OCR with structured-content recognition (vLLM). Accepts one `image_url`
or a `document_url` PDF; no text-only input. Default method: `markdown`. All five
methods return a text payload; only the subject differs, so `table`, `formula`,
and `chart` read a page's tables, equations, and charts rather than its prose.
The 1.5-era ids (`paddlepaddle/paddleocr-vl`, `paddleocr-vl`,
`PaddlePaddle/PaddleOCR-VL`) are kept as aliases of this model.

## Output by method

| Method               | Payload kind | Image `content.object` | Payload                                                      |
| -------------------- | ------------ | ---------------------- | ------------------------------------------------------------ |
| `markdown` (default) | text         | none                   | Reading-order page read as Markdown                          |
| `ocr`                | text         | none                   | Reading-order plain-text page read                           |
| `table`              | text         | none                   | The page's table alone, as a Markdown table                  |
| `formula`            | text         | none                   | LaTeX for the page's equations (e.g. `$$E = mc^2$$`)         |
| `chart`              | text         | none                   | Short description followed by the series as a Markdown table |

<Note>
  The catalog route lists only `ocr`, `table`, `formula`, and `chart` for this
  model today. The serving backend also accepts `markdown`, and uses it when
  `method` is omitted.
</Note>

This model uses a model-specific envelope rather than the shared contract on
[Methods & Response Format](/gateway/methods). Text mode emits a bare payload
string for one image, and one `<document>` block per PDF with
`<page index= width= height=>` blocks. In JSON mode the response has a `data`
array with `kind` set to `image` or `document`; it does not include top-level
`model` or `method` keys.

## Request

<CodeGroup>
  ```bash CLI theme={"theme":{"light":"github-light","dark":"dark-plus"}}
  vlmrun gw chat https://storage.googleapis.com/vlm-data-public-prod/hub/examples/document.receipt/playground/2.jpg \
    -m paddlepaddle/paddleocr-vl-1.6 --method table
  ```

  ```python Python [expandable] theme={"theme":{"light":"github-light","dark":"dark-plus"}}
  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="paddlepaddle/paddleocr-vl-1.6",
      messages=[
          {
              "role": "user",
              "content": [
                  {
                      "type": "image_url",
                      "image_url": {
                          "url": "https://storage.googleapis.com/vlm-data-public-prod/hub/examples/document.receipt/playground/2.jpg"
                      },
                  },
              ],
          }
      ],
      extra_body={"method": "table"},
  )

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

  ```bash cURL [expandable] theme={"theme":{"light":"github-light","dark":"dark-plus"}}
  curl https://gateway.vlm.run/v1/openai/chat/completions \
    -X POST \
    -H "Authorization: Bearer $VLMRUN_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "paddlepaddle/paddleocr-vl-1.6",
      "method": "table",
      "messages": [
        {
          "role": "user",
          "content": [
            {
              "type": "image_url",
              "image_url": {
                "url": "https://storage.googleapis.com/vlm-data-public-prod/hub/examples/document.receipt/playground/2.jpg"
              }
            }
          ]
        }
      ]
    }'
  ```
</CodeGroup>

Swap `image_url` for a `document_url` PDF to read every page with the same
method; `markdown` is used when `method` is omitted.

## Response

<Tabs>
  <Tab title="Text mode">
    A single image returns the payload alone, with no wrapper. For
    `method: "table"`:

    ```text theme={"theme":{"light":"github-light","dark":"dark-plus"}}
    | Metric | 2023 | 2024 |
    | --- | --- | --- |
    | Revenue | 0.9M | 1.2M |
    ```

    A PDF returns one `<document>` block per file and one `<page>` block per
    page:

    ```text theme={"theme":{"light":"github-light","dark":"dark-plus"}}
    <document filename="tsla-8k.pdf" source_url="https://storage.googleapis.com/.../tsla-8k.pdf" media_type="application/pdf" pages="5" dpi="96" bytes="38884">
    <page index="0" dpi="96" width="816" height="1056">
    UNITED STATES
    SECURITIES AND EXCHANGE COMMISSION
    WASHINGTON, DC 20549

    FORM 8-K
    </page>
    ...
    </document>
    ```
  </Tab>

  <Tab title="JSON mode">
    One entry per input medium, with `kind` naming the medium and no top-level
    `model` or `method` keys. For an image, `content` is the payload string:

    ```json theme={"theme":{"light":"github-light","dark":"dark-plus"}}
    {
      "data": [
        {
          "kind": "image",
          "image_hash": "sha256:1433c58c...",
          "image_width": 640,
          "image_height": 425,
          "content": "| Metric | 2023 | 2024 |\n| --- | --- | --- |\n| Revenue | 0.9M | 1.2M |"
        }
      ]
    }
    ```

    For a PDF, each page carries `index`, `width`, `height`, and its `content`
    string:

    ```json theme={"theme":{"light":"github-light","dark":"dark-plus"}}
    {
      "data": [
        {
          "kind": "document",
          "source": "tsla-8k.pdf",
          "num_pages": 5,
          "pages": [
            {
              "index": 0,
              "width": 816,
              "height": 1056,
              "content": "UNITED STATES\nSECURITIES AND EXCHANGE COMMISSION\nWASHINGTON, DC 20549\n\nFORM 8-K\n..."
            }
          ]
        }
      ]
    }
    ```
  </Tab>
</Tabs>
