tesseract-ocr在mac下的使用汇总

一、别人记得流水账

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代码  收藏代码
  1. ./configure  
  2. make  
  3. sudo make install    

      2-  安装Leptionica

Java代码  收藏代码
  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代码  收藏代码
  1. #ifdef HAVE_LIBZ  
  2. #include "zlib.h"  
  3. #endif  
 

 

    3- 安装Tesseract-OCR

Java代码  收藏代码
  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代码  收藏代码
  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"><span class="hljs-variable">$ </span>tar -xzf automake-<span class="hljs-number">1.15</span>.tar.gz
<span class="hljs-variable">$ </span>cd automake-<span class="hljs-number">1.15</span> 
<span class="hljs-variable">$ </span>sudo ./configure 
<span class="hljs-variable">$ </span>sudo make
<span class="hljs-variable">$ </span>sudo make install</code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul>

安装步骤1一般不会出现什么问题,轻松安装。

准备工作2

tips:以下依赖文件,请用brew进行直接下载安装,如果用安装包编译安装的话,可能会出现难以解决的问题。哎,心烧得慌。

安装步骤2

请用brew依次顺序安装,如下:

<code class="hljs ruby has-numbering"><span class="hljs-variable">$ </span>brew install libtiff
<span class="hljs-variable">$ </span>brew install libpng
<span class="hljs-variable">$ </span>brew install leptonica
<span class="hljs-variable">$ </span>brew install tesseract</code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>

最常见的问题可能是:

这里写图片描述

不要觉得下载安装看上去好像正常,但是出现error就必须重视看看,大致意思是说创建link的过程中*** is not writable,目录不可写怎么办,改权限,可以直接暴力点上777。就本例所示:

<code class="hljs perl has-numbering">$ sudo <span class="hljs-keyword">chmod</span> -R <span class="hljs-number">777</span> /usr/<span class="hljs-keyword">local</span>/share/tessdata/configs
$ brew <span class="hljs-keyword">link</span> tesseract</code><ul class="pre-numbering"><li>1</li><li>2</li></ul>

解决该类问题的思路很简单,什么不可写就上777,再按照Error后面紧跟的提示,比如说You can using again using …重试加link即可。 当安装正常,问题全部修复后,运行:

<code class="hljs ruby has-numbering"><span class="hljs-variable">$ </span>tesseract -v
tesseract <span class="hljs-number">3.04</span>.<span class="hljs-number">01</span>
leptonica-<span class="hljs-number">1.72</span>
libjpeg <span class="hljs-number">8</span>d <span class="hljs-symbol">:</span> libpng <span class="hljs-number">1.6</span>.<span class="hljs-number">21</span> <span class="hljs-symbol">:</span> libtiff <span class="hljs-number">4.0</span>.<span class="hljs-number">6</span> <span class="hljs-symbol">:</span> zlib <span class="hljs-number">1.2</span>.<span class="hljs-number">5</span></code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>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">$ tesseract getPassCodeNew.jpg output <span class="hljs-operator">-l</span> chi_sim</code><ul class="pre-numbering"><li>1</li></ul>

这里写图片描述

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


测试步骤4

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

这里写图片描述 
运行:

<code class="hljs livecodeserver has-numbering">$ tesseract getPassCodeNew.jpg output -l chi_sim
Tesseract Open Source OCR Engine v3<span class="hljs-number">.04</span><span class="hljs-number">.01</span> <span class="hljs-operator">with</span> Leptonica
Warning <span class="hljs-operator">in</span> pixReadMemJpeg: work-around: writing <span class="hljs-built_in">to</span> <span class="hljs-operator">a</span> temp <span class="hljs-built_in">file</span>
$ cat output.txt         
请′ 责下图中所薯颤 鬟荻</code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul>


结果差强人意,正确识别出了5个字,剩下的就靠自己的研究了。

安装过程中大写的错误

前文交代过,第二部分如果用安装包编译安装的话,每一步都是正常通过,但tesseract就是没法用。具体表现为:

<code class="hljs ruby has-numbering"><span class="hljs-variable">$ </span>tesseract -v
tesseract <span class="hljs-number">3.04</span>.<span class="hljs-number">01</span>
leptonica-<span class="hljs-number">1.72</span>
zlib <span class="hljs-number">1.2</span>.<span class="hljs-number">5</span></code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>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

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



本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
自动化测试框架UFT BASED 自动化测试,一个现在被炒的火热的词;各大公司都在嚷嚷着要上自动化测试的项目,都在招聘各种自动化测试人员。。。 本材料对于编程基础较低初学者,在编写和学习过程中可以接触到很多旁枝侧节的知识,这些都是做好自动化所有需要的知识;对于有一定技术储备。 本框架不能帮你成为高大上的编程大牛,或者自动化测试的行家。但是,它可以引领你迈入自动化测试的领域。 师傅领进门,修行靠个人;一切的一切都还是要靠你自己去多多实践,不是有一句名言么?实践是检验真理的唯一标准! 一、自动化测试基础 手工

