Heim >Backend-Entwicklung >Python-Tutorial >Rufen Sie pytesseract unter Python auf, um einen Website-Bestätigungscode zu identifizieren
1. Einführung in Pytesseract
Pytesseract neueste Version 0.1.6
Python-Tesseract ist ein Wrapper für Googles Tesseract-OCR.
Es ist auch alseigenständiges Aufrufskript für Tesseract nützlich, da es alle Bildtypen lesen kann,
die von der Python Imaging Library unterstützt werden, einschließlich JPEG, PNG, GIF, BMP, TIFF,
und andere, während tesseract-ocr standardmäßig nur TIFF und BMP unterstützt.
Außerdem druckt Python-tesseract bei Verwendung als Skript den erkannten
Text, anstatt ihn in eine Datei zu schreiben. Unterstützung für Konfidenzschätzungen und
Bounding-Box-Daten sind für zukünftige Versionen geplant.
Übersetzen Sie die allgemeine Idee:
a. Python-tesseract ist ein unabhängiges Paket, das auf Googles Tesseract-OCR basiert;
b. Die Funktion von Python-tesseract besteht darin, Text in Bilddateien zu erkennen und das Erkennungsergebnis als Rückgabeparameter zurückzugeben.
c. Standardmäßig unterstützt Python-tesseract Bilder im TIFF- und BMP-Format PIL kann JPEG, GIF, PNG und andere Bildformate unterstützen;
2. Pytesseract-Installation
INSTALLATION:
Voraussetzungen:
* Python-Tesseract erfordert Python 2.5 oder höher oder Python 3.* Sie benötigen die Python Imaging Library (PIL). Unter Debian/Ubuntu ist dies
das Paket „python-imaging“ oder „python3-imaging“ für Python3.
* Installieren Sie google tesseract-ocr von
Sie müssen in der Lage sein, den Tesseract-Befehl als „tesseract“ aufzurufen. Wenn dies
nicht der Fall ist, beispielsweise weil sich tesseract nicht in Ihrem PATH befindet, werden Sie dies tun
müssen die Variable „tesseract_cmd“ oben in „tesseract.py“ ändern.
Unter Debian/Ubuntu können Sie das Paket „tesseract-ocr“ verwenden.
Installation über pip:
Siehe die [Pytesseract-Paketseite]
$> sudo pip install pytesseract
Übersetzung:
a. Python-tesseract unterstützt Python2 .5 und höhere Version;
b. Python-tesseract muss PIL (Python Imaging Library) installieren, um mehr Bildformate zu unterstützen;
c Installationspaket.
Zusammenfassend gilt das Pytesseract-Prinzip:
1. Wie im vorherigen Blogbeitrag erwähnt, kann die Ausführung der Befehlszeile tesseract.exe 1.png output -l eng chinesische Zeichen in 1.png erkennen . Und geben Sie die Erkennungsergebnisse an „output.txt“ aus Retoure machen.
2. Verwenden Sie pytesseract
VERWENDUNG:
```> ; aus PIL import Image
> import pytesseract> print(pytesseract.image_to_string('test.png'))
> 'test-european.jpg'),))
Sie können sehen:
1. Der Kerncode ist die Funktion image_to_string, die auch die Parameter -l eng und -psm unterstützt .
Verwendung:
3. Pytesseract-Codeoptimierung
Wenn das obige Programm auf der Windows-Plattform ausgeführt wird, blinkt ein schwarzes Konsolenfenster, was nicht sehr benutzerfreundlich ist .
pytesseract.py (Verzeichnis C:Python27Libsite-packagespytesseract) wurde leicht geändert, um den obigen Prozess auszublenden.
#-*-coding=utf-8-*- __author__='zhongtang' import urllib import urllib2 import cookielib import math import random import time import os import htmltool from pytesseract import * from PIL import Image from PIL import ImageEnhance import re class orclnypcg: def __init__(self): self.baseUrl='http://jbywcg.****.com.cn' self.ht=htmltool.htmltool() self.curPath=self.ht.getPyFileDir() self.authCode='' def initUrllib2(self): try: cookie = cookielib.CookieJar() cookieHandLer = urllib2.HTTPCookieProcessor(cookie) httpHandLer=urllib2.HTTPHandler(debuglevel=0) httpsHandLer=urllib2.HTTPSHandler(debuglevel=0) except: raise else: opener = urllib2.build_opener(cookieHandLer,httpHandLer,httpsHandLer) opener.addheaders = [('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11')] urllib2.install_opener(opener) def urllib2Navigate(self,url,data={}): #定义连接函数,有超时重连功能 tryTimes = 0 while True: if (tryTimes>20): print u"多次尝试仍无法链接网络,程序终止" break try: if (data=={}): req = urllib2.Request(url) else: req = urllib2.Request(url,urllib.urlencode(data)) response =urllib2.urlopen(req) bodydata = response.read() headerdata = response.info() if headerdata.get('Content-Encoding')=='gzip': rdata = StringIO.StringIO(bodydata) gz = gzip.GzipFile(fileobj=rdata) bodydata = gz.read() gz.close() tryTimes = tryTimes +1 except urllib2.HTTPError, e: print 'HTTPError[%s]\n' %e.code except urllib2.URLError, e: print 'URLError[%s]\n' %e.reason except socket.error: print u"连接失败,尝试重新连接" else: break return bodydata,headerdata def randomCodeOcr(self,filename): image = Image.open(filename) #使用ImageEnhance可以增强图片的识别率 #enhancer = ImageEnhance.Contrast(image) #enhancer = enhancer.enhance(4) image = image.convert('L') ltext = '' ltext= image_to_string(image) #去掉非法字符,只保留字母数字 ltext=re.sub("\W", "", ltext) print u'[%s]识别到验证码:[%s]!!!' %(filename,ltext) image.save(filename) #print ltext return ltext def getRandomCode(self): #开始获取验证码 #http://jbywcg.****.com.cn/CommonPage/Code.aspx?0.9409255818463862 i = 0 while ( i<=100): i += 1 #拼接验证码Url randomUrlNew='%s/CommonPage/Code.aspx?%s' %(self.baseUrl,random.random()) #拼接验证码本地文件名 filename= '%s.png' %(i) filename= os.path.join(self.curPath,filename) jpgdata,jpgheader = self.urllib2Navigate(randomUrlNew) if len(jpgdata)<= 0 : print u'获取验证码出错!\n' return False f = open(filename, 'wb') f.write(jpgdata) #print u"保存图片:",fileName f.close() self.authCode = self.randomCodeOcr(filename) #主程序开始 orcln=orclnypcg() orcln.initUrllib2() orcln.getRandomCode()# geändert durch Zhongtang Konsolenfenster ausblenden
# neuer Code
IS_WIN32 = 'win32' in str(sys.platform).lower()if IS_WIN32:
Startup Info = subprocess .STARTUPINFO()Startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
Startupinfo.wShowWindow = subprocess.SW_HIDE proc = subprocess.Popen(command,
stderr=subprocess.PIPE,startupinfo=startupinfo)
'''
# alter Code
proc = subprocess.Popen(command,
stderr=subprocess.PIPE)
'''
# geändertes Ende
für Zur Vereinfachung für Anfänger wird auch pytesseract.py veröffentlicht, und Experten können es ignorieren.
Das Obige...
Die obige Methode zum Aufrufen von Pytesseract zur Identifizierung des Bestätigungscodes einer Website unter Python ist der gesamte vom Herausgeber freigegebene Inhalt, den ich hoffentlich liefern kann Ich hoffe auch, dass jeder die chinesische PHP-Website unterstützt.
Weitere Artikel zum Aufruf von Pytesseract zur Identifizierung eines Website-Bestätigungscodes unter Python finden Sie auf der chinesischen PHP-Website!