Spaces:
Sleeping
Sleeping
import os | |
os.environ["OMP_NUM_THREADS"] = "1" | |
import gradio as gr | |
from utils import extract_kyc_fields | |
from simple_salesforce import Salesforce | |
# ------------------ Salesforce Login ------------------ | |
def salesforce_connect(): | |
username = "[email protected]" | |
password = "Lic@2025" | |
token = "AmmfRcd6IiYaRtSGntBnzNMQU" | |
try: | |
# Append token to password for login | |
sf = Salesforce( | |
username=username, | |
password=password + token, | |
security_token="", | |
domain="login" # change to "test" for sandbox | |
) | |
return sf | |
except Exception as e: | |
return str(e) | |
sf = salesforce_connect() | |
if isinstance(sf, str): | |
print("Salesforce login failed:", sf) | |
else: | |
print("Salesforce connected successfully!") | |
# ------------------ Send Data to Salesforce ------------------ | |
def send_to_salesforce(aadhaar_data, pan_data): | |
if isinstance(sf, str): | |
return {"status": "error", "message": "Salesforce not connected"} | |
try: | |
record = { | |
"Aadhaar_Name__c": aadhaar_data.get("name", ""), | |
"Aadhaar_Number__c": aadhaar_data.get("aadhaar_number", ""), | |
"Aadhaar_DOB__c": aadhaar_data.get("dob", ""), | |
"Aadhaar_Gender__c": aadhaar_data.get("gender", ""), | |
"PAN_Name__c": pan_data.get("name", ""), | |
"PAN_Number__c": pan_data.get("pan_number", ""), | |
"PAN_DOB__c": pan_data.get("dob", "") | |
} | |
result = sf.KYC_Record__c.create(record) | |
return {"status": "success", "salesforce_id": result.get("id")} | |
except Exception as e: | |
return {"status": "error", "message": str(e)} | |
# ------------------ OCR Process ------------------ | |
def process_documents(aadhaar_file, pan_file): | |
if aadhaar_file is None or pan_file is None: | |
return {"error": "Please upload both Aadhaar and PAN images."} | |
aadhaar_data = extract_kyc_fields(aadhaar_file.name, force_type="AADHAAR") | |
pan_data = extract_kyc_fields(pan_file.name, force_type="PAN") | |
sf_result = send_to_salesforce(aadhaar_data, pan_data) | |
return { | |
"aadhaar_data": aadhaar_data, | |
"pan_data": pan_data, | |
"salesforce_result": sf_result | |
} | |
# ------------------ Gradio UI ------------------ | |
with gr.Blocks(title="Smart KYC OCR") as demo: | |
gr.Markdown("# π§Ύ Smart KYC OCR Tool β Aadhaar & PAN Scanner") | |
with gr.Row(): | |
with gr.Column(): | |
aadhaar_uploader = gr.File(label="π€ Upload Aadhaar Card", file_types=[".jpg", ".jpeg", ".png"]) | |
pan_uploader = gr.File(label="π€ Upload PAN Card", file_types=[".jpg", ".jpeg", ".png"]) | |
submit_btn = gr.Button("π Extract & Send to Salesforce", variant="primary") | |
with gr.Column(): | |
output_json = gr.JSON(label="π Extracted KYC Data") | |
submit_btn.click(fn=process_documents, inputs=[aadhaar_uploader, pan_uploader], outputs=output_json) | |
gr.Markdown("---") | |
gr.Markdown("π **Privacy Note:** This app processes your document locally in the cloud. No data is stored or shared.") | |
if __name__ == "__main__": | |
demo.launch() | |