Table-detection / main.py
Sharathhebbar24's picture
First HF_SPace APp
d28ba37
import os
import shutil
from pathlib import Path, PurePath
from fastapi.middleware.cors import CORSMiddleware
from fastapi import FastAPI, Form, HTTPException
from dotenv import load_dotenv
from folder_creation import make_directory_if_not_exists
from pdf_to_img import pdf_to_image
from table_extraction import Table_extraction
from minio_services import MINIO
load_dotenv()
IMAGES_DIR = os.getenv('IMAGES_DIR')
PDF_DIR = os.getenv('PDF_DIR')
OUTPUTS_DIR = os.getenv('OUTPUTS_DIR')
HOST = os.getenv('HOST')
ACCESS_KEY = os.getenv('ACCESS_KEY')
MINIO_KEY = os.getenv('MINIO_KEY')
BUCKET_NAME = os.getenv('BUCKET_NAME')
app = FastAPI()
origins = ["*"]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
@app.post("/")
async def main(file_name: str = Form(None), uid: str = Form(None)):
try:
make_directory_if_not_exists(IMAGES_DIR)
IMAGES_DIR1 = IMAGES_DIR + uid + '/'
make_directory_if_not_exists(IMAGES_DIR1)
make_directory_if_not_exists(OUTPUTS_DIR)
OUTPUTS_DIR1 = OUTPUTS_DIR + uid + '/'
make_directory_if_not_exists(OUTPUTS_DIR1)
print(file_name)
if PurePath(file_name).suffix == '.pdf':
imagename = pdf_to_image(file_name, IMAGES_DIR1)
else:
imagename = IMAGES_DIR1+Path(file_name).name
shutil.copy(file_name, imagename)
model = Table_extraction(imagename, OUTPUTS_DIR1)
op_img = model.get_results()
minio = MINIO(HOST, ACCESS_KEY, MINIO_KEY, BUCKET_NAME, uid, op_img)
minio.upload_to_minio()
obj = minio.download_from_minio()
shutil.rmtree(IMAGES_DIR)
shutil.rmtree(OUTPUTS_DIR)
return obj
except Exception as e:
shutil.rmtree(IMAGES_DIR)
shutil.rmtree(OUTPUTS_DIR)
raise HTTPException(status_code=404, detail=str(e))