一、别人记得流水账
MAC上装东西总是遇到些问题,这里做个流水帐。希望能对别人有点帮助哈
1、先下载需要的软件包
OCR工具: Tesseract-OCR3.0.1 source code tesseract-ocr-3.01.eng.tar.gz 破验证码用英文就够了。
图像处理工具: Leptonica 1.68
png识别工具: libpng
jpeg识别工具 :libjpeg
tif识别工具: libtiff
图像压缩算法包:zlib1g(mac os 已经集成了这个包,不需要安装了)
2、安装步骤
1- 安装libpng,libjpeg,libtiff
- ./configure
- make
- sudo make install
2- 安装Leptionica
- ./configure
- make
- sudo make install
make的时候发现错误,提示
pngio.c:119: error: ‘Z_DEFAULT_COMPRESSION’ undeclared here (not in a function)
去wiki上搜了一把发现是 pngio.c这个文件有个BUG,在MAC下无法找到zlib1g包修改Leptionica/src/pngio.c在 #include "png.h"后插入一下代码即可。
- #ifdef HAVE_LIBZ
- #include "zlib.h"
- #endif
3- 安装Tesseract-OCR
- ./autogen.sh
- ./configure
- make
- sudo make install
4- 安装语言包
解压tesseract-ocr-3.01.eng.tar.gz到/usr/local/share/tesseract就可以了。
3、try ocr
- MacBook-Pro:work my$ tesseract pin.jpg out -l eng
- Tesseract Open Source OCR Engine v3.01 with Leptonica
- MacBook-Pro:work my$ more out.txt
- Bvcs
至此,已经tesseract已经可以正常工作了。
剩下我们写段代码去通过命令行调用就可以实现图片的识别了。
tesseract自己提供的训练好的语言包不能保证百分百识别出验证码图片,这个可以通过抓取一定量的验证码来进行
训练,以更加精准的识别,官方有文档和工具如何进行
http://code.google.com/p/tesseract-ocr/wiki/TrainingTesseract3
二、另一个人的流水账
系统环境
- OS X EI Capitan 10.11.3
- MacBook Pro(13英寸,2015年初期)
- 处理器 2.7GHz Intel core i5
- 内存 16 GB 1867 MHz DDR3
- Python 2.7.10
准备工作1
tips:以下依赖文件,可进入http://ftpmirror.gnu.org/中找到对应的文件进行下载,推荐每个包看日期下载最新版本,以下为本文下载的安装包。
libtool-2.4.6.tar.gz
autoconf-latest.tar.gz
automake-1.15.tar.gz
jpegsrc.v9b.tar.gz
以上必需安装大礼包可上百度云盘免费领取,如过期请自行下载,链接: http://pan.baidu.com/s/1i56i5e9 密码: 7rhq
安装步骤1
以automake-1.15.tar.gz为例,请依次顺序安装。
<code class="hljs ruby has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$ </span>tar -xzf automake-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.15</span>.tar.gz
<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$ </span>cd automake-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.15</span>
<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$ </span>sudo ./configure
<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$ </span>sudo make
<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$ </span>sudo make install</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li></ul>
安装步骤1一般不会出现什么问题,轻松安装。
准备工作2
tips:以下依赖文件,请用brew进行直接下载安装,如果用安装包编译安装的话,可能会出现难以解决的问题。哎,心烧得慌。
tiff-4.0.6.tar.gz
libpng-1.6.21.tar.gz
leptonica-1.73.tar.gz
tesseract-ocr-3.04.01.zip
安装步骤2
请用brew依次顺序安装,如下:
<code class="hljs ruby has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$ </span>brew install libtiff
<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$ </span>brew install libpng
<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$ </span>brew install leptonica
<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$ </span>brew install tesseract</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>
最常见的问题可能是:
不要觉得下载安装看上去好像正常,但是出现error就必须重视看看,大致意思是说创建link的过程中*** is not writable,目录不可写怎么办,改权限,可以直接暴力点上777。就本例所示:
<code class="hljs perl has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;">$ sudo <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">chmod</span> -R <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">777</span> /usr/<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">local</span>/share/tessdata/configs
$ brew <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">link</span> tesseract</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>
解决该类问题的思路很简单,什么不可写就上777,再按照Error后面紧跟的提示,比如说You can using again using …重试加link即可。 当安装正常,问题全部修复后,运行:
<code class="hljs ruby has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$ </span>tesseract -v
tesseract <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3.04</span>.<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">01</span>
leptonica-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.72</span>
libjpeg <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">8</span>d <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> libpng <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.6</span>.<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">21</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> libtiff <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4.0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> zlib <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.2</span>.<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>
至此,tesseract的安装已完成95%,仅剩最后的语言包配置。仿佛看见胜利的曙光,[愁绪挥不去苦闷快散去]。
安装步骤3
需要在tesseract-ocr下载语言包,因为语言包有几百兆甚至1个G,没必要完全下载。只用下载eng(英语)、chi_sim(中文简体)、chi_tra(中文繁体)。有趣的事情来了,不少github新手,不知道如何在github上下载某个项目里面某个具体的文件。因为github上面只有在项目的主页才有显性的Download Zip按钮,只能一次性下载整个项目。不用担心,一张图让你明白怎么解决整个问题。
然后将下载的语言包导入tessdata文件夹即。可能有人不太明白tessdata文件夹在哪儿,其实不用明白也可以。这里可以假装已经导入,进行测试步骤,运行:
<code class="hljs bash has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;">$ tesseract getPassCodeNew.jpg output <span class="hljs-operator" style="box-sizing: border-box;">-l</span> chi_sim</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>
直接导入到对应目录即可。So mission 100% completed.
测试步骤4
本文测试样张为12306验证码接口提供的验证码,下载后用Photoshop裁剪文字部分,如下图示:
运行:
<code class="hljs livecodeserver has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;">$ tesseract getPassCodeNew.jpg output -l chi_sim
Tesseract Open Source OCR Engine v3<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.04</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.01</span> <span class="hljs-operator" style="box-sizing: border-box;">with</span> Leptonica
Warning <span class="hljs-operator" style="box-sizing: border-box;">in</span> pixReadMemJpeg: work-around: writing <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">to</span> <span class="hljs-operator" style="box-sizing: border-box;">a</span> temp <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">file</span>
$ cat output.txt
请′ 责下图中所薯颤 鬟荻</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li></ul>
结果差强人意,正确识别出了5个字,剩下的就靠自己的研究了。
安装过程中大写的错误
前文交代过,第二部分如果用安装包编译安装的话,每一步都是正常通过,但tesseract就是没法用。具体表现为:
<code class="hljs ruby has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$ </span>tesseract -v
tesseract <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3.04</span>.<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">01</span>
leptonica-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.72</span>
zlib <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.2</span>.<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>
首先提示,检测不到libjpeg、libpng、libtiff库,可宝宝已经无数次检查安装过。只能重复的进行sudo make uninstall、sudo ./configure && sudo make && sudo make install,以为是版本不兼容,换了好多版本尝试也没结果。
检测不出来不管了,直接测试功能,结果提示
上百度谷歌了一下,找了许多方法,基本上都是说缺少前面的三个包,重新卸载安装,还有的救,结果我经过了一下午数十次重复安装的情况下也没能救的了自己,那就换思路,做学问要一丝不苟,不怕失败。结果用brew弄好了,不错,好的开始,加油明天。
哎呦喂,写的不错,声色并茂,里面还有各种奇葩表情图被我删了,太占地了。。
三、依赖的东西们
得有gcc,在mac在,只要在xcode下的preferences-Downloads-Command Line Tool安装好,这样就可以安装tar-gz文件了。
然后要安装下面这些文件:
tiff-4.0.3.tar.gz
jpegsrc.v6b.tar.gz
libtool-2.4.2.tar.gz
libpng-1.5.15.tar.gz
autoconf-latest.tar.gz
automake-1.13.1.tar.gz
leptonica-1.68.tar.gz
tesseract-ocr-3.02.02.tar.gz
tesseract-ocr-3.02.eng.tar.gz(这是个英文语言包),如果是.configure默认路径安装,就安装在/usr/local/bin下面,这时候解压这个包把testdatas里面的东西拷贝到/usr/local/testdatas里头就行了。
这里还有一个问题链接
http://stackoverflow.com/questions/23918764/install-tesseract-pytesser-on-mac-os-x
所有的东西我都没试过哈哈哈哈,不过以后肯定会用的