v2.4 CURRENT PROTOCOLBiometrics

Biometric Analysis

The Signature API looks not only at the shape of a signature on paper but at the traces of the hand movement that produced it. Pen speed or pressure cannot be measured directly from a static image; line width, ink density and changes in curvature do, however, give reliable indirect indicators of those dynamics. This page explains which features are extracted, how, and how they feed into the score.

Extracting the Stroke Curve

After preprocessing, the signature is reduced to a skeleton one pixel wide. The skeleton is split into strokes at the points where the pen lifted and landed, and each stroke is represented by a smooth B-spline curve. At every point on the curve, local curvature, direction and the line width in the original image are sampled. All biometric features are computed from these samples, which makes them independent of the image's size and position.

Features

FeatureMeasuredWhat it shows
stroke_curvatureCurvature profile and turning points along the strokeA personal movement habit; the hardest feature to get right in a forgery.
pressure_proxyDistribution of line width and ink densityWhere pressure rises and falls; an indirect trace of rhythm.
speed_indicatorWidth thinning, tapered ends, smoothness of curvatureWhether it was signed fast and fluently or slowly and carefully.
tremor_indexHigh-frequency deviations in the curveTremor seen in slow copying; can also come from age or illness.
slant_angleAngle of the main axes to the horizontalThe person's consistent slant; usually stays within ±4°.
proportionsLetter heights, width/height ratio, spacingOverall structure; enables scale-independent comparison.
pen_liftsNumber and positions of pen liftsStroke order; extra lifts are common in forgeries.
baseline_driftSlope and waviness of the baselineThe habit of positioning against the writing line.

For each feature a range (mean and deviation) is computed from the references; the questioned signature's value is scored against that range. This is why a single reference cannot establish a range and feature contributions become weak.

Biometric Data in the Response

The GET /v2.4/signature/comparisons/{id}?include=features call returns every feature in detail:

{
  "features": [
    {
      "feature": "tremor_index",
      "questioned": 0.31,
      "reference_range": { "mean": 0.08, "std": 0.03 },
      "deviation_sigma": 7.7,
      "contribution": -14.2
    },
    {
      "feature": "slant_angle",
      "questioned": 62.5,
      "reference_range": { "mean": 61.8, "std": 1.9 },
      "deviation_sigma": 0.4,
      "contribution": 6.1
    }
  ]
}

In this example the slant matches the references, but the tremor index is 7.7 standard deviations from the mean; that can point to a slow, careful attempt at copying.

Do not read tremor on its own

A high tremor_index does not always mean forgery; old age, fatigue or neurological conditions cause tremor too. If the references are close in time to the questioned signature, this effect largely evens out.

Next Steps & Guides

Was this guide helpful?

Your feedback helps us improve our documentation.