---
title: PDF Page Reader
slug: read-pdf-pagedd
url: https://apyverse.com/rohit/service/read-pdf-pagedd
provider: Rohit R
categories: [Data Extraction, Image Processing]
tags: [ocr, pdf-ocr, image-to-text, document-extraction, table-extraction, layout-analysis]
auth: api_key
version: 0.1.0
service_type: sync
endpoints: 2
atoms: 10
mcp: true
---

# PDF Page Reader

Extract text, blocks, tables, and page data from a PDF page or image. Use it for OCR, layout-aware parsing, and table capture.

## Endpoints

| Method | URL | Description | Atoms |
| --- | --- | --- | --- |
| POST | `https://api.eu.apyverse.com/rohit/read-pdf-pagedd` | Read a PDF page Read one page of a PDF — scanned or digital — into the same Markdown, text, tables… | 10 |
| POST | `https://api.eu.apyverse.com/rohit/read-pdf-pagedd/ocr` | What it does Converts an input image into OCR output and returns the recognized content as text, Ma… | 10 |

## Endpoint reference

### Read a PDF page

`POST https://api.eu.apyverse.com/rohit/read-pdf-pagedd` · 10 atoms · accepts `application/json` · returns `application/json`

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `dpi` | body | integer | no | Rendering resolution for the page (capped at 25 megapixels). Default: `200`. |
| `mode` | body | string | no | auto (default) for varied documents; layout for structured blocks; plain for a single text block. One of: auto, layout, plain. Default: `auto`. |
| `page` | body | integer | no | 1-based page to read; the response carries `page.count` so you can loop. Default: `1`. |
| `charts` | body | boolean | no | Turn bar, line and pie charts into data tables. Default: `true`. |
| `format` | body | string | no | `json`: Markdown, text, blocks and tables; `markdown`: the page as `text/markdown`; `text`: plain text. One of: json, markdown, text. Default: `json`. |
| `document.url` | body | any | no | Public http(s) PDF URL, up to 20 MiB. Private and internal addresses are refused. Default: `null`. |
| `document.base64` | body | any | no | The PDF as base64 (a `data:` URI is fine), ≤ 20 MB decoded. Default: `null`. |
| `include_blocks` | body | boolean | no | Include `blocks` (type, order, bounding box, content) in the JSON. Default: `true`. |

#### Quickstart

Read the first page of a PDF from a public URL and return its extracted content as JSON.

```bash
curl -X POST "https://api.eu.apyverse.com/rohit/read-pdf-pagedd" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "document": {
      "url": "https://example.com/sample.pdf"
    }
  }'
```

#### What you'll get back

Returns a JSON object with `markdown` and `text` strings, `blocks` and `tables` arrays, and a `page` object. The `page` object includes `width` and `height` plus optional `dpi`, `count`, and `index` fields.

```json
{
  "markdown": "...",
  "text": "...",
  "blocks": [],
  "tables": [],
  "page": {
    "width": 0,
    "height": 0
  }
}
```

### Read an image (OCR to Markdown)

`POST https://api.eu.apyverse.com/rohit/read-pdf-pagedd/ocr` · 10 atoms · accepts `application/json` · returns `application/json`

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `mode` | body | string | no | auto (default) for varied documents; layout for structured blocks; plain for a single text block. One of: auto, layout, plain. Default: `auto`. |
| `image.url` | body | any | no | Public http(s) URL of the image (≤ 20 MB). Private and internal addresses are refused. Default: `null`. Example: `https://upload.wikimedia.org/wikipedia/commons/0/0b/ReceiptSwiss.jpg`. |
| `image.base64` | body | any | no | The image as base64 (a `data:` URI is fine), ≤ 20 MB decoded. Default: `null`. |
| `charts` | body | boolean | no | Turn bar, line and pie charts into data tables. Default: `true`. |
| `format` | body | string | no | `json`: Markdown, text, blocks and tables; `markdown`: the page as `text/markdown`; `text`: plain text. One of: json, markdown, text. Default: `json`. |
| `include_blocks` | body | boolean | no | Include `blocks` (type, order, bounding box, content) in the JSON. Default: `true`. |

#### Quickstart

Extract text from an image or scanned PDF page by sending the image URL in the request body.

```bash
curl -X POST "https://api.eu.apyverse.com/rohit/read-pdf-pagedd/ocr" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"image":{"url":"https://upload.wikimedia.org/wikipedia/commons/0/0b/ReceiptSwiss.jpg"}}'
```

#### What you'll get back

Returns a JSON object with `markdown`, `text`, `blocks`, `tables`, and `page` fields. `page` is an object with `width` and `height` required, and may also include `dpi`, `count`, and `index`; `blocks` and `tables` are arrays describing the recognized content.

```json
{
  "markdown": "",
  "text": "",
  "blocks": [],
  "tables": [],
  "page": { "width": 0, "height": 0 }
}
```

## About

## What it does
PDF Page Reader extracts text and structure from a single PDF page or an image and returns it in Markdown, plain text, or structured JSON. Send a public PDF URL or base64 content for a PDF, or an image URL or base64 image, and get OCR-ready output back.

Use it when you need page-level extraction from scanned documents, forms, receipts, reports, or screenshots. The response includes `markdown`, `text`, `blocks`, `tables`, and `page`, so you can work with the reading order, page dimensions, detected tables, and per-block content without building your own OCR pipeline.

For PDFs, you can choose the `page` to read, set `dpi` for rendering resolution, switch `mode` between `auto`, `layout`, and `plain`, and disable chart-to-table conversion with `charts`. For images, you can use the same `mode`, `charts`, `format`, and `include_blocks` options. In JSON mode, tables and charts are returned in structured form alongside block-level content and bounding boxes.

PDF Page Reader fits document ingestion, automated indexing, quote extraction, and downstream parsing workflows where you need reliable text plus layout-aware output from a specific page.

## Usage

Base URL: `https://api.eu.apyverse.com` (default region — see
`GET https://apyverse.com/api/public/regions` for the rest).

Authenticate with an ApyHub API key in the `apy-token` header.
Full docs and a live playground: https://apyverse.com/rohit/service/read-pdf-pagedd
