页面

2011年10月30日星期日

python图片识别小程序

之前看了,网上一些python 图片识别的小程序。自己也试着写个来测试下!
运行环境  Linux  CentOS  +python 2.7 +PIL库+ Tesseract3.0+pytesser

环境搭建:
        Linux下安装python就不说了,这里主要说如何安装pytesser,PIL和Tesseract
        1.检查系统是否已经安装以下库:
            libpng   , libjpeg ,libtiff,zlibg-dev
            #yum list | grep libpng
            #yum list | grep libjpeg
            #yum list | grep libtiff
            #yum list | grep zlibg
       没安装上就安装:
           #yum install libpng
           #yum install libjpeg
           #yum install libtiff
           #yum install zlibg


     2.安装Tesseract:
          下载最新版Tesseract,下载地址http://code.google.com/p/tesseract-ocr/downloads/list 我下载的是3.0版本。
          解压压缩包:
          #tar -zxvf tesseract-3.00.tar.gz
          进入解压后的文件夹:
          #cd tesseract-3.00
         安装: 
          #./configure --prefix=/opt/tesseract  #使用--prefix 来指定安装的目录,我这里的安装目录是/opt/tesseract
         #make
        #make install
        安装完成后要配置PATH,修改用户home目录下的 .profile或者.bash-profile我这里是修改.bash-profile。在PATH那里加上 以下内容。
        :/opt/tesseract/bin
        令配置文件生效:
         #. .bash-profile
  3.安装PIL:
      到PIL首页下载适合你的python版本的PIL:http://www.pythonware.com/products/pil/
        我python是2.7版本的,下载地址是:http://effbot.org/downloads/Imaging-1.1.7.tar.gz
        解压压缩包:
        #tar -zxvf Imaging-1.1.7.tar.gz
        进入解压后的文件夹:
        #cd Imaging-1.1.7
       安装:
       #python setup.py install
      
 4.安装pytesser:
     下载pytesser:http://pytesser.googlecode.com/files/pytesser_v0.0.1.zip 目前只有一个版本。
     解压压缩包:
     #unzip pytesser_v0.0.1.zip
     建议创建一个文件夹,把压缩包放到文件夹里在解压,因为直接使用unzip来解压会把压缩包里的东西解压到当前目录,不易管理。

5.测试:
    在pytesser目录下创建img_to_text.py内容如下:
 from pytesser import *             #导入pytesser文件
def img_to_text(filename):
    img = Image.open(filename)    #读取图片文件
    img.load()                                #这里要是不用load()方法,有时会提示找不到object。
    if len(img.split())==4:                #这里主要把图片的model分离
       r,g,b,a = img.split()          #把图片的4个model或是通道付给r,g,b,a(r红色通道,g绿色通道,b蓝色通道,a透明alpha 通道),PIL在bmp图片是不支持a通道的。而图片识别,是先要把图片转换成bmp格式在进行识别的。
       img = Image.merge("RGB",(r,g,b))    #去掉a通道,重新组合图片。
    return image_to_string(img)                #调用pytesser中的image_to_string()方法,进行图文转换。方法中用到了tesseract引擎。

if __name__ == '__main__':
    img_to_text()

print "OK"

测试:
我这里那了几张网上商城的价格图片进行识别:



上图是原图,下图是程序识别出来的字符串:
 

¥符号不能识别出来,数字部分还是可以识别出来的。
测试别的图片:
这次识别出来了,看来有些图片是可以识别出¥符号的。
我们的目的是获取数字,¥符号是否能被识别出来,影响不大。

要获取价格可以截取string第3个字符之后的字符。也就是获取及其后的字符了,string[2:len(string)]就可以了。

                   http://wenyue.me/blog/282   Linux下使用pytesser
                   

ps:Tesseract 提供多国语言库,可以到文章中Tesseract的下载页面下载。



from my baidu blog    ----- 《python图片识别小程序》





没有评论:

发表评论