在MacOS上編譯OSRA(光學(xué)結(jié)構(gòu)識(shí)別程序)

繪制結(jié)構(gòu)是化學(xué)工作者的基本功种冬,但是對于大數(shù)據(jù)相關(guān)的工作付燥,人工繪制數(shù)十萬個(gè)結(jié)構(gòu)就有些不現(xiàn)實(shí),所以如果能實(shí)現(xiàn)類似OCR的功能枝哄,將對機(jī)器學(xué)習(xí)有很大幫助肄梨。2008年,一個(gè)叫Igor V. Filippov的老哥發(fā)布了名為OSRA的程序挠锥,即Optical Structure Recognition Application(光學(xué)結(jié)構(gòu)識(shí)別程序)众羡。這是一種類似于傳統(tǒng)的OCR式程序,能將圖片中的化學(xué)結(jié)構(gòu)式轉(zhuǎn)換成計(jì)算機(jī)可以讀取的格式如SMILES蓖租、SDF等粱侣,它后來Schr?dinger公司做的那種基于神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)識(shí)別系統(tǒng)有本質(zhì)區(qū)別。第二年蓖宦,老哥把工作寫成了論文齐婴,如果想詳細(xì)了解,可以看這篇文章:J. Chem. Inf. Model. 2009, 49, 3, 740–743稠茂。

這個(gè)程序的編譯并不怎么順利柠偶,遇到了挺多坑的,我是好幾年前知道它的存在的,但是由于一直沒時(shí)間排坑诱担,就總在用它的在線版毡证,但是長久以來在線版都沒辦法導(dǎo)出SDF,而SMILES的轉(zhuǎn)換又沒法跟圖片上一致该肴,而且最要命的是情竹,它的圖像API居然完全無法識(shí)別MacOS下生成的圖片!匀哄!所以還是得編譯本地版秦效。這段時(shí)間由于肺炎疫情一直在家呆著,終于有時(shí)間仔細(xì)研究一下了涎嚼。(果然閑出屁可以作出奇怪的工作2333)

本文的編譯環(huán)境為MacOS 10.13.6阱州,沒有在其他系統(tǒng)上使過,并不推薦Windows系統(tǒng)法梯,似乎挺麻煩的苔货,作者也不推薦。首先立哑,電腦上需要安裝subversionhomebrew夜惭,subversion用來下載源代碼,homebrew則用來安裝依賴铛绰。

不知道出于什么原因诈茧,作者只會(huì)把BUG修復(fù)到svn版的代碼里(可能是懶癌?)捂掰,所以先用svn把代碼check出來:

# must use svn version code
svn checkout https://svn.code.sf.net/p/osra/code/tags/2.1.1 osra-code

然后安裝依賴敢会,有一些是可以直接用brew安裝的,有一些還是需要編譯安裝这嚣,先說brew安裝的:

brew install libiconv, zlib, bzip2, freetype, libpng, libtiff, lcms, jasper, libjpeg

下面的一些依賴需要編譯安裝鸥昏,用戶要去對應(yīng)的庫的官網(wǎng)下載代碼,然后按照如下的命令逐個(gè)安裝:

#libxml2
./autogen.sh
make -j4
sudo make install

#Compile OCRAD and TCLAP as follows:
./configure
make -j4
sudo make install

#Potrace:
./configure --with-libpotrace --disable-shared
make -j4
sudo make install

#GOCR:
./configure
make libs
sudo make install

注意這里姐帚,Openbabel需要使用作者patch過的版本吏垮,可以在他的sourceforge下載到,下載完成后按如下命令安裝:

#Openbabel
export LDFLAGS=/usr/local/opt/libiconv/lib/libiconv.a
mkdir build
cd build
cmake -DBUILD_SHARED=OFF ..
sudo make install

#GraphicsMagick
export LDFLAGS=
./configure --disable-shared --with-x=no --disable-openmp --without-threads
make -j4
sudo make install
# 要保證你的PATH里可以找到graphicsmagick++-config
# 把下面的路徑換成你自己存儲(chǔ)GraphicsMagick源代碼的位置
export PATH=/Users/simon/Downloads/GraphicsMagick-1.3.21/Magick++/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/lib

#Poppler
sudo chown -R $(whoami) /usr/local/share/man/man4
brew install pkgconfig openjpeg
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DENABLE_UNSTABLE_API_ABI_HEADERS=ON ..
make -j4
sudo make install

