Free prescription OCR

Upload a prescription and extract the prescriber, patient, medicines, doses and dates as structured data, free. It reads printed prescriptions and clear handwriting from a scan or photo, with no account needed. It's for administrative work only: never use it to dispense or take a medicine.

Upload your prescriptionTake a photo or pick a PDF, up to 10 MB
  • Free
  • No sign-up, no card
  • Download as Excel, CSV or JSON

Prescriptions hold health information. Upload only what you're allowed to share. Not for dispensing or clinical use. We keep the first page and the result for 7 days to run and improve this tool, then delete them. The rest of your file is not stored. Privacy policy

Sample. Every value is invented.
Sample prescription from Sampletown Family Clinic
{
  "prescriber_name": "Dr Sam Example",  "registration_number": "REG-00000",  "patient_name": "Alex Sample",  "prescription_date": "2026-10-18"}
  • Any layout, no template

    It works out the fields from the page itself, so there's nothing to set up.

  • Scans and phone photos

    Digital PDFs, scanned pages and photos all go through the same way.

  • Structured, not just text

    Named fields and table rows you can download as Excel, CSV or JSON, not a wall of OCR text.

  • An API when you need it

    The same data from your own code, as the sample call further down shows.

What the free prescription reader extracts

  • Prescriber: doctor's name, qualifications, clinic, registration number and contact details.
  • Patient: name, age, sex and date of the prescription.
  • Medicines: drug name, strength, form, dose, frequency, duration and quantity.
  • Notes: instructions, refills and follow-up dates where they're written.

Types of prescription you can upload

  • Printed prescriptions and those from clinic software.
  • Handwritten prescriptions and doctor's notes, with varying results.
  • E-prescriptions, shared as a PDF or a screenshot.
  • Eyeglass and contact lens prescriptions.
  • Repeat prescriptions and pharmacy refill slips.

Prescription names by region

What a prescription is called and what identifies the prescriber
RegionNamesPrescriber details
PakistanPrescription, parchi, doctor's slipPMDC registration number
IndiaPrescription, Rx, OPD slipState medical council or NMC number
UAE, Saudi ArabiaPrescription, e-prescription (Wasfaty)Licence number
United KingdomNHS prescription, FP10, private prescriptionGMC number
United States, CanadaRx, e-prescription, refill slipNPI, DEA number where required
EuropeRezept, ordonnance, recetaNational prescriber number

What happens with handwriting

Clear handwriting often reads well, but a hurried script is hard for people and software alike. The tool returns its best reading of what's on the page, and it can get it wrong. Treat handwritten values as a draft to check against the original, every time.

Prescriptions aren't a built-in document type yet, so an account reads them through a workflow built from one sample, and values under your confidence threshold go to a person for review. See healthcare administration.

Sample API call

This is how the same prescription looks from your own code. wf_demo_prescription is a dummy workflow id and every value below is invented, so the call won't run as written. A real run reads every page and adds a confidence score and page position to each field.

Run a workflow, then read the result
curl -X POST "$DOCREFINERY_API/v1/workflows/wf_demo_prescription/run" \
  -H "Authorization: Bearer $DOCREFINERY_API_KEY" \
  -F "[email protected]"

# Take trace_id from the answer, then poll until status is "fulfilled"
curl "$DOCREFINERY_API/v1/runway/9f1c0a7e" \
  -H "Authorization: Bearer $DOCREFINERY_API_KEY"
Response (invented values)
{
  "trace_id": "9f1c0a7e",
  "status": "fulfilled",
  "document_type": "prescription",
  "result": {
    "fields": [
      {
        "key": "prescriber_name",
        "alias": "Prescriber Name",
        "text": "Dr Sam Example",
        "field_confidence": 0.99,
        "location": { "page": 1, "bbox": [0.08, 0.12, 0.46, 0.14] }
      },
      {
        "key": "registration_number",
        "alias": "Registration Number",
        "text": "REG-00000",
        "field_confidence": 0.98,
        "location": { "page": 1, "bbox": [0.08, 0.17, 0.46, 0.19] }
      },
      {
        "key": "patient_name",
        "alias": "Patient Name",
        "text": "Alex Sample",
        "field_confidence": 0.97,
        "location": { "page": 1, "bbox": [0.08, 0.22, 0.46, 0.24] }
      },
      {
        "key": "medicines",
        "alias": "Medicines",
        "table": [
          [
            { "key": "medicine", "alias": "Medicine", "text": "Sampleprofen 200 mg" },
            { "key": "dose", "alias": "Dose", "text": "1 tablet" },
            { "key": "frequency", "alias": "Frequency", "text": "Twice daily" },
            { "key": "days", "alias": "Days", "text": "5" }
          ]
        ]
      }
    ],
    "extraction_approval": "auto",
    "low_confidence_fields": []
  }
}

Make it run on your own prescription

  1. Create a free account.
  2. Upload one sample under Workflows, keep the fields you want and save. That gives you a real workflow id.
  3. Create an API key under Settings. Keys are switched on per account, so ask us if you don't see the option.
  4. Set DOCREFINERY_API and DOCREFINERY_API_KEY as in the quickstart, and swap in your id.

Free try or free account?

Free try and free account, compared
FeatureFree tryFree account
Pages readPage 1Every page
Allowance5 tries a day100 pages a month
File sizeUp to 10 MBUp to 100 MB
How it readsFinds the fields on the pageA workflow built from one sample
CheckingCompare with your pageConfidence scores and page citations
OutputFields on screen, download as Excel, CSV or JSONExcel, CSV and JSON for every page, and API keys on request

Common questions

Can it read a doctor's handwriting?

Sometimes. Clear handwriting often reads well, but a rushed script can be misread. Always check every value against the original prescription, and never rely on the result to dispense or take a medicine.

Is this prescription reader free?

Yes. You get 5 free tries a day with no account or card. Each try returns the prescriber, patient and medicines from the first page as structured data.

Can pharmacies use this to dispense?

No. This tool is for administrative work such as records and claims. A qualified person must check the original before anything is dispensed.

Is my prescription stored?

We keep the first page and the result for 7 days to run and improve the tool, then delete them. Upload only prescriptions you're allowed to share, and consider covering the patient's name when testing.

Related

Try it on your own prescription.

Free, with no sign-up and no card.