hassan526 commited on
Commit
b9bc479
·
verified ·
1 Parent(s): 61d06a8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +68 -68
app.py CHANGED
@@ -63,25 +63,25 @@ def activate_sdk():
63
 
64
 
65
  async def save_upload_file(upload_file: UploadFile) -> str:
66
- file_name = uuid.uuid4().hex[:6] + "_" + upload_file.filename
67
- save_path = os.path.join(dump_path, file_name)
68
- with open(save_path, "wb") as buffer:
69
- shutil.copyfileobj(upload_file.file, buffer)
70
- return os.path.abspath(save_path)
71
 
72
  async def save_base64_file(base64_string: str) -> str:
73
- file_name = uuid.uuid4().hex[:6] + ".jpg" # or ".png" depending on your use
74
- save_path = os.path.join(dump_path, file_name)
75
-
76
- with open(save_path, "wb") as buffer:
77
- buffer.write(base64.b64decode(base64_string))
78
-
79
- return os.path.abspath(save_path)
80
 
81
  app = FastAPI()
82
 
83
  class ImageBase64Request(BaseModel):
84
- image: str
85
 
86
  @app.get("/")
87
  def read_root():
@@ -90,47 +90,47 @@ def read_root():
90
  @app.post("/api/read_idcard")
91
  async def read_idcard(image: UploadFile = File(...), image2: UploadFile = File(None)):
92
  try:
93
- file_path1 = await save_upload_file(image)
94
 
95
- file_path2 = ""
96
- if image2 is not None:
97
- file_path2 = await save_upload_file(image2)
98
 
99
 
100
  ocrResult = ocr_id_card(file_path1.encode('utf-8'), file_path2.encode('utf-8'))
101
  ocrResDict = json.loads(ocrResult)
102
 
103
  os.remove(file_path1)
104
- if file_path2:
105
- os.remove(file_path2)
106
 
107
  return JSONResponse(content={"status": "ok", "data": ocrResDict}, status_code=200)
108
 
109
- except Exception as e:
110
- return JSONResponse(content={"status": "error", "message": str(e)}, status_code=500)
111
 
112
 
113
  @app.post("/api/read_idcard_base64")
114
  async def read_idcard_base64(request_data: ImageBase64Request):
115
- try:
116
- file_path = await save_base64_file(request_data.image)
117
 
118
- # Your OCR function (pass bytes-encoded file path)
119
- ocr_result = ocr_id_card(file_path.encode('utf-8'), ''.encode('utf-8'))
120
- ocr_res_dict = json.loads(ocr_result)
121
 
122
- # Remove the temp file
123
- os.remove(file_path)
124
 
125
- return JSONResponse(content={"status": "ok", "data": ocr_res_dict}, status_code=200)
126
 
127
- except Exception as e:
128
- return JSONResponse(content={"status": "error", "message": str(e)}, status_code=500)
129
 
130
  @app.post("/api/read_credit")
131
  async def read_credit(image: UploadFile = File(...)):
132
  try:
133
- file_path = await save_upload_file(image)
134
 
135
  ocrResult = ocr_credit_card(file_path.encode('utf-8'))
136
  ocrResDict = json.loads(ocrResult)
@@ -139,31 +139,31 @@ async def read_credit(image: UploadFile = File(...)):
139
 
140
  return JSONResponse(content={"status": "ok", "data": ocrResDict}, status_code=200)
141
 
142
- except Exception as e:
143
- return JSONResponse(content={"status": "error", "message": str(e)}, status_code=500)
144
 
145
  @app.post("/api/read_credit_base64")
146
  async def read_credit_base64(request_data: ImageBase64Request):
147
- try:
148
- file_path = await save_base64_file(request_data.image)
149
 
150
- # Your OCR function (pass bytes-encoded file path)
151
- ocr_result = ocr_credit_card(file_path.encode('utf-8'))
152
- ocr_res_dict = json.loads(ocr_result)
153
 
154
- # Remove the temp file
155
- os.remove(file_path)
156
 
157
- return JSONResponse(content={"status": "ok", "data": ocr_res_dict}, status_code=200)
158
 
