Case study, page T-0045
Missed a statementComplete right bundle branch block and atrial fibrillation
PTB-XL record 20674, a man aged 57. A public research ECG from Germany, printed on A4, photographed by TraceRead's photo simulator and read end to end. Below is the AI first read, next to the original recording and what the dataset's cardiologists recorded.
0.99
median match with the original recording
0.99 after lining up by up to a tenth of a second
1 of 2
cardiologists' statements that TraceRead AI also flagged
4
extra patterns flagged for the doctor to keep or remove
61
heart rate from the photo, beats a minute
61 on the original recording
The AI first read
What the reading doctor gets
Hover a lead to see how closely the red rebuilt line follows the original recording. Untick the box to see the page without it.

Numbers under each lead: how closely the rebuilt line follows the original recording, where 1.00 is a perfect match. Median for this page: 0.99.
PTB-XL record 20674, a man aged 57. A4 paper, 3x4 with one lead II strip, pulses read 4 of 4.
Measures
| Measure | From the photo | Original recording | Reference program |
|---|---|---|---|
| Heart rate (beats a minute) | 61 | 61 | |
| PR interval (ms) | 190 | 191 | |
| QRS width (ms) | 138 | 136 | |
| QT interval (ms) | 423 | 423 | |
| QTc, corrected for heart rate (ms) | 426 | 426 | |
| Heart axis (degrees) | 24 | 49 |
Patterns flagged, with TraceRead AI's score
Sinus rhythm
the usual rhythm, started by the heart's natural pacemaker
88Complete right bundle branch block
the signal is delayed on its way to the right lower chamber, so the main spike is wide
69Incomplete right bundle branch block
a milder delay of the signal on its way to the right lower chamber
41Q waves present
a small downward dip at the start of the main spike, which can be normal or can follow damage to the heart muscle
5Left atrial enlargement
the upper left chamber may be larger or under more strain than usual
2
Also checked, below the flag line: Right ventricular hypertrophy (11), Inferior infarct pattern (10).
What the dataset's cardiologists recorded for this ECG
- Complete right bundle branch block
- Atrial fibrillation
Against the cardiologists
TraceRead AI and the dataset's cardiologists, side by side
TraceRead AI flagged 5 patterns. 1 of them is also among the dataset's statements (Complete right bundle branch block). Not in the dataset's statements: Sinus rhythm, Incomplete right bundle branch block, Q waves present and Left atrial enlargement. In the dataset but not flagged: Atrial fibrillation.
Found by both 1
Complete right bundle branch block
The signal is delayed on its way to the right lower chamber, so the main spike is wide.
69
Recorded by the cardiologists only 1
Atrial fibrillation
An irregular rhythm where the upper heart chambers quiver.
Flagged by TraceRead AI only 4
Sinus rhythm
The usual rhythm, started by the heart's natural pacemaker.
88Incomplete right bundle branch block
A milder delay of the signal on its way to the right lower chamber.
41Q waves present
A small downward dip at the start of the main spike, which can be normal or can follow damage to the heart muscle.
5Left atrial enlargement
The upper left chamber may be larger or under more strain than usual.
2
The doctor's review
What the reading doctor would check here
Worked out from this run's own numbers: where the rebuilt line strays, which measures moved, and which flags to keep or remove.
- 1The rebuilt line follows the original recording closely in every lead; the lowest match is lead aVF at 0.98.
- 2Heart axis: 24 from the photo against 49 on the original recording (degrees).
- 3The cardiologists recorded atrial fibrillation, which TraceRead AI did not flag.
- 4TraceRead AI flagged 4 patterns the cardiologists did not record: sinus rhythm, incomplete right bundle branch block, Q waves present and left atrial enlargement. The doctor keeps or removes each one.
- 5The calibration pulse looks wider than expected, which would mean a paper speed of about 30.8 millimetres a second. TraceRead still reads the page at 25 millimetres a second, the usual speed, so timings could be a little off if that reading were right.
An AI first read is not the last word.
- A qualified doctor reviews every AI first read. Nothing reaches a patient until a doctor signs it.
- Do not rely on TraceRead alone in an emergency.
- A normal AI first read does not rule out heart disease.
- For adults, 18 and over.
Stage by stage
How TraceRead read this page
Every step of this run, with what went in and what came out.
Step 1: the photo
On the phoneWhat went in: one photo of a printed ECG
PTB-XL record 20674, a public research ECG from Germany, was printed as page T-0045 on A4 at 25 mm a second and 10 mm per millivolt. TraceRead's photo simulator then took a photo of it: tilted, lit unevenly, slightly blurred, with sensor noise and JPEG compression, the way a phone camera would.
This record was in PTB-XL's test set, so TraceRead AI never saw it during training. The person was a man aged 57. Age and sex are all TraceRead keeps.

Step 2: page finder
TraceRead AIFind the paper and how it is turned
TraceRead AI looks at the whole photo and marks the four corners of the page, and which way up it is. Fixed code then measures the printed millimetre grid to correct the scale and the tilt, and makes the page flat.
- Page found
- yes
- Turned
- 0 degrees
- Paper
- A4

Step 3: layout reader
TraceRead AIWork out where each lead sits
Every row of a printout starts with a calibration pulse, a small square step that is 10 mm tall for 1 millivolt. TraceRead AI finds the pulses, and fixed code matches them against 14 known page layouts to work out where each of the 12 leads sits and how long it runs.
- Layout
- 3x4 with one lead II strip
- Calibration pulses read
- 4 of 4
- Height of 1 millivolt
- 10 mm
- Paper speed used
- 25 mm a second
- Pulse width suggested
- 30.8 mm a second
- Layout match
- 0.986
Warnings this step raised
- The calibration pulse looks wider than expected, which would mean a paper speed of about 30.8 millimetres a second. TraceRead still reads the page at 25 millimetres a second, the usual speed, so timings could be a little off if that reading were right.
Step 4: trace rebuild
TraceRead AIRebuild every lead as a digital signal
TraceRead AI marks which pixels are trace ink. Fixed code then follows the ink of each lead, column by column, and turns it into millivolts, 500 points a second. The rebuilt line is drawn back over the paper so a doctor can see at a glance if a lead was misread.
Because this ECG is public, we can check the rebuilt signal against the original recording. 1.00 would be a perfect match; the second number allows the two to be lined up by up to a tenth of a second.
| Lead | Seconds shown | Ink found | Match | Lined up |
|---|---|---|---|---|
| I | 0 to 2.5 | 100% | 1.00 | 1.00 |
| aVR | 2.5 to 5 | 100% | 0.99 | 0.99 |
| V1 | 5 to 7.5 | 100% | 1.00 | 1.00 |
| V4 | 7.5 to 10 | 100% | 0.99 | 0.99 |
| II | 0 to 2.5 | 100% | 0.99 | 0.99 |
| aVL | 2.5 to 5 | 100% | 0.99 | 0.99 |
| V2 | 5 to 7.5 | 100% | 0.99 | 0.99 |
| V5 | 7.5 to 10 | 100% | 0.99 | 0.99 |
| III | 0 to 2.5 | 100% | 0.99 | 0.99 |
| aVF | 2.5 to 5 | 100% | 0.98 | 0.99 |
| V3 | 5 to 7.5 | 100% | 0.99 | 1.00 |
| V6 | 7.5 to 10 | 100% | 1.00 | 1.00 |
| II, rhythm strip | 0 to 10 | 1.00 | 1.00 |
Median match for this page: 0.99.

