Install
$ agentstack add skill-internscience-chemclaw-reaction-data-extraction Open-source listing — not yet scanned by AgentStack. Follow the source repository for install instructions.
Security review
⚠ Flagged1 finding(s); flagged for manual review. · v0.1.0 How review works →
- • Prompt-injection patterns
- • Secret / credential exfiltration
- • Dangerous shell & filesystem operations
- • Untrusted network calls
- • Known-malicious package signatures
- high Dangerous shell/eval execution.
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ● Shell / process execution Used
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Reaction Data Extraction
从化学文献 PDF 中精确提取化学反应数据,特别是反应条件优化信息。支持提取反应物、产物、催化剂、溶剂、温度、时间、产率等关键信息,并输出结构化的 CSV/JSON 文件。
触发条件
- 用户提供 PDF 文献并要求提取反应数据
- 提到"提取反应条件"、"反应优化数据"
- 说"extract reaction conditions"、"reaction data from PDF"
- 需要从文献中整理反应表格
- 需要批量提取多篇文献的反应数据
功能特性
- ✅ 反应物/产物识别 - 自动提取反应物和产物的 SMILES/名称
- ✅ 反应条件提取 - 催化剂、配体、溶剂、添加剂
- ✅ 参数提取 - 温度、时间、压力、浓度
- ✅ 产率提取 - 分离产率、GC 产率、NMR 产率
- ✅ 反应类型识别 - 偶联、氧化、还原、环化等
- ✅ 表格数据提取 - 从反应条件优化表格中提取数据
- ✅ 支持体内容 - 从正文段落中提取反应描述
- ✅ 结构化输出 - CSV/JSON 格式,便于后续分析
- ✅ 批量处理 - 支持多篇文献批量提取
- ✅ 置信度评分 - 每个提取结果附带置信度
核心技术
| 组件 | 用途 | |------|------| | MinerU | PDF 解析和文本提取 (命令行调用) | | 正则表达式 | 反应条件模式匹配 | | Rule-based Parser | 反应句子解析 | | 表格解析器 | Markdown 表格→反应数据 |
提取的数据字段
| 字段 | 说明 | 示例 | |------|------|------| | reaction_id | 反应唯一标识 | RXN_001 | | entry | 表格中的条目号 | 1, 2, 3 | | reactants | 反应物 (SMILES 或名称) | c1ccccc1Br | | products | 产物 (SMILES 或名称) | c1ccccc1-c2ccccc2 | | catalyst | 催化剂 | Pd(PPh3)4 | | ligand | 配体 | PPh3 | | base | 碱 | K2CO3 | | solvent | 溶剂 | DMF, Toluene | | temperature | 温度 | 80 °C, rt, reflux | | time | 反应时间 | 12 h, 30 min | | pressure | 压力 (如有) | 1 atm, 10 bar | | concentration | 浓度 | 0.1 M | | yield_value | 产率数值 | 85 | | yield_type | 产率类型 | isolated, GC, NMR | | ee_value | 对映选择性 | 99%, >99% | | reaction_type | 反应类型 | Suzuki coupling | | scheme_number | 反应式编号 | Scheme 1, Table 2 | | page_number | 页码 | 5 | | confidence | 提取置信度 | 0.95 | | notes | 备注 | optimized condition |
使用方法
对话框中使用
从这篇 PDF 提取所有反应条件
提取反应优化数据并生成 CSV
extract reaction data from this paper
把文献中的反应表格整理成 Excel
提取 Suzuki 偶联反应的条件
命令行使用
# 基本提取(自动模式)
python3 scripts/reaction_data_extraction.py -i paper.pdf -o ./output
# 只提取表格数据
python3 scripts/reaction_data_extraction.py -i paper.pdf -o ./output --tables-only
# 只提取体内容反应
python3 scripts/reaction_data_extraction.py -i paper.pdf -o ./output --text-only
# 批量处理
python3 scripts/reaction_data_extraction.py -i ./papers/ -o ./output --batch
# JSON 输出
python3 scripts/reaction_data_extraction.py -i paper.pdf -o ./output --output-format json
# 详细模式
python3 scripts/reaction_data_extraction.py -i paper.pdf -o ./output -v
# 使用 OCR 处理扫描版
python3 scripts/reaction_data_extraction.py -i scanned.pdf -o ./output --method ocr
参数说明
| 参数 | 简写 | 说明 | 默认值 | |------|------|------|--------| | --input | -i | 输入 PDF 文件或目录 | - | | --output | -o | 输出目录 | ~/.openclaw/media/reaction-data-extraction | | --tables-only | -t | 只提取表格数据 | false | | --text-only | --text | 只提取体内容反应 | false | | --output-format | -f | 输出格式:csv/json | csv | | --method | -m | MinerU 解析方法:auto/txt/ocr | auto | | --lang | -l | OCR 语言 | en | | --device | -d | 设备:cpu/cuda | cpu | | --verbose | -v | 详细输出 | false | | --batch | -b | 批量处理模式 | false |
输出示例
基本提取
$ python3 scripts/reaction_data_extraction.py -i organic_paper.pdf -o ./output -v
✓ 输出目录:/home/lla/.openclaw/media/reaction-data-extraction/output
提取模式:all
输出格式:csv
✓ 开始处理:organic_paper.pdf
[1/3] 解析 PDF...
命令:mineru -p organic_paper.pdf -o ./output -m auto -l en --backend pipeline -d cpu
✓ PDF 解析完成,文本长度:41804 字符
检测到表格:3 个
[2/3] 从表格提取反应数据...
提取表格反应:25
[3/3] 从文本提取反应数据...
从文本提取:18 个反应
✓ 已处理:organic_paper.pdf
提取反应数:43
✓ CSV 已保存:./output/organic_paper/reaction_data.csv
✓ 日志已保存:./output/organic_paper/extraction_log.txt
============================================================
✅ 全部完成!
输出目录:/home/lla/.openclaw/media/reaction-data-extraction/output
CSV 输出示例
reaction_id,entry,catalyst,ligand,solvent,temperature,time,yield_value,ee_value,reaction_type,source,confidence
RXN_001,1,Pd₂(dba)₃,L7,MeOH,40 °C,24 h,99,99%,asymmetric oxidative allylic amination,table_0,0.9
RXN_002,2,Pd(OAc)₂,L7,MeOH,40 °C,24 h,trace,,asymmetric oxidative allylic amination,table_0,0.9
RXN_003,3,Pd(dba)₂,L7,MeOH,40 °C,24 h,97,99%,asymmetric oxidative allylic amination,table_0,0.9
JSON 输出示例
{
"extraction_date": "2026-03-17T22:04:38",
"total_reactions": 43,
"reactions": [
{
"reaction_id": "RXN_001",
"entry": 1,
"catalyst": "Pd₂(dba)₃",
"ligand": "L7",
"solvent": "MeOH",
"temperature": "40 °C",
"time": "24 h",
"yield_value": 99,
"ee_value": "99%",
"source": "table_0",
"confidence": 0.9
}
]
}
依赖安装
# 安装 MinerU(命令行工具)
pip install 'mineru[all]'
# 如果遇到 numpy 版本问题
pip install 'numpy90%
- ✅ **支持多种格式** - CSV/JSON 输出
- ✅ **置信度评分** - 每个结果附带置信度
- ✅ **MinerU 命令行** - 使用 subprocess 调用,避免库导入问题
- ⚠️ **PDF 质量** - 扫描版 PDF 需要使用 `--method ocr`
- ⚠️ **复杂表格** - 跨页表格可能需要手动校正
- ⚠️ **隐式条件** - 某些条件可能在正文中描述而非表格
- ⚠️ **处理时间** - 长文献可能需要几分钟
## 错误处理
| 错误 | 说明 | 解决方案 |
|------|------|----------|
| `No tables found` | 未检测到表格 | 使用 --text-only 提取体内容反应 |
| `MinerU execution failed` | MinerU 执行失败 | 检查 mineru 是否正确安装 |
| `Timeout` | 处理超时(>10 分钟) | 尝试 `-m txt` 模式或减小文件 |
| `Low confidence` | 提取置信度低 | 检查原文,手动校正 |
| `File not found` | PDF 文件不存在 | 检查文件路径 |
## 性能参考
| 文档类型 | 页数 | 处理时间 | 提取反应数 |
|----------|------|---------|-----------|
| 短篇通信 | 4-6 | ~30s | 5-15 |
| 完整论文 | 10-15 | ~1-2min | 20-50 |
| 综述文章 | 20-30 | ~3-5min | 50-100+ |
| 支持信息 | 50-100 | ~5-10min | 100-200+ |
## 输出目录白名单
**重要**:为了能在飞书等平台上发送生成的文件,输出目录必须在白名单内:
- ✅ `~/.openclaw/media/reaction-data-extraction/`
- ✅ `~/.openclaw/workspace/`
- ✅ `~/.openclaw/agents/`
本 skill 默认输出到 `~/.openclaw/media/reaction-data-extraction/`,可以直接分享!
## 常见问题
### Q: 提取的产率数据不准确怎么办?
A:
- 检查原文中产率的表示方式(isolated/GC/NMR)
- 某些表格可能使用 footnote 说明
- 手动校正后更新 CSV
### Q: 如何处理支持信息 (Supporting Information)?
A:
- SI 通常包含更多反应数据
- 使用相同流程处理 SI PDF
- 合并主文和 SI 的数据
### Q: MinerU 导入失败怎么办?
A:
- 本技能使用 MinerU 命令行工具,不依赖 Python 库导入
- 确保 `mineru` 命令可用:`mineru --help`
- 如果不行,重新安装:`pip install -U 'mineru[all]'`
### Q: 如何验证提取结果的准确性?
A:
- 检查 confidence 字段(>0.8 较可靠)
- 随机抽样人工核对
- 与原文表格对比
## 技术细节
### MinerU 优势
MinerU 是 opendatalab 开源的工业级 PDF 解析工具:
- 📊 **布局分析** - 准确识别标题、段落、表格、图片
- 📐 **公式保留** - 完整保留 LaTeX 数学公式
- 🖼️ **图片提取** - 提取嵌入的图片
- 📝 **OCR 支持** - 支持扫描版 PDF
- 🌍 **多语言** - 支持 109 种语言 OCR
### 命令行调用 vs Python 库
本技能使用**命令行调用**MinerU,而不是 Python 库导入:
```python
# ✅ 推荐:命令行调用
subprocess.run(["mineru", "-p", "paper.pdf", "-o", "./output"])
# ❌ 避免:Python 库导入(可能有版本兼容问题)
from mineru.backend import Pipeline
优势:
- 避免版本兼容性问题
- 更稳定的执行环境
- 易于调试和错误处理
置信度评分
| 来源 | 置信度 | 说明 | |------|--------|------| | 表格数据 | 0.9-0.95 | 结构化数据,准确率高 | | 体内容明确描述 | 0.7-0.8 | 清晰的反应描述 | | 体内容模糊描述 | 0.3-0.5 | 需要人工核对 |
引用
核心技术:
- MinerU - PDF 解析引擎
- ChemDataExtractor - 化学 NLP(可选)
引用:
@article{swain2016chemdataextractor,
title={ChemDataExtractor: a toolkit for automated extraction of chemical information from the scientific literature},
author={Swain, Matthew C and Cole, Jacqueline M},
journal={Journal of Chemical Information and Modeling},
year={2016}
}
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: InternScience
- Source: InternScience/ChemClaw
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.