58 lines
2.3 KiB
Python
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
|