化学结构图片识别和解析

./img/2023-01-10-14-59-54-bromineContaining.png

OCSR 视觉化学结构识别概念

  • OCSR (optical chemical structure recognition) : 视觉化学结构识别

开源工具

OSRA

optical structure recognition application

项目说明
维护状态在维护,2021.09.05
维护地址sourceforge-OSRA
证书GPLv2
使用语言C++

Imago

项目说明
维护状态长时间没有更新,2013.02.26
维护地址github 和 epam 网站
证书GPLv3
使用语言C++

官方链接:

MolVec

项目说明
维护状态在维护,2022.04.26
维护地址github molvec
lGPLv2.1
使用语言java

decimer 2.0

项目说明
维护状态在维护,2022.12.02
维护地址github DECIMER-Image_Transformer
开源证书MIT
使用语言python
技术图片识别技术:深度学习, Efficient-Net V2 + Transformer

性能对比

参考文献:

OSRA, Imago 和 MolVec 的比较。

准确度比较

由图易知,

  1. JPO 数据集 MolVec 精度更高
  2. CLEF 2012 数据集 OSRA 精度更高
  3. 其他数据集 USPTO 和 UOB 数据集 两者精度相差不大
img/2023-01-10-15-11-19-image.png
准确度对比图

识别速度比较

MolVec 完全占优势。

注:但这是有偏见的,测试者对 molvec 使用的是批量处理,osra 是命令行一次一个调用的,如果使用 C++ 编写程序使 osra 支持批量处理,两者哪个速度更快,还需要进一步测试

img/2023-01-10-15-12-15-image.png
识别速度对比图

测试数据集

OSRA 使用说明

安装方法

最新版本安装

linux 系统源码安装

  1. 代码指定版本下载

  2. 其他依赖安装

    1
    
    sudo pacman -S graphicsmagick poppler openbabel potrace tclap

    注意: 这里使用的测试系统使 arch linux, 如果使 ubuntu 或其他系统,请查找 poppler 等安装包的对应版本,比如:在 ubuntu 上使用 poppler-dev

  3. gocr 编译安装

    1
    
    ./configure; make libs; sudo make install
  4. ocrad 编译安装

    1
    2
    3
    4
    5
    
    # 如果需要编译生成 libosra
    ./configure CXXFLAGS=-fPIC LDFLAGS=-fPIC; make; sudo make install
    
    # 否则
    ./configure; make; sudo make install
  5. osra 编译安装

    1
    2
    3
    4
    5
    6
    7
    8
    
    # 生成 libosra, 验证失败
    ./configure --enable-lib; make ; sudo make install
    
    # 生成 libosra, 验证失败
    ./configure --enable-java; make all ; sudo make install
    
    # 只有命令行工具 osra, 验证成功
    ./configure; make; sudo make install

通过 pyosra 安装

使用 conda 安装

1
conda install -c edbeard -c mcs07 -c conda-forge pyosra

注意:实际安装版本使 osra 2.1.0 (2017.0.16 发布)

通过 bioconda 安装

1
conda install -c bioconda osra

注意:

  1. 最新版本也是 osra 2.1.0, 参见:Package Recipe 'osra' — Bioconda documentation
  2. 测试安装成功,但是无法使用

通过 docker 安装

使用 bioconda 构建的 image

1
2
3
4
docker pull quay.io/biocontainers/osra:2.1.0--0

docker run --rm -it quay.io/biocontainers/osra:2.1.0--0  osra --version
# output: osra  version: 2.1.0

使用方法

单个图片识别

  1. 直接识别
1
2
3
4
5
osra ./benzene.png -w output.txt

# 或者

osra ./benzene.png > output.txt

注: 识别的结果默认是 SMILES 格式

  1. 设定导出格式

    1
    
    osra ./benzene.png -w output.sdf -f sdf

    格式类型:

    • smi: smiles
    • sdf: sdf 文件格式
    • can: 不知道什么意思,但是导出结果实际上还是 smiles

decimer 介绍

基于深度学习算法模型开发的化学结构图解析软件,使用了技术:Efficient-Net V2 + Transformer。

安装

  1. 推荐使用 conda 环境
  2. 安装命令

    1
    2
    3
    4
    5
    6
    7
    
    git clone https://github.com/Kohulan/DECIMER-Image_Transformer.git decimer && cd decimer/ && pip install -e .
    
    # 或者
    pip install decimer
    
    # 或者
    pip install git+https://github.com/Kohulan/DECIMER-Image_Transformer.git

使用

1
2
3
4
5
6
from DECIMER import predict_SMILES

# Chemical depiction to SMILES translation
image_path = "path/to/imagefile"
SMILES = predict_SMILES(image_path)
print(SMILES)