Free medical bill OCR
Upload a hospital bill or medical invoice and extract the patient, provider, service dates, charges and totals as structured data, free. It reads PDFs, scans and photos, with no account needed. It's for billing and administration, and it gives no clinical or coverage advice.
- Free
- No sign-up, no card
- Download as Excel, CSV or JSON
Medical bills hold health information. Don't upload a patient's bill unless you're allowed to. Use a redacted copy to test. 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
Sampletown General Hospital
Patient bill
- Patient Name
- Alex Sample
- Patient Number
- MR-000123
- Admission Date
- 2026-09-12
- Discharge Date
- 2026-09-14
- Insurance Paid
- 860.00
- Amount Due
- 215.00
| Date | Service | Amount |
|---|---|---|
| 2026-09-12 | Consultation | 120.00 |
| 2026-09-12 | Blood panel | 95.00 |
| 2026-09-13 | Ward, per day | 430.00 |
{
"patient_name": "Alex Sample", "patient_number": "MR-000123", "admission_date": "2026-09-12", "discharge_date": "2026-09-14"}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 medical bill extractor reads
- Provider: hospital, clinic or lab name, address and tax or provider number.
- Patient: name, patient or account number, admission and discharge dates.
- Services: date of service, description, procedure code where printed, quantity and charge.
- Payment: insurance paid, adjustments, patient balance and amount due.
Types of medical bill you can upload
- Hospital bills, discharge bills and itemised hospital statements.
- Clinic, doctor and specialist invoices.
- Diagnostic and lab bills, including radiology and pathology.
- Pharmacy bills and dental or eye care invoices.
- Explanation of benefits (EOB) statements and patient statements.
Medical billing terms by region
| Region | Names | Codes and references |
|---|---|---|
| Pakistan | Hospital bill, discharge bill, Sehat Card claim bill | MR number, panel or corporate reference |
| India | Hospital bill, final bill, TPA bill, discharge summary bill | UHID, IPD number, GSTIN, TPA reference |
| UAE, Saudi Arabia | Medical invoice, insurance claim invoice | Member ID, TRN, approval number |
| United States | Medical bill, itemised bill, superbill, EOB, CMS-1500, UB-04 | CPT, ICD-10, NPI |
| United Kingdom | Private medical invoice, treatment invoice | Provider number, CCSD codes |
| Canada, Australia | Medical invoice, Medicare statement | Item numbers, provider numbers |
Why itemised bills need every page
A summary on page 1 tells you the total. The line-by-line charges that claims and billing teams check usually run on behind it, sometimes for many pages. A free account reads every page, and rows carry over into one table.
Medical bills aren't a built-in document type yet, so an account reads them through a workflow: upload one sample, pick the fields you want and save. If you need a type trained on your own samples, we do that at no charge. See healthcare administration for how billing teams use it.
Sample API call
This is how the same medical bill looks from your own code. wf_demo_medical_bill 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.
curl -X POST "$DOCREFINERY_API/v1/workflows/wf_demo_medical_bill/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"{
"trace_id": "9f1c0a7e",
"status": "fulfilled",
"document_type": "medical_bill",
"result": {
"fields": [
{
"key": "patient_name",
"alias": "Patient Name",
"text": "Alex Sample",
"field_confidence": 0.99,
"location": { "page": 1, "bbox": [0.08, 0.12, 0.46, 0.14] }
},
{
"key": "patient_number",
"alias": "Patient Number",
"text": "MR-000123",
"field_confidence": 0.98,
"location": { "page": 1, "bbox": [0.08, 0.17, 0.46, 0.19] }
},
{
"key": "admission_date",
"alias": "Admission Date",
"text": "2026-09-12",
"field_confidence": 0.97,
"location": { "page": 1, "bbox": [0.08, 0.22, 0.46, 0.24] }
},
{
"key": "charges",
"alias": "Charges",
"table": [
[
{ "key": "date", "alias": "Date", "text": "2026-09-12" },
{ "key": "service", "alias": "Service", "text": "Consultation" },
{ "key": "amount", "alias": "Amount", "text": "120.00" }
]
]
}
],
"extraction_approval": "auto",
"low_confidence_fields": []
}
}Make it run on your own medical bill
- Create a free account.
- Upload one sample under Workflows, keep the fields you want and save. That gives you a real workflow id.
- Create an API key under Settings. Keys are switched on per account, so ask us if you don't see the option.
- Set
DOCREFINERY_APIandDOCREFINERY_API_KEYas in the quickstart, and swap in your id.
Free try or free account?
| Feature | Free try | Free account |
|---|---|---|
| Pages read | Page 1 | Every page |
| Allowance | 5 tries a day | 100 pages a month |
| File size | Up to 10 MB | Up to 100 MB |
| How it reads | Finds the fields on the page | A workflow built from one sample |
| Checking | Compare with your page | Confidence scores and page citations |
| Output | Fields on screen, download as Excel, CSV or JSON | Excel, CSV and JSON for every page, and API keys on request |
Common questions
Can I extract data from a hospital bill for free?
Yes. Upload the bill and page 1 comes back as structured fields and rows of charges. You get 5 free tries a day with no account or card.
Can it read an itemised medical bill?
Yes. Charges come back as table rows with their date, description and amount when the bill prints them. Itemised bills that run past page 1 need a free account.
Is this tool HIPAA compliant?
docRefinery makes no HIPAA or other regulatory compliance claim, and this free tool is not meant for regulated patient data. A SOC 2 Type II audit is in progress with no report issued yet. Enterprise plans support private VPC and air-gapped on-premises deployment.
Will it tell me if a medical bill is wrong?
No. It reads what's printed so you can review or reuse the data. It doesn't judge whether a charge, code or coverage decision is correct.
Related
- Healthcare administrationHealthcare document extraction for claim forms, EOBs, referrals and intake forms: structured data for billing teams. Administrative use only, not clinical.
- Prescription OCRFree prescription OCR for printed and clear handwritten scripts. Extract the prescriber, medicines, dose and dates as structured data. Not for dispensing.
- Insurance claim OCRFree insurance claim form OCR. Extract the policy, claimant, dates and amounts from a claim form as structured data, with no account or card needed.
- Invoice OCRFree invoice OCR and data extraction. Pull supplier, tax, totals and line items from a PDF or scan as structured JSON, with no account or card needed.
Try it on your own medical bill.
Free, with no sign-up and no card.