springmvc SSM后台框架源码 - 2016-07-25 17:07:55

获取【下载地址】    QQ: 313596790   【免费支持更新】 三大数据库 mysql  oracle  sqlsever    更专业、更强悍、适合不同用户群体 【 新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统 】 A 集成代码生成器 [ 正反双向 (单表、主表、明细表、树形表, 开发利器 ) +快速构建表单 ; QQ:313596790 freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面、建表sql脚本,处理类,service等完整模块 B 集成阿里巴

ip报头分片 - 2016-07-25 17:07:06

分片介绍:          IP分片是网络上传输IP报文的一种技术手段。IP协议在传输数据包时,将数据报文分为若干分片进行传输,并在目标系统中进行重组         在IP协议中的分片算法主要解决不同物理网络最大传输单元(MTU) 的不同造成的传输问题。分组在传输过程中不断地分片和重组会带来很大的工作量还会增加一些不安全的因素。 为什么需要分片:          每一种物理网络都会规定链路层数据帧的最大长度,称为链路层MTU(Maximum Transmission Unit).IP协议在传输数据包
写在前面的 策略模式 概念 具体实例 比较和理解 总结 写在前面的 上一篇文章我们说到,如果我们需要在原本已经整理好的代码中添加新的内容(包括算法或者功能性模块),我们可以应用简单工厂来实现,比如添加算法(活学活用嘛)、在已有的功能模块中再添加新的功能等。但是,我们在上一篇文章中提到过 开放-封闭原则 ,试想一下,如果我们写出来的代码在应用过程中一直需要不断的调整和增加新的功能,那么每次维护都要打开这个工厂,添加相应的功能或算法之后再重新部署,这样无意间会增加我们的工作量,所以简单工厂在某种意义上就不适用
课程概要:          讲解 Struts2 中数据封装的三种方式以及具体实现原理   一、 Struts2 数据封装机制之属性驱动   我们先来看一下传统的 servlet 是如何处理从页面传递过来的数据的。 首先我们在表单发送了对应的数据到 servlet 中去 form action="%=path%/loginservlet"method="post" 账号:inputtype="text"name="username"/br 密码:inputtype="password"name="pas
Spring MVC框架是有一个MVC框架,通过实现Model-View-Controller模式来很好地将数据、业务与展现进行分离。从这样一个角度来说,Spring MVC和Struts、Struts2非常类似。Spring MVC的设计是围绕DispatcherServlet展开的,DispatcherServlet负责将请求派发到特定的handler。通过可配置的handler mappings、view resolution、locale以及theme resolution来处理请求并且转到对应的

通过WSDL生成客户端代码 - 2016-07-25 14:07:03

目录 1.WSDL2Java:Building stubs,skeletons,and data types from WSDL . 1 1.1示例 ... 1 1.2测试 ... 4 1.2.1异常:没有定义com.pan.model.User的序列化的实现 ... 5 1.3WSDL与生成的客户端代码结构分析 ... 5 1.3.1Types . 6 1.3.2Holders . 12 1.3.3PortTypes . 13 1.3.4Bindings . 13 1.3.5 Services . 14
                                               Ofbiz:数据库移植mysql并创建自己的mysql            Ofbiz原生数据库是derby,而作为开发使用,其就不能满足我们需求,ofbiz支持多种数据库,我们就可以将数据移植到mysql.            第一步:找到framework\entity\config\entityengine.xml这个文件,找到之后进行下面相关操作.          1、添加或者修改datasourc

linux的一些简单命令 - 2016-07-25 14:07:59

这里只是列出实际中使用频率较高的,可以通过 man 命令或者 命令 –help 来查看更为详细的内容 文件有关的 1:【ls命令】 ls [option] …[file]… -a all 列出所有的文件 包括隐藏文件 [eg ls -a /home] -l 列出详细的文件信息 可以简写为ll filename [eg: ls -l /home or ll /home ] -h –human-readable 将文件的大小通过字节的方式列出来 -R 递归显示出该目录所有的文件 -d 只显示本文件下面 可以通

Nginx下的rewrite规则 - 2016-07-25 14:07:08

正则表达式匹配,其中: * ~ 为区分大小写匹配 * ~* 为不区分大小写匹配 * !~和!~* 分别为区分大小写不匹配及不区分大小写不匹配 文件及目录匹配,其中: * -f 和! -f 用来判断是否存在文件* -d 和! -d 用来判断是否存在目录* -e 和! -e 用来判断是否存在文件或目录* -x和!-x 用来判断文件是否可执行 rewrite指令的最后一项参数为flag标记,flag标记有: 1. last 相当于apache里面的[L]标记,表示rewrite。 2. break 本条规则匹配