安装:
sudo apt-get install imagemagick

ImageMagick是一套功能强大、稳定而且开源的工具集和开发包,可以用来读、写和处理超过89种基本格式的图片文件,包括流行的TIFF、JPEG、GIF、 PNG、PDF以及PhotoCD等格式。利用ImageMagick,你可以根据web应用程序的 需要动态生成图片, 还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存,对图片的操作,即可以通过命令行 进行,也可以用C/C++、Perl、Java、PHP、Python或Ruby编程来完成。同时ImageMagick提供了一个高质量的2D工具包, 部分支持SVG。现在,ImageMagic的主要精力集中在性能,减少bug以及提供稳定的API和ABI上。

ImageMagick 是一个用来创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线, 多边形,椭圆,曲线,附加到图片伸展旋转。ImageMagick是免费软件:全部源码开放,可以自由使用,复制,修改,发布。支持大多数的操作系统。

检测是否支持指定格式 identify -list format | grep PNG

sudo apt-get install tesseract-ocr

OCR(Optical Character Recognition):光学字符识别,是指对图片文件中的文字进行分析识别,获取的过程。

Tesseract:开源的OCR识别引擎,初期Tesseract引擎由HP实验室研发,后来贡献给了开源软件业,后经由Google进行改进,消除bug,优化,重新发布

gem install mini_magick

mini_magick 是用ruby对ImageMagick命令的封装,可以这样简单的使用

image = MiniMagick::Image.open("input.jpg")
image.resize "100x100"
image.write  "output.jpg"
image = MiniMagick::Image.open("http://www.google.com/images/logos/logo.png")
image.resize "5x5"
image.format "gif"
image.write "localcopy.gif"

https://github.com/minimagick/minimagick

gem install rtesseract

rtesseract对了tesseract-ocr进行了封装

识别验证码:

RTesseract.new(img.path).to_s

在 ubuntu12.04上安装如果出现如下问题,请安装 libmagickwand-dev

sudo apt-get install libmagickwand-dev

