Free forever · 200 OCR + 50 extraction pages/mo

The image to text API built for messy real-world photos.

Skewed angles, mixed lighting, low resolution, busy backgrounds. JPG, PNG, TIFF, WebP, and BMP all return the same typed JSON. No client-side preprocessing, no per-format branches in your code.

Get started today for free. No credit card required.

Live demo

Try it on a real document.

Run OCR on a sample document, or drop in your own. No sign-up, no API key.

receipt
A receipt is loaded and ready
Hit Run OCR to watch OCRWell pull the text out live. No sign-up, no API key.

Or run it on your own document

Drop a document here

PDF, PNG, JPEG, TIFF, WebP, or BMP. Up to 4 MB, single page.

Or try a sample

Before and after

See a phone photo become clean text.

Photos, scans, and screenshots all return the same page-by-page text shape. No client-side image cleanup or format-specific endpoint required.

Source document
A scanned UK residential electricity bill
Extracted output
bill.txt
text
NORTHBROOK ENERGY
Your electricity statement

MS. A. RAVENSCROFT
14 Church Lane
Stroud
GL5 1QP

Account number: NE-8847-2310
Bill date: 03 Mar 2026
Bill period: 01 Feb 2026 to 28 Feb 2026

Standing charge (28 days at 50.00p/day): £14.00
Electricity used (300 kWh at 20.00p/kWh): £60.00
Subtotal: £74.00
VAT at 5%: £3.70
Total due: £77.70

Please pay by 24 Mar 2026
Structured output

Need fields, not just text? Switch to structured mode.

Send a JSON Schema with the photo and the image comes back as typed fields and repeating rows, not a wall of text. Same endpoint, same async job, a result shaped to your app.

Source photo
A handwritten site safety inspection checklist on a clipboard
Structured JSON
inspection-rows.json
json
{
  "data": {
    "document_type": "Site safety inspection report",
    "site": "Northbrook Plant Upgrade",
    "rows": [
      {
        "item": "Scaffolding securely erected",
        "status": "Pass",
        "notes": "Valid certificate displayed"
      },
      {
        "item": "Walkways clear of debris",
        "status": "Fail",
        "notes": "debris blocking main access path"
      }
    ]
  }
}
One endpoint, two modes

POST an image. Get text, or structured JSON.

The API handles upload, processing, and retrieval through a single async flow. Text mode returns pages[] with the words in the image. Send a schema instead and the same job returns typed fields and rows. Poll for the job or receive an HMAC-signed webhook.

submit-photo.sh
bash
# Send a phone photo, get text back
$ curl https://api.ocrwell.com/v1/documents \
    -H "X-API-Key: $OCRWELL_KEY" \
    -d '{"upload_id":"upl_01H7","mode":"text"}'
job.json
json
{
  "job": {
    "id": "019539a6-6c3d-7e5f",
    "status": "completed",
    "mode": "text",
    "page_count": 1
  },
  "result": {
    "pages": [
      { "page": 1, "text": "MELBOURNE MUSEUM\nOpen daily 10am to 5pm..." }
    ]
  }
}
submit-structured.sh
bash
# Same photo, ask for structured rows
$ curl https://api.ocrwell.com/v1/documents \
    -H "X-API-Key: $OCRWELL_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "upload_id":"upl_01H7",
      "mode":"structured",
      "schema":{
        "document_type":"",
        "rows":[{"item":"","status":"","notes":""}]
      }
    }'
structured-result.json
json
{
  "job": {
    "id": "019539a6-6c3d-7e5f",
    "status": "completed",
    "mode": "structured",
    "page_count": 1
  },
  "result": {
    "data": {
      "document_type": "Site safety inspection report",
      "site": "Northbrook Plant Upgrade",
      "rows": [
        { "item": "Scaffolding securely erected", "status": "Pass", "notes": "Valid certificate displayed" },
        { "item": "Walkways clear of debris", "status": "Fail", "notes": "debris blocking main access path" }
      ]
    }
  }
}
What it handles

Where teams use the image to text API.

Skew + lighting tolerant

Real photos, not just scans

Phone photos taken at angles, with shadows, in low light, or against busy backgrounds. The same endpoint that handles a flatbed scan handles a snapshot from a queue.

JPG · PNG · TIFF · WebP · BMP

Every common format

JPEG, PNG, TIFF, WebP, and BMP. Up to 20 MB per file. No client-side conversion step required, no separate endpoints per format.

Any image source

Screenshots and signage too

Browser screenshots for accessibility tools, photos of signs and menus, product packaging, whiteboards. Returns the same typed JSON shape as any other source.

Schema-shaped

Structured mode for fields

Send a JSON Schema and receive typed fields and repeating rows instead of raw text, from the same endpoint that returns plain page text.

Async-ready

Polling or signed webhooks

Poll GET /v1/jobs/:id while a user waits, or receive an HMAC-signed callback when the job finishes. Built for mobile uploads and background workers.

Private by default

Short-lived storage, no training

Uploaded images are deleted after processing and results expire after retrieval. Your files are never used to train AI models.

FAQ

Image to text API questions.

Which image formats does the API accept?

JPEG, PNG, TIFF, WebP, and BMP, up to 20 MB per file. There is no client-side conversion step and no separate endpoint per format.

Does it work on phone photos taken at an angle or in poor light?

Yes. Skewed angles, mixed lighting, low resolution, and busy backgrounds are handled server-side, so you do not need to deskew, crop, or clean up the image before sending it.

Can it read handwriting in a photo?

Yes. Printed and handwritten text return the same typed JSON. For documents that are mostly handwriting, such as forms and field notes, see the handwriting to text API.

What does the response contain, and how is it priced?

Text mode returns a result.pages array with the text read from the image. Pricing is per page processed, and the free forever tier covers 200 OCR pages per month.

Can I get structured JSON from an image instead of raw text?

Yes. Submit in structured mode with a JSON Schema and the job returns typed fields and arrays. For common photo types, see the receipt and invoice OCR APIs.

Pricing

Start free. Pay only when you scale.

Free forever
200 OCR + 50 extraction pages every month
  • No credit card required.
  • Hard cap, no overage charges.
  • Paid plans from $20/mo when you grow.

Turn images into text today.

Generate an API key, upload your first photo, and have clean text back in seconds. Free forever tier covers 200 OCR pages per month.

Get your API key today No credit card required. 200 OCR + 50 extraction pages / month, free forever.