转自:https://www.cnblogs.com/zhongtang/p/5560361.html
一、pytesseract介绍
1、pytesseract说明
pytesseract最新版本0.1.6,网址:
Python-tesseract is a wrapper for google's Tesseract-OCR
( http://code.google.com/p/tesseract-ocr/ ). It is also useful as astand-alone invocation script to tesseract, as it can read all image typessupported by the Python Imaging Library, including jpeg, png, gif, bmp, tiff,and others, whereas tesseract-ocr by default only supports tiff and bmp.Additionally, if used as a script, Python-tesseract will print the recognizedtext in stead of writing it to a file. Support for confidence estimates andbounding box data is planned for future releases.翻译一下大意:
a、Python-tesseract是一个基于google's Tesseract-OCR的独立封装包;
b、Python-tesseract功能是识别图片文件中文字,并作为返回参数返回识别结果;
c、Python-tesseract默认支持tiff、bmp格式图片,只有在安装PIL之后,才能支持jpeg、gif、png等其他图片格式;
2、pytesseract安装
INSTALLATION:
Prerequisites:* Python-tesseract requires python 2.5 or later or python 3.* You will need the Python Imaging Library (PIL). Under Debian/Ubuntu, this isthe package "python-imaging" or "python3-imaging" for python3.* Install google tesseract-ocr from http://code.google.com/p/tesseract-ocr/ .You must be able to invoke the tesseract command as "tesseract". If thisisn't the case, for example because tesseract isn't in your PATH, you willhave to change the "tesseract_cmd" variable at the top of 'tesseract.py'.Under Debian/Ubuntu you can use the package "tesseract-ocr".Installing via pip: See the [pytesseract package page](https://pypi.python.org/pypi/pytesseract) ```$> sudo pip install pytesseract翻译一下:
a、Python-tesseract支持python2.5及更高版本;
b、Python-tesseract需要安装PIL(Python Imaging Library) ,来支持更多的图片格式;
c、Python-tesseract需要安装tesseract-ocr安装包,具体参看。
综上,Pytesseract原理:
1、中提到,执行命令行 tesseract.exe 1.png output -l eng ,可以识别1.png中文字,并把识别结果输出到output.txt中;
2、Pytesseract对上述过程进行了二次封装,自动调用tesseract.exe,并读取output.txt文件的内容,作为函数的返回值进行返回。
二、pytesseract使用
USAGE:
```> try:> import Image> except ImportError:> from PIL import Image> import pytesseract> print(pytesseract.image_to_string(Image.open('test.png')))> print(pytesseract.image_to_string(Image.open('test-european.jpg'), lang='fra'))
可以看到:
1、核心代码就是image_to_string函数,该函数还支持-l eng 参数,支持-psm 参数。
用法:
image_to_string(Image.open('test.png'),lang="eng" config="-psm 7")2、pytesseract里调用了image,所以才需要PIL,其实tesseract.exe本身是支持jpeg、png等图片格式的。
实例代码,识别某公共网站的验证码(大家千万别干坏事啊,思虑再三,最后还是隐掉网站域名,大家去找别的网站试试吧……):
三、pytesseract代码优化
上述程序在windows平台运行时,会发现有黑色的控制台窗口一闪而过的画面,不太友好。
略微修改了pytesseract.py(C:\Python27\Lib\site-packages\pytesseract目录下),把上述过程进行了隐藏。
# modified by zhongtang hide console window
# new codeIS_WIN32 = 'win32' in str(sys.platform).lower()if IS_WIN32: startupinfo = subprocess.STARTUPINFO() startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW startupinfo.wShowWindow = subprocess.SW_HIDE proc = subprocess.Popen(command, stderr=subprocess.PIPE,startupinfo=startupinfo)'''# old codeproc = subprocess.Popen(command, stderr=subprocess.PIPE)'''# modified end为了方便初学者,把pytesseract.py也贴出来,高手自行忽略。
以上……