159
- except Exception as e:
160
- return JSONResponse(content={"status": "error", "message": str(e)}, status_code=500)
161
 
162
 
163
  @app.post("/api/read_barcode")
164
  async def read_barcode(image: UploadFile = File(...)):
165
  try:
166
- file_path = await save_upload_file(image)
167
 
168
  ocrResult = ocr_barcode(file_path.encode('utf-8'))
169
  ocrResDict = json.loads(ocrResult)
@@ -172,25 +172,25 @@ async def read_barcode(image: UploadFile = File(...)):
172
 
173
  return JSONResponse(content={"status": "ok", "data": ocrResDict}, status_code=200)
174
 
175
- except Exception as e:
176
- return JSONResponse(content={"status": "error", "message": str(e)}, status_code=500)
177
 
178
  @app.post("/api/read_barcode_base64")
179
  async def read_barcode_base64(request_data: ImageBase64Request):
180
- try:
181
- file_path = await save_base64_file(request_data.image)
182
 
183
- # Your OCR function (pass bytes-encoded file path)
184
- ocr_result = ocr_barcode(file_path.encode('utf-8'))
185
- ocr_res_dict = json.loads(ocr_result)
186
 
187
- # Remove the temp file
188
- os.remove(file_path)
189
 
190
- return JSONResponse(content={"status": "ok", "data": ocr_res_dict}, status_code=200)
191
 
192
- except Exception as e:
193
- return JSONResponse(content={"status": "error", "message": str(e)}, status_code=500)
194
 
195
 
196
  if __name__ == '__main__':
@@ -198,14 +198,14 @@ if __name__ == '__main__':
198
  if ret != 0:
199
  exit(-1)
200
 
201
- dummy_interface = gr.Interface(
202
- fn=lambda x: "API ready.",
203
- inputs=gr.Textbox(label="Info"),
204
- outputs=gr.Textbox(label="Response"),
205
- allow_flagging="never" # 🚫 disables writing to `flagged/`
206
- )
207
-
208
- gr_app = gr.mount_gradio_app(app, dummy_interface, path="/gradio")
209
-
210
- import uvicorn
211
- uvicorn.run(gr_app, host="0.0.0.0", port=9000)
 
63
 
64
 
65
  async def save_upload_file(upload_file: UploadFile) -> str:
66
+ file_name = uuid.uuid4().hex[:6] + "_" + upload_file.filename
67
+ save_path = os.path.join(dump_path, file_name)
68
+ with open(save_path, "wb") as buffer:
69
+ shutil.copyfileobj(upload_file.file, buffer)
70
+ return os.path.abspath(save_path)
71
 
72
  async def save_base64_file(base64_string: str) -> str:
73
+ file_name = uuid.uuid4().hex[:6] + ".jpg" # or ".png" depending on your use
74
+ save_path = os.path.join(dump_path, file_name)
75
+
76
+ with open(save_path, "wb") as buffer:
77
+ buffer.write(base64.b64decode(base64_string))
78
+
79
+ return os.path.abspath(save_path)
80
 
81
  app = FastAPI()
82
 
83
  class ImageBase64Request(BaseModel):
84
+ image: str
85
 
86
  @app.get("/")
87
  def read_root():
 
90
  @app.post("/api/read_idcard")
91
  async def read_idcard(image: UploadFile = File(...), image2: UploadFile = File(None)):
92
  try:
93
+ file_path1 = await save_upload_file(image)
94
 
95
+ file_path2 = ""
96
+ if image2 is not None:
97
+ file_path2 = await save_upload_file(image2)
98
 
99
 
100
  ocrResult = ocr_id_card(file_path1.encode('utf-8'), file_path2.encode('utf-8'))
101
  ocrResDict = json.loads(ocrResult)
102
 
103
  os.remove(file_path1)
104
+ if file_path2:
105
+ os.remove(file_path2)
106
 
107
  return JSONResponse(content={"status": "ok", "data": ocrResDict}, status_code=200)
108
 
109
+ except Exception as e:
110
+ return JSONResponse(content={"status": "error", "message": str(e)}, status_code=500)
111
 
112
 
113
  @app.post("/api/read_idcard_base64")
114
  async def read_idcard_base64(request_data: ImageBase64Request):
115
+ try:
116
+ file_path = await save_base64_file(request_data.image)
117
 
118
+ # Your OCR function (pass bytes-encoded file path)
119
+ ocr_result = ocr_id_card(file_path.encode('utf-8'), ''.encode('utf-8'))
120
+ ocr_res_dict = json.loads(ocr_result)
121
 
122
+ # Remove the temp file
123
+ os.remove(file_path)
124
 
125
+ return JSONResponse(content={"status": "ok", "data": ocr_res_dict}, status_code=200)
126
 
127
+ except Exception as e:
128
+ return JSONResponse(content={"status": "error", "message": str(e)}, status_code=500)
129
 
130
  @app.post("/api/read_credit")
131
  async def read_credit(image: UploadFile = File(...)):
132
  try:
133
+ file_path = await save_upload_file(image)
134
 
135
  ocrResult = ocr_credit_card(file_path.encode('utf-8'))
136
  ocrResDict = json.loads(ocrResult)
 
139
 
140
  return JSONResponse(content={"status": "ok", "data": ocrResDict}, status_code=200)
141
 
142
+ except Exception as e:
143
+ return JSONResponse(content={"status": "error", "message": str(e)}, status_code=500)
144
 
145
  @app.post("/api/read_credit_base64")
146
  async def read_credit_base64(request_data: ImageBase64Request):
147
+ try:
148
+ file_path = await save_base64_file(request_data.image)
149
 
150
+ # Your OCR function (pass bytes-encoded file path)
151
+ ocr_result = ocr_credit_card(file_path.encode('utf-8'))
152
+ ocr_res_dict = json.loads(ocr_result)
153
 
154
+ # Remove the temp file
155
+ os.remove(file_path)
156
 
157
+ return JSONResponse(content={"status": "ok", "data": ocr_res_dict}, status_code=200)
158
 
159
+ except Exception as e:
160
+ return JSONResponse(content={"status": "error", "message": str(e)}, status_code=500)
161
 
162
 
163
  @app.post("/api/read_barcode")
164
  async def read_barcode(image: UploadFile = File(...)):
165
  try:
166
+ file_path = await save_upload_file(image)
167
 
168
  ocrResult = ocr_barcode(file_path.encode('utf-8'))
169
  ocrResDict = json.loads(ocrResult)
 
172
 
173
  return JSONResponse(content={"status": "ok", "data": ocrResDict}, status_code=200)
174
 
175
+ except Exception as e:
176
+ return JSONResponse(content={"status": "error", "message": str(e)}, status_code=500)
177
 
178
  @app.post("/api/read_barcode_base64")
179
  async def read_barcode_base64(request_data: ImageBase64Request):
180
+ try:
181
+ file_path = await save_base64_file(request_data.image)
182
 
183
+ # Your OCR function (pass bytes-encoded file path)
184
+ ocr_result = ocr_barcode(file_path.encode('utf-8'))
185
+ ocr_res_dict = json.loads(ocr_result)
186
 
187
+ # Remove the temp file
188
+ os.remove(file_path)
189
 
190
+ return JSONResponse(content={"status": "ok", "data": ocr_res_dict}, status_code=200)
191
 
192
+ except Exception as e:
193
+ return JSONResponse(content={"status": "error", "message": str(e)}, status_code=500)
194
 
195
 
196
  if __name__ == '__main__':
 
198
  if ret != 0:
199
  exit(-1)
200
 
201
+ dummy_interface = gr.Interface(
202
+ fn=lambda x: "API ready.",
203
+ inputs=gr.Textbox(label="Info"),
204
+ outputs=gr.Textbox(label="Response"),
205
+ allow_flagging="never" # 🚫 disables writing to `flagged/`
206
+ )
207
+
208
+ gr_app = gr.mount_gradio_app(app, dummy_interface, path="/gradio")
209
+
210
+ import uvicorn
211
+ uvicorn.run(gr_app, host="0.0.0.0", port=9000)