zbparse/flask_app/货物标/提取采购需求main.py
2024-10-17 15:33:58 +08:00

57 lines
2.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import concurrent.futures
import json
import time
from flask_app.货物标.技术要求提取 import get_technical_requirements
from flask_app.main.通义千问long import upload_file
from flask_app.货物标.商务服务其他要求提取 import get_business_requirements
from flask_app.main.json_utils import nest_json_under_key
#获取采购清单
def fetch_procurement_reqs(truncate_file):
# 定义默认的 procurement_reqs 字典
DEFAULT_PROCUREMENT_REQS = {
"技术要求": "",
"商务要求": "",
"服务要求": "",
"其他要求": ""
}
# 如果 truncate_file 是空字符串,直接返回包含空字符串的字典
if not truncate_file:
return DEFAULT_PROCUREMENT_REQS.copy()
try:
# 上传文件并获取 file_id
file_id = upload_file(truncate_file)
# 使用 ThreadPoolExecutor 并行处理 get_technical_requirements 和 get_business_requirements
with concurrent.futures.ThreadPoolExecutor() as executor:
# 提交任务给线程池
future_technical = executor.submit(get_technical_requirements, file_id)
time.sleep(1) # 如果需要延迟,可以保留,否则建议移除以提高效率
future_business = executor.submit(get_business_requirements, truncate_file, file_id)
# 获取并行任务的结果
technical_requirements = future_technical.result()
business_requirements = future_business.result()
# 构建最终的嵌套结构,确保四个键平级
procurement_reqs = {
"技术要求": technical_requirements.get("技术要求", {}),
"商务要求": business_requirements.get("商务要求", {}),
"服务要求": business_requirements.get("服务要求", {}),
"其他要求": business_requirements.get("其他要求", {})
}
return procurement_reqs
except Exception as e:
print(f"Error in fetch_procurement_reqs: {e}")
# 在出错时返回默认的包含空字符串的字典
return DEFAULT_PROCUREMENT_REQS.copy()
if __name__ == "__main__":
output_folder = "C:\\Users\\Administrator\\Desktop\\货物标\\货物标output"
# file_path="C:\\Users\\Administrator\\Desktop\\货物标\\output1\\2-招标文件2020年广水市中小学教师办公电脑系统及多媒体“班班通”设备采购安装项目_procurement.pdf"
file_path="C:\\Users\\Administrator\\Desktop\\货物标\\output1\\磋商文件_procurement.pdf"
res=fetch_procurement_reqs(file_path)
print(json.dumps(res, ensure_ascii=False, indent=4))