OCR to Verification Workflow for Indian Documents
Anas Nadeem
Founder

OCR and verification are related, but they are not the same.
OCR answers:
What text is printed on this document?
Verification answers:
Does this identifier match a trusted source or usable record?
That distinction is basic, but it prevents bad product decisions.
A fake PAN card can still have readable text. A cancelled GSTIN can still appear on an old invoice. A cheque can show an account number and IFSC that still need bank verification. An FSSAI certificate PDF can contain a license number that needs a current status check.
OCR helps with data capture. Verification helps with trust.
The Practical Workflow
A reliable document workflow usually has five steps:
- Upload the document.
- Extract fields using OCR.
- Let the user or operations team correct important fields when needed.
- Verify the identifier against the relevant source.
- Store the structured result and decision outcome.
The middle step matters. If OCR extracts the wrong digit from a cheque or PAN, immediate verification can create confusing results. For high-risk workflows, show the extracted fields before verification.
Current OCR Extraction Surface
TheVerifico supports OCR extraction for common Indian documents.
| Document | Endpoint |
|---|---|
| PAN | POST /api/v1/documents/extract/pan |
| Individual PAN enhanced OCR | POST /api/v1/documents/extract/pan-individual |
| Aadhaar | POST /api/v1/documents/extract/aadhaar |
| Aadhaar front and back | POST /api/v1/documents/extract/aadhaar/complete |
| GST certificate | POST /api/v1/documents/extract/gst |
| Cancelled cheque | POST /api/v1/documents/extract/cheque |
| Driving license | POST /api/v1/documents/extract/dl |
| FSSAI certificate | POST /api/v1/documents/extract/fssai |
OCR responses should be treated as extracted data, not final approval.
Current Verification Surface
TheVerifico supports number-based verification for:
| Verification | Endpoint |
|---|---|
| Bank account | POST /api/v1/verify/bank |
| PAN | POST /api/v1/verify/pan |
| PAN Advanced | POST /api/v1/verify/pan_advanced |
| GSTIN | POST /api/v1/verify/gst |
| MSME/Udyam | POST /api/v1/verify/msme |
| Driving license | POST /api/v1/verify/dl |
| FSSAI | POST /api/v1/verify/fssai |
| Doctor/NMC | POST /api/v1/verify/doctor |
Not every OCR document maps to a current verification route. Aadhaar is the clearest example: Aadhaar image OCR is extraction. Offline Aadhaar verification needs UIDAI artifacts such as Secure QR or offline XML and should not be described as the same thing as image OCR.
Example: PAN OCR Then PAN Verification
Extract the PAN number from an uploaded image:
curl -X POST "https://api.theverifico.com/api/v1/documents/extract/pan" \
-H "X-API-Key: YOUR_API_KEY" \
-F "file=@pan-card.jpg"
Example OCR response:
{
"success": true,
"document_type": "pan",
"status": "completed",
"data": {
"pan_number": "ABCDE1234F",
"name": "JOHN DOE",
"father_name": "RICHARD DOE",
"dob": "01/01/1990"
},
"processing_time_ms": 940
}Then verify the extracted PAN:
curl -X POST "https://api.theverifico.com/api/v1/verify/pan" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"pan_number": "ABCDE1234F"}'Example verification response:
{
"success": true,
"verification_type": "pan",
"verification_data": {
"pan_number": "ABCDE1234F",
"full_name": "JOHN DOE",
"category": "person",
"pan_status": "E",
"pan_status_desc": "Existing and Valid"
},
"processing_time_ms": 820
}The first response came from document extraction. The second came from verification.
Example: Cheque OCR Then Bank Verification
A cancelled cheque helps collect payout details. It should not be the only payout control.
OCR can extract:
- account number
- IFSC
- MICR
- bank name
- branch
- account holder name when printed and readable
Then bank verification checks the extracted account number and IFSC.
curl -X POST "https://api.theverifico.com/api/v1/documents/extract/cheque" \
-H "X-API-Key: YOUR_API_KEY" \
-F "file=@cancelled-cheque.jpg"Then:
curl -X POST "https://api.theverifico.com/api/v1/verify/bank" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"account_number": "50100123456789",
"ifsc": "HDFC0001234",
"include_ifsc_details": true
}'This is usually better than asking an operations team to read and type cheque details manually.
Example: GST Certificate OCR Then GSTIN Verification
GST certificate OCR helps avoid typing errors. GSTIN verification helps check current registration details.
curl -X POST "https://api.theverifico.com/api/v1/documents/extract/gst" \
-H "X-API-Key: YOUR_API_KEY" \
-F "file=@gst-certificate.pdf"Then:
curl -X POST "https://api.theverifico.com/api/v1/verify/gst" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"gstin": "22ABCDE1234F1Z5"}'Useful GST verification fields include:
| Field | Why it matters |
|---|---|
| gstin | Normalized GSTIN |
| pan_number | PAN embedded in GSTIN |
| legal_name | Legal registered name |
| business_name | Trade name |
| gstin_status | Active, cancelled, suspended, and similar states |
| date_of_cancellation | Useful for invoice-date review |
| taxpayer_type | Regular, composition, and related context |
What The Dashboard Playground Adds
The dashboard playground helps teams test the workflow before integration.
It can be used to:
- test an API key
- upload a supported document
- run extract-only mode
- edit extracted fields before verification
- run manual number-based verification
- inspect the response shape
- export the response for internal review
It is not a replacement for production integration. It is a way to test real sample documents before engineering builds the flow.
Common Mistakes
Mistake 1: Calling OCR output "verified"
If OCR reads a PAN number, the product should say the PAN number was extracted. Verification only happens after a verification call.
Mistake 2: Skipping field confirmation for sensitive workflows
For bank payouts, payroll, lending, and compliance review, extracted fields should often be shown before verification.
Mistake 3: Treating Aadhaar image OCR as Aadhaar verification
Aadhaar is sensitive. Image OCR is not the same as UIDAI Secure QR, offline XML, or another consent-based offline verification artifact.
Mistake 4: Storing only the uploaded file
An audit trail should include the extracted fields, verification response, timestamp, and final decision.
Quick Integration Checklist
- Decide which documents need OCR
- Decide which identifiers need source verification
- Use
X-API-Keyfor production OCR and verification endpoints - Validate formats before verification calls
- Add manual review for missing or uncertain OCR fields
- Store verification response separately from uploaded file metadata
- Add retry only for temporary service errors
- Test sample documents in the dashboard playground before launch
Use this article as an educational filler piece when the publishing calendar needs a simple concept post. For a stronger launch post, lead with a specific workflow such as PAN Advanced for HR, cheque OCR to bank verification, FSSAI onboarding, or vendor verification.
