Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

auto-msds · 开源 MSDS / SDS 自动生成工具

将化学品的"原始数据"渲染为排版专业、可打印、可编辑的 MSDS / SDS(安全技术说明书)。 支持按所在国/地区要求输出单一语言版本(中国=简体中文;美国/欧盟/国际=英文),并内置 组分编码(CAS / EC / HS)自动查询与核实能力,避免凭空编造法规编码。还附带一个 中文定稿 docx → 英文 docx 的词典翻译器,方便你把手工精修好的中文版一键出国际版。

本工具只负责"排版与生成",不是合规背书。正式合规文件须由具备资质人员或机构(如国家化学品登记中心 NRCC)复核签字。


特性

  • 三种输出格式
    • Word (.docx):可在 Word / WPS 直接编辑(主推)。单表 5 列版式、CJK 字体、A4。
    • HTML:自包含、打印友好,浏览器"打印 → 另存为 PDF"即可。
    • PDF:调用本机 Chrome / Edge 无头打印,与 HTML 样式一致(可选)。
  • 单一语言按市场切换cn(中文)/ us / eu / intl(英文,GHS 通用),不混排、不重复。
  • 单表 5 列版式:顶部文档元信息(CAS/EC/HS/版本/日期/市场)→ GHS 16 部分;第 3 部分(组分)与 第 14 部分(运输)为 5 列网格子表,其余为键值行。与人工精修的最终版式一致
  • 页眉/页脚:首页无页眉,公司 LOGO + 中英文名置于正文顶部右上角;其他页页眉仅保留 SAFETY DATA SHEET(中文版为 SAFETY DATA SHEET / 化学品安全技术说明书);页脚含文档号、自动页码、 地址与电话。
  • CAS / EC / HS 自动查询与核实msds.lookup):基于 PubChem PUG-REST 解析 CAS / InChIKey / 分子式,并生成带"来源/日期/可信度"的 verification_log.json,供合规留痕。
  • 中文 → 英文翻译器translate_cn_to_en.py):载入你手工定稿的中文 docx,按内置词典把 章节标题、标签、常用 GHS 危险说明、合规提示等替换为英文,输出国际版 docx(详见下文"限制")。
  • 合规核对清单data/requirements_checklist.json 内置中/美/欧三国必检项。

安装

git clone <your-repo-url> auto-msds
cd auto-msds
python -m venv .venv && source .venv/bin/activate     # Windows: .venv\Scripts\activate
pip install -e .

仅 docx 生成需要 python-docx;HTML / lookup / 翻译器仅用标准库。


快速开始

1) 准备数据

把化学品数据整理成 JSON(字段见 data/schemas/schema.example.json,可直接复制改)。 仓库自带一份脱敏示例:data/examples/example_self_leveling_mortar.json(水泥基自流平砂浆,企业信息已匿名)。

2)(推荐)先把组分编码查实

# 从数据 JSON 的第3部分自动提取组分并查 CAS/HS
msds-lookup --file data/examples/example_self_leveling_mortar.json --out verification_log.json
# 或手动指定物质名
msds-lookup --names "Portland cement" "quartz" --out verification_log.json

verification_log.json 中已核实的 CAS / HS 回填进数据 JSON 的对应字段(EC 号需经 ECHA / 海关核实)。

3) 生成文档

# 中文版(中国市场)
msds-docx --data data/examples/example_self_leveling_mortar.json --market cn  --out output/msds_cn.docx
# 国际英文版(出口/GHS 通用)—— 直接用 JSON 的英文品名渲染英文框架
msds-docx --data data/examples/example_self_leveling_mortar.json --market intl --out output/msds_en.docx
# HTML 版 + 转 PDF
msds-html --data data/examples/example_self_leveling_mortar.json --market cn  --out output/msds_cn.html
msds-pdf  --html output/msds_cn.html --out output/msds_cn.pdf

不传 --company 时用数据 JSON 内嵌的 company 块;自家产品可用 --company data/company_profile.json

命令行亦可走等价形式:python -m msds.render_docx ... / python -m msds.render_html ... / python -m msds.lookup ...

