from utils import * from flask import Blueprint,render_template,request,jsonify import tensorflow as tf import base64 import io from PIL import Image views = Blueprint("views",__name__) ocr_model = None ocr_sub_model = None MODEL_PATH = 'models/ocr_big_1.h5' SUB_MODEL_PATH= 'models/ocr_new_1.h5' @views.route('/',methods=['GET','POST']) def index(): global ocr_model global ocr_sub_model if request.method == 'POST': data = request.json['image'] head, data = data.split(',', 1) image_data = base64.b64decode(data) image = Image.open(io.BytesIO(image_data)).convert('RGB') processed_image = np.array(image) if not ocr_model: ocr_model = tf.keras.models.load_model(MODEL_PATH) if not ocr_sub_model: ocr_sub_model = tf.keras.models.load_model(SUB_MODEL_PATH) detected_contours,output_image, coords = get_results(processed_image) output_string = "" for i in range(len(detected_contours)): predicted_char = predict(ocr_model, ocr_sub_model,detected_contours[i],mappings) if predicted_char == '0': output_string += 'O' cv2.putText(output_image, 'O', (coords[i][0]+5,coords[i][1]-5), font, font_scale, color, thickness) else: cv2.putText(output_image, predicted_char, (coords[i][0]+5,coords[i][1]-5), font, font_scale, color, thickness) output_string += predicted_char output_image = Image.fromarray(output_image, 'RGB') data = io.BytesIO() output_image.save(data, "JPEG") output_image = base64.b64encode(data.getvalue()).decode('utf-8') return jsonify({'output_image': output_image, 'output_string': output_string}) return render_template('index.html')