Sri Lanka National Identity Card OCR: Extract Fields with Python
Extract visible fields from Sri Lanka national identity card images into JSON. Map identifiers, names and dates, with a review workflow for incomplete results.
Sri Lanka document intake: what needs review
Allow for different identifier layouts without forcing every card into a single numeric length; preserve printed suffix letters. In a production intake, keep the uploaded document associated with the correct application record before extraction. A legible name alone does not establish that the number, dates and address were captured correctly. Avoid filling missing values from a previous booking or a customer profile without recording that separate source.
Map Sri Lanka document evidence into your backend
Check the printed document type before assigning its number to an identity record. Submit a readable side at a time and keep the side association in your application. A field absent from the submitted side should remain unfilled until supported by another source. Send the image to the national id API and keep extracted evidence separate from your approval decision. The same endpoint handles the submitted image; the article's country or state context does not force the API to return that jurisdiction. Compare the returned country with the source before saving the result.
A reviewable intake workflow
- Sri Lanka document intake: Allow for different identifier layouts without forcing every card into a single numeric length; preserve printed suffix letters.
- Map fields without losing their meaning: Store document_number as text, keep surname and given_names in their own fields, and retain source images according to your document-handling policy. Date parsing failures should be reviewable instead of becoming today's date.
- Compare a resubmitted document: Keep a prior extraction and a new extraction as separate events. A change in number, name or expiry should produce a review item, not an automatic overwrite of a trusted record.
- Export only the fields your workflow uses: Map the response to your form explicitly. Keep the document number separate from any supported personal identifier.
Python request for Sri Lanka national identity card OCR
This REST example sends a local image as Base64 JSON. Run it on a backend and keep the API key in an environment variable. The printed example below is deliberately synthetic and is not a valid document-number format specimen.
Prerequisite: Python 3, pip install requests; STRUCTOCR_API_KEY set on the server
import base64
import os
import requests
with open("sri-lanka-national-id.jpg", "rb") as source:
encoded = base64.b64encode(source.read()).decode("ascii")
response = requests.post(
"https://api.structocr.com/v1/national-id",
headers={"x-api-key": os.environ["STRUCTOCR_API_KEY"]},
json={"img": encoded},
timeout=60,
)
response.raise_for_status()
result = response.json()
if not result.get("success"):
raise RuntimeError("Extraction was not successful; inspect the response securely")
data = result.get("data") or {}
required = ["document_number", "surname", "date_of_expiry"]
missing = [field for field in required if not data.get(field)]
# Queue incomplete records; do not log identity data in production.
print({"needs_review": bool(missing), "missing_fields": missing})Technical Specs
- •Endpoint: POST /v1/national-id
- •Authentication: Server-side x-api-key header
- •Input: Base64 image in JSON img; use a readable JPG, PNG or WebP for this example
- •File size: Up to 4.5MB decoded
- •Standard processing: 2 credits per scan
- •Output: JSON; retain incomplete results for review
Key Features
- •Local extraction concern: Allow for different identifier layouts without forcing every card into a single numeric length; preserve printed suffix letters.
- •Identifiers: Keep strings intact; do not coerce document numbers into numeric spreadsheet columns.
- •Dates: Validate date syntax and labels. An unexpected value needs source review, not silent correction.
- •Image evidence: Preserve all card or page edges, reduce glare and avoid cropping small text.
Illustrative response fields
Synthetic subset of the response for mapping purposes. Values and dates are examples, not a real scan or an assertion about document validity periods. Actual fields depend on the submitted document.
{
"success": true,
"data": {
"country_code": "LKA",
"document_number": "EXAMPLE-NOT-A-REAL-ID",
"surname": "EXAMPLE",
"given_names": "PERSON",
"date_of_birth": "1990-01-15",
"date_of_issue": "2024-04-12",
"date_of_expiry": "2029-04-12",
"issuing_authority": null,
"personal_number": null,
"address": null,
"additional_fields": {}
}
}Frequently Asked Questions
What is the main concern with Sri Lanka national identity card intake?
Allow for different identifier layouts without forcing every card into a single numeric length; preserve printed suffix letters.
Does extracting a number verify the document?
No. Extraction returns visible data. Authenticity checks, live registry checks and the final onboarding decision are separate processes.
What should happen when a date or name is unreadable?
Keep the record pending and request a clearer image or a manual review. Do not infer a date from an account profile or shorten a name to make it match.
Where should I check document-format references?
Use the PRADO public document reference collection as a starting point for document-format research, together with the issuing authority. Public collections may not include every country or current card version.
Can the same workflow run without Python?
Yes. Any backend that can send an authenticated JSON request can call /v1/national-id. See the API reference for the current response contract.
You May Also Like
Related tutorials, platform guides, and comparisons
Saudi Arabia National ID & Iqama OCR Python SDK
Python Tutorial: Automate KYC in Saudi Arabia. Extract data from National IDs and Iqamas using the StructOCR Python SDK. Supports bilingual (Arabic/English) text, 10-digit ID numbers, and 3-line MRZ extraction.
Ukraine National ID OCR Python SDK
Python Tutorial: Automate KYC in Ukraine. Extract data from National ID using StructOCR Python SDK. Supports native text and MRZ extraction.
France Carte Nationale d'Identité OCR Python SDK
Python Tutorial: Automate KYC in France. Extract data from Carte Nationale d'Identité and validate TD1/TD2 MRZ using StructOCR Python SDK. Supports native text.
Tunisia CIN (Carte d'Identité Nationale) OCR Python SDK
Python Tutorial: Automate KYC in Tunisia. Extract data from CIN (Carte d'Identité Nationale) using StructOCR Python SDK. Supports native text.
Egypt ID OCR API & Python SDK
Python tutorial: read Egyptian national IDs, including the 14-digit national number (century, date of birth, governorate, gender and check digit), as JSON. Test the ID OCR engine free.
Tanzania NIDA Card OCR Python SDK
Python Tutorial: Automate KYC in Tanzania. Extract data from NIDA Card using StructOCR Python SDK. Supports native text and MRZ extraction.
Philippines PhilID OCR with Node.js SDK
Extract PhilSys Card Number, names, dates and other visible fields from Philippine Identification Card (PhilID) with the StructOCR Node.js SDK and Express.
Nigeria National ID OCR with Node.js SDK
Extract National Identification Number (NIN), names, dates and other visible fields from National Identity Card with the StructOCR Node.js SDK and Express.
Pakistan CNIC OCR with Node.js SDK
Extract CNIC number, names, dates and other visible fields from Computerized National Identity Card (CNIC) with the StructOCR Node.js SDK and Express.
Sri Lankan Passport OCR with Node.js SDK
Use the StructOCR Node.js SDK and TypeScript + Express to extract visible identity, validity and MRZ fields from Sri Lankan passports.
Technical Comparisons & Integrations
Explore platform integrations and competitive analysis
Add National ID OCR to Your Bolt.new App in 5 Minutes
Step-by-step guide to integrating the StructOCR National ID scanner API into a Bolt.new app. Build KYC and identity verification flows right in your browser.
Add National ID OCR using Cursor in 5 Minutes
Step-by-step guide to integrating the StructOCR National ID scanner API using the Cursor AI code editor. Build KYC and identity verification flows rapidly.
Add National ID OCR to Your Lovable.dev App in 5 Minutes
Step-by-step guide to integrating the StructOCR National ID scanner API into a Lovable.dev app. Build KYC and identity verification flows with zero backend.
Add National ID OCR to Your Replit App in 5 Minutes
Step-by-step guide to integrating the StructOCR National ID scanner API into a Replit application. Build KYC and identity verification flows using Replit Agent and Secrets.
Add National ID OCR to Your v0 App in 5 Minutes
Step-by-step guide to integrating the StructOCR National ID scanner API into a v0 by Vercel app. Build KYC and identity verification flows with zero backend.
Invoice OCR API Integration for Bolt.new
Learn how to integrate our Invoice OCR API into a Bolt.new app in under 5 minutes. Extract structured JSON effortlessly. Try our free live test now.
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.