一条流水线把原始审计报告处理成可打印的报备版报告:盖章 → 上传注协赋码 → 替换盖章页并保留二维码。把原来两个独立小工具(「审计报备-上传」「审计报告-下载」)整合成一个带步骤导航的桌面软件。
原始报告 → 加盖CPA/事务所章 + 拼接盖章报表/附注 → 上传注协赋码 → 替换盖章页为无章版并保留二维码 → 可打印报告
公共参数(原始报告路径、页码)只填一次,自动识别盖章页和报表范围。
三栏布局:左侧步骤导航栏 | 中间公共配置+步骤内容 | 右侧 PDF 预览。
┌─────┬────────────────────┬──────────┐
│侧边栏│ 公共配置(两步共用) │ │
│ │ 原始报告:[浏览...] │ PDF预览 │
│✓①准备│ 盖章页:[自动识别] │ (独立栏 │
│●②赋码│ 报表范围:[自动计算] │ 竖长条)│
│○③下载├────────────────────┤ │
│ │ 当前步骤内容 │ │
│ │ (随侧边栏切换) │ │
└─────┴────────────────────┴──────────┘
自动识别:选完原始报告,自动识别盖章页(签字页)并填入;选完盖章报表PDF,自动计算报表替换范围。识别结果在公共配置区底部蓝色提示行显示。
- 选原始报告 → 自动识别盖章页(可手动改)
- 选盖章报表PDF → 自动计算报表替换范围(可手动改)
- 选事务所章、CPA章(主审/复核)、盖章附注PDF
- 点「生成上传报告」→ 加盖 CPA/事务所章 + 拼接报表/附注
- 输出
处理完成_<原始报告名>.pdf,自动跳到步骤②
- 显示生成的上传报告路径,点「📂 打开所在文件夹」快速取文件
- 手动到注协系统:上传 → 等待赋码 → 下载赋码报告
- 回来点**「▶ 下一步:处理赋码版」**进入步骤③
💡 步骤③默认锁定,必须从步骤②点「下一步」解锁。这样避免误操作跳步。
- 选赋码报告
- 点「用默认规则填充」自动生成替换规则(盖章页/报表范围/附注末页)
- 点「生成可打印报告」→ 替换盖章页为无章版 + 保留二维码
- 输出
替换完成_<赋码报告名>.pdf
二维码怎么保留的:注协每页底部都有数字签名层(含二维码)。未替换的页原样保留,二维码自动在;被替换的页先抠出该页二维码方块,替换后再贴回右下角。横版报表页按页宽等比缩放。
需要 Python 3.8+(本机用 3.12)。
# 在项目目录内创建虚拟环境
python -m venv .venv
source .venv/Scripts/activate # Git Bash
# 或 .venv\Scripts\activate.bat # CMD
# 安装依赖
python -m pip install -r requirements.txt依赖:PyMuPDF、Pillow、numpy(步骤③抠码用)。
python main.py或双击 审计报告报备工具.bat。
印章库(名称→路径),复用上传项目已调好的参数(公章 4×4cm、CPA 3.4×2.3cm 等)。新增字段:
last_used_cpa/last_used_firm:上次选用的印章路径,打开软件自动选中(印章固定不变,省得每次重选)
打开软件即预填的页码(自动识别后会被覆盖):
{
"seal_page": 5,
"report_start": 6,
"report_end": 11,
"auto_add_last_page_rule": true
}seal_page:盖章页/签字页(1基),选原始报告后自动识别覆盖report_start/report_end:报表替换范围,选盖章报表PDF后自动计算覆盖auto_add_last_page_rule:步骤③自动追加"最后一页(附注末页)替换规则"
输出文件正被 PDF 阅读器(WPS/Adobe/浏览器)打开。关闭它,或换文件名保存。
这是注协数字签名机制决定的(替换页后签名校验失效),但二维码正常显示、打印正常,不影响使用。
印章定位逻辑复用上传项目(事务所名锚点定位)。如需微调,改 pdf_processor.py 里的 FIRM_NAME_CENTER_OFFSET_CHARS 常量。
自动识别扫描前10页找"我们与治理层就..."等标记句。少数非标准格式可能识别不到,此时状态行提示"请手动设置",手动填页码即可。
审计报告报备工具/
├── main.py # 启动入口
├── gui.py # 步骤导航界面 + 状态编排 + 自动识别
├── step_upload.py # 步骤①:盖章+拼接(封装 pdf_processor)
├── step_download.py # 步骤③:替换+保码
├── pdf_processor.py # 盖章处理类(复用上传项目,去PyPDF2)
├── pdf_common.py # 共用:坐标转换+友好错误
├── config_manager.py # 印章库+上次记忆+默认页码
├── app_logging.py # 日志(含libpng iCCP警告屏蔽)
├── seals_config.json # 印章库
├── config.json # 默认页码
├── requirements.txt
├── 审计报告报备工具.bat
└── docs/superpowers/ # 设计文档(spec)+实现计划(plan)