Step 5: coverage map
Fixed codeMark which seconds the paper shows
A 3x4 printout shows each lead for only 2.5 of the 10 seconds the machine recorded. The coverage map tells the pattern finder exactly which seconds of each lead it has, so a part that is not on the paper is never read as a flat line.
Step 6: hold for retake
Fixed codeDecide whether the photo can be read
Before any pattern is read, a fixed hold rule decides whether the rebuild can be trusted. Version 1 looked only at how well the page matched a known layout and how unsure the AI was about the five main groups. Version 2 also checks the calibration, the page shape, how much trace was found, whether the overlapping lead II pieces agree, and clipped or flat parts. If the rebuilt trace looks unreliable, it asks for a new photo instead of giving a first read. Both versions' decisions for this page are shown below.
The layout match score was 0.986 (a photo is held back when the score is below 0.888) and 4 of 4 calibration pulses were read. The AI's own uncertainty about the five main heart groups was 0.204 (a photo is held back above 0.497). Neither check fired, so the photo is used.
- Every check passed, so the rebuilt trace is used.
| Check | Value | Limit | Result |
|---|---|---|---|
| page_found | passed | ||
| gain_standard | 0.009 | 0.05 | passed |
| paper_speed | 30.8 | 2434 | passed |
| layout_match | 0.986 | 0.889 | passed |
| page_shape | 1.009 | 1.7 | passed |
| ink_median | 1 | 0.9 | passed |
| coverage | 1 | 1 | passed |
| lead_ii_agree | 0.992 | 0.49 | passed |
| lead_ii_amplitude | 0.004 | 0.5 | passed |
| goldberger | 0.08 | 1.45 | passed |
| edge_clipping | 0 | 0.027 | passed |
| flat_run | 0.006 | 0.34 | passed |
| lead_ii_raw | 0.992 | 0.2 | passed |
Step 7: measures
Fixed codeMeasure the heartbeat
Fixed code finds every beat, lines the leads up and measures them together. The same code run on the original recording shows how much the photo changed each number, and a reference ECG program from the PTB-XL+ dataset gives a second opinion.
| Measure | From the photo | Original recording | Reference program |
|---|---|---|---|
| Heart rate (beats a minute) | 61 | 61 | 61 |
| PR interval (ms) | 190 | 191 | 186 |
| QRS width (ms) | 138 | 136 | 144 |
| QT interval (ms) | 423 | 423 | 444 |
| QTc, corrected for heart rate (ms) | 426 | 426 | 446 |
| Heart axis (degrees) | 24 | 49 | -18 |
Step 8: pattern finder
TraceRead AIScore 71 patterns and flag the ones that pass their line
TraceRead AI reads the 12 rebuilt leads and the coverage map together and scores 71 patterns of rhythm, conduction, thickened heart muscle and ST and T changes. A pattern is flagged when its score passes a line set in advance on other ECGs, never on this one. The lines are set so that patterns are not missed, which is why a pattern can be flagged with a low score, and why some flags are wrong: the doctor decides.
What the dataset's cardiologists recorded for this ECG
- Complete right bundle branch block
- Atrial fibrillation
TraceRead AI flagged 5 patterns. 1 of them is also among the dataset's statements (Complete right bundle branch block). Not in the dataset's statements: Sinus rhythm, Incomplete right bundle branch block, Q waves present and Left atrial enlargement. In the dataset but not flagged: Atrial fibrillation.
TraceRead AI's score for each pattern, from 0 to 100. The thin line is where that pattern gets flagged.
Sinus rhythm
flaggedthe usual rhythm, started by the heart's natural pacemaker
88Complete right bundle branch block
flaggedthe signal is delayed on its way to the right lower chamber, so the main spike is wide
69Incomplete right bundle branch block
flaggeda milder delay of the signal on its way to the right lower chamber
41Right ventricular hypertrophy
below the linethe muscle wall of the right lower chamber may be thicker than usual
11Inferior infarct pattern
below the linea pattern linked to damage to the bottom wall of the heart muscle
10Q waves present
flaggeda small downward dip at the start of the main spike, which can be normal or can follow damage to the heart muscle
5Left atrial enlargement
flaggedthe upper left chamber may be larger or under more strain than usual
2
See TraceRead read a paper ECG
We show you TraceRead reading public research ECGs, step by step, and talk through how your team prints, photographs and reads ECGs today.