由于样本图片数据都是保存在pdf里,想拿到样本必须先把图片从pdf中提取出来,算是数据清洗中的一点小小的积累吧。

这里不得不吐槽一下公司存储图片的机制,业务员把jpg格式的照片放到word里,然后用工具把word保存为pdf,最后上传到公司服务器里,这简介反人类,不但丢失了图片头文件信息,还造成后期数据转换的大量时间资源的浪费,可能pdf格式会小一点,但是完全可以通过其他图片编码方式进行解决,我才疏学浅,不能理解其中的逻辑。

下面进入正题:
这里把初始报错信息贴出来,以便大家对症下药:

ImportError: MagickWand shared library not found.
You probably had not installed ImageMagick library.
Try to install: brew install freetype imagemagick

细心的提示了,需要安装imagemagick 趟坑开始

1、安装 ImageMagick

mac环境下,如果直接使用

$ brew imagemagick

进行安装,默认会安装7.0.7-37版本,通过测试,这个版本修改了相关方法,在后面的脚本中会报错,于是需要安装im6,尝试了很多办法,有的通过编译安装,有的通过git命令获得历史版本安装,不过最方便的还是直接用brew 查看可安装的软件版本

$ brew search imagemagick

会直接列出所有历史版本

=> Searching local taps...
imagemagick@6 imagemagick
==> Searching taps on GitHub...
==> Searching blacklisted, migrated and deleted formulae...

而后选择对应的版本就可以了,这里安装im6

$ brew install imagemagick@6

安装成功后,发现程序中还是报错依旧。
经过多方查找原因,原来是im默认储存的目录不在系统检索的目录里,需要建立一个软连接(说白了就是在系统检索的目录里建立一个快捷方式)

$ ln -s /usr/local/Cellar/imagemagick@6/6.9.9-49/lib/libMagickWand-6.Q16.dylib /usr/local/lib/libMagickWand.dylib

后面步骤引用参考文章中的内容,在此感谢作者。

2、安装gs

$ brew install gs

3、安装wand

$ pip install wand

4、一码胜千言

from wand.image import Image

pdf_file = '.../example/a.pdf'

def convert_pdf_to_jpg(file_name, pic_file=None, resolution=120):
# 转换函数,默认分辨率120
with Image(filename=file_name, resolution=resolution) as img:
print('pages = ', len(img.sequence)) with img.convert('jpeg') as converted:
# 指定图片位置
if pic_file != None:
converted.save(filename=pic_file)
else:
# 同目录同文件名
converted.save(filename= '%s.jpg' % (file_name[:file_name.rindex('.')])) if __name__ == '__main__':
convert_pdf_to_jpg(pdf_file)

5、参考文章:

https://www.jianshu.com/p/1754ad695377

Mac python3 环境下 完善pdf转jpg脚本的更多相关文章

  1. 桂电在linux、Mac OS环境下使用出校器(支持2.14)

    这是guetsec学长在三院科协学长所抓包逆向分析1.81版出校器的基础上,用python写的一款为Mac和linux环境开发的出校器. 最后我做了略微修改,支持暂时最新版本2.14.下面有直接从源码 ...

  2. 在Mac OS环境下安装MySQL服务

    在Mac OS环境下安装MySQL服务 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我之前介绍过window环境下安装mysql服务,以及在Linux环境下安装mysql服务,今 ...

  3. 一步步教你搭建VS环境下用C#写WebDriver脚本

    一步步教你搭建VS环境下用C#写WebDriver脚本http://www.automationqa.com/forum.php?mod=viewthread&tid=3529&fro ...

  4. 20181225-Linux Shell Bash环境下自动化创建ssh互信脚本

    20181225-Linux Shell Bash环境下自动化创建ssh互信脚本 1. 我的Blog 博客园 https://www.cnblogs.com/piggybaba/ 个人网站 http: ...

  5. Window环境下,PHP调用Python脚本

    参考 php调用python脚本*** php 调用 python脚本的方法 解决办法:php提供了许多调用其他脚本或程序的方法,比如exec/system/popen/proc_open/passt ...

  6. .net环境下从PDF文档中抽取Text文本的一些方法汇总

    1.PDFBox的IKVM版本:据我所知,目前只有PDFBox的IKVM版本能比较好地从PDF中提取文本,PDFBOX更多信息请访问http://www.pdbox.org,关于其应用实例,可以参考C ...

  7. Mac OS环境下媒体文件分割工具mediafilesegmenter的简单使用(生成M3U8 TS文件)

    mediafilesegmenter是苹果开发的一款用于分割媒体文件的工具,其功能与mediastreamsegmenter相似,但操作更简单. * 具体可以对比博客中的另一篇简介<Mac OS ...

  8. Mac+Docker环境下xdebug的配置

    由于容器化的需要,前几天我本地也换成了docker环境.就研究了一下docker环境下phpstorm和xdebug的配置. http://www.mmfei.com/?p=453 这个博客给出了一个 ...

  9. Anaconda3+python3环境下如何创建python2环境(win+Linux下适用,同一个anaconda下py2/3共存)

    本人之前已经在anaconda环境下已经安装了python3的环境,现在因为一些需求,要安装python2环境 1.打开anaconda的anaconda prompt查看当前环境: conda in ...

随机推荐

  1. HDU 4531

    很容易判断是BFS,可是,呵呵呵呵呵呵......... HASH判重吧,判连通可以用并查集. 以下代码是转别人的,我码了一下午,发觉越码越丑,呵呵了. http://www.cnblogs.com/ ...

  2. Ubuntu镜像文件下载

    Ubuntu镜像文件下载 http://www.traffictool.net/vmware/ubuntu1404t.html 下载之后可以使用vmplayer启动: user/password ro ...

  3. BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第1章节--SharePoint 2013 介绍 SharePoint 2013 平台

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第1章节--SharePoint 2013 介绍 SharePoint 2013 平台         SharePoin ...

  4. 【cl】工程导入

    File>Open 导入成功

  5. UVA 10888 - Warehouse(二分图完美匹配)

    UVA 10888 - Warehouse option=com_onlinejudge&Itemid=8&page=show_problem&category=562& ...

  6. 设计一部iphone手机用面向对象的方法

    main.m //编辑字体大小command + < //编译执行快捷键 com + R #import <Foundation/Foundation.h> #import &quo ...

  7. Linux内核OOM机制的理解【转】

    本文转载自:http://blog.csdn.net/zhoutimo/article/details/52024487 What(什么是OOM): Linux下面有个特性叫OOM killer(Ou ...

  8. java.lang.RuntimeException: Unable to get provider

    java.lang.RuntimeException: Unable to get provider  dev.dworks.apps.candidcamera.provider.MediaDocum ...

  9. Node.js:目录

    ylbtech-Node.js:目录 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部 1. http://www.runoob.com/nodejs/nodejs ...

  10. 备份SQL SERVER 2005数据库