Python_python图片识别小程序

来源:互联网 发布:陕西省软件协会网站 编辑:程序博客网 时间:2024/03/29 09:50

之前看了,网上一些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"

 

测试:

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

 

上图是原图:

¥符号不能识别,不过对数字部分没影响。

测试别的图片:

 

这张通过转换成bmp再识别的图片可以识别出¥符合。不过有时就算转换成bmp图片也是不能识别出¥符号。

 

不过要获取价格可以截取string第3个字符之后的字符。也就是获取string[2]及其后的字符了。

 

参考文章:  http://www.daniweb.com/software-development/python/threads/253957

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

                   

 

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


原创粉丝点击