iShare's picture
Create main.py
f4c8d5e
raw
history blame
No virus
1.72 kB
from fastapi import FastAPI, File, UploadFile
from pydantic import BaseModel
from pathlib import Path
from fastapi import Form
from fastapi.responses import JSONResponse
from langchain.text_splitter import RecursiveCharacterTextSplitter
from PyPDF2 import PdfReader
from fastapi import Depends
def generate_random_string(length):
letters = string.ascii_lowercase
return ''.join(random.choice(letters) for i in range(length))
app = FastAPI()
class FileToProcess(BaseModel):
uploaded_file: UploadFile = File(...)
@app.get("/")
async def home():
return "API Working!"
@app.post("/file/upload")
async def upload_file(username: str, file_to_process: FileToProcess = Depends()):
uploaded_file = file_to_process.uploaded_file
random_string=generate_random_string(20)
file_path = random_string
#path_to_save_file = Path.home() / username / "saved_files"
#path_to_save_file.mkdir(parents=True, exist_ok=True)
file_saved_in_api = f"{file_path}/{uploaded_file.filename}"
with open(file_saved_in_api, "wb+") as file_object:
file_object.write(uploaded_file.file.read())
# 下面是你要处理的代码
text_splitter = RecursiveCharacterTextSplitter(
#separator = "\n",
chunk_size = 500,
chunk_overlap = 100, #striding over the text
length_function = len,
)
doc_reader = PdfReader(file_saved_in_api)
raw_text = ''
for i, page in enumerate(doc_reader.pages):
text = page.extract_text()
if text:
raw_text += text
temp_texts = text_splitter.split_text(raw_text)
print(temp_texts)
return {"INFO": f"File '{uploaded_file.filename}' saved to your profile."}