BookVisionAI / app /main.py
namanraj's picture
Upload 24 files
8d9ac15 verified
from fastapi import FastAPI, UploadFile
from fastapi.middleware.cors import CORSMiddleware
import shutil
from app.agent import run_agent
app = FastAPI()
# Enable CORS for Streamlit Cloud
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # Allows all origins
allow_credentials=True,
allow_methods=["*"], # Allows all methods
allow_headers=["*"], # Allows all headers
)
@app.post("/process-page/")
async def process_page(
book_name: str,
file: UploadFile,
author_name: str = ""
):
import tempfile
import os
import traceback
from fastapi.responses import JSONResponse
try:
# Create a temporary file
with tempfile.NamedTemporaryFile(delete=False, suffix=os.path.splitext(file.filename)[1]) as tmp:
shutil.copyfileobj(file.file, tmp)
image_path = tmp.name
import base64
result = run_agent(image_path, book_name, author_name)
image_b64 = ""
if result["image"]:
image_b64 = base64.b64encode(result["image"]).decode("utf-8")
return {
"ocr_text": result["ocr_text"],
"ocr_confidence": result["ocr_confidence"],
"book_context": result["book_context"],
"summary": result["summary"],
"image_prompt": result["image_prompt"],
"image": image_b64
}
except Exception as e:
error_msg = f"Server Error: {str(e)}\n{traceback.format_exc()}"
print(error_msg)
return JSONResponse(status_code=500, content={"detail": error_msg})