From 6e0b2e4a680d6abab8a9b58d6b33c195df134d1a Mon Sep 17 00:00:00 2001 From: zy123 <646228430@qq.com> Date: Wed, 13 Nov 2024 17:24:17 +0800 Subject: [PATCH] =?UTF-8?q?11.13=20=E6=97=A0=E6=95=88=E6=8A=95=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../投标人须知正文条款提取成json文件.py | 90 ++++++++++++------- flask_app/general/读取文件/按页读取pdf.py | 2 +- flask_app/main/截取pdf.py | 4 +- flask_app/main/提取json工程标版.py | 13 +-- flask_app/货物标/截取pdf货物标版.py | 16 ++-- flask_app/货物标/提取json货物标版.py | 7 +- 6 files changed, 80 insertions(+), 52 deletions(-) diff --git a/flask_app/general/投标人须知正文条款提取成json文件.py b/flask_app/general/投标人须知正文条款提取成json文件.py index 811da43..5c23be3 100644 --- a/flask_app/general/投标人须知正文条款提取成json文件.py +++ b/flask_app/general/投标人须知正文条款提取成json文件.py @@ -33,6 +33,9 @@ def handle_content_append(current_content, line_content, append_newline, keyword current_content.append('\n') return append_newline + +import re + def parse_text_by_heading(text): keywords = ['包含', '以下'] data = {} @@ -44,10 +47,16 @@ def parse_text_by_heading(text): skip_subheadings = False last_main_number = None temp_title = None # 临时存储以点号开头但不带数字的标题 - pattern_numbered = re.compile(r'^\s*([一二三四五六七八九十]{1,2})\s*、\s*') #一、 - pattern_parentheses = re.compile(r'^\s*[((]\s*([一二三四五六七八九十]{1,2})\s*[))]\s*') #(一) + + # 定义所有需要的正则表达式模式 + pattern_numbered = re.compile(r'^\s*([一二三四五六七八九十]{1,2})\s*、\s*') # 一、 + pattern_parentheses = re.compile(r'^\s*[((]\s*([一二三四五六七八九十]{1,2})\s*[))]\s*') # (一) + pattern_letter_initial = re.compile(r'^([A-Z])\.?\s*(.*)$') # 初始扫描时匹配 A内容 或 A. 内容 + pattern_letter = re.compile(r'^([A-Z])\.\s*(.*)$') # 主循环中严格匹配 A. 内容 + pattern_arabic = re.compile(r'^(\d+、)\s*(.+)$') # 1、内容 + initial_heading_pattern = None - special_section_keywords = ['文件的组成', '文件的构成','文件包括:','文件包括:'] # 定义特殊章节关键词 + special_section_keywords = ['文件的组成', '文件的构成','文件包括:','文件包括:','雷同认定'] # 定义特殊章节关键词 in_special_section = False # 标志是否在特殊章节中 lines = text.split('\n') @@ -60,15 +69,27 @@ def parse_text_by_heading(text): # 检查是否匹配任何标题模式 patterns = [ r'^(?