2022/3/22 16:51:14 阅读:349 发布者:chichi77
今天推荐一个超级好用的pdf转txt的python脚本。强烈推荐!!!
废话不多说,这个大家Git-hub上都可以找到,搜搜(pdfminer)关键词。链接如下:
https://github.com/pdfminer/pdfminer.six
安装使用github里面都有说明,在这里简单复读一遍:
安装:
pip3 install pdfminer.six
使用:
pdf2txt.py sample.pdf >> sample.txt
So easy and powerful.
案例:在J. Phys. Chem. C 2019, 123, 47, 29024–29036 这篇文章的支持信息中, 有超级多的Pt团簇的xyz结构。直接在pdf复制粘贴并生产计算输入文件很费劲。可以用这个命令先把pdf转成txt文本,然后结合其他命令获得结构。下面是我的一些操作心得,有兴趣的可以下载支持信息,亲自动刀操作一遍。
第一步:转pdf到文本
pdf2txt.py jp9b08691_si_001.pdf >> si.txt
第二步:提取坐标
Pdf中,可以通过'Cluster=Pt' 结合数字定位,然后后面的N行即为坐标信息。用grep命令即可。
提取PDF中所有的Pt5 团簇结构。
grep Cluster=Pt5 -A 5 si.txt > Pt5.txt
第三步:检查Pt5.txt文件
发现有个结构出现了问题,这是因为PDF中坐标因为分页被强行中断了,pdf2txt转化的时候,在两页的内容之间会出现'^LSN' 的信息(N为页码),一定要注意检查。在这个例子中,‘^LS4’ 前面有1空行,后面2空行。
第三步:修改si.txt 文件,删除分页信息,这里用的是sed命令:
sed -i -e '/S/,+2d' -e '$!N;/\n.*S/!P;D' si.txt
紫色部分代表删掉后面2行,红色代表删掉前面1行。
另外要注意,这里用‘S’字符来定位分页信息的部分,其他含有'S'字母的行也会无差别删除,比如下面的几行。
第四步:重新提取:
grep Cluster=Pt5 -A 5 si.txt > Pt5.txt
这样,Pt5.txt文件中就包含所有的Pt5的坐标信息了。剩下的就需要你根据自己平时搭结构的习惯以及用的计算程序,读取并做成输入文件。
本人用的split这个命令,把Pt5.txt分割成N个文本(xaa...xbg),每个文本包含一个Pt5团簇的结构。
就到这儿吧,记住pdf2txt.py 就OK,提取支持信息里面的坐标结构真是爽歪歪啊,比自己复制粘贴好多了。另外, 1) 强烈建议大家投稿的时候直接把xyz文件打包作为支持信息,这样后面的人就不需要这么麻烦了,2)更强烈建议投稿的时候要把坐标信息附在支持信息里面,不管是pdf也好,xyz文件也罢。 很多人投稿都不放xyz文件,导致其他人想练练手,重复下都没办法。
大家尽量自己动手操作一番,如果行不通再联系我,会把这个例子打包发给你(lqcata@gmail.com)
如有侵权,请联系本站删除!