4) 中文定稿 → 英文(词典翻译器)

若你已在 Word 里手工精修好中文版(封面、措辞、表格都定稿),想快速出国际英文版:

python src/msds/translate_cn_to_en.py --in output/msds_cn.docx --out output/msds_en.docx

该翻译器针对已定稿的中文 docx 做逐格替换,能完整保留合并单元格、配色、图片与版式。

限制:它是词典翻译器(顶部 T 字典),对"见过的"中文短语(章节标题、标签、常见 GHS 语句、合规提示) 翻译准确;对 JSON 自由文本段落里未收录的中文,会原样保留。遇到新措辞时,在脚本顶部的 T 字典里加一条即可。 要让英文 100% 自动化,更彻底的做法是在数据 JSON 的 sections 里同时提供 zhen 两块(渲染器会优先用 en)。


数据格式(要点)

{
  "meta": { "product_name": "英文品名", "product_name_zh": "中文品名",
            "cas": "CAS或混合物型号", "ec": "EC号", "hs": "HS编码",
            "version": "1.0 (Draft)", "issue_date": "YYYY-MM-DD" },
  "company": { "name": "...", "name_zh": "...", "address": "...", "address_zh": "...",
               "tel": "...", "email": "...", "website": "...",
               "emergency_tel": "...", "logo_path": "可选: logo 图片路径" },
  "pictograms": [],
  "show_compliance": false,
  "compliance_notes": ["待补充/待核实项..."],
  "sections": {
    "1":  { "zh": {"rows":[["标签",""]]}, "en": {"rows":[...]} },
    "3":  { "zh": {"grid":{"columns":[5],"rows":[[5],...]}}, "en": {"grid":{...}} },
    "14": { "zh": {"grid":{...}}, "en": {"grid":{...}} },
    ...
  }
}
  • sections 键固定 "1"~"16"(标题由程序内置)。
  • 每部分支持:{"rows":[...]} 键值行 / {"grid":{...}} 5 列网格(仅第 3、14 部分)/ {"text":"..."} 自由文本。
  • CAS / EC / HS 为必填核实项:缺失即查 msds.lookup 或权威来源后填入,严禁编造;无法核实则标注"待核实"并写入 compliance_notes

目录结构

auto-msds/
├── src/msds/            # 生成引擎
│   ├── render_docx.py   # Word(.docx) 渲染(单表5列、首页无页眉、正文顶部公司块)
│   ├── render_html.py   # HTML 渲染
│   ├── html_to_pdf.py   # HTML → PDF(本机 Chrome/Edge 无头)
│   ├── lookup.py        # CAS/EC/HS 查询核实(PubChem PUG-REST)
│   └── translate_cn_to_en.py  # 中文定稿 docx → 英文 docx 词典翻译器
├── data/
│   ├── company_profile.json        # 企业信息模板(替换为你的真实信息)
│   ├── requirements_checklist.json # 中/美/欧合规必检项
│   ├── schemas/schema.example.json # 数据格式最小模板
│   └── examples/                   # 脱敏示例产品数据
│       └── example_self_leveling_mortar.json
├── skills/msds-generator/SKILL.md  # WorkBuddy 助手技能说明(含"研究核实"工作流)
├── tests/test_render.py            # 冒烟测试
├── docs/CONTRIBUTING.md
├── README.md / LICENSE / pyproject.toml / requirements.txt / .gitignore

合规与免责

  • 输出为排版模板,不构成产品特性保证或合规背书
  • CAS 经 PubChem 解析、HS 为内置类别提示、EC 需经 ECHA / 海关核实——均需在正式发布前复核。
  • 接收方须自行遵守产品销售/使用地所有相关法律法规。
  • 本仓库为开源工具,使用即表示理解并同意上述免责。

许可证

MIT —— 详见 LICENSE

About

开源 MSDS/SDS 自动生成工具:单语(中/英)可编辑 docx/html、CAS/EC/HS 自动查询核实、中文定稿→英文翻译器

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages