Proof of Address (PoA) OCR API

The most reliable way to digitize and verify permanent addresses for telecom, banking, and real estate onboarding in India. Built on a zero-retention edge architecture.

Extracting Proof of Address details from an Indian Passport.

The Cost of Manual PoA Verification

Manual verification of Proof of Address documents is slow, error-prone, and creates massive friction during customer onboarding, leading to high drop-off rates. When users upload the back page of an Indian passport as their PoA, human operators often struggle to decipher faint print, complex local formatting, and varied address lengths. For a broader look at modernizing global user onboarding, explore our travel identity verification solutions.

StructOCR: Instant PoA Digitization

Powered by our core Passport OCR engine, you can instantly convert the passport back page into a clean digital address block. Deployed on secure Cloudflare edge nodes, our API acts as a seamless, process-and-forget bridge between raw document uploads and your backend logic. By natively supporting Base64 and direct file uploads without relying on restrictive SDKs, we ensure sensitive PoA documents are never exposed on public URLs.

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

Utility & Telecom Providers

Verify residential addresses instantly for new connections. We support borderless USDT/Crypto payments for global SaaS operators to bypass financial friction. View our straightforward API pricing.

Insurance Underwriting

Automate the collection of permanent address data required for policy issuance and claims processing without persisting sensitive user images.

Vehicle Registration & Financing

Extract buyer addresses accurately for RTO documentation and cross-border auto loan approvals seamlessly.

Crypto & Neo-Bank KYC

Eliminate manual address entry for compliance agents processing high-volume KYC workflows globally.

Technical Specs

  • Secure Payload Handling: Natively process documents via Base64 or file uploads to bypass public URL generation entirely.
  • Contextual Address Parsing: Deep NLP engine accurately captures the entire unstandardized address block regardless of line breaks.
  • Edge Architecture: 99.9% availability and < 1.2s latency powered by Cloudflare's global edge network.
  • Privacy Shield: Zero data retention. Images and JSON are purged from RAM immediately after processing.

Key Features

  • Comprehensive Block Capture: Reliably pulls the entire residential address string including embedded PIN codes and geographic markers.
  • API-First Architecture: Pure HTTP integration completely eliminates SDK bloat and version conflicts.
  • Format Support: Accepts raw Base64 or Data URIs (JPG, PNG, WebP up to 4.5MB).

Integration & AI Prompts

StructOCR is API-first, eliminating the need for bulky SDKs. Send Base64 encoded PoA documents directly for secure edge processing. For full schema details, see our Passport OCR Developer Documentation.

import requests
import base64

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

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

with open("poa_document.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 in-memory at the edge with zero data retention
    print("Processing Proof of Address...")
    response = requests.post(url, headers=headers, json=payload)
    result = response.json()

    if result.get('success'):
        print("✅ Secure PoA Extraction Complete!\n")
        
        # Core Identity
        core_data = result['data']
        print(f"Applicant: {core_data.get('given_names')} {core_data.get('surname')}")
        
        # Full Address Block from Back Page
        back_page = core_data['country_specific']['last_page']
        print(f"Address:   {back_page.get('address')}")
    else:
        print(f"❌ Extraction Failed: {result.get('error')} - {result.get('message')}")
except Exception as e:
    print(f"Error: {e}")

Standardized JSON Output

Get exactly the structured address components you need for PoA validation, perfectly nested for your database.

{
  "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

Do you support base64 image uploads without an SDK?

Yes, StructOCR is strictly API-first. We highly recommend using base64 encoded strings or direct file uploads via standard HTTP POST requests to avoid exposing sensitive PoA documents via public URLs.

How does the API handle complex, multi-line Indian addresses?

Our models are specifically trained on the layout typography of Indian passports. It captures the entire address block with high fidelity, regardless of erratic line breaks or dense abbreviations.

Can it process old handwritten passports?

Our models are optimized for modern, machine-printed passports. Handwritten documents yield significantly lower accuracy and are not officially supported for automated PoA validation.

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