面向电子元器件(如片式电感)样品测试场景的出样报告辅助生成工具:从承认书类 PDF 中解析客户 P/N、料号P/N与外形尺寸,再结合用户给定的测试与公差范围,将数据写入 Excel 模板并导出报告。
隐私与样本说明
本仓库不包含任何真实客户资料、真实料号或完整承认书 PDF。文档与测试中的料号、路径均为虚构或占位。使用本工具时,请仅在符合贵司数据安全与保密政策的前提下处理真实物料信息。
| 能力 | 说明 |
|---|---|
| PDF 解析 | 拖放承认书 PDF,识别 CUSTOMER P/N、料号 P/N 及尺寸(A~E、I 等) |
| 随机试算数据 | 在给定区间内按公差生成电参数(如 Ls、Isat 偏移、DCR 等) |
| Excel 填充 | 按 template_config.json 将数据写入指定单元格区域 |
| 扩展字段 | 支持 DCR 上限、饱和电流、Drop 等模板字段 |
| 抽测流程 | 适用于抽测场景,减少重复录入 |
- 系统:Windows(拖放依赖 windnd)
- Python:3.10+(与测试配置一致)
- Excel:主流程通过 xlwings 调用本机 Microsoft Excel;生成后的文件亦可用 WPS 等打开(见
xlsx_filler/file_utils)
git clone https://github.com/l4runner/ReportCraft.git
cd ReportCraft
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt开发与测试(可选):
pip install -r requirements-dev.txt
python -m pytest tests -q| 依赖 | 用途 |
|---|---|
| pdfplumber | PDF 文本与表格提取 |
| xlwings | 自动化写入 Excel |
| windnd | 窗口内拖放文件 |
| openpyxl | 模板读取等辅助 |
在项目根目录(与 sample_output 同级,与 main.py 的 sys.path 约定一致):
python sample_output/main.py或在 sample_output 目录下:
cd sample_output
python main.py- 在界面中填写 Ls、Isat、DCR、尺寸等测试范围及扩展项
- 将承认书 PDF 拖入指定区域,解析 P/N 与尺寸(亦可手动核对)
- 选择 Excel 模板并指定输出文件名
- 点击生成,报告写入
config.json中配置的输出目录
默认将 sample_output/config/config.json 中的 base_dir、target_dir 解析为相对于 sample_output 的路径(见下文「配置」)。
| 键 | 含义 |
|---|---|
base_dir |
Excel 模板所在目录(可为相对 sample_output 的路径) |
target_dir |
报告输出目录(同上) |
仓库默认示例:xlsx_standard_sample 与 output。首次使用前请确认 output 目录存在(仓库中已包含占位目录)。
定义各模板对应的单元格映射(如 data_range、I_sat_Spec、drop_set、客户/供应商 P/N 单元格、尺寸行、日期单元格等)。具体键名以仓库内 JSON 为准。
尺寸列顺序约定为:A、B、C、D、E、I。
随机行生成时,区间会先经 format_value_as_negative_decimal 处理:
- 绝对值 ≥ 1:按百分数理解(如
20→-0.2) - 介于 -1 与 1 之间(不含端点):视为已是小数比例(如
-0.2保持不变) /、-、空:视为无效区间
便于在界面中既填「2、3」这类百分数,也填小数比例。
python -m pytest tests -q
python -m pytest tests --cov=sample_output --cov-report=term-missingCI:.github/workflows/tests.yml 在 Ubuntu / Windows 上对 Python 3.11、3.12 运行测试。
ReportCraft/
├── LICENSE
├── README.md
├── pyproject.toml
├── requirements-dev.txt
├── .github/workflows/tests.yml
├── tests/
└── sample_output/
├── main.py
├── config/
├── core/ # 报表逻辑、电感码解析、配置加载等
├── gui/
├── pdf_extract/
└── xlsx_filler/
| 步骤 | 说明 |
|---|---|
| 表格优先 | 用 pdfplumber 提取表格,识别 A~E、I 等列 |
| 完整性 | 有效尺寸过少时尝试从正文补充 |
| 规范化 | 统一主值、公差、MAX/TYP 等写法 |
| 类型 | 示例 |
|---|---|
| 主值 ± 公差 | 5.30 ±0.20 |
| 主值 + 限定词 | 3.00 MAX、1.70 TYP |
| 纯数字 | 5.30 |
| 缺失 | - |
pdf_spec_extractor_word.py 在直接运行时需设置环境变量 REPORTCRAFT_PDF_SAMPLE 为本机测试用 PDF 的完整路径;仓库内不提供样本文件。
set REPORTCRAFT_PDF_SAMPLE=C:\path\to\your_sample.pdf
python sample_output/pdf_extract/pdf_spec_extractor_word.py拖放无响应?
确认已安装 windnd,且在 Windows 下运行。
尺寸均为「-」?
当前 PDF 版式可能与解析规则不完全匹配,可对照 pdf_extract 模块调整规则或换用版式更规整的样张做测试。
无法写入 Excel?
xlwings 需要本机已安装并可启动 Microsoft Excel。
本项目以 MIT License 发布。使用本软件处理业务数据时,请遵守所在组织关于客户信息、料号与承认书等资料的保密与合规要求。