马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
在交通变乱处理中,数据的正确性与完整性至关重要。传统上,交通变乱报告通常以 PDF 格式呈现,这使得手动提取数据成为一项繁琐且容易出错的任务。随着人工智能与数据处理技能的发展,如何主动化这一过程并提升数据质量,成为了一个重要的研究方向。
在这篇博客中,我将分享一个基于 Python 的智能交通变乱报告解析体系,它联合了 PDF 文本解析、AI 大模子分析以及数据标准化与导出功能。这一体系能够从交通变乱报告中提取关键信息,并将其标准化为统一格式,终极导出为可用的 Excel 文件或 JSON 数据,为后续的数据分析与决策提供坚固底子。
项目概述
本项目的焦点目标是通过以下几步主动化交通变乱报告数据的处理:
- PDF 文本解析:从 PDF 文件中提取文本内容。
- AI 模子分析:使用大语言模子对变乱报告进行智能分析,主动提取关键字段。
- 数据标准化:将提取的字段进行标准化处理,确保数据同等性。
- 结果导出:将处理后的数据导出为 Excel 或 JSON 格式,以便后续使用。
这四个步骤贯穿了整个流程,从数据提取到数据导出都实现了主动化,并确保了数据的质量与同等性。
1. PDF 文件解析:提取文本信息
PDF 文件由于其固定格式,给数据提取带来了不少挑战。荣幸的是,pdfplumber 这一 Python 库能够高效地从 PDF 中提取文本。以下是我们在代码中用到的焦点方法:
- import pdfplumber
- def extract_cases_from_text(text):
- """
- 从完整文本中提取每个事故案例
- """
- pattern = r"\d+[\.:]\sARB Number:.*?(?=\d+[\.:]\sARB Number:|$)"
- cases = re.findall(pattern, text, re.DOTALL)
- logger.info(f"共提取到 {len(cases)} 个事故案例")
- return cases
复制代码 在这段代码中,正则表达式被用来从整个报告中提取每个单独的变乱案例。通过这种方式,我们可以确保从 PDF 中提取的每个案例都是完整的,便于后续分析。
2. AI 模子分析:主动化提取关键信息
通过与通义千问大语言模子的联合,我们可以主动化地将变乱报告转化为标准化的 JSON 数据。这一过程的焦点是 analyze_with_qwen() 方法,它调用了大语言模子 API,并传递给它一个包罗变乱数据的文本块:
- def analyze_with_qwen(self, text_block):
- """
- 调用通义千问大模型,将文本转换为标准JSON格式
- """
- try:
- response = dashscope.Generation.call(
- "qwen-max",
- messages=[{
- 'role': 'user',
- 'content': (
- '请将以下交通事故报告数据转换为标准的JSON字典格式,一定要确保所有字段完整且准确。'
- '固定字段包括:ARB Number, Severity, Site, TD Site, Police Grid, Police Map Grid, Time, '
- 'Natural Light, Road Condition, Weather, At or Near, Acc. CF, Precise Location, How it happened。'
- '其中ARB Number 作为唯一的主键。'
- '另外,请提取所有涉及的车辆和伤亡信息,使用Vehicle_1, Vehicle_2,… 和 Casualty_1, Casualty_2,… 的格式。'
- '每辆车的字段包括:Vehicle No., Class, Age, Collided with, Manoeuvre, Dri. CF, Veh. CF。'
- '每个伤亡的字段包括:Casualty No., Role, Age, Injury, Location, Bound, Cas. CF。'
- '请仅返回纯JSON格式的数据,不要包含任何额外的文本或标记。'
- '以下是事故报告数据:\n' + text_block
- )
- }],
- api_key=self.api_key,
- result_format='message'
- )
复制代码 AI 模子通过解析交通变乱的形貌性文本,主动识别出如 ARB Number、Severity、Vehicles 和 Casualties 等关键信息,并返回结构化的 JSON 数据。
3. 数据标准化:统一字段格式
一旦模子提取了数据,接下来的任务是确保这些数据的同等性。我们使用了字段标准化的方法,将全部数据统一格式化为一个标准化的 JSON 结构。以下是相关代码:
- def standardize_fields(parsed_data):
- """
- 根据 FIXED_FIELDS 和 POSSIBLE_SUFFIX_FIELDS 标准化字段
- """
- standardized_data = {}
- # 添加固定字段
- for field in FIXED_FIELDS:
- standardized_data[field] = parsed_data.get(field, "N/A")
- # 处理车辆信息
- vehicles = parsed_data.get("Vehicles", "N/A")
- standardized_data["Vehicles"] = vehicles if vehicles else "N/A"
- # 处理伤亡信息
- casualties = parsed_data.get("Casualties", "N/A")
- standardized_data["Casualties"] = casualties if casualties else "N/A"
-
- # 处理 Police Grid 为空的情况
- if not standardized_data.get("Police Grid") or standardized_data["Police Grid"].strip() == "":
- police_map_grid = parsed_data.get("Police Map Grid", "")
- if police_map_grid.strip():
- standardized_data["Police Grid"] = police_map_grid.strip()
- logger.info("从Police Map Grid填充Police Grid字段")
- else:
- standardized_data["Police Grid"] = "N/A"
- logger.warning("Police Grid和Police Map Grid均为空,填充为 'N/A'")
- return standardized_data
复制代码 这段代码确保了全部的固定字段都被添补,而且对车辆信息和伤亡信息进行了标准化处理。别的,如果 Police Grid 字段为空,还会主动实验从 Police Map Grid 中获取数据。
4. 数据导出:从 JSON 到 Excel
将处理后的数据导出为 Excel 格式,是本项目的另一个重要功能。我们使用了 pandas 库来处理这一操作:
- def export_flattened_json_to_excel(flattened_data, output_excel_path):
- """
- 将扁平化后的JSON数据导出为Excel文件。
- """
- # 创建DataFrame
- df = pd.json_normalize(flattened_data)
- # 确保固定列的顺序
- df = df.reindex(columns=fixed_columns_order)
- # 导出到Excel
- df.to_excel(output_excel_path, index=False, engine='openpyxl')
- logger.info(f"成功将数据导出到 {output_excel_path}")
复制代码 通过这一方法,我们能够将终极的数据保存为 Excel 文件,并确保全部列按照固定的顺序分列,缺失的数据会被添补为 N/A。
总结
通过将 PDF 文件解析、AI 智能分析、数据标准化和结果导出这四个步骤联合,我们实现了一个高效的交通变乱报告主动处理体系。这不但大大提升了工作效率,还确保了数据的正确性和同等性。在未来,随着 AI 技能的不断进步,主动化数据处理将会变得更加智能和精准,为各种范畴的数据分析提供强大的支持。
你可以如何使用这个体系?
- 交通变乱数据管理:主动化地从变乱报告中提取并标准化数据,节流大量的人工录入工作。
- 决策支持:通过结构化的数据,可以更好地进行变乱原因分析、变乱模式识别等数据驱动的决策。
- 报告生成与统计:将提取的结构化数据导出为 Excel 或 JSON,方便生成定期报告,支持进一步的统计分析。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |