Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1,11 +1,7 @@
|
|
1 |
-
import json
|
2 |
import os
|
3 |
import gradio as gr
|
4 |
from utils import extract_kyc_fields
|
5 |
from simple_salesforce import Salesforce
|
6 |
-
from paddleocr import PaddleOCR
|
7 |
-
|
8 |
-
ocr = PaddleOCR(use_angle_cls= True, lang ='en')
|
9 |
|
10 |
# ------------------------
|
11 |
# CONFIGURATION
|
@@ -21,6 +17,7 @@ os.environ["OMP_NUM_THREADS"] = "1"
|
|
21 |
# CONNECT TO SALESFORCE
|
22 |
# ------------------------
|
23 |
def connect_salesforce():
|
|
|
24 |
try:
|
25 |
sf = Salesforce(
|
26 |
username=SF_USERNAME,
|
@@ -29,7 +26,7 @@ def connect_salesforce():
|
|
29 |
domain="login" # Production
|
30 |
)
|
31 |
print("β
Connected to Salesforce (Production)")
|
32 |
-
return {"status": "success", "env": "Production"}
|
33 |
except Exception as e:
|
34 |
print("β Production login failed:", e)
|
35 |
try:
|
@@ -40,7 +37,7 @@ def connect_salesforce():
|
|
40 |
domain="test" # Sandbox
|
41 |
)
|
42 |
print("β
Connected to Salesforce (Sandbox)")
|
43 |
-
return {"status": "success", "env": "Sandbox"}
|
44 |
except Exception as e2:
|
45 |
print("β Sandbox login failed:", e2)
|
46 |
return {"status": "error", "message": "Salesforce login failed"}
|
@@ -51,6 +48,7 @@ sf_status = connect_salesforce()
|
|
51 |
# PROCESS IMAGE FUNCTION
|
52 |
# ------------------------
|
53 |
def process_image(image_file):
|
|
|
54 |
if sf_status["status"] != "success":
|
55 |
return {"salesforce_status": "error", "message": sf_status.get("message", "Login failed")}
|
56 |
|
@@ -62,23 +60,26 @@ def process_image(image_file):
|
|
62 |
ocr_result = extract_kyc_fields(image_file.name)
|
63 |
return {
|
64 |
"salesforce_status": "connected",
|
|
|
65 |
"ocr_result": ocr_result
|
66 |
}
|
67 |
except Exception as e:
|
68 |
-
return {"ocr_status": "error", "message": str(e)}
|
69 |
|
70 |
# ------------------------
|
71 |
# GRADIO INTERFACE
|
72 |
# ------------------------
|
73 |
iface = gr.Interface(
|
74 |
fn=process_image,
|
75 |
-
inputs=gr.Image(type="filepath"), #
|
76 |
outputs=gr.JSON(),
|
77 |
title="AI KYC OCR & Salesforce Integration",
|
78 |
description="Upload PAN or Aadhaar card images to extract text and verify Salesforce connection."
|
79 |
)
|
80 |
|
81 |
-
|
|
|
|
|
82 |
if __name__ == "__main__":
|
83 |
-
# Launch server
|
84 |
-
iface.launch(server_name="0.0.0.0", server_port=7860)
|
|
|
|
|
1 |
import os
|
2 |
import gradio as gr
|
3 |
from utils import extract_kyc_fields
|
4 |
from simple_salesforce import Salesforce
|
|
|
|
|
|
|
5 |
|
6 |
# ------------------------
|
7 |
# CONFIGURATION
|
|
|
17 |
# CONNECT TO SALESFORCE
|
18 |
# ------------------------
|
19 |
def connect_salesforce():
|
20 |
+
"""Connects to Salesforce (Production first, then Sandbox fallback)"""
|
21 |
try:
|
22 |
sf = Salesforce(
|
23 |
username=SF_USERNAME,
|
|
|
26 |
domain="login" # Production
|
27 |
)
|
28 |
print("β
Connected to Salesforce (Production)")
|
29 |
+
return {"status": "success", "env": "Production", "sf": sf}
|
30 |
except Exception as e:
|
31 |
print("β Production login failed:", e)
|
32 |
try:
|
|
|
37 |
domain="test" # Sandbox
|
38 |
)
|
39 |
print("β
Connected to Salesforce (Sandbox)")
|
40 |
+
return {"status": "success", "env": "Sandbox", "sf": sf}
|
41 |
except Exception as e2:
|
42 |
print("β Sandbox login failed:", e2)
|
43 |
return {"status": "error", "message": "Salesforce login failed"}
|
|
|
48 |
# PROCESS IMAGE FUNCTION
|
49 |
# ------------------------
|
50 |
def process_image(image_file):
|
51 |
+
"""Process uploaded KYC image and extract PAN/Aadhaar details"""
|
52 |
if sf_status["status"] != "success":
|
53 |
return {"salesforce_status": "error", "message": sf_status.get("message", "Login failed")}
|
54 |
|
|
|
60 |
ocr_result = extract_kyc_fields(image_file.name)
|
61 |
return {
|
62 |
"salesforce_status": "connected",
|
63 |
+
"sf_env": sf_status.get("env"),
|
64 |
"ocr_result": ocr_result
|
65 |
}
|
66 |
except Exception as e:
|
67 |
+
return {"ocr_status": "error", "message": f"OCR extraction failed: {str(e)}"}
|
68 |
|
69 |
# ------------------------
|
70 |
# GRADIO INTERFACE
|
71 |
# ------------------------
|
72 |
iface = gr.Interface(
|
73 |
fn=process_image,
|
74 |
+
inputs=gr.Image(type="filepath"), # Use filepath for PaddleOCR
|
75 |
outputs=gr.JSON(),
|
76 |
title="AI KYC OCR & Salesforce Integration",
|
77 |
description="Upload PAN or Aadhaar card images to extract text and verify Salesforce connection."
|
78 |
)
|
79 |
|
80 |
+
# ------------------------
|
81 |
+
# LAUNCH APP
|
82 |
+
# ------------------------
|
83 |
if __name__ == "__main__":
|
84 |
+
# Launch Gradio server
|
85 |
+
iface.launch(server_name="0.0.0.0", server_port=7860, debug=True)
|