《Python网络数据采集》第11章介绍了图像处理和如何实现图像中文本的基本方发,实现图像中文本只要用于CAPTCHAs就是验证码,还有OCR.
图像处理相关的库:Pillow 和 Tesseract
1.通常先使用Pillow进行图像处理,如做一些降噪处理
2.然后使用Tesseract做OCR识别。
pillow的安装:
--需要先安装 libjpeg-turbo-devel 不然会有问题,
--问题参考见http://stackoverflow.com/questions/34631806/fail-during-installation-of-pillow-python-module-in-linux
sudo yum install libjpeg-turbo-devel
pip install pillow
#1 降噪的一个简单滤镜
from PIL import Image, ImageFilter
kitten = Image.open("kitten.jpg")
blurryKitten = kitten.filter(ImageFilter.GaussianBlur)
blurryKitten.save("kitten_blurred.jpg")
blurryKitten.show()
Tesseract的安装使用:
Tesseract是一个OCR的命令行工具,
tesseract安装:
ubuntu比较简单:
apt-get tesseract-ocr
centos需要源码安装
先安装leptonica http://www.leptonica.com/
tar -xvf leptonica-1.73.tar.gz
cd leptonica-1.73
./configure
make
make install
安装tesseract(网址https://github.com/tesseract-ocr)
yum install autoconf automake libtool
unzip tesseract-master.zip
cd tesseract-master
./autogen.sh
./configure
make
sudo make install
sudo ldconfig
下载Language Data
书上的版本是3.02(wget http://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.01.eng.tar.gz' )
现在是3.04的版本
下载 https://github.com/tesseract-ocr/tessdata
export TESSDATA_PREFIX=/usr/local/share/
解压到$TESSDATA_PREFIX/tessdata
#一般的使用方法
tesseract page.jpg textoutput | cat textoutput.txt
示例列表:
1-basicImage.py
2-cleanImage.py
3-readWebImages.py
4-solveCaptcha.py
简单的示例:
#3-readWebImages.py
from urllib.request import urlretrieve
import subprocess
#tesseract -l chi_sim pagetianshan.jpg output
urlretrieve('http://ask.hellobi.com/uploads/project/40_main.jpg', "pagetianshan.jpg")
p = subprocess.Popen(["tesseract -l chi_sim", "pagetianshan.jpg", "output"], shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
p.wait()
f = open("output.txt", "r")
print(f.read())
解析的结果如下,还是有很多无法识别的。
如何训练Language Data
针对上面的情况,需要训练识别的数据,
可以参考这些博文
<Tesseract-OCR训练笔记 >http://blog.csdn.net/firehood_/article/details/8433077
<tesseract-ocr 第四课 如何训练新语言 >http://wangjunle23.blog.163.com/blog/static/117838171201323031458171/