Images enter a message as a content block of type image, alongside or instead of text blocks, with a source that is either base64-encoded bytes plus a media_type (image/jpeg, image/png, image/gif, or image/webp), or a hosted URL Claude fetches itself. Multiple images can sit in one turn, in any order relative to text blocks — useful for comparing two screenshots, reading a multi-page scanned document a page at a time, or asking Claude to spot the difference between a before and an after. There's a per-request limit on how many images you can include and a maximum image size; oversized images get downscaled automatically before the model sees them, which is worth knowing when a very large source image doesn't behave the way a smaller crop of the same region would.
Images cost tokens too
An image is not free context — it's converted into a token count that scales with its resolution, and that count is added to input_tokens the same as any text would be. A large, unnecessarily high-resolution screenshot when a modest crop would do is a real, avoidable cost, and it's also more tokens the model has to attend across, which can dilute focus on the part of the image that actually matters. Downscaling or cropping to the relevant region before sending is a legitimate and often-tested optimisation, not just a nice-to-have.
Where vision needs a second check
Vision is strong at description, layout understanding, chart-trend summarisation, and reading clean, well-lit text, but exact numeric or fine-grained extraction (a total on a receipt, a small value on a dense chart, a serial number in a low-resolution photo) is exactly where a model can misread a digit — a 3 for an 8, a comma for a decimal point. Application design for a vision feature that feeds a downstream decision should verify an extracted value against the source — either with a second pass, a checksum-style rule, a comparison against a second independent signal, or a human glance — rather than trusting the first read outright. This is not unique to Claude; it's a property of vision-based extraction generally, and the exam treats it as a design-pattern question, not a model-capability trivia question.
Key concept
Treat vision output the same way you'd treat OCR output: probably right, cheap to get, worth a validation step before it drives an automated decision. The higher the stakes of what happens next (a payment, a compliance filing, a medical record), the more that validation step matters.
Vision plus tool use plus structured output
The strongest pattern for extracting a structured value from an image is combining vision input with a forced tool call: give Claude an image block and a tool whose input_schema defines exactly the fields you need (a numeric total, a string currency, maybe a confidence field you ask the model to self-report), and set tool_choice to force that tool. This turns a free-text description into a typed, directly-validatable object your code can check without any additional parsing step — and asking for an extra field like the currency symbol the model actually saw gives you a free cross-check for free: if the symbol doesn't match your assumed currency, that's a signal to flag the extraction rather than act on it.
Documents, not just images
A separate document content block type exists for PDFs, distinct from the image block — the API can process a PDF's pages directly (each page effectively contributes vision-style tokens, plus any extractable text layer), which means a multi-page scanned contract or report doesn't need to be pre-converted into individual page images by your own code before it reaches Claude. Mixing a document block with ordinary text and image blocks in the same message is allowed, so a single turn can reasonably ask Claude to compare a photographed whiteboard against a page of an uploaded PDF spec.
What vision reads reliably, and what it doesn't
Beyond the numeric-extraction caveat above, vision performance also degrades with image quality in predictable ways: heavy JPEG compression artifacts, low resolution relative to the text size, poor lighting or skewed photo angles on a document, and handwriting (which is read far less reliably than printed text) all increase the error rate. A chart with a legend and clearly labeled axes is read far more reliably than one where the relevant value has to be visually estimated against gridlines. None of this means vision is unreliable in general — for layout understanding, general description, and reading clean printed text it's strong — but it does mean the exam's emphasis on a verification step for high-stakes numeric extraction is describing a real, specific failure mode rather than a generic disclaimer.
Key concept
If your application controls how the source image is captured (a scanning flow you built, rather than an arbitrary user upload), investing in image quality at capture time — good lighting, a straight-on angle, adequate resolution — often reduces extraction errors more cost-effectively than adding a second model pass after the fact.