|
|
@@ -23,16 +23,20 @@ TABLE_OCR_START = "[表格OCR识别结果]:"
|
|
|
TABLE_OCR_END = "[/表格]"
|
|
|
CN_LIST_L1_NUMERIC_L2_RULE = "Rule_8_中文序号章数字小节派"
|
|
|
CATALOG_LIST = {
|
|
|
- '编制依据':['法律法规','标准范围','文件制度','编制原则','编制范围'],
|
|
|
- '工程概况':['设计概况','工程地质与水文气象','周边环境','施工平面及立面布置','施工要求和技术保证条件','风险辨别与分级','参建各方责任主体单位'],
|
|
|
- '施工计划':['施工进度计划','施工材料计划','施工设备计划','劳动力计划','安全生产费用使用计划'],
|
|
|
- '施工工艺技术':['主要施工方法概述','技术参数','施工准备','工艺流程','施工方法及操作要求','检查要求'],
|
|
|
- '安全保证措施':['安全保证体系','组织保证措施','技术保证措施','监测监控措施','应急处置措施'],
|
|
|
- '质量保证措施':['质量保证体系','质量目标','工程创优规划','质量控制程序与具体措施'],
|
|
|
+ '编制依据':['法律法规','标准范围','文件制度','编制原则','编制范围','规范标准法律法规','项目部文件','相关规范、标准、法律、法规等'],
|
|
|
+ '工程概况':['设计概况','工程地质与水文气象','周边环境','施工平面及立面布置','施工要求和技术保证条件','风险辨别与分级','参建各方责任主体单位','工程概况和特点','施工要求'],
|
|
|
+ '施工计划':['施工进度计划','施工材料计划','施工设备计划','劳动力计划','安全生产费用使用计划','工期计划','材料设备计划'],
|
|
|
+ '施工工艺技术':['主要施工方法概述','技术参数','施工准备','工艺流程','施工方法及操作要求','检查要求','液压爬模工程','空心薄壁墩施工方案','临时设施安装拆除'],
|
|
|
+ '安全保证措施':['安全保证体系','组织保证措施','技术保证措施','监测监控措施','应急处置措施','组织机构制度','危险源辨识','一般安全技术措施','专项安全技术措施','监控量测措施','森林防火','组织机构、制度及体系'],
|
|
|
+ '质量保证措施':['质量保证体系','质量目标','工程创优规划','质量控制程序与具体措施','质量管理组织机构职责','质量管理控制措施','质量管理组织结构及职责'],
|
|
|
'环境保证措施':['环境保证体系','环境保护组织机构','环境保护及文明施工措施'],
|
|
|
'施工管理及作业人员配备与分工':['施工管理人员','专职安全生产管理人员','特种作业人员','其它作业人员'],
|
|
|
- '验收要求':['验收标准','验收程序','验收内容','验收时间','验收人员'],
|
|
|
- '其它资料':['计算书','相关施工图纸','附图附表','编制及审核人员情况']
|
|
|
+ '验收要求':['验收标准','验收程序','验收内容','验收时间','验收人员','验收结果'],
|
|
|
+ '其它资料':['计算书','相关施工图纸','附图附表','编制及审核人员情况'],
|
|
|
+ '应急处置方案':['应急组织机构职责','应急响应','一般事故现场应急处置','桥梁坍塌事故专项应急','宣传培训与训练','应急物质'],
|
|
|
+ '环境保护、水土保持保证体系及保证措施':['环境保护、水土保持保证体系','环保、水保保护措施','水土保持措施'],
|
|
|
+ '计算书及相关图纸':['液压爬模计算书','预制板计算'],
|
|
|
+ '编制审核人员情况':[]
|
|
|
}
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
|
@@ -2110,7 +2114,11 @@ class PdfStructureExtractor:
|
|
|
if not normalized:
|
|
|
return None
|
|
|
|
|
|
- for chapter_title, section_titles in CATALOG_LIST.items():
|
|
|
+ for chapter_title in CATALOG_LIST.keys():
|
|
|
+ if normalized == cls._normalize_catalog_name(chapter_title):
|
|
|
+ return chapter_title
|
|
|
+
|
|
|
+ for chapter_title in CATALOG_LIST.keys():
|
|
|
if cls._catalog_name_matches_standard(normalized, chapter_title):
|
|
|
return chapter_title
|
|
|
return None
|
|
|
@@ -2132,6 +2140,11 @@ class PdfStructureExtractor:
|
|
|
else:
|
|
|
chapter_candidates = list(CATALOG_LIST.keys())
|
|
|
|
|
|
+ for candidate_chapter in chapter_candidates:
|
|
|
+ for section_title in CATALOG_LIST.get(candidate_chapter, []):
|
|
|
+ if normalized == cls._normalize_catalog_name(section_title):
|
|
|
+ return section_title
|
|
|
+
|
|
|
for candidate_chapter in chapter_candidates:
|
|
|
for section_title in CATALOG_LIST.get(candidate_chapter, []):
|
|
|
if cls._catalog_name_matches_standard(normalized, section_title):
|
|
|
@@ -2155,7 +2168,7 @@ class PdfStructureExtractor:
|
|
|
extracted_len = len(extracted)
|
|
|
if extracted_len < 5:
|
|
|
return extracted == standard
|
|
|
- if extracted_len > 15:
|
|
|
+ if extracted_len > 20:
|
|
|
return False
|
|
|
|
|
|
overlap_count = sum((Counter(extracted) & Counter(standard)).values())
|