Spaces:
Sleeping
Sleeping
File size: 4,621 Bytes
6763770 fc66fa8 6763770 fc66fa8 6763770 fc66fa8 6763770 fc66fa8 6763770 fc66fa8 6763770 fc66fa8 6763770 fc66fa8 6763770 fc66fa8 6763770 fc66fa8 6763770 fc66fa8 6763770 fc66fa8 6763770 fc66fa8 6763770 fc66fa8 6763770 fc66fa8 6763770 fc66fa8 6763770 fc66fa8 6763770 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# from fastapi import FastAPI
# from pydantic import BaseModel
# from model_loader import ModelLoader
# from services.text_filter import TextFilterService
# from services.image_ocr import ImageOCRService
# from typing import Optional
# from fastapi.responses import JSONResponse
# import logging
# logging.basicConfig(
# level=logging.INFO,
# format="%(asctime)s [%(levelname)s] %(message)s",
# handlers=[
# logging.StreamHandler()
# ]
# )
# logger = logging.getLogger(__name__)
# app = FastAPI()
# logger.info("Starting FastAPI app...")
# model_loader = ModelLoader()
# logger.info("ModelLoader initialized.")
# text_filter_service = TextFilterService(model_loader)
# logger.info("TextFilterService initialized.")
# image_ocr_service = ImageOCRService()
# logger.info("Image OCR image initialized")
# class InputData(BaseModel):
# text: Optional[str] = None
# image_url: Optional[str] = None
# @app.post("/filtercomment")
# async def filter_comment(input_data: InputData):
# logger.info("Received request: %s", input_data)
# final_text = ""
# # Case 1: Extract text from image
# if input_data.image_url:
# logger.info("Image URL provided: %s", input_data.image_url)
# try:
# logger.info("Fetching image from URL...")
# final_text = image_ocr_service.extract_text(input_data.image_url)
# logger.info("Generated text: %s", final_text)
# except Exception as e:
# logger.error("Image processing failed: %s", str(e))
# return JSONResponse(status_code=400, content={"error": f"Image processing failed: {str(e)}"})
# # Case 2: Use provided text
# elif input_data.text:
# logger.info("Text input provided.")
# final_text = input_data.text
# else:
# logger.warning("No input provided.")
# return JSONResponse(status_code=400, content={"error": "Either 'text' or 'image_url' must be provided."})
# try:
# logger.info("Processing text through TextFilterService...")
# results = text_filter_service.process_text(final_text)
# results["extracted_text"] = final_text
# logger.info("Text filtering complete. Results: %s", results)
# return results
# except Exception as e:
# logger.exception("Text filtering failed.")
# return JSONResponse(status_code=500, content={"error": f"Text filtering failed: {str(e)}"})
# if __name__ == "__main__":
# import uvicorn
# logger.info("Starting Uvicorn server...")
# uvicorn.run(app, host="0.0.0.0", port=3000)
from flask import Flask, request, jsonify
from model_loader import ModelLoader
from services.text_filter import TextFilterService
from services.image_ocr import ImageOCRService
import logging
import os
# Set Hugging Face cache directory
os.environ["HF_HOME"] = "/app/cache"
# Logging setup
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(message)s"
)
logger = logging.getLogger(__name__)
app = Flask(__name__)
logger.info("Starting Flask app...")
# Load model and services
model_loader = ModelLoader()
logger.info("ModelLoader initialized.")
text_filter_service = TextFilterService(model_loader)
logger.info("TextFilterService initialized.")
image_ocr_service = ImageOCRService()
logger.info("ImageOCRService initialized.")
@app.route("/filtercomment", methods=["POST"])
def filter_comment():
data = request.get_json()
logger.info("Received request: %s", data)
text = data.get("text")
image_url = data.get("image_url")
final_text = ""
if image_url:
logger.info("Image URL provided: %s", image_url)
try:
final_text = image_ocr_service.extract_text(image_url)
logger.info("Generated text: %s", final_text)
except Exception as e:
logger.error("Image processing failed: %s", str(e))
return jsonify({"error": f"Image processing failed: {str(e)}"}), 400
elif text:
final_text = text
else:
logger.warning("No input provided.")
return jsonify({"error": "Either 'text' or 'image_url' must be provided."}), 400
try:
results = text_filter_service.process_text(final_text)
results["extracted_text"] = final_text
logger.info("Text filtering complete. Results: %s", results)
return jsonify(results)
except Exception as e:
logger.exception("Text filtering failed.")
return jsonify({"error": f"Text filtering failed: {str(e)}"}), 500
if __name__ == "__main__":
app.run(host="0.0.0.0", port=7860)
|