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 an edge architecture with 24-hour data retention.
200 free credits = 100 Passport scans, no credit card. Then from $5 for 500 credits, pay as you go. See pricing

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 is a simple bridge between raw document uploads and your backend logic; images are deleted within 24 hours. 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.
Drop files here or click to browse
JPG · PNG · PDF · TIFF · up to 500 files · max 4.5 MB each
No document handy?
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: Low latency powered by Cloudflare's global edge network.
- Privacy: 24-hour data retention, then deletion. Images and JSON are kept for at most 24 hours for quality spot-checks, then deleted.
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 at the edge; images are deleted within 24 hours
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
Remote Hiring Identity OCR API
Automate global remote hiring with our identity OCR API; images are deleted within 24 hours. Extract passport data securely without SDKs. Upload an image to test our free live demo.
REST API for Global Passport MRZ
Extract global passport MRZ data instantly via our fast REST API. No SDK required. Upload an image to test our live demo for free.
Right to Work Passport Verification API
Automate global HR compliance. Extract passport data instantly with our OCR API; images are deleted within 24 hours. No SDK required. Upload an image to test our free live demo.
Passport OCR for Neo-Banks: 24-Hour Retention, SOC 2 Type II
Passport OCR API for neo-bank onboarding: MRZ and VIZ fields as JSON, SOC 2 Type II, and images deleted within 24 hours. No SDK needed. Upload an image to test free.
Automated Hotel Check-In Passport Scanner API
Streamline hotel check-ins with our automated passport scanner API. Extract global guest data instantly without SDKs. Upload an image to test our free live demo.
Crypto KYC Passport API (No SDK)
Passport OCR API for Web3 and Crypto KYC, with 24-hour data retention. Extract global MRZ and VIZ data instantly without SDK bloat. Upload an image to test our free live demo.
DPDP Compliant Indian Passport OCR API
DPDP-friendly OCR API for Indian passports, with 24-hour data retention. Securely extract back-page PII (Address, Parents' Names) for KYC workflows. File, Base64, and URL supported.
GDPR Compliant Passport OCR API
Extract passport data securely with our OCR API; images are deleted within 24 hours. Upload an image to test our free live demo.
India Passport Address Extraction API
Extract highly complex address blocks and PII from Indian passport back pages. OCR API built for global KYC workflows, with 24-hour data retention. Supports Base64, URLs, and direct file uploads.
Indian Passport OCR for KYC
Automate digital KYC. Extract MRZ, family, and address details from Indian Passports for RBI compliance. Upload a test image for a free live API demo.
Technical Comparisons & Integrations
Explore platform integrations and competitive analysis
Add Passport OCR using Cursor in 5 Minutes
Step-by-step guide to integrating the StructOCR Passport scanner API using the Cursor AI code editor. Build travel, hospitality, and global KYC flows rapidly.
Extracting ECR Status & File Numbers: Generic OCR vs. StructOCR Indian Passport API
Learn why generic text extractors fail to capture critical Indian KYC fields like ECR status and File Numbers, and how a specialized API structures this data automatically.
Heavy KYC SDKs vs. StructOCR Passport API for Mobile Apps
Discover why modern app developers are abandoning bulky on-device OCR SDKs in favor of lightweight, edge-deployed Passport APIs.
Add Passport OCR to Your Lovable.dev App in 5 Minutes
Step-by-step guide to integrating the StructOCR Passport scanner API into a Lovable.dev app through a secure server-side function for travel and KYC flows.
Add Passport OCR to Your Replit App in 5 Minutes
Step-by-step guide to integrating the StructOCR Passport scanner API into a Replit application. Build travel, hospitality, and global KYC flows using Replit Agent and Secrets.
Tesseract & PassportEye vs. StructOCR Passport API
A technical evaluation for developers deciding between open-source MRZ scanners and a dedicated cloud-based Passport OCR API.
From tutorial to production in 5 minutes.
You've seen the code. Now get your API key, grab your 200 free credits, and see it work with your own images. No credit card required.