到這里依賴就全部安裝好了卧土,然后就是編譯OSRA主程序了惫皱。你遇到的第一個(gè)大坑就是configure文件。作者原始的文件應(yīng)該是沒對mac優(yōu)化過尤莺,所以configure就過不了旅敷,得手動(dòng)把里面的某些參數(shù)改一改。用文本編輯器打開configure颤霎,找到所有的-static-libgcc媳谁,把它們?nèi)紕h掉涂滴。然后搜索${MACPORTLIBS},然后把這個(gè)變量替換成相應(yīng)位置顯示的庫文件晴音,你安裝的庫版本可能會(huì)和我的不一樣柔纵,所以你需要確認(rèn)一下你電腦上安裝的真實(shí)版本,然后把路徑改成你的锤躁,挨個(gè)替換搁料。通過HomeBrew安裝的庫文件會(huì)在/usr/local/Cellar/里,而編譯安裝的庫則在/usr/local/lib/里系羞。有以下幾個(gè)庫需要替換:

/usr/local/lib/libxml2.a 
/usr/local/Cellar/libiconv/1.16/lib/libiconv.a 
/usr/local/Cellar/zlib/1.2.11/lib/libz.a
/usr/local/lib/liblcms2.a 
/usr/local/lib/libtiff.a 
/usr/local/lib/libfreetype.a 
/usr/local/lib/libjasper.a 
/usr/local/lib/libpng.a 
/usr/local/Cellar/bzip2/1.0.8/lib/libbz2.a 
/usr/local/Cellar/zlib/1.2.11/lib/libz.a

完成后郭计,再運(yùn)行configure就可以通過了,然后按照前面一樣的方法make再install就可以了:

./configure --enable-static-linking --with-graphicsmagick-lib=/usr/local/lib --with-graphicsmagick-include=/usr/local/include/GraphicsMagick

make -j4
sudo make install

以下是我的私貨時(shí)間(笑)


化學(xué)專業(yè)的學(xué)生寫畢業(yè)論文綜述要畫上好幾百個(gè)結(jié)構(gòu)椒振,手動(dòng)畫太令人頭大了昭伸,有了OSRA后,就可以直接識(shí)別PDF里的結(jié)構(gòu)了澎迎,于是乎我寫了一個(gè)截圖的GUI小程序庐杨,直接在結(jié)構(gòu)上畫個(gè)框就能把圖截下來,然后自動(dòng)調(diào)用OSRA把結(jié)構(gòu)識(shí)別成SDF格式夹供,PNG和SDF會(huì)被分別保存下來灵份,SDF打開以后套一個(gè)模板就可以復(fù)制到word里去用了。

程序源代碼我發(fā)布在了我的github上哮洽,用python寫成各吨,需要先用pip安裝PyQt5,如果對你有幫助袁铐,別忘了在github上給我一個(gè)star??下方是一個(gè)演示視頻~

簡書插不了視頻,請移步我的博客觀看demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末横浑,一起剝皮案震驚了整個(gè)濱河市剔桨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌徙融,老刑警劉巖洒缀,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異欺冀,居然都是意外死亡树绩,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門隐轩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來饺饭,“玉大人,你說我怎么就攤上這事职车√笨。” “怎么了鹊杖?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長扛芽。 經(jīng)常有香客問我骂蓖,道長,這世上最難降的妖魔是什么川尖? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任登下,我火速辦了婚禮,結(jié)果婚禮上叮喳,老公的妹妹穿的比我還像新娘被芳。我一直安慰自己,他們只是感情好嘲更,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布筐钟。 她就那樣靜靜地躺著,像睡著了一般赋朦。 火紅的嫁衣襯著肌膚如雪篓冲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天宠哄,我揣著相機(jī)與錄音壹将,去河邊找鬼。 笑死毛嫉,一個(gè)胖子當(dāng)著我的面吹牛诽俯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播承粤,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼暴区,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了辛臊?” 一聲冷哼從身側(cè)響起仙粱,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎彻舰,沒想到半個(gè)月后伐割,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡刃唤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年隔心,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尚胞。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡硬霍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辐真,到底是詐尸還是另有隱情须尚,我是刑警寧澤崖堤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站耐床,受9級特大地震影響密幔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜撩轰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一胯甩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧堪嫂,春花似錦偎箫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至恶复,卻和暖如春怜森,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背谤牡。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工副硅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人翅萤。 一個(gè)月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓恐疲,卻偏偏與公主長得像,于是被迫代替她去往敵國和親套么。 傳聞我的和親對象是個(gè)殘疾皇子培己,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容