Skip to content

conrad-strange/pdf-split

Repository files navigation

PDF 报告识别与审核比对

本项目用于识别 PDF 报告中的审核关键信息,并输出 JSON、Excel、HTML 报告。当前流程重点覆盖 A 页密集表格识别、封面页少量字段识别、A/B JSON 汇总比对。

环境

项目在 conda 环境中运行,例如:

conda activate pdf_split

常用依赖包括 PyMuPDFopenpyxl。如果缺少依赖,按报错提示在当前 conda 环境中安装。

目录约定

data/                 PDF 输入文件
output/json/          中间 JSON
output/final/         A 页识别报告
output/compare/       A/B 比对报告
report/               审核流程文档

B 页同学给出的 JSON 建议放在:

output/json/text_long_b_pages.json

一键流程

默认会执行:

  1. classify PDF 页面
  2. recognize A 页和封面页字段
  3. 生成 A 页 Excel/HTML 报告
  4. 如果存在 B JSON,则生成 A/B compare 报告
python run_pipeline.py data/text_long.pdf

指定 B JSON:

python run_pipeline.py data/text_long.pdf --b-json output/json/text_long_b_pages.json

只生成 A 页识别结果,不做 A/B 比对:

python run_pipeline.py data/text_long.pdf --skip-compare

单步命令

识别 A 页和封面页:

python recognize_a_pages.py data/text_long.pdf --output-dir output/json

把 A 页 JSON 转为 Excel/HTML:

python generate_report.py output/json/text_long_a_pages_review.json

A/B JSON 比对:

python compare_ab_json.py --a-json output/json/text_long_a_pages_review.json --b-json output/json/text_long_b_pages.json

当前已实现的比对

固定字段:

  • 系统名称 / 被测对象名称
  • 声明页系统名称 vs 结论页被测对象名称
  • 备案证明编号
  • 报告编号中的备案编号 vs 备案证明编号
  • 报告编号前 16 位 vs 基本信息表备案证明编号
  • 安全保护等级
  • 封面页报告时间 vs 声明页日期
  • 测评单位名称
  • 机构代码 / 认证证书编号
  • 首页结论页 vs 第七章:等级测评结论
  • 首页结论页 vs 第七章:测评指标符合率

扩展审核:

  • 联系人一致性:基本信息表联系人与安全相关人员表的移动电话/联系方式比对
  • 测评单位固定信息校验:单位名称、机构代码、办公电话、电子邮件
  • 人工核验信息:邮政编码、统一社会信用代码只展示,不联网、不自动判错
  • 人员字段多值统计:同一人员同一字段出现多个不同值时提示

输出

A 页识别 JSON:

output/json/text_long_a_pages_review.json

A 页识别报告:

output/final/text_long_a_pages_review_report.xlsx
output/final/text_long_a_pages_review_report.html

A/B 比对报告:

output/compare/text_long_a_pages_review__text_long_b_pages_compare.json
output/compare/text_long_a_pages_review__text_long_b_pages_compare.xlsx
output/compare/text_long_a_pages_review__text_long_b_pages_compare.html

命令行会打印输出路径,并列出 A 页疑似重复字段和 A/B 比对中发现的可疑项。

仍需后续数据支持的规则

  • 外部备案证核验:需要备案证结构化数据后才能自动比对。
  • 统一社会信用代码、邮政编码联网核验:当前要求不能联网,所以只展示给人工核验。
  • 报告与测评方案、调查表之间的资产表/测评对象选择结果一致性:需要方案和调查表结构化 JSON。
  • 安全问题全文出现次数、关联威胁与附录威胁列表一致性:需要安全问题抽取模块。

About

PDF report parsing, structured extraction and JSON comparison workflow.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages