# Is AI accurate at reading lab reports?

> Doctano turns the lab reports you already have into one private, source-linked health timeline, with an AI that answers from your own results.

The useful question is not whether AI can read a report. It is which parts it reads reliably, and which parts you still have to check.

This is the Markdown version of https://doctano.com/guides/ai-lab-report-accuracy. The HTML page is the canonical version.

It depends on the page. AI extraction is reliable on clearly printed, single-column results with a visible range, and less reliable on handwriting, faint scans, multi-column layouts, and calculated indices. Doctano normalizes names, units, and ranges, but every value keeps a link to its source so it can be checked.

## What extraction is actually doing

Reading a lab report is not one task. It is several: find the rows, read the test name, read the value, read the unit, read the reference range, read the flag, and read the dates and the patient details. A misread can happen in any one of those steps, and the value can still look perfectly plausible afterwards.

That is why an error in a lab timeline is quiet rather than obvious. `10.7` instead of `107` is a real-looking number. A unit read from the wrong column looks like a unit.

## Where reports are easy, and where they are not

| On the page | Why it is hard | What catches it |
| --- | --- | --- |
| A printed row with test, value, unit, and range | Nothing. This is the easiest case. | A quick compare is still worth doing. |
| A faint or low-resolution scan | Characters blur together and decimals disappear. | Upload a clearer copy, then compare. |
| A photo with glare, shadow, or a curled page | Part of a column is simply not visible. | Retake the photo with even light and the full page. |
| Two columns of results side by side | Values can be paired with the wrong test. | Check the value's neighbour row, not just the value. |
| A handwritten correction or annotation | Handwriting is not printed text, and it may contradict the print. | Ask the lab what the issued value is. |
| A unit printed once in a column heading | The unit applies to rows that do not repeat it. | Check the unit against the report's heading. |
| A range written as text, such as "negative" | There is no number to compare. | Treat the result as qualitative, not numeric. |
| A calculated index that is not printed | It was never on the page, so nothing can be extracted. | Do not expect a derived number to appear. |
| Decimal and thousands separators | Conventions differ by country and by lab. | Compare two neighbouring values for scale. |

## Calculated indices are a special case

Some indices that people ask about are not printed by the lab at all. A ratio built from two reported values, or an index derived from a formula, does not exist as a row on the report. Extraction cannot find it, and an assistant that produces it is calculating, not reading.

That distinction matters, because a calculated number inherits any error in its inputs. If you want a derived value, calculate it from verified inputs and write down the formula.

## What Doctano does after extraction

The extraction step is the beginning, not the end. After it, Doctano resolves the raw test name to a standardized name, assigns a LOINC code where it can, filters out rows it cannot use, normalizes units to a standard unit, parses the reference range into something comparable, and classifies the result. A value without a usable range stays **unknown** rather than being forced into a label.

Each of those steps is a chance to correct an error and a chance to introduce one. Mapping SGPT and ALT to the same marker makes a trend possible; it also means a bad mapping can attach a value to the wrong history. That is why the source link matters more than the label.

## The verification step

Check three things on any value you plan to act on:

1. **The value,** including the decimal point.
2. **The unit,** compared with the report's own unit.
3. **The range,** compared with the range printed beside that result.

In Doctano, open the report from the result and use **View original** to see the uploaded file beside the extracted values. If they disagree, the file is right.

## Signs a value was misread

- A decimal place that makes the value ten or a hundred times larger than the ones around it.
- A unit that differs from other results in the same panel on the same report.
- A reference range that does not appear anywhere on the page.
- A marker name you cannot find on the report.
- The same test twice, with different values, from a single report.

## What no product can promise

No extraction product can promise a perfect read of every page, and a page that is illegible to a person is illegible to software. What a product can do is keep the source, show what it could not use, and avoid inventing a number for a row it could not read. Treat the extracted timeline as a well-organized copy, not as a replacement for the laboratory's report.

## AI accuracy and lab reports

**How accurate is AI at reading a lab report?**

There is no single number, because the answer depends on the page. A clearly printed, single-column report with a visible range is much easier than a faint scan, handwriting, or a layout with two sets of results side by side. Treat any extraction as a draft to verify.

**Which lab reports are hardest to extract?**

Handwritten corrections, faint or skewed scans, photographs with glare or shadow, multi-column layouts, values printed in a header or footnote, and calculated indices that are not printed anywhere on the page.

**Does Doctano check its own extraction?**

It runs a series of checks after extraction: resolving test names, assigning codes, normalizing units, parsing reference ranges, and setting values it cannot use to unknown rather than guessing. Those checks reduce errors; they do not remove the need to look.

**What should I do if an extracted value looks wrong?**

Open the report and use View original to compare the extracted value with the uploaded file. If the file itself is unclear, delete the report and upload a clearer copy. The original file stays available even when processing fails.

**Does AI replace the lab's own validation?**

No. The laboratory issued and validated the result. Extraction is a convenience that copies it into a timeline, and the report remains the authoritative record.

## What this is not

**Verify before you act.** Extraction can be wrong, and a value in a timeline is a copy of a report, not the report itself. Check important results against the original and speak to a qualified professional.

## Links

- [Homepage](https://doctano.com/)
- [Lab report tracker](https://doctano.com/lab-report-tracker)
- [How Doctano reads a report](https://doctano.com/guides/how-doctano-reads-a-report)
- [What happens to an upload](https://doctano.com/guides/what-happens-to-your-lab-reports)
- [Photograph a lab report](https://doctano.com/guides/photograph-lab-report)
- [All guides](https://doctano.com/guides/)