zhaol-a@ubuntu:~/gcj_project$ gem install rtesseract
/usr/share/ruby-rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/yaml.rb:56:in `<top (required)>':
It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.
Building native extensions.  This could take a while...
ERROR:  Error installing rtesseract:
    ERROR: Failed to build gem native extension.

/usr/share/ruby-rvm/rubies/ruby-1.9.3-p392/bin/ruby extconf.rb
checking for Ruby version >= 1.8.5... yes
checking for gcc... yes
checking for Magick-config... no
Can't install RMagick 2.13.2. Can't find Magick-config in /usr/share/ruby-rvm/gems/ruby-1.9.3-p392/bin:/usr/share/ruby-rvm/gems/ruby-1.9.3-p392@global/bin:/usr/share/ruby-rvm/rubies/ruby-1.9.3-p392/bin:/usr/share/ruby-rvm/gems/ruby-1.9.3-p392/bin:/usr/share/ruby-rvm/gems/ruby-1.9.3-p392@global/bin:/usr/share/ruby-rvm/rubies/ruby-1.9.3-p392/bin:/usr/share/ruby-rvm/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/usr/share/ruby-rvm/rubies/ruby-1.9.3-p392/bin/ruby

使用mechanize,nokogiri进行数据抓取,验证码识别的例子:

Ruby代码  
  1. #encoding: utf-8
  2. require 'mechanize'
  3. require 'nokogiri'
  4. require 'spreadsheet'
  5. require 'rtesseract'
  6. require 'mini_magick'
  7. require 'open-uri'
  8. require 'uri'
  9. require 'iconv'
  10. require 'active_support/all'
  11. #调整图片的大小来提高图片的识别准确度
  12. def parse_img_to_str(img_url)
  13. img = MiniMagick::Image.open(img_url)
  14. img.resize '200%x200%' # 放大
  15. img.colorspace("GRAY") # 灰度化
  16. img.monochrome # 去色
  17. str = RTesseract.new(img.path).to_s # 识别
  18. File.unlink(img.path) # 删除临时文件
  19. if str.nil?
  20. return nil
  21. else
  22. return str.strip.to_f
  23. end
  24. end
  25. #使用异常处理,可以减少因为网络延迟导致timeout的问题,但是不能完全避免
  26. #分析请求的url, 和参数
  27. def get_json_data(agent, url, params)
  28. begin
  29. response = agent.post(url, params)
  30. json_data  = JSON.parse(response.body)
  31. return json_data
  32. rescue
  33. retry  # restart from beginning
  34. end
  35. end
  36. p "waiting................."
  37. agent = Mechanize.new
  38. agent.open_timeout = 15
  39. file_path = File.dirname(__FILE__)user
  40. #用户登陆要抓取的网站后,用firefox导出cookies信息到cookies.txt
  41. cookies_file_path = "/home/username/project/cookies.txt"
  42. #导入cookie信息,跳过登陆
  43. agent.cookie_jar.load_cookiestxt(cookies_file_path)
  44. #抓取年份信息的例子
  45. title_params = {"area" => area,"province" => "北京"}
  46. years_info = get_json_data(agent, gov_mat_ttile_url, title_params)["result"]

imagemagick图片识别技术数据抓取(转自:http://michael-roshen.iteye.com/blog/1982817)相关推荐

  1. python—简单数据抓取四(利用超级鹰的ocr识别图片验证码模拟登录超级鹰网站、利用百度云的ocr识别自如租房网价格图片获取到自如网的价格)

    学习目标: python学习二十四 -简单数据抓取四 学习内容: 1.利用超级鹰的ocr识别图片验证码模拟登录超级鹰网站 2.利用百度云的ocr识别自如租房网的价格图片,获取到自如网的价格数据 1.利 ...

  2. 基于Java的阿里妈妈数据抓取技术

    基于Java的阿里妈妈数据抓取技术 前言: 对于需要登录的网站爬虫最大的困难就是需要登录,然后才能获取到数据,如微博,阿里妈妈,webqq等.之前也有看过使用浏览器登录到网站后直接从浏览器中获取coo ...

  3. 如何用python抓取文献_浅谈Python爬虫技术的网页数据抓取与分析

    浅谈 Python 爬虫技术的网页数据抓取与分析 吴永聪 [期刊名称] <计算机时代> [年 ( 卷 ), 期] 2019(000)008 [摘要] 近年来 , 随着互联网的发展 , 如何 ...

  4. 天猫、淘宝运营数据抓取技术概述

    对通用网站的数据抓取,比如:谷歌和百度,都有自己的爬虫,当然,爬虫也都是有程序写出来的.根据百度百科的定义:网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动的抓取万维网信息的程序或 ...

  5. 北京弘易信泰 网络数据抓取技术实践分享

    弘易信泰,作为大数据产品厂商,长期关注业界数据抓取技术的变化,当前,互联网数据以前所未有的态势迅猛增长,对于信息化技术而言,海量数据的抓取技术尤为重要,在数据迅速发展的大背景下,中国政府与企业类型的信 ...

  6. Python爬虫入门实战之猫眼电影数据抓取(理论篇)

    前言 本文可能篇幅较长,但是绝对干货满满,提供了大量的学习资源和途径.达到让读者独立自主的编写基础网络爬虫的目标,这也是本文的主旨,输出有价值能够真正帮助到读者的知识,即授人以鱼不如授人以渔,让我们直 ...

  7. python编程理论篇_Python爬虫入门实战之猫眼电影数据抓取(理论篇)

    前言 本文可能篇幅较长,但是绝对干货满满,提供了大量的学习资源和途径.达到让读者独立自主的编写基础网络爬虫的目标,这也是本文的主旨,输出有价值能够真正帮助到读者的知识,即授人以鱼不如授人以渔,让我们直 ...

  8. python爬虫入门实战争胜法_Python爬虫入门实战之猫眼电影数据抓取(理论篇)

    前言 本文可能篇幅较长,但是绝对干货满满,提供了大量的学习资源和途径.达到让读者独立自主的编写基础网络爬虫的目标,这也是本文的主旨,输出有价值能够真正帮助到读者的知识,即授人以鱼不如授人以渔,让我们直 ...

  9. 关于Python爬虫原理和数据抓取1.1

    为什么要做爬虫? 首先请问:都说现在是"大数据时代",那数据从何而来? 企业产生的用户数据:百度指数.阿里指数.TBI腾讯浏览指数.新浪微博指数 数据平台购买数据:数据堂.国云数据 ...

最新文章

  1. python中outside loop_Python: 'break' outside loop
  2. SSH服务审计工具ssh-audit
  3. 【学习笔记】【oc】类和对象及类的三大基本特征
  4. TCP/IP / PDU 是什么
  5. 龙芯笔记本可能以闹剧收场
  6. android leaks工具,Androidx中ImmLeaksCleaner已经解决了InputMethodManager... - 简书
  7. java json解码器_Jackson:我是最牛掰的 Java JSON 解析器(有点虚)
  8. pythoncad图纸文件管理系统为用户_SafeShare通用CAD图纸文件管理软件6用户免费使用版...
  9. Android编译判定BoardConfig.mk的宏控是否打开或者有效的验证方法
  10. 计算机软件uml,[计算机软件及应用]UML.ppt
  11. mysql索引失效的几种情况分析
  12. java实现公式解析
  13. openssl 实现 aes 文件加密解密
  14. 安装LR11 时,安装Microsoft Visual c++2005 sp1运行时组件,就会提示命令行选项语法错误,键入“命令/?”可获取帮肋信息
  15. 美的集团的命,智能家居来续?
  16. P0负载能力为 8 个 LSTTL 电路,P1-P3负载能力为4个 LSTTL 电路
  17. FPGA-篮球计分计时器的设计
  18. poj1163数字三角形动态规划
  19. TwinCAT PLC 使用
  20. ubuntu安装与配置,pytorch-gpu+cuda+cudnn+anaconda+pycharm

热门文章

  1. xpath取最后一个元素
  2. 用户怎样访问文件服务器,文件服务器用户访问
  3. 【已解决】PyCharm更新2020.1版后启动报错internal error
  4. potato什么软件_张鹏都这么努力又出新项目美生在线,你还有什么资格不努力!?...
  5. linux蓝牙小车,蓝牙控制遥控车制作教程
  6. 把在线网课录制成视频的方法
  7. 无向图双连通分量(DCC)
  8. HTML5合并单元格居中,excel表格合并后居中的方法步骤
  9. android 播放器 遥控器,DY的瞎折腾系列 篇八:N1多媒体播放器  手机遥控器
  10. 【LGame入门学堂005.精灵传说】简单的精灵