AgentReach-Systems / src /services /file_proccess.py
MohamedFahim's picture
added
6e74855
Raw
History Blame Contribute Delete
1.74 kB
import os
import re
import tempfile
import pandas as pd
import fitz # PyMuPDF
from docx import Document
from fastapi import UploadFile
def extract_phone_numbers(text: str) -> list:
phone_pattern = re.compile(r'\b\d{10}\b')
matches = phone_pattern.findall(text)
return [f'+91{number}' for number in matches]
def extract_text_from_pdf(file_path: str) -> str:
doc = fitz.open(file_path)
text = ""
for page in doc:
text += page.get_text()
return text
def extract_text_from_docx(file_path: str) -> str:
doc = Document(file_path)
return "\n".join([para.text for para in doc.paragraphs])
def extract_text_from_file(file: UploadFile) -> str:
suffix = os.path.splitext(file.filename)[-1].lower()
print("File suffix:", suffix)
with tempfile.NamedTemporaryFile(delete=False, suffix=suffix) as tmp:
tmp.write(file.file.read())
tmp_path = tmp.name
try:
if suffix == ".pdf":
return extract_text_from_pdf(tmp_path)
elif suffix == ".docx":
return extract_text_from_docx(tmp_path)
elif suffix in [".txt"]:
with open(tmp_path, "r", encoding="utf-8") as f:
return f.read()
elif suffix == ".csv":
df = pd.read_csv(tmp_path)
return " ".join(df.astype(str).values.flatten())
elif suffix in [".xlsx", ".xls"]:
df = pd.read_excel(tmp_path)
return " ".join(df.astype(str).values.flatten())
else:
print("Unsupported file type, fallback to manual read")
return file.file.read().decode("utf-8", errors="ignore")
except Exception as e:
print("Error while parsing file:", e)
return ""