p2t-test / app.py
abcd-hide's picture
Upload 3 files
741fd70 verified
Raw
History Blame Contribute Delete
1.32 kB
from fastapi import FastAPI, UploadFile, File, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from pix2text import Pix2Text
import io
from PIL import Image
import uvicorn
import os
# 高速トークナイザーの並列処理によるデッドロックを回避
os.environ["TOKENIZERS_PARALLELISM"] = "false"
app = FastAPI()
# CORSを許可
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Pix2Textを初期化
p2t = Pix2Text()
@app.get("/")
def read_root():
return {"status": "ok", "message": "Pix2Text API is running"}
@app.get("/status")
def get_status():
return {"status": "ready"}
@app.post("/predict")
async def predict(file: UploadFile = File(...)):
if not file.content_type.startswith("image/"):
raise HTTPException(status_code=400, detail="File must be an image")
try:
contents = await file.read()
image = Image.open(io.BytesIO(contents)).convert("RGB")
# Pix2Textで認識 (formula認識のみを指定)
res = p2t.recognize_formula(image)
return {"latex": res}
except Exception as e:
return {"error": str(e)}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=7860)