本项目用于识别 PDF 报告中的审核关键信息,并输出 JSON、Excel、HTML 报告。当前流程重点覆盖 A 页密集表格识别、封面页少量字段识别、A/B JSON 汇总比对。
项目在 conda 环境中运行,例如:
conda activate pdf_split常用依赖包括 PyMuPDF、openpyxl。如果缺少依赖,按报错提示在当前 conda 环境中安装。
data/ PDF 输入文件
output/json/ 中间 JSON
output/final/ A 页识别报告
output/compare/ A/B 比对报告
report/ 审核流程文档
B 页同学给出的 JSON 建议放在:
output/json/text_long_b_pages.json
默认会执行:
- classify PDF 页面
- recognize A 页和封面页字段
- 生成 A 页 Excel/HTML 报告
- 如果存在 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.jsonA/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。
- 安全问题全文出现次数、关联威胁与附录威胁列表一致性:需要安全问题抽取模块。