解析交通变乱报告:使用 PDF、AI 与数据标准化技能构建智能分析体系 ...

打印 上一主题 下一主题

主题 706|帖子 706|积分 2118

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在交通变乱处理中,数据的正确性与完整性至关重要。传统上,交通变乱报告通常以 PDF 格式呈现,这使得手动提取数据成为一项繁琐且容易出错的任务。随着人工智能与数据处理技能的发展,如何主动化这一过程并提升数据质量,成为了一个重要的研究方向。
在这篇博客中,我将分享一个基于 Python 的智能交通变乱报告解析体系,它联合了 PDF 文本解析、AI 大模子分析以及数据标准化与导出功能。这一体系能够从交通变乱报告中提取关键信息,并将其标准化为统一格式,终极导出为可用的 Excel 文件或 JSON 数据,为后续的数据分析与决策提供坚固底子。

项目概述

本项目的焦点目标是通过以下几步主动化交通变乱报告数据的处理:

  • PDF 文本解析:从 PDF 文件中提取文本内容。
  • AI 模子分析:使用大语言模子对变乱报告进行智能分析,主动提取关键字段。
  • 数据标准化:将提取的字段进行标准化处理,确保数据同等性。
  • 结果导出:将处理后的数据导出为 Excel 或 JSON 格式,以便后续使用。
这四个步骤贯穿了整个流程,从数据提取到数据导出都实现了主动化,并确保了数据的质量与同等性。
1. PDF 文件解析:提取文本信息

PDF 文件由于其固定格式,给数据提取带来了不少挑战。荣幸的是,pdfplumber 这一 Python 库能够高效地从 PDF 中提取文本。以下是我们在代码中用到的焦点方法:
  1. import pdfplumber
  2. def extract_cases_from_text(text):
  3.     """
  4.     从完整文本中提取每个事故案例
  5.     """
  6.     pattern = r"\d+[\.:]\sARB Number:.*?(?=\d+[\.:]\sARB Number:|$)"
  7.     cases = re.findall(pattern, text, re.DOTALL)
  8.     logger.info(f"共提取到 {len(cases)} 个事故案例")
  9.     return cases
复制代码
在这段代码中,正则表达式被用来从整个报告中提取每个单独的变乱案例。通过这种方式,我们可以确保从 PDF 中提取的每个案例都是完整的,便于后续分析。
2. AI 模子分析:主动化提取关键信息

通过与通义千问大语言模子的联合,我们可以主动化地将变乱报告转化为标准化的 JSON 数据。这一过程的焦点是 analyze_with_qwen() 方法,它调用了大语言模子 API,并传递给它一个包罗变乱数据的文本块:
  1. def analyze_with_qwen(self, text_block):
  2.     """
  3.     调用通义千问大模型,将文本转换为标准JSON格式
  4.     """
  5.     try:
  6.         response = dashscope.Generation.call(
  7.             "qwen-max",
  8.             messages=[{
  9.                 'role': 'user',
  10.                 'content': (
  11.                     '请将以下交通事故报告数据转换为标准的JSON字典格式,一定要确保所有字段完整且准确。'
  12.                     '固定字段包括:ARB Number, Severity, Site, TD Site, Police Grid, Police Map Grid, Time, '
  13.                     'Natural Light, Road Condition, Weather, At or Near, Acc. CF, Precise Location, How it happened。'
  14.                     '其中ARB Number 作为唯一的主键。'
  15.                     '另外,请提取所有涉及的车辆和伤亡信息,使用Vehicle_1, Vehicle_2,… 和 Casualty_1, Casualty_2,… 的格式。'
  16.                     '每辆车的字段包括:Vehicle No., Class, Age, Collided with, Manoeuvre, Dri. CF, Veh. CF。'
  17.                     '每个伤亡的字段包括:Casualty No., Role, Age, Injury, Location, Bound, Cas. CF。'
  18.                     '请仅返回纯JSON格式的数据,不要包含任何额外的文本或标记。'
  19.                     '以下是事故报告数据:\n' + text_block
  20.                 )
  21.             }],
  22.             api_key=self.api_key,
  23.             result_format='message'
  24.         )
复制代码
AI 模子通过解析交通变乱的形貌性文本,主动识别出如 ARB Number、Severity、Vehicles 和 Casualties 等关键信息,并返回结构化的 JSON 数据。
3. 数据标准化:统一字段格式

一旦模子提取了数据,接下来的任务是确保这些数据的同等性。我们使用了字段标准化的方法,将全部数据统一格式化为一个标准化的 JSON 结构。以下是相关代码:
  1. def standardize_fields(parsed_data):
  2.     """
  3.     根据 FIXED_FIELDS 和 POSSIBLE_SUFFIX_FIELDS 标准化字段
  4.     """
  5.     standardized_data = {}
  6.     # 添加固定字段
  7.     for field in FIXED_FIELDS:
  8.         standardized_data[field] = parsed_data.get(field, "N/A")
  9.     # 处理车辆信息
  10.     vehicles = parsed_data.get("Vehicles", "N/A")
  11.     standardized_data["Vehicles"] = vehicles if vehicles else "N/A"
  12.     # 处理伤亡信息
  13.     casualties = parsed_data.get("Casualties", "N/A")
  14.     standardized_data["Casualties"] = casualties if casualties else "N/A"
  15.    
  16.     # 处理 Police Grid 为空的情况
  17.     if not standardized_data.get("Police Grid") or standardized_data["Police Grid"].strip() == "":
  18.         police_map_grid = parsed_data.get("Police Map Grid", "")
  19.         if police_map_grid.strip():
  20.             standardized_data["Police Grid"] = police_map_grid.strip()
  21.             logger.info("从Police Map Grid填充Police Grid字段")
  22.         else:
  23.             standardized_data["Police Grid"] = "N/A"
  24.             logger.warning("Police Grid和Police Map Grid均为空,填充为 'N/A'")
  25.     return standardized_data
复制代码
这段代码确保了全部的固定字段都被添补,而且对车辆信息和伤亡信息进行了标准化处理。别的,如果 Police Grid 字段为空,还会主动实验从 Police Map Grid 中获取数据。
4. 数据导出:从 JSON 到 Excel

将处理后的数据导出为 Excel 格式,是本项目的另一个重要功能。我们使用了 pandas 库来处理这一操作:
  1. def export_flattened_json_to_excel(flattened_data, output_excel_path):
  2.     """
  3.     将扁平化后的JSON数据导出为Excel文件。
  4.     """
  5.     # 创建DataFrame
  6.     df = pd.json_normalize(flattened_data)
  7.     # 确保固定列的顺序
  8.     df = df.reindex(columns=fixed_columns_order)
  9.     # 导出到Excel
  10.     df.to_excel(output_excel_path, index=False, engine='openpyxl')
  11.     logger.info(f"成功将数据导出到 {output_excel_path}")
复制代码
通过这一方法,我们能够将终极的数据保存为 Excel 文件,并确保全部列按照固定的顺序分列,缺失的数据会被添补为 N/A。
总结

通过将 PDF 文件解析、AI 智能分析、数据标准化和结果导出这四个步骤联合,我们实现了一个高效的交通变乱报告主动处理体系。这不但大大提升了工作效率,还确保了数据的正确性和同等性。在未来,随着 AI 技能的不断进步,主动化数据处理将会变得更加智能和精准,为各种范畴的数据分析提供强大的支持。
你可以如何使用这个体系?



  • 交通变乱数据管理:主动化地从变乱报告中提取并标准化数据,节流大量的人工录入工作。
  • 决策支持:通过结构化的数据,可以更好地进行变乱原因分析、变乱模式识别等数据驱动的决策。
  • 报告生成与统计:将提取的结构化数据导出为 Excel 或 JSON,方便生成定期报告,支持进一步的统计分析。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

梦应逍遥

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表