# import re # from flask import request, jsonify, current_app # from PIL import Image, UnidentifiedImageError # from io import BytesIO # import base64 # import requests # from ..services.adhaarServices.ocr import process_results # import io # def ocrAdhaar(mode, session): # try: # print("API HIT ************* AADHAAROCR") # data = request.get_json() # if not data: # return jsonify({"error": "Invalid request payload"}), 400 # if mode == "prod": # if not data.get('image'): # return jsonify({"error": "Image data/buffer is required"}), 400 # #removing 'data:image/png,base64 ' from buffer. # imgBuffer = data.get('image') # imgBuffer = re.sub("^data:image/.+;base64,", "", imgBuffer) # # Adjust base64 string padding # if len(imgBuffer) % 4: # imgBuffer += '=' * (4 - len(imgBuffer) % 4) # try: # img_data = base64.b64decode(imgBuffer) # img = Image.open(BytesIO(img_data)) # img.verify() # Verify image format # img = Image.open(io.BytesIO(img_data)) # Re-open image after verification # except (base64.binascii.Error, ValueError) as decode_err: # return jsonify({"error": f"Image decoding failed: {str(decode_err)}"}), 400 # except UnidentifiedImageError: # return jsonify({"error": "Unable to identify image format."}), 400 # elif mode == "dev": # if not data.get('imgUrl'): # return jsonify({"error": "Image URL is required"}), 400 # img_url = data.get('imgUrl') # response = session.get(img_url) # response.raise_for_status() # img = Image.open(BytesIO(response.content)) # img.verify() # Verify image format # img = Image.open(BytesIO(response.content)) # Re-open image after verification # else: # return jsonify({"error": "Invalid mode configuration"}), 500 # # Check image format # if img.format not in ['JPEG', 'JPG', 'PNG']: # return jsonify({"error": "Invalid image format. Only JPG and PNG are supported."}), 400 # # Run detection # model = current_app.models.get('adhaarModel') # results = model.predict(source=img, save=False) # extracted_data = process_results(results, img) # if extracted_data.get('statusCode') == 400: # return jsonify(extracted_data), 400 # return jsonify(extracted_data), 200 # except requests.RequestException as req_err: # return jsonify({"error": f"Image download failed: {str(req_err)}"}), 500 # except UnidentifiedImageError: # return jsonify({"error": "Unable to identify image format."}), 400 # except Exception as e: # current_app.logger.error(f"Unexpected error: {str(e)}") # return jsonify({"error": "An unexpected error occurred."}), 500