Spaces:
Runtime error
Runtime error
| import pytesseract | |
| import cv2 | |
| import numpy as np | |
| from flask import Flask, request, jsonify | |
| from flask_cors import CORS | |
| # Initialize Flask app | |
| app = Flask(__name__) | |
| CORS(app) | |
| def decode_base64_image(image_data): | |
| """ | |
| Decode a Base64 image into OpenCV format. | |
| """ | |
| try: | |
| header, encoded = image_data.split(",", 1) | |
| image_bytes = base64.b64decode(encoded) | |
| np_array = np.frombuffer(image_bytes, np.uint8) | |
| image = cv2.imdecode(np_array, cv2.IMREAD_COLOR) | |
| return image | |
| except Exception as e: | |
| return None, f"Error decoding image: {str(e)}" | |
| def preprocess_image(image): | |
| """ | |
| Preprocess the image for better OCR results. | |
| """ | |
| gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) | |
| _, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) | |
| return binary | |
| def extract_text(): | |
| """ | |
| Extract text from an uploaded image. | |
| """ | |
| try: | |
| data = request.json | |
| if "image" not in data: | |
| return jsonify({"error": "No image provided"}), 400 | |
| # Decode the Base64 image | |
| image, error = decode_base64_image(data["image"]) | |
| if error: | |
| return jsonify({"error": error}), 400 | |
| # Preprocess the image | |
| preprocessed_image = preprocess_image(image) | |
| # Extract text using Tesseract | |
| text = pytesseract.image_to_string(preprocessed_image, config="--oem 3 --psm 6") | |
| return jsonify({"text": text}), 200 | |
| except Exception as e: | |
| return jsonify({"error": str(e)}), 500 | |
| def status(): | |
| """ | |
| Health check endpoint to verify the server is running. | |
| """ | |
| return jsonify({"status": "Server is running"}), 200 | |
| if __name__ == '__main__': | |
| app.run(debug=True, host='0.0.0.0', port=5000) | |