Logo
Apdf tutorials August 2026 4 min read

How to OCR Scanned PDFs by Asking Claude

Every company has that folder: leases from the nineties, signed contracts that only exist as scans, supplier paperwork someone photographed in a hurry. To a computer they're photos — you can't search them, quote them, or ask about them.

If you already work with Claude, you don't need OCR software for this. Connect it to Apdf over MCP once, and “make this searchable” becomes a sentence — with the follow-up questions answered from the recovered text in the same conversation.

What you'll build
A 1997 lease that exists only as a scan, made searchable and answering questions — this conversation, working end to end: “What would rent be if we renew?” → “$2,580.00 per month — clause 5, page 2”
MCP access needs Pro (14-day trial, no card)
1

Connect Claude to Apdf

The MCP server lives at a single OAuth-signed endpoint — no API keys, no token files:

https://apdf.io/mcp/main

In Claude Desktop add it under Settings → Connectors → custom connector and sign in when the OAuth window opens. In Claude Code it's a one-liner:

claude mcp add --transport http apdf https://apdf.io/mcp/main
2

Confirm what you're dealing with

Point Claude at the scan (any publicly reachable URL) and ask. The agent checks the text layer before promising anything:

You
Is there any searchable text in this lease, or is it just a scan?
https://storage.example.com/lease-1997-scan.pdf
Claude
apdf · read-pdf-content
It's image-only: 2 pages, zero extractable characters. A text search would find nothing — this needs OCR.

The read-pdf-content tool returns the evidence:

{
    "pages_total": 2,
    "characters_total": 0,
    "pages": [
        { "page": 1, "characters": 0, "content": "" },
        { "page": 2, "characters": 0, "content": "" }
    ]
}
3

Make it searchable

OCR is heavy work, so the tool runs asynchronously: the agent gets a job id, polls check-job-status, and comes back with the result. You just keep talking:

You
Run OCR over it and give me a searchable version.
Claude
apdf · convert-pdf-with-ocr
Done — the OCR pass recovered the text on both pages and embedded it under the scan, so the PDF now looks identical but is fully searchable. Download it here (link valid for 1 hour).

The finished job carries the new file:

{
    "id": "01KY70KVEE9KZKHF0WCXJ74R9A",
    "created": "2026-07-23T08:14:03.000000Z",
    "status": "successful",
    "result": {
        "file": "https://apdf-files.s3.eu-central-1.amazonaws.com/841339df6a61cd66582fc.pdf",
        "size": 118042,
        "pages": 2,
        "expiration": "2026-07-23T09:14:32.656458Z"
    }
}
Heads up: Result files expire after 1 hour — download the searchable PDF or store it somewhere permanent right away.
4

Ask the document, don't read it

For a whole archive you don't even need the converted files — search-pdf-content-with-ocr and read-pdf-content-with-ocr run the OCR pass and answer directly from the recovered text:

You
What would the rent be if we exercised the renewal option?
Claude
apdf · search-pdf-content-with-ocr
$2,580.00 per month. Clause 5 on page 2 grants one five-year renewal option with base rent adjusted to that amount — up from the original $2,150.00.

The search result pins the claim to the page and line it came from:

{
    "search_text": "renew",
    "results_total": 1,
    "results_pages": 1,
    "results": [
        {
            "page": "2",
            "matched_line": "5. RENEWAL OPTION. Tenant shall have one option to renew for an additional five-year term, with",
            "exact_word": "RENEW"
        }
    ]
}
Tip: OCR reads what the scanner saw — on clean office scans it's excellent, but line breaks land where the layout put them and low-quality photos lose characters. Spot-check numbers you're going to rely on.

Where to go from here

The same connection carries every PDF operation — and the engagement layer behind them.

After the API call

Your code made the PDF.
Then it went dark.

Opened, read, re-read, dropped on page 4 — you never see any of it. Share the PDFs you generate through Apdf recipient links, and every signal becomes something you can act on: ping Slack, update the CRM, let an agent follow up. Same account, same API token, one more call.

Your PDF, after sending Live
document:loaded CFO
page:read p4 · 38s
link:clicked pricing

API · Webhook · MCP