File size: 1,408 Bytes
e3cb5a5
 
 
c8d472e
e3cb5a5
 
a4d0a87
e3cb5a5
 
 
 
 
a4d0a87
e3cb5a5
8dcb382
e3cb5a5
 
 
 
 
 
 
8dcb382
e3cb5a5
1ae8f9f
e3cb5a5
 
 
 
 
 
 
 
 
 
 
 
 
52f3a2e
e3cb5a5
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import os
import gradio as gr
from utils import extract_kyc_fields, connect_salesforce, create_kyc_record

# Connect Salesforce on startup
SF = connect_salesforce()

def process_image(image_file, agent_id_optional):
    if not image_file:
        return {"status": "error", "message": "No image uploaded"}
    if not SF:
        return {"status": "error", "message": "Salesforce connection failed"}

    kyc_data = extract_kyc_fields(image_file)

    agent_id = agent_id_optional.strip() if agent_id_optional else None
    sf_result = create_kyc_record(
        SF,
        kyc_data,
        file_name=os.path.basename(image_file),
        agent_id=agent_id or None,  # only send if provided
    )

    return {"ocr_result": kyc_data, "salesforce_result": sf_result}

iface = gr.Interface(
    fn=process_image,
    inputs=[
        gr.Image(type="filepath", label="Upload PAN / Aadhaar"),
        gr.Textbox(label="Agent Salesforce ID (optional)", placeholder="Enter Agent__c Id (optional)")
    ],
    outputs=gr.JSON(),
    title="AI KYC OCR → Salesforce (KYC_Record__c)",
    description=(
        "Uploads a PAN/Aadhaar image, extracts fields, and creates a KYC_Record__c with:\n"
        "Aadhaar_Name__c, Aadhaar_DOB__c, Aadhaar_Number__c, Pan_Name__c, Pan_DOB__c, PAN_Number__c."
    )
)

if __name__ == "__main__":
    iface.launch(server_name="0.0.0.0", server_port=int(os.getenv("PORT", 7860)))