# docxandpdfcheck **Repository Path**: SuGerQAQ/docxandpdfcheck ## Basic Information - **Project Name**: docxandpdfcheck - **Description**: doc及pdf文档的基础格式校验 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-03 - **Last Updated**: 2026-04-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 文档格式合规校验系统 一个支持 Word (.docx) 和 PDF (.pdf) 文档格式合规校验的 Web 系统。 ## 功能特性 - **支持两种文件类型**: Word 文档 (.docx) 和 PDF 文档 (.pdf) - **严格校验**: Word 文档基于结构化解析进行严格校验 - **近似检测**: PDF 文档基于文本分析进行近似检测(标注误差) - **批量上传**: 支持一次上传多个文件进行批量校验 - **详细报告**: 输出结构化 JSON 校验报告,包含所有不合规项 ## 项目结构 ``` pdfandwordcheck/ ├── backend/ # 后端服务 (FastAPI) │ ├── main.py # FastAPI 主应用 │ ├── config.py # 配置文件(校验规则常量) │ ├── exceptions.py # 自定义异常 │ ├── utils.py # 工具函数 │ ├── parsers/ # 文档解析模块 │ │ ├── __init__.py │ │ ├── docx_parser.py # Word 文档解析 │ │ └── pdf_parser.py # PDF 文档解析 │ ├── validators/ # 校验器模块 │ │ ├── __init__.py │ │ ├── base.py # 校验器基类 │ │ ├── docx_validator.py # Word 严格校验器 │ │ └── pdf_validator.py # PDF 近似校验器 │ ├── report/ # 报告生成模块 │ │ ├── __init__.py │ │ └── generator.py # 报告生成器 │ └── uploads/ # 上传文件存储目录 │ └── .gitkeep ├── frontend/ # 前端界面 (Vue3) │ ├── src/ │ │ ├── main.js # Vue 入口 │ │ ├── App.vue # 根组件 │ │ ├── router.js # 路由配置 │ │ └── views/ │ │ ├── UploadPage.vue # 上传校验页面 │ │ └── HistoryPage.vue # 历史记录页面 │ ├── index.html │ ├── package.json │ └── vite.config.js └── README.md ``` ## 快速开始 ### 1. 安装依赖 **后端依赖:** ```bash cd backend pip install -r requirements.txt ``` **前端依赖:** ```bash cd frontend npm install ``` ### 2. 运行开发服务器 **启动后端服务 (端口 8000):** ```bash cd backend python run.py # 或: uvicorn main:app --reload --host 0.0.0.0 --port 8000 ``` **启动前端服务 (端口 5173):** ```bash cd frontend npm run dev ``` 访问 `http://localhost:5173` 使用系统。 ## 校验规则 ### Word 文档(严格校验) | 规则类别 | 详细要求 | |---------|---------| | 纸张大小 | 必须为 A4 | | 页边距 | 上 2.5cm,其他(下、左、右)2.0cm | | 页眉页脚 | 不得存在页眉、页脚、页码 | | 字体 | 宋体,四号(14pt),黑色 | | 字体样式 | 不得加粗、斜体、下划线 | | 段落行距 | 固定值 30 磅 | | 对齐方式 | 左对齐 | | 首行缩进 | 2 字符 | | 段前段后 | 0 磅 | | 目录检测 | 不得包含自动目录 (TOC) | ### PDF 文档(近似检测) 注意:PDF 校验基于文本位置和字体分析,可能存在误差。 | 规则类别 | 检测说明 | |---------|---------| | 字体 | 识别宋体(SimSun 等),允许一定误差 | | 字号 | 13.5-14.5pt 范围判定为四号 | | 字体颜色 | 必须为黑色 | | 样式 | 通过字体名检测加粗、斜体 | | 页边距 | 基于文本分布估算 | | 页眉页脚 | 基于页面顶部/底部区域内容推测 | | 行距 | 基于文本行坐标差估算 | ## API 端点 ### 根路径 ``` GET / ### 健康检查 ``` GET /health Response: {"status": "ok"} ``` ### 上传并校验 Word 文档 ``` POST /upload/docx Content-Type: multipart/form-data 参数: file (文件) Response: { "file_name": "xxx.docx", "file_type": "docx", "status": "pass/fail", "errors": [...], "error_summary": {...} } ``` ### 上传并校验 PDF 文档 ``` POST /upload/pdf Content-Type: multipart/form-data 参数: file (文件) Response: { "file_name": "xxx.pdf", "file_type": "pdf", "status": "pass/fail", "errors": [...], "note": "PDF为近似检测(基于文本位置和字体分析),可能存在误差" } ``` ### 批量上传并校验 ``` POST /upload/batch Content-Type: multipart/form-data 参数: files (多个文件), file_type (docx 或 pdf) Response: { "total_files": 3, "passed": 2, "failed": 1, "pass_rate": 66.67, "detail": [...], "summary": {...} } ``` ## 校验报告格式 ### 单个文件报告 ```json { "file_name": "测试文档.docx", "file_type": "docx", "status": "fail", "errors": [ { "message": "上边距不是2.5厘米,实际为: 2.0厘米", "severity": "error", "page": 1 }, { "message": "第2段行间距不是30磅,实际为: 28磅", "severity": "error", "page": 2, "location": "paragraph_2" } ], "error_summary": { "total": 2, "by_severity": {"error": 2}, "by_category": {"page_setup": 1, "paragraph": 1} } } ``` ### PDF 格外包含 note 字段 ```json { "note": "PDF为近似检测(基于文本位置和字体分析),可能存在误差" } ``` ## 技术栈 ### 后端 - **框架**: FastAPI - **Word 处理**: python-docx - **PDF 处理**: PyMuPDF (fitz) - **服务器**: Uvicorn ### 前端 - **框架**: Vue 3 - **UI 组件**: Element Plus - **HTTP 客户端**: Axios - **构建工具**: Vite ## 扩展开发 ### 添加新的校验规则 1. 在 `backend/config.py` 中添加规则常量 2. 在对应的校验器中添加验证方法 3. 调用 `self.add_error()` 记录错误 ### 修改校验阈值 所有校验阈值都在 `config.py` 中定义为常量,直接修改即可: - `DOCX_RULES` 类:Word 校验规则 - `PDF_RULES` 类:PDF 校验规则 ## 部署建议 ### 生产环境后端 ```bash gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000 ``` ### 生产环境前端 ```bash cd frontend npm run build # 部署生成的 dist 目录到 Nginx/Apache 等 Web 服务器 ``` ## 注意事项 1. Word 校验基于 xml 结构化解析,准确率高 2. PDF 校验基于文本位置分析,不同 PDF 生成方式可能导致误差 3. 上传文件存储在 `backend/uploads/` 目录 4. 生产环境建议配置文件大小限制和清理策略 ## 许可证 MIT License