Skip to main content

Concepts

Applicant

The Applicant represents an enrolled person. It holds the person's biometric data — images, extracted templates, and quality — across the face, iris, and fingerprint modalities. Once enrollment is complete, the Applicant's ModalitiesTemplate can be stored and reloaded for later matching.

Template extraction and storage

An extractor turns a captured or segmented modality sample into a template; the templates for all of an Applicant's modalities are held in a ModalitiesTemplate. A serialized template has two parts:

  • a header part — metadata describing the template, and
  • a binary part — the biometric data itself.

Splitting the two lets an application store or index the header separately from the binary payload. See the API Reference for the exact serialization API.

Similarity score and threshold

Matching returns a similarity score; comparing it against a similarity threshold decides whether two samples come from the same source. The SDK uses this both for verification and for enrollment-time checks — for example, validating a captured fingerprint against the rest of a slap: a print is consistent when its score is at or above the threshold for the same finger position, and at or below the threshold for a different position.

Thresholds trade False Accept Rate against False Reject Rate — choose the operating point for your security needs and validate it on your own data. For exact score ranges and recommended thresholds per modality, see the API Reference.

Quality

The SDK reports a per-modality image quality score (fingerprint, iris, face) that indicates whether an image is suitable for further processing. Face quality is computed with OFIQ. Gate enrollment on quality so that only usable samples produce templates.

Server execution

The image, print, face, and iris operations can run in-process or be delegated to a provided server (enrollment_server, for example enrollment_server 127.0.0.1:50051). To use it, pass a server executor to the relevant class or set a global executor; the rest of the API is unchanged. This lets heavy model execution run on a separate host from the integrating application.