| --- |
| title: Marker PDF Converter |
| emoji: ๐ |
| colorFrom: blue |
| colorTo: purple |
| sdk: docker |
| sdk_version: "3.10" |
| app_file: app.py |
| pinned: false |
| license: mit |
| --- |
| |
| # Marker PDF Converter |
|
|
| Convert PDF files to clean, LLM-optimized Markdown using [Marker AI](https://github.com/VikParuchuri/marker). |
|
|
| This Space provides a **FREE REST API** powered by HuggingFace's GPU infrastructure. |
|
|
| ## Usage |
|
|
| ### API Endpoints |
|
|
| **Convert PDF:** |
| ```bash |
| POST https://YOUR-USERNAME-marker-pdf-converter.hf.space/marker |
| ``` |
|
|
| **Check Status:** |
| ```bash |
| GET https://YOUR-USERNAME-marker-pdf-converter.hf.space/status/{request_id} |
| ``` |
|
|
| ### Example |
|
|
| ```python |
| import requests |
| |
| # Upload PDF |
| with open("document.pdf", "rb") as f: |
| response = requests.post( |
| "https://YOUR-USERNAME-marker-pdf-converter.hf.space/marker", |
| files={"file": f}, |
| data={ |
| "output_format": "markdown", |
| "paginate": "false" |
| } |
| ) |
| |
| request_id = response.json()["request_id"] |
| |
| # Poll for result |
| import time |
| while True: |
| status_response = requests.get( |
| f"https://YOUR-USERNAME-marker-pdf-converter.hf.space/status/{request_id}" |
| ) |
| data = status_response.json() |
| |
| if data["status"] == "complete": |
| markdown = data["markdown"] |
| print(markdown) |
| break |
| elif data["status"] == "error": |
| print(f"Error: {data['error']}") |
| break |
| |
| time.sleep(2) |
| ``` |
|
|
| ### JavaScript Example |
|
|
| ```javascript |
| // Upload PDF |
| const formData = new FormData(); |
| formData.append('file', pdfFile); |
| formData.append('output_format', 'markdown'); |
| |
| const response = await fetch( |
| 'https://YOUR-USERNAME-marker-pdf-converter.hf.space/marker', |
| { |
| method: 'POST', |
| body: formData |
| } |
| ); |
| |
| const { request_id } = await response.json(); |
| |
| // Poll for result |
| while (true) { |
| const statusResponse = await fetch( |
| `https://YOUR-USERNAME-marker-pdf-converter.hf.space/status/${request_id}` |
| ); |
| const data = await statusResponse.json(); |
| |
| if (data.status === 'complete') { |
| console.log(data.markdown); |
| break; |
| } else if (data.status === 'error') { |
| console.error(data.error); |
| break; |
| } |
| |
| await new Promise(resolve => setTimeout(resolve, 2000)); |
| } |
| ``` |
|
|
| ## Parameters |
|
|
| | Parameter | Type | Default | Description | |
| |-----------|------|---------|-------------| |
| | `file` | File | Required | PDF file to convert | |
| | `output_format` | String | "markdown" | Output format (currently only markdown) | |
| | `langs` | String | null | Language hints (e.g., "English,Spanish") | |
| | `paginate` | Boolean | false | Add page separators | |
| | `disable_image_extraction` | Boolean | false | Skip extracting images | |
| | `use_llm` | Boolean | false | Use LLM for better quality (slower, requires `api_key`) | |
| | `api_key` | String | null | Gemini API key (required if `use_llm=true`) | |
|
|