Skip to content

l4runner/ReportCraft

Repository files navigation

ReportCraft

Python Platform License Tests

面向电子元器件(如片式电感)样品测试场景的出样报告辅助生成工具:从承认书类 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.pysys.path 约定一致):

python sample_output/main.py

或在 sample_output 目录下:

cd sample_output
python main.py

典型操作

  1. 在界面中填写 Ls、Isat、DCR、尺寸等测试范围及扩展项
  2. 将承认书 PDF 拖入指定区域,解析 P/N 与尺寸(亦可手动核对)
  3. 选择 Excel 模板并指定输出文件名
  4. 点击生成,报告写入 config.json 中配置的输出目录

默认将 sample_output/config/config.json 中的 base_dirtarget_dir 解析为相对于 sample_output 的路径(见下文「配置」)。


配置

sample_output/config/config.json

含义
base_dir Excel 模板所在目录(可为相对 sample_output 的路径)
target_dir 报告输出目录(同上)

仓库默认示例:xlsx_standard_sampleoutput。首次使用前请确认 output 目录存在(仓库中已包含占位目录)。

sample_output/config/template_config.json

定义各模板对应的单元格映射(如 data_rangeI_sat_Specdrop_set、客户/供应商 P/N 单元格、尺寸行、日期单元格等)。具体键名以仓库内 JSON 为准。
尺寸列顺序约定为:A、B、C、D、E、I


数据约定:Isat 偏移(Isat_1 / Isat_2)

随机行生成时,区间会先经 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-missing

CI:.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/

PDF 尺寸提取思路(摘要)

步骤 说明
表格优先 用 pdfplumber 提取表格,识别 A~E、I 等列
完整性 有效尺寸过少时尝试从正文补充
规范化 统一主值、公差、MAX/TYP 等写法

支持的尺寸写法示例

类型 示例
主值 ± 公差 5.30 ±0.20
主值 + 限定词 3.00 MAX1.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 发布。使用本软件处理业务数据时,请遵守所在组织关于客户信息、料号与承认书等资料的保密与合规要求。

About

垂直领域简要报告输出

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages