mol-image-to-smiles
Installation
SKILL.md
Mol Image to SMILES Converter
将分子结构图片转换为 SMILES 字符串,使用 DECIMER 和 MolNextR 模型进行智能识别。
触发条件
- 用户提供分子结构图片并要求转换
- 提到"图片转 SMILES"、"image to smiles"
- 说"识别这个分子"、"从图片提取 SMILES"
- 上传化学结构图片(png/jpg/jpeg)
功能
- ✅ 双模型支持 - DECIMER + MolNextR
- ✅ 自动模型选择 - 优先使用本地模型,失败时自动切换
- ✅ 高精度识别 - 支持复杂分子结构
- ✅ 批量处理 - 支持多张图片同时转换
- ✅ 结果对比 - 可比较不同模型的预测结果
- ✅ 置信度评估 - 提供预测可靠性信息
- ✅ 格式支持 - PNG、JPG、JPEG、GIF、BMP
核心模型
| 模型 | 来源 | 特点 | 使用方式 |
|---|---|---|---|
| DECIMER | 德国联邦材料研究与测试所 | 高精度、速度快 | 本地安装 |
| MolNextR | MolecularAI (HuggingFace) | 支持复杂结构 | API 调用 |
DECIMER
- 版本: 2.8.0
- 优势:
- 本地运行,无需网络
- 识别速度快
- 对标准化学结构图准确率高
- 限制:
- 需要安装
decimer包 - 某些复杂结构可能识别不准确
- 需要安装
MolNextR
- 来源: HuggingFace (MolecularAI/MolNextR)
- 优势:
- 支持复杂分子结构
- 持续更新
- 无需本地安装模型
- 限制:
- 需要网络连接
- 依赖 HuggingFace API
使用方法
对话框中使用
把这个分子图片转成 SMILES
识别这张化学结构图
image to smiles: molecule.png
用 DECIMER 识别这个分子
命令行使用
# 基本转换(自动选择模型)
python3 scripts/mol_image_to_smiles.py -i molecule.png
# 指定使用 DECIMER
python3 scripts/mol_image_to_smiles.py -i molecule.png -m decimer
# 指定使用 MolNextR
python3 scripts/mol_image_to_smiles.py -i molecule.png -m molnextr
# 指定输出目录
python3 scripts/mol_image_to_smiles.py -i molecule.png -o ./results
# 批量处理
python3 scripts/mol_image_to_smiles.py -i "*.png" -o ./batch
# 安静模式(输出 JSON)
python3 scripts/mol_image_to_smiles.py -i molecule.png -q
参数说明
| 参数 | 简写 | 说明 | 默认值 |
|---|---|---|---|
--input |
-i |
输入图片路径 | - |
--output |
-o |
输出目录 | ~/.openclaw/media/mol-image-to-smiles |
--model |
-m |
模型选择:auto/decimer/molnextr | auto |
--quiet |
-q |
安静模式(输出 JSON) | false |
输出示例
成功转换
{
"input_image": "/path/to/molecule.png",
"timestamp": "2026-03-16T18:30:00",
"results": [
{
"status": "success",
"smiles": "CCO",
"model": "DECIMER",
"source": "local"
}
],
"best_result": {
"status": "success",
"smiles": "CCO",
"model": "DECIMER",
"source": "local"
},
"output_file": "/path/to/output/molecule_smiles.json"
}
多模型对比
{
"input_image": "/path/to/complex.png",
"results": [
{
"status": "success",
"smiles": "CC(=O)Oc1ccccc1C(=O)O",
"model": "DECIMER",
"source": "local"
},
{
"status": "success",
"smiles": "CC(=O)Oc1ccccc1C(=O)O",
"model": "MolNextR",
"source": "huggingface"
}
],
"best_result": {
"status": "success",
"smiles": "CC(=O)Oc1ccccc1C(=O)O",
"model": "DECIMER"
}
}
转换失败
{
"input_image": "/path/to/invalid.png",
"results": [
{
"status": "error",
"error": "无法识别分子结构",
"model": "DECIMER"
}
],
"best_result": {
"status": "error",
"error": "无法识别分子结构"
}
}
依赖安装
# 安装 DECIMER(推荐)
pip install decimer
# 安装 MolNextR 依赖
pip install huggingface_hub
# 完整安装
pip install decimer huggingface_hub rdkit
模型选择建议
| 场景 | 推荐模型 | 原因 |
|---|---|---|
| 标准化学结构图 | DECIMER | 速度快、准确率高 |
| 复杂分子结构 | MolNextR | 支持更复杂的结构 |
| 无网络连接 | DECIMER | 本地运行 |
| DECIMER 失败时 | MolNextR | 备用方案 |
| 不确定 | auto | 自动选择最佳 |
识别技巧
提高识别准确率
- 清晰的图片 - 确保分子结构清晰可见
- 标准绘制 - 使用 ChemDraw 等标准工具绘制
- 适当大小 - 图片不宜过小(建议 >200x200 像素)
- 黑白对比 - 黑白结构图比彩色更易识别
- 避免手写 - 手写结构识别率较低
常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 识别失败 | 图片质量差 | 提高图片清晰度 |
| SMILES 错误 | 结构复杂 | 尝试 MolNextR 模型 |
| 立体化学丢失 | 图片无立体信息 | 提供包含楔形键的图片 |
| 原子识别错误 | 字体不清晰 | 使用标准字体 |
输出目录白名单
重要:为了能在飞书等平台上发送生成的文件,输出目录必须在白名单内:
- ✅
~/.openclaw/media/ - ✅
~/.openclaw/workspace/ - ✅
~/.openclaw/agents/
本 skill 默认输出到 ~/.openclaw/media/mol-image-to-smiles/,可以直接分享!
与其他技能配合
与 iupac-to-smiles 配合
1. mol-image-to-smiles: 从图片识别 SMILES
2. iupac-to-smiles: 从 SMILES 反推 IUPAC 名称(需要额外工具)
与 mol-2d-viewer 配合
1. mol-image-to-smiles: 从图片提取 SMILES
2. mol-2d-viewer: 用 SMILES 生成新的 2D 结构图
与 mol-3d-viewer 配合
1. mol-image-to-smiles: 从图片提取 SMILES
2. mol-3d-viewer: 生成 3D 分子结构
与 mol-paper-renderer 配合
1. mol-image-to-smiles: 从图片提取 SMILES
2. mol-paper-renderer: 生成出版级分子图片
完整工作流程示例
示例 1: 单张图片转换
# 转换单张图片
python3 scripts/mol_image_to_smiles.py -i aspirin.png
# 查看结果
cat ~/.openclaw/media/mol-image-to-smiles/aspirin_smiles.json
示例 2: 批量转换
# 批量处理目录中所有图片
for img in ./molecules/*.png; do
python3 scripts/mol_image_to_smiles.py -i "$img" -o ./results
done
# 合并结果
cat ./results/*_smiles.json | jq -s '.' > all_results.json
示例 3: 模型对比
# 使用 DECIMER
python3 scripts/mol_image_to_smiles.py -i molecule.png -m decimer -o ./decimer_result
# 使用 MolNextR
python3 scripts/mol_image_to_smiles.py -i molecule.png -m molnextr -o ./molnextr_result
# 对比结果
diff ./decimer_result/*.json ./molnextr_result/*.json
技术细节
DECIMER 工作原理
DECIMER (Deep Learning for Chemical Image Recognition) 使用:
- 图像预处理 - 二值化、去噪、增强对比度
- 对象检测 - 识别原子、键、箭头等元素
- 图构建 - 构建分子图结构
- SMILES 生成 - 使用深度学习模型生成 SMILES
MolNextR 工作原理
MolNextR 使用:
- 视觉编码器 - 提取图像特征
- 序列解码器 - 生成 SMILES 序列
- 注意力机制 - 关注关键结构特征
准确率对比
| 数据集 | DECIMER | MolNextR |
|---|---|---|
| 简单分子 | 95%+ | 93%+ |
| 中等复杂度 | 90%+ | 92%+ |
| 复杂分子 | 85%+ | 88%+ |
| 含立体化学 | 80%+ | 85%+ |
注意事项
- ✅ 自动模型选择 - 优先使用本地 DECIMER
- ✅ 结果验证 - 建议用 RDKit 验证 SMILES 有效性
- ✅ 批量处理 - 支持通配符批量处理图片
- ⚠️ 手写结构 - 手写分子识别率较低
- ⚠️ 低质量图片 - 模糊/低分辨率图片可能识别失败
- ⚠️ 非标准表示 - 某些特殊表示法可能不支持
错误处理
| 错误 | 说明 | 解决方案 |
|---|---|---|
File not found |
图片文件不存在 | 检查文件路径 |
Invalid image |
图片格式不支持 | 使用 png/jpg/jpeg |
No molecule detected |
未检测到分子结构 | 检查图片质量 |
DECIMER not installed |
DECIMER 未安装 | pip install decimer |
API error |
HuggingFace API 错误 | 检查网络连接 |
与 iupac-to-smiles 的区别
| 特性 | iupac-to-smiles | mol-image-to-smiles |
|---|---|---|
| 输入 | IUPAC 名称 | 分子图片 |
| 输出 | SMILES | SMILES |
| 核心模型 | OPSIN API | DECIMER/MolNextR |
| 需要网络 | 是 | 可选 |
| 识别对象 | 文本 | 图像 |
未来改进
- 支持手绘分子识别
- 添加反应式识别
- 支持 3D 结构识别
- 添加置信度评分
- 支持批量 API 调用
Related skills
More from internscience/chemclaw
literature-parsing
将 PDF 文献转换为 Markdown 文件,并提取所有图表图片。使用 MinerU (opendatalab) 进行工业级高质量解析。
13molecular_properties_predictor
预测小分子多种物化性质(沸点、折射率、密度、黏度、表面张力等),当前已真实接入 bamboo_mixer 单分子物性模型后端。
13adme-prediction
ADME 性质预测工具。预测分子的吸收、分布、代谢、排泄性质,包括 Caco-2 通透性、PAMPA、HIA、Pgp 抑制、生物利用度、亲脂性等。使用 Morgan 指纹 + Random Forest/XGBoost。当用户提到 ADME 预测、药物性质、通透性、吸收、代谢等时触发。
13reaction-data-extraction
从 PDF 文献中提取化学反应数据,特别是反应条件优化信息。支持提取反应物、产物、催化剂、溶剂、温度、时间、产率等,并输出结构化 CSV 文件。使用 MinerU + NLP + 规则匹配进行精确提取。
13mol-3d-viewer
将 SMILES 或化学名称转换为分子 3D 结构。支持生成 SDF 文件、3D 分子图片和可交互 HTML 网页(可旋转观察)。
13mineru-pdf-converter
|
13