Spaces:
Runtime error
Runtime error
File size: 1,987 Bytes
6b78f9c d7adeec 6b78f9c 1e01eb5 6b78f9c 1854fbd 1e01eb5 1854fbd 6b78f9c 1e01eb5 6b78f9c d7adeec 1e01eb5 6b78f9c 1e01eb5 6b78f9c 1e01eb5 6b78f9c |
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 |
# main.py
from fastapi import FastAPI, File, UploadFile, HTTPException
from fastapi.responses import JSONResponse
from typing import Dict, Any
import io
import base64
import logging
from .annotations import analyze_pdf
# Configure logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
app = FastAPI(
title="PDF Language Issue Analyzer",
description="An API to analyze PDFs for language issues and provide an annotated PDF.",
version="1.0.0"
)
@app.get("/", summary="Root Endpoint")
def read_root():
"""
Root endpoint to verify that the API is running.
"""
logger.info("Root endpoint accessed.")
return {"message": "PDF Language Issue Analyzer API is running."}
@app.post("/analyze", summary="Analyze PDF for Language Issues")
async def analyze_pdf_endpoint(file: UploadFile = File(...)):
"""
Analyze an uploaded PDF file for language issues.
- **file**: PDF file to be analyzed.
"""
if file.content_type != "application/pdf":
logger.error("Invalid file type uploaded: %s", file.content_type)
raise HTTPException(status_code=400, detail="Invalid file type. Only PDFs are supported.")
try:
contents = await file.read()
file_stream = io.BytesIO(contents)
language_issues, annotated_pdf = analyze_pdf(file_stream)
response = {
"language_issues": language_issues
}
if annotated_pdf:
# Properly encode the annotated PDF in Base64
encoded_pdf = base64.b64encode(annotated_pdf).decode('utf-8')
response["annotated_pdf"] = f"data:application/pdf;base64,{encoded_pdf}"
logger.info("Annotated PDF generated and encoded.")
logger.info("PDF analysis completed successfully.")
return JSONResponse(content=response)
except Exception as e:
logger.exception("Error occurred during PDF analysis.")
raise HTTPException(status_code=500, detail=str(e)) |