Automated identity verification

Verify real people, not just uploaded documents.

A self-hosted identity verification starter kit with document OCR, active liveness, 1:1 face comparison, automatic decisions, and an admin monitoring dashboard.

Technical starter kit — not certified for regulated financial onboarding.
OCR fields extracted
Verification session 08F4Processing locally
DocumentQuality passed
LivenessPose 2 of 3
Face matchAwaiting selfie
Transparent decision rules
KTP, passport, and SIM
English + Indonesian
Docker-ready
No permanent media storage by default
Workflow

One automatic verification flow

Each signal is measured independently, then combined by a transparent decision engine.

01

Capture document

Check resolution, blur, lighting, glare, and document visibility.

02

Extract identity data

Run OCR, parse document fields, and validate passport MRZ checksums.

03

Complete liveness

Follow a randomized head-pose sequence using the device camera.

04

Compare faces

Match the live selfie against the portrait found in the document.

05

Receive a decision

Return Verified, Review Recommended, or Not Verified with reasons.

Full-stack starter

Built as a working starter, not a fake mockup

Document intelligence

Tesseract OCR, KTP/SIM parsers, passport MRZ parsing, quality checks.

Local face engine

Dlib face embeddings for real 1:1 matching with configurable thresholds.

Prototype liveness

Automatic center-left-right head-pose challenge with live camera frames.

Transparent decisions

Weighted scores, hard-fail rules, reasons, and audit events.

Privacy-first demo

Short-lived sessions and no raw image storage unless explicitly enabled.

Admin monitoring

Verification metrics, session history, signal detail, and deletion controls.

Documents

Supported demonstration documents

The included parsers target common Indonesian document layouts. Real-world accuracy depends on camera quality, document variants, and dataset tuning.

KTP · SAMPLE

KTP

NIK, name, birth information, gender, address, and nationality.

Passport · SAMPLE

Passport

Printed text, portrait, TD3 MRZ fields, and MRZ checksum validation.

SIM · SAMPLE

SIM

License number, holder name, class, birth information, address, and expiry.

Security and limitations

Designed with honest boundaries

This project proves the integration workflow. It does not connect to Dukcapil, immigration, police, or any government database. OCR is not proof that a document is genuine, and the included liveness method is not independently PAD-certified.

Explicit consent
Configurable retention
Encrypted optional media storage
Hashed network metadata
Admin API protection
Full audit trail
What worksOCR, MRZ checks, face embeddings, head-pose sequence, decision rules, audit data.
What needs production validationReal document variants, PAD resilience, injection defense, demographic performance, and thresholds.
What requires external accessGovernment-source validation, regulated eKYC approval, and independently certified liveness.

See the complete engine run locally.

Use synthetic sample documents first, then test your own images with automatic deletion settings.

Open live demo