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 自动选择最佳

识别技巧

提高识别准确率

  1. 清晰的图片 - 确保分子结构清晰可见
  2. 标准绘制 - 使用 ChemDraw 等标准工具绘制
  3. 适当大小 - 图片不宜过小(建议 >200x200 像素)
  4. 黑白对比 - 黑白结构图比彩色更易识别
  5. 避免手写 - 手写结构识别率较低

常见问题

问题 原因 解决方案
识别失败 图片质量差 提高图片清晰度
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) 使用:

  1. 图像预处理 - 二值化、去噪、增强对比度
  2. 对象检测 - 识别原子、键、箭头等元素
  3. 图构建 - 构建分子图结构
  4. SMILES 生成 - 使用深度学习模型生成 SMILES

MolNextR 工作原理

MolNextR 使用:

  1. 视觉编码器 - 提取图像特征
  2. 序列解码器 - 生成 SMILES 序列
  3. 注意力机制 - 关注关键结构特征

准确率对比

数据集 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
Installs
12
GitHub Stars
45
First Seen
Mar 30, 2026