Paddle Ocr
Playground
Try it on WavespeedAI!PaddleOCR-VL is an ultra-compact 0.9B parameter vision-language model for document parsing, supporting 109 languages with text, table, formula, and chart recognition in JSON or Markdown output. Ready-to-use REST inference API, best performance, no cold starts, affordable pricing.
Features
WaveSpeedAI PaddleOCR
Extract text from images with WaveSpeedAI PaddleOCR — a fast, accurate optical character recognition model. Simply upload an image and get clean, structured text output in JSON or Markdown format. Perfect for document digitization, data extraction, and text recognition tasks.
Why It Works Great
- High accuracy: Powered by PaddleOCR for reliable text recognition.
- Multi-language support: Recognizes text in multiple languages.
- Flexible output: Choose between JSON or Markdown format.
- Document-friendly: Handles scanned documents, screenshots, and photos.
- Ultra-affordable: Just $0.005 per image.
- Fast processing: Quick turnaround for high-volume workflows.
Parameters
| Parameter | Required | Description |
|---|---|---|
| image | Yes | Image containing text (upload or public URL). |
| output_format | No | Output format: json or markdown. Default: markdown. |
How to Use
- Upload your image — drag and drop or paste a public URL.
- Choose output format — select JSON for structured data or Markdown for readable text.
- Run — click the button to process.
- Copy or download — use the extracted text as needed.
Pricing
$0.005 per image.
Output Formats
| Format | Description | Best For |
|---|---|---|
| markdown | Clean, readable text with formatting | Documents, articles, readable output |
| json | Structured data with position info | Data processing, integration, automation |
Best Use Cases
- Document Digitization — Convert scanned documents to editable text.
- Data Extraction — Pull text from invoices, receipts, and forms.
- Screenshot Text — Extract text from screenshots and images.
- Business Cards — Digitize contact information quickly.
- Batch Processing — Process large volumes of documents affordably.
- Content Migration — Convert image-based content to text format.
Supported Content Types
- Scanned documents (PDF pages, printed text)
- Screenshots and screen captures
- Photos of documents and signs
- Handwritten text (with varying accuracy)
- Multi-column layouts
- Tables and structured content
Pro Tips for Best Results
- Use high-resolution images for better accuracy.
- Ensure good contrast between text and background.
- Straighten skewed documents before processing.
- Use JSON format when you need text positions or bounding boxes.
- Use Markdown format for clean, human-readable output.
- At $0.005 per image, batch processing is extremely cost-effective.
Notes
- If using a URL, ensure it is publicly accessible.
- Processing time is typically under a second per image.
- Accuracy depends on image quality and text clarity.
- Supports multiple languages and character sets.
Authentication
For authentication details, please refer to the Authentication Guide.
API Endpoints
Submit Task & Query Result
# Submit the task
curl --location --request POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/paddle-ocr" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}" \
--data-raw '{
"output_format": "markdown",
"enable_sync_mode": true
}'
# Get the result
curl --location --request GET "https://api.wavespeed.ai/api/v3/predictions/${requestId}/result" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}"
Parameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| image | string | Yes | - | Document image to parse. Supports text, tables, formulas, and charts recognition in 109 languages. | |
| output_format | string | No | markdown | json, markdown | Output format: 'json' for structured data or 'markdown' for human-readable text. |
| enable_sync_mode | boolean | No | true | - | If set to true, the function will wait for the result to be generated and uploaded before returning the response. It allows you to get the result directly in the response. This property is only available through the API. |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data.id | string | Unique identifier for the prediction, Task Id |
| data.model | string | Model ID used for the prediction |
| data.outputs | array | Array of URLs to the generated content (empty when status is not completed) |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.has_nsfw_contents | array | Array of boolean values indicating NSFW detection for each output |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |
Result Request Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | Task ID |
Result Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data | object | The prediction data object containing all details |
| data.id | string | Unique identifier for the prediction, the ID of the prediction to get |
| data.model | string | Model ID used for the prediction |
| data.outputs | string | Object containing the parsed document content in the requested format (JSON or Markdown). |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |