之前看了,网上一些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):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引擎。
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的下载页面下载。