tesseract-ocr在mac下的使用汇总

时间:2022-11-01 08:55:51

一、别人记得流水账

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

 

Java代码   tesseract-ocr在mac下的使用汇总
  1. ./configure  
  2. make  
  3. sudo make install    

      2-  安装Leptionica

Java代码   tesseract-ocr在mac下的使用汇总
  1. ./configure  
  2. make  
  3. 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"后插入一下代码即可。

 

C代码   tesseract-ocr在mac下的使用汇总
  1. #ifdef HAVE_LIBZ  
  2. #include "zlib.h"  
  3. #endif  
 

 

    3- 安装Tesseract-OCR

Java代码   tesseract-ocr在mac下的使用汇总
  1. ./autogen.sh  
  2. ./configure  
  3. make  
  4. sudo make install    

    4- 安装语言包

    解压tesseract-ocr-3.01.eng.tar.gz到/usr/local/share/tesseract就可以了。

 

3、try ocr

Shell代码   tesseract-ocr在mac下的使用汇总
  1. MacBook-Pro:work my$ tesseract pin.jpg  out -l eng  
  2. Tesseract Open Source OCR Engine v3.01 with Leptonica  
  3. MacBook-Pro:work my$ more out.txt   
  4. 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/中找到对应的文件进行下载,推荐每个包看日期下载最新版本,以下为本文下载的安装包。

以上必需安装大礼包可上百度云盘免费领取,如过期请自行下载,链接: 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进行直接下载安装,如果用安装包编译安装的话,可能会出现难以解决的问题。哎,心烧得慌。

安装步骤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>

最常见的问题可能是:

tesseract-ocr在mac下的使用汇总

不要觉得下载安装看上去好像正常,但是出现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按钮,只能一次性下载整个项目。不用担心,一张图让你明白怎么解决整个问题。

tesseract-ocr在mac下的使用汇总

然后将下载的语言包导入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>

tesseract-ocr在mac下的使用汇总

直接导入到对应目录即可。So mission 100% completed.


测试步骤4

本文测试样张为12306验证码接口提供的验证码,下载后用Photoshop裁剪文字部分,如下图示:

tesseract-ocr在mac下的使用汇总 
运行:

<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,以为是版本不兼容,换了好多版本尝试也没结果。 
检测不出来不管了,直接测试功能,结果提示

tesseract-ocr在mac下的使用汇总

上百度谷歌了一下,找了许多方法,基本上都是说缺少前面的三个包,重新卸载安装,还有的救,结果我经过了一下午数十次重复安装的情况下也没能救的了自己,那就换思路,做学问要一丝不苟,不怕失败。结果用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://*.com/questions/23918764/install-tesseract-pytesser-on-mac-os-x

所有的东西我都没试过哈哈哈哈,不过以后肯定会用的