SMART_KYC_OCR / app.py
gopichandra's picture
Update app.py
806c938 verified
raw
history blame
3.14 kB
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()