Indian Passport OCR for KYC & AML

Accelerate user onboarding for FinTechs and banks with financial-grade OCR that securely processes both front and back pages of Indian passports in milliseconds.

Financial-grade extraction of Indian Passport details for KYC compliance.

The Friction of Dual-Sided Verification

Financial institutions in India require both identity verification (front page MRZ) and relationship/address verification (back page) to meet stringent RBI KYC norms. Relying on manual data entry for these Officially Valid Documents (OVDs) creates massive onboarding friction, high abandonment rates, and severe operational bottlenecks. For a broader look at comprehensive compliance strategies across borders, explore our travel identity verification solutions.

StructOCR: Unified Dual-Page Processing

Powered by our core Passport OCR engine, you can deploy a unified API that seamlessly validates the front page and extracts critical data from the back page. Our engine is purpose-built for financial technology, combining high-speed Cloudflare edge processing with a strict zero-data-retention architecture to ensure your KYC pipeline is both frictionless for users and fully compliant with anti-money laundering (AML) standards.

Live Demo: Passport scanner

No registration required. Upload a file to test the extraction.

1
Upload
2
Results

Drop files here or click to browse

JPG · PNG · WebP  ·  up to 500 files · max 4.5 MB each

No files selected

Ready to use this in production? Get 20 free API calls — no credit card needed.

Get 20 Free API Calls →

Core Industry Applications

Crypto Wallet & Exchange Onboarding

Verify international users instantly. Combine our API with your existing flows and scale globally with borderless Crypto/USDT payment support for SaaS teams. View our API pricing.

Neo-Bank Account Creation

Process front and back passport images to extract complete KYC profiles without human intervention, drastically reducing Time-to-First-Transaction (TTFT).

Remittance Services

Fulfill strict AML requirements for cross-border money transfers by validating the sender's core identity and permanent address simultaneously.

Brokerage & Trading Apps

Accelerate demat account openings by automating the extraction of required OVD data points—such as Father's Name and File Number—from uploaded passport scans.

Technical Specs

  • Edge Deployment: Infrastructure deployed on Cloudflare for ultra-low latency globally.
  • Compliance First: API design supports RBI and international AML processing standards with zero data retention.
  • Base64 & File Native: Send data streams natively without intermediary public cloud storage URLs.
  • API-First Architecture: Pure REST API eliminates SDK version conflicts and mobile app bloat.

Key Features

  • Cross-Verification Ready: Extract File Numbers from the back page to automatically cross-reference with internal banking systems.
  • Comprehensive KYC Data: Reliably pulls Father's Name, Mother's Name, Spouse's Name, and complete address structures.
  • High Throughput: Auto-scaling inference models designed to handle thousands of concurrent FinTech onboarding requests.

Integration & AI Prompts

StructOCR is intentionally API-first, eliminating SDK bloat. Securely pass raw files or Base64 image data directly to our endpoints to keep sensitive PII off public URLs. For detailed integration architecture, consult our official Passport OCR Developer Documentation.

import requests
import base64

# 📚 Developer Docs: https://structocr.com/developers/passport-ocr

# Note: StructOCR natively supports File Uploads, Base64-encoded strings,
# and direct Image URLs without requiring an SDK.

with open("kyc_passport_back.jpg", "rb") as image_file:
    base64_image = base64.b64encode(image_file.read()).decode('utf-8')

url = "https://api.structocr.com/v1/passport/india/back-page"
headers = {
    "x-api-key": "YOUR_API_KEY",
    "Content-Type": "application/json"
}
payload = {
    "img": base64_image
}

try:
    # Processed at the edge and instantly purged (Zero Data Retention)
    print("Processing KYC Document...")
    response = requests.post(url, headers=headers, json=payload)
    result = response.json()

    if result.get('success'):
        print("✅ KYC Data Securely Extracted!\n")
        
        # Extract Core Identity Information
        core_data = result['data']
        print(f"Name:         {core_data.get('given_names')} {core_data.get('surname')}")
        print(f"Passport No:  {core_data.get('passport_number')}")
        
        # Extract India-Specific KYC Data (Address & Relationships)
        back_page = core_data['country_specific']['last_page']
        print(f"Address:      {back_page.get('address')}")
        print(f"Father Name:  {back_page.get('father_name')}")
        print(f"File No:      {back_page.get('file_no')}")
    else:
        print(f"❌ Extraction Failed: {result.get('error')} - {result.get('message')}")
except Exception as e:
    print(f"Error: {e}")

Standardized JSON Output

Receive all requisite KYC data points neatly mapped in milliseconds, ready for immediate database insertion.

{
  "success": true,
  "data": {
    "type": "passport",
    "country_code": "IND",
    "nationality": "INDIAN",
    "passport_number": "Z1234567",
    "surname": "SHARMA",
    "given_names": "RAHUL",
    "sex": "M",
    "date_of_birth": "1988-07-22",
    "place_of_birth": "NEW DELHI",
    "date_of_issue": "2021-04-10",
    "date_of_expiry": "2031-04-09",
    "issuing_authority": "MINISTRY OF EXTERNAL AFFAIRS",
    "country_specific": {
      "last_page": {
        "father_name": "AMIT SHARMA",
        "mother_name": "SITA SHARMA",
        "spouse_name": "PRIYA SHARMA",
        "address": "FLAT 4B, GREENWOOD APARTMENTS, NEW DELHI PIN: 110001, INDIA",
        "old_passport_number": "P7654321",
        "old_passport_issue_date": "2010-01-05",
        "old_passport_issue_place": "DELHI",
        "file_no": "DL1076071103622",
        "ecr_status": null
      }
    }
  }
}

Frequently Asked Questions

Is this suitable for Video KYC (V-CIP) processes?

Absolutely. The API is deployed on edge networks optimized for speed and can process high-resolution frames captured during Video KYC sessions in under 1.2s.

Can we cross-verify the front and back pages?

Yes. By utilizing our API to extract data from both images, your backend can build automated logic to ensure the document holder's details (like old passport numbers or file numbers) match perfectly, enhancing your AML fraud detection.

Do you provide SDKs for mobile?

We operate exclusively as an API-first platform. This is intentional: it prevents SDK bloat in your mobile app and avoids versioning conflicts. You can easily integrate our endpoints natively using standard HTTP libraries in React Native, Flutter, or native iOS/Android, sending files or Base64 directly.

Explore More Travel & KYC Solutions

Precise Data Extraction and Seamless Integration with AI-powered OCR API.

Empower your solutions with automated data extraction by integrating best-in class StructOCR via API seamlessly.

No credit card required • Full API access included