Files
03Rag/rag/extract_text_auto.py
heyong.fu a17c65c4bc feat: rag
2026-05-06 11:35:10 +08:00

58 lines
2.3 KiB
Python

import os
import logging
import extract
logger = logging.getLogger(__name__)
def extractTextAuto(file_path: str) -> str:
if not os.path.exists(file_path):
raise FileNotFoundError(f"文件不存在:{file_path}")
# 获取文件拓展名
ext = os.path.splitext(file_path)[-1].lower()
try:
# 如果是pdf文件
if ext == ".pdf":
logger.info(f"检测到PDF文件,开始提取文本: {file_path}")
return extract.extract_pdf_text(file_path)
# 如果是Word文档
elif ext in [".docx", ".doc"]:
logger.info(f"检测到Word文件,开始提取文本: {file_path}")
return extract.extract_text_from_word(file_path)
# 如果是Excel文件
elif ext in [".xlsx", ".xls"]:
logger.info(f"检测到Excel文件,开始提取文本: {file_path}")
return extract.extract_text_from_excel(file_path)
# 如果是PPT文件
elif ext in [".pptx", ".ppt"]:
logger.info(f"检测到PPT文件,开始提取文本: {file_path}")
return extract.extract_ppt_text(file_path)
# 如果是HTML文件
elif ext in [".html", ".htm"]:
logger.info(f"检测到HTML文件,开始提取文本: {file_path}")
return extract.extract_text_from_html(file_path)
# 如果是XML文件
elif ext == ".xml":
logger.info(f"检测到XML文件,开始提取文本: {file_path}")
return extract.extract_xml_text(file_path)
# 如果是CSV文件
elif ext == ".csv":
logger.info(f"检测到CSV文件,开始提取文本: {file_path}")
return extract.read_csv_to_text(file_path)
# 如果是JSON文件
elif ext == ".json":
logger.info(f"检测到JSON文件,开始提取文本: {file_path}")
return extract.extract_text_from_json(file_path)
# 如果是纯文本、Markdown、JSONL文件
elif ext in [".md", ".txt", ".jsonl"]:
logger.info(f"检测到文本/Markdown/JSONL文件,开始读取: {file_path}")
return extract.read_text_file(file_path)
# 其余不支持的文件类型
else:
logger.error(f"不支持的文件类型: {ext}")
raise ValueError(f"不支持的文件类型: {ext}")
except Exception as e:
raise