ECGMate

Paper ECG → digital signal → interpretation

Upload a photo or scan of a standard 12-lead ECG. ECGMate finds each lead, turns the ink back into a calibrated signal in millivolts, labels the P / QRS / T waves, and measures heart rate, intervals and axis.

đź”’ Everything runs in your browser: the image never leaves your device.

Starting…
First visit downloads ~60 MB (Python runtime + models). It's cached afterwards.
Or click an example to try it (synthetic ECGs rendered from PTB-XL):

How it works

  1. Lead detection: a fine-tuned YOLOv8s model locates the 12 leads and the rhythm strip.
  2. Digitization: colour filtering and a morphological black-hat remove the grid and stains; dynamic programming follows the trace; the mm scale is measured from the paper grid (FFT).
  3. Wave segmentation: a 1D U-Net labels P and T waves; a Pan-Tompkins-style detector anchors QRS complexes.
  4. Interpretation: heart rate (voted across leads), PR, QRS, QT/QTc, electrical axis and ST deviation, with rule-based findings.

Python (NumPy, SciPy, OpenCV) running on Pyodide · neural networks on ONNX Runtime Web · models trained with PyTorch / Ultralytics

⚠️ Portfolio / research demo, not a medical device. Do not use for diagnosis.