> For the complete documentation index, see [llms.txt](https://docs.vida.id/identity-stack/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.vida.id/identity-stack/verify/kyc-mobile-sdk/sdk-user-journey/document-capture.md).

# Document Capture

## **Document Auto Capture**

This module guides the user in taking a high-quality picture of their identity document. The SDK uses on-screen guides ad real-time checks to make sure the document is well-framed, sharp, and free from glare or blur. Once everything looks good, the SDK automatically takes the photo without requiring the user to press a button. This reduces mistakes and helps ensure the document image is clear enough for verification and OCR.

* Smart frame guidance and auto-shutter for optimal document positioning.
* Edge detection and document object check

## **Document Verification**

After capturing the document, the SDK runs several checks to confirm the image is both usable and authentic. It analyzes quality factors like sharpness and lighting, recognizes the type of document (passport, ID card, driver’s license), and checks for signs of forgery or tampering. It also looks for key features such as holograms and ensures that information on the front and back sides of the document match. If something fails, the SDK shows helpful hints so the user can retake the photo.

* **Image Quality Analysis (IQA):** Ensures sharpness, brightness, and resolution meet verification standards.
* **Classifier:** Detects and categorizes document types (ID card, passport, driver’s license).
* **Spoof/Forgery Detection:** Identifies printed copies, screenshots, tampered, or synthetic documents.
* **Landmarks:** Validates presence and placement of key security features (holograms, logos).
* **Cross-Side Checks:** Compares front vs back consistency (e.g., ID number in frontside vs ID number in the backside).

## **Optical Character Recognition (OCR)**

Once the document is verified, the SDK extracts text from it, such as the user’s name, date of birth, and ID number. Each field comes with a confidence score to indicate how reliable the reading is. Developers can choose which fields the user can review and edit. If a user changes any value, the SDK flags it so the backend system knows what was modified. This step ensures both automation and accuracy while giving the user a chance to correct mistakes.<br>

* Extracts text data from documents.
* Provides **per-field confidence scores** for quality assurance.
* Includes **editability flags** (editable vs locked fields) for improved operator control.

## User Journey

### 1. Document Selection

The user begins by selecting the type of identity document they want to verify. The SDK supports country-specific options:

* **Indonesia**: National ID (KTP), Passport
* **Malaysia**: Malaysian Cards (MyKad, MyPR, MyKAS, MyTentera), Passport

This ensures the capture flow is tailored to the selected document type, enabling the SDK to apply the right capture rules, OCR extraction templates, and authenticity checks.

<figure><img src="/files/oIzikatrmNXNk6DCfaH8" alt="" width="188"><figcaption></figcaption></figure>

### 2. User Content

Before proceeding, the user must actively provide consent. A checkbox is presented for the user to confirm they agree to continue with the identity verification process. This step is critical for compliance and ensures explicit user acknowledgment.

<figure><img src="/files/P54ZkIHyXFLuQw9gyngc" alt="" width="563"><figcaption></figcaption></figure>

### 3. Terms of Use

The user is shown the **Terms of Use** of the service. They must read and agree before proceeding. This provides transparency and legal assurance, ensuring users understand their responsibilities and the service conditions.

<figure><img src="/files/oTKMHtx5b8o4StZhb1iM" alt="" width="563"><figcaption></figcaption></figure>

### 4. Privacy Policy

The user is shown the **Privacy Policy**, which explains how their personal data will be captured, processed, and stored. Displaying the privacy policy helps build trust and ensures compliance with data protection regulations.

<figure><img src="/files/tXM3VbhGfQJGuEn2dPOZ" alt="" width="563"><figcaption></figcaption></figure>

### 5. Document Capture Guideline

Before capture begins, the SDK displays document capture guidelines to help users achieve the best image quality. These guidelines explain how to position the document, avoid glare, and keep the frame steady.

* **Customizable**: Developers can configure the text prompts and replace the illustration or image shown in the guideline screen to match branding or UX preferences.
* **Purpose**: Minimizes capture errors, improves OCR accuracy, and reduces retries.

<figure><img src="/files/WHs5KjNCD3QzcExiH5ZL" alt="" width="188"><figcaption></figcaption></figure>

### 6. Camera Access Permission

The SDK requests permission to access the device camera. The user must grant access to continue. Without this, the SDK cannot proceed with auto-capture. This step follows OS-level permissions for Android and iOS, ensuring user control over device resources.

<figure><img src="/files/ca2tHGtkIkhhA11xi6sN" alt="" width="188"><figcaption></figcaption></figure>

### 7. Document Capture (Auto-Capture)

The user positions their document within the camera frame. The SDK uses **auto-capture technology**:

* Automatically detects the document edges.
* Provides real-time feedback (e.g., glare, blur, alignment issues).
* Captures the image automatically once the document meets quality thresholds.

Users are not required to press a capture button; they only need to hold the document steady. This ensures faster onboarding, fewer retries, and consistent image quality for OCR and verification.

<figure><img src="/files/l93CegJ0Uqv5NreIe1QP" alt="" width="563"><figcaption></figcaption></figure>

### 8. Document Capture (Manual Capture)

If the SDK detects that auto-capture is taking too long (for example, the document is not being recognized due to glare, low light, motion, or background noise), it will show a prompt after \~20 seconds offering the user an alternative (configurable). This is designed to reduce drop-offs by giving users a clear way to proceed when auto-capture conditions are difficult.

<figure><img src="/files/Sv42X6ys0dO2C07mb2nj" alt=""><figcaption></figcaption></figure>
