截取pdf工程/货物尝试合并
This commit is contained in:
parent
6c5163b2fb
commit
8aa7875a52
@ -18,7 +18,7 @@ def judge_zbfile(file_path):
|
||||
若有未涵盖的类型,但其内容明确表达了项目需求、采购或招标信息,且包含指导投标人参与的关键要素,则可视为招标文件。
|
||||
请基于上述内容判断文件是否属于招标文件。
|
||||
"""
|
||||
file_id = upload_file(pdf_path)
|
||||
file_id = upload_file(file_path)
|
||||
model_res = qianwen_long(file_id, user_query)
|
||||
print(f"判断是否属于招标文件:{model_res}")
|
||||
if '否' in model_res:
|
||||
|
@ -373,7 +373,7 @@ def extract_pages_tobidders_notice(pdf_path, begin_pattern, begin_page, common_h
|
||||
# 定义基础的 mid_pattern
|
||||
base_mid_pattern = r'^\s*(?:[((]\s*[一二12]?\s*[))]\s*[、..]*|' \
|
||||
r'[一二12][、..]+|[、..]+)\s*(说\s*明|总\s*则|名\s*词\s*解\s*释)' \
|
||||
r'|(?<!见\s*)(?<!与\s*)(?<!"\s*)(?<!“\s*)(?<!”\s*)(?:投标人?|磋商|谈判|供应商|应答人)\s*须知正文\s*$'
|
||||
r'|(?<!见\s*)(?<!与\s*)(?<!"\s*)(?<!“\s*)(?<!”\s*)(?:投标人?|磋商|谈判|供应商|应答人).*须知正文\s*$'
|
||||
|
||||
# 合并基础模式和额外模式
|
||||
if additional_mid_pattern:
|
||||
@ -440,8 +440,8 @@ def extract_pages_tobidders_notice(pdf_path, begin_pattern, begin_page, common_h
|
||||
else:
|
||||
# 定义新的 begin_pattern 和 end_pattern
|
||||
new_begin_pattern = regex.compile(
|
||||
r'.*(?:投标人|磋商|谈判|供应商|应答人)须知\s*$|'
|
||||
r'(?:一\s*、\s*)?(?:投标人?|磋商|谈判|供应商|应答人)须知前附表',
|
||||
r'.*(?:投标人|磋商|谈判|供应商|应答人|比选申请人).*须知\s*$|'
|
||||
r'(?:一\s*、\s*)?(?:投标人?|磋商|谈判|供应商|应答人|比选申请人).*须知前附表',
|
||||
regex.MULTILINE
|
||||
)
|
||||
new_end_pattern = regex.compile(
|
||||
@ -458,7 +458,7 @@ def extract_pages_tobidders_notice(pdf_path, begin_pattern, begin_page, common_h
|
||||
def extract_pages_twice_tobidders_notice(pdf_document, common_header, begin_page):
|
||||
output_suffix = "tobidders_notice"
|
||||
begin_pattern = regex.compile(
|
||||
r'^第[一二三四五六七八九十百千]+(?:章|部分).*(?:(?:投标人?|磋商|谈判|供应商|应答人)须知)+',
|
||||
r'^第[一二三四五六七八九十百千]+(?:章|部分).*(?:(?:投标人?|磋商|谈判|供应商|应答人|比选申请人).*须知)+',
|
||||
regex.MULTILINE
|
||||
)
|
||||
end_pattern = regex.compile(
|
||||
|
@ -2,7 +2,10 @@
|
||||
|
||||
2.该招标文件的项目概况(或工程概况)是?项目基本情况是?请按json格式给我提供信息,键名分别为'项目概况','项目基本情况',若存在嵌套信息,嵌套内容键名以文件中对应字段命名,若存在未知信息,在对应的键值中填'未知'。
|
||||
|
||||
3.该招标文件的招标控制价(或投标限价或项目预算金额)是?请按json格式给我提供信息,键名为'招标控制价',键值为具体金额,与原文保持一致,特别注意若原文中存在单位'万',不要省略;若存在未知信息,在对应的键值中填'未知'。
|
||||
3.该招标文件的招标控制价(或投标限价或项目预算金额)是?请按json格式给我提供信息,键名为'招标控制价',键值为具体金额,与原文保持一致,特别注意若原文中存在单位'万',不要省略;若存在未知信息,在对应的键值中填'未知'。示例输出如下,仅供格式参考:
|
||||
{
|
||||
"招标控制价":"48万元"
|
||||
}
|
||||
|
||||
4.投标文件(或响应文件)递交截止时间是?递交地点(或方式)是?请按json格式给我提供信息,键名分别是'投标文件递交截止日期','投标文件递交地点'(或'投标文件递交方式'),键值为原文中相关内容的表述,若存在未知信息,在对应的键值中填'未知',示例输出如下,仅供格式参考:
|
||||
{
|
||||
|
@ -2,7 +2,10 @@
|
||||
|
||||
2.该招标文件的项目概况是?项目基本情况是?请按json格式给我提供信息,键名分别为'项目概况','项目基本情况',若存在嵌套信息,嵌套内容键名以文件中对应字段命名,而嵌套键值必须与原文保持一致,若存在未知信息,在对应的键值中填'未知'。
|
||||
|
||||
3.该招标文件的招标控制价(或投标限价或项目预算金额)是?请按json格式给我提供信息,键名为'招标控制价',键值为具体金额,与原文保持一致,特别注意若原文中存在单位'万',不要省略;若存在未知信息,在对应的键值中填'未知'。
|
||||
3.该招标文件的招标控制价(或投标限价或项目预算金额)是?请按json格式给我提供信息,键名为'招标控制价',键值为具体金额,与原文保持一致,特别注意若原文中存在单位'万',不要省略;若存在未知信息,在对应的键值中填'未知'。示例输出如下,仅供格式参考:
|
||||
{
|
||||
"招标控制价":"48万元"
|
||||
}
|
||||
|
||||
4.投标文件(或响应文件)递交截止时间是?递交地点(或方式)是?请按json格式给我提供信息,键名分别是'投标文件递交截止日期','投标文件递交地点'(或'投标文件递交方式'),键值为原文中相关内容的表述,若存在未知信息,在对应的键值中填'未知',示例输出如下,仅供格式参考:
|
||||
{
|
||||
|
@ -2,7 +2,10 @@
|
||||
|
||||
2.该招标文件的项目概况(或工程概况)是?项目基本情况是?请按json格式给我提供信息,键名分别为'项目概况','项目基本情况',若存在嵌套信息,嵌套内容键名以文件中对应字段命名,若存在未知信息,在对应的键值中填'未知'。
|
||||
|
||||
3.该招标文件的招标控制价(或投标限价或项目预算金额)是?请按json格式给我提供信息,键名为'招标控制价',键值为具体金额,与原文保持一致,特别注意若原文中存在单位'万',不要省略;若存在未知信息,在对应的键值中填'未知'。
|
||||
3.该招标文件的招标控制价(或投标限价或项目预算金额)是?请按json格式给我提供信息,键名为'招标控制价',键值为具体金额,与原文保持一致,特别注意若原文中存在单位'万',不要省略;若存在未知信息,在对应的键值中填'未知'。示例输出如下,仅供格式参考:
|
||||
{
|
||||
"招标控制价":"48万元"
|
||||
}
|
||||
|
||||
4.投标文件递交截止日期是?请按json格式给我提供信息,键名是'投标文件递交截止日期',若原文未提及明确日期时间,请返回原文对应的内容,若存在未知信息,在对应的键值中填'未知'。示例输出格式如下:
|
||||
{
|
||||
|
@ -2,7 +2,10 @@
|
||||
|
||||
2.该招标文件的项目概况是?项目基本情况是?请按json格式给我提供信息,键名分别为'项目概况','项目基本情况',若存在嵌套信息,嵌套内容键名以文件中对应字段命名,而嵌套键值必须与原文保持一致,若存在未知信息,在对应的键值中填'未知'。
|
||||
|
||||
3.该招标文件的招标控制价(或投标限价或项目预算金额)是?请按json格式给我提供信息,键名为'招标控制价',键值为具体金额,与原文保持一致,特别注意若原文中存在单位'万',不要省略;若存在未知信息,在对应的键值中填'未知'。
|
||||
3.该招标文件的招标控制价(或投标限价或项目预算金额)是?请按json格式给我提供信息,键名为'招标控制价',键值为具体金额,与原文保持一致,特别注意若原文中存在单位'万',不要省略;若存在未知信息,在对应的键值中填'未知'。示例输出如下,仅供格式参考:
|
||||
{
|
||||
"招标控制价":"48万元"
|
||||
}
|
||||
|
||||
4.投标文件(或响应文件)递交截止时间是?请按json格式给我提供信息,键名是'投标文件递交截止日期',若原文未提及明确日期时间,请返回原文对应的内容,若存在未知信息,在对应的键值中填'未知'。示例输出格式如下:
|
||||
{
|
||||
|
@ -1,20 +1,23 @@
|
||||
import re
|
||||
import regex
|
||||
|
||||
cleaned_text = """第三章 评标办法 (综合评分法)
|
||||
一、评标原则
|
||||
1.评标将本着公平、公正、科学、择优的原则进行。
|
||||
2.依法评标、严格保密。
|
||||
...
|
||||
8.投标文件 含有招标人不能接受的附加条件的;
|
||||
"""
|
||||
# 新的正则表达式
|
||||
begin_pattern = regex.compile(
|
||||
r'^第[一二三四五六七八九十百千]+(?:章|部分).*(?:投标人?|磋商|谈判|供应商|应答人|比选申请人).*须知+|'
|
||||
r'(?<!见\s*)(?<!与\s*)(?<!"\s*)(?<!"\s*)(?<!"\s*)(?:投标人?|磋商|谈判|供应商|应答人|比选申请人).*须知前附表\s*$',
|
||||
regex.MULTILINE
|
||||
)
|
||||
|
||||
end_pattern = '^(?:第[一二三四五六七八九十百千]+(?:章|部分)\s*[\u4e00-\u9fff]+|评标办法前附表|附录(?:一)?[::]|附件(?:一)?[::]|附表(?:一)?[::]'
|
||||
matches = list(re.finditer(end_pattern, cleaned_text, re.MULTILINE))
|
||||
# 测试文本
|
||||
test_texts = [
|
||||
"第一章 投标人 须知", # 匹配
|
||||
"第九章 磋商 123 须知", # 匹配
|
||||
"第十章 谈判一些内容须知", # 匹配
|
||||
"第二章 投标人123abc须知前附表", # 匹配
|
||||
"第一部分 供应商\n须知", # 不匹配,因为有换行
|
||||
"第八章 其他内容须知" # 不匹配
|
||||
]
|
||||
|
||||
if matches:
|
||||
end_index = matches[-1].start()
|
||||
cleaned_text = cleaned_text[:end_index]
|
||||
print("匹配成功,截断后文本:")
|
||||
print(cleaned_text)
|
||||
else:
|
||||
print("未匹配到内容。")
|
||||
# 测试匹配
|
||||
for idx, text in enumerate(test_texts):
|
||||
match = begin_pattern.search(text)
|
||||
print(f"Test case {idx + 1}: {'Matched' if match else 'Not Matched'}")
|
||||
|
@ -68,7 +68,7 @@ def extract_pages_tobidders_notice(pdf_path, output_folder, begin_pattern, begin
|
||||
# 定义基础的 mid_pattern
|
||||
base_mid_pattern = r'^\s*(?:[((]\s*[一二12]?\s*[))]\s*[、..]*|' \
|
||||
r'[一二12][、..]+|[、..]+)\s*(说\s*明|总\s*则|名\s*词\s*解\s*释)' \
|
||||
r'|(?<!见\s*)(?<!与\s*)(?<!"\s*)(?<!“\s*)(?<!”\s*)(?:投标人?|磋商|谈判|供应商|应答人)\s*须知正文\s*$'
|
||||
r'|(?<!见\s*)(?<!与\s*)(?<!"\s*)(?<!“\s*)(?<!”\s*)(?:投标人?|磋商|谈判|供应商|应答人|比选申请人).*须知正文\s*$'
|
||||
# 合并基础模式和额外模式
|
||||
if additional_mid_pattern:
|
||||
combined_mid_pattern = regex.compile(
|
||||
@ -179,9 +179,7 @@ def extract_pages_twice(pdf_path, output_folder, output_suffix, common_header, l
|
||||
)
|
||||
# 定义结束匹配模式 - 章节标题、评标附表、投标人须知等
|
||||
end_pattern_chapter = regex.compile(
|
||||
r'第[一二三四五六七八九]+(?:章|部分)\s*[\u4e00-\u9fff、()()]+\s*$|'
|
||||
r'\s*评标(?:办法|方法)前附表\s*$|'
|
||||
r'投标人须知',
|
||||
r'第[一二三四五六七八九]+(?:章|部分)\s*[\u4e00-\u9fff、()()]+\s*$|',
|
||||
regex.MULTILINE
|
||||
)
|
||||
start_page = None
|
||||
@ -316,8 +314,8 @@ def truncate_pdf_main_engineering(input_path, output_folder, selection, logger,
|
||||
pattern_pairs = [
|
||||
(
|
||||
regex.compile(
|
||||
r'^第[一二三四五六七八九十百千]+(?:章|部分).*(?:投标人?|磋商|谈判|供应商|应答人)须知+|'
|
||||
r'(?<!见\s*)(?<!与\s*)(?<!"\s*)(?<!"\s*)(?<!"\s*)(?:投标人?|磋商|谈判|供应商|应答人)须知前附表\s*$',
|
||||
r'^第[一二三四五六七八九十百千]+(?:章|部分).*(?:投标人?|磋商|谈判|供应商|应答人|比选申请人).*须知+|'
|
||||
r'(?<!见\s*)(?<!与\s*)(?<!"\s*)(?<!"\s*)(?<!"\s*)(?:投标人?|磋商|谈判|供应商|应答人|比选申请人).*须知前附表\s*$',
|
||||
regex.MULTILINE
|
||||
),
|
||||
regex.compile(
|
||||
@ -327,8 +325,8 @@ def truncate_pdf_main_engineering(input_path, output_folder, selection, logger,
|
||||
),
|
||||
(
|
||||
regex.compile(
|
||||
r'.*(?<!见\s*)(?<!与\s*)(?<!"\s*)(?<!“\s*)(?<!”\s*)(?:投标人?|磋商|谈判|供应商|应答人)须知\s*$|'
|
||||
r'(?<!见\s*)(?<!与\s*)(?<!"\s*)(?<!“\s*)(?<!”\s*)(?:投标人?|磋商|谈判|供应商|应答人)须知前附表\s*$',
|
||||
r'.*(?<!见\s*)(?<!与\s*)(?<!"\s*)(?<!“\s*)(?<!”\s*)(?:投标人?|磋商|谈判|供应商|应答人|比选申请人).*须知\s*$|'
|
||||
r'(?<!见\s*)(?<!与\s*)(?<!"\s*)(?<!“\s*)(?<!”\s*)(?:投标人?|磋商|谈判|供应商|应答人|比选申请人).*须知前附表\s*$',
|
||||
regex.MULTILINE
|
||||
),
|
||||
regex.compile(
|
||||
|
@ -267,8 +267,8 @@ def truncate_pdf_main_goods(input_path, output_folder, selection,logger, output_
|
||||
local_output_suffix = "qualification1"
|
||||
elif selection == 4:
|
||||
begin_pattern = regex.compile(
|
||||
r'^第[一二三四五六七八九十百千]+(?:章|部分).*(?:投标人?|磋商|谈判|供应商|应答人)须知+|'
|
||||
r'(?<!见\s*)(?<!与\s*)(?<!"\s*)(?<!"\s*)(?<!"\s*)(?:投标人?|磋商|谈判|供应商|应答人)须知前附表\s*$',
|
||||
r'^第[一二三四五六七八九十百千]+(?:章|部分).*(?:投标人?|磋商|谈判|供应商|应答人|比选申请人).*须知+|'
|
||||
r'(?<!见\s*)(?<!与\s*)(?<!"\s*)(?<!"\s*)(?<!"\s*)(?:投标人?|磋商|谈判|供应商|应答人|比选申请人).*须知前附表\s*$',
|
||||
regex.MULTILINE
|
||||
)
|
||||
end_pattern = None
|
||||
|
Loading…
x
Reference in New Issue
Block a user