· 9 years ago · Oct 23, 2016, 12:22 AM
1import httplib, urllib, base64
2import sys
3
4import websocket
5import thread
6import json
7import requests
8import urllib
9import wave
10import audioop
11from time import sleep
12import StringIO
13import struct
14import sys
15import codecs
16from xml.etree import ElementTree
17
18def imagetotext(url):
19 headers = {
20 # Request headers
21 'Content-Type': 'application/json',
22 'Ocp-Apim-Subscription-Key': 'a81d6f58ee334c79b4b6956faeca20d3',
23 }
24
25 params = urllib.urlencode({
26 # Request parameters
27 'language': 'unk',
28 'detectOrientation ': 'true',
29 })
30
31 try:
32 conn = httplib.HTTPSConnection('api.projectoxford.ai')
33 conn.request("POST", "/vision/v1.0/ocr?%s" % params, "{\"url\":\""+url+"\"}", headers)
34 response = conn.getresponse()
35 data = response.read()
36 #print(data)
37 word=""
38 x=data.find("bounding")
39 data=data[x+1:]
40 data=data[data.find('"')+1:]
41 data=data[data.find('"')+1:]
42 #print data
43 coordinates=data[:data.find('"')]
44 #print coordinates
45 while (data.find("text")!=-1):
46 data=data[data.find("text")+len("text")+3:]
47 #print data
48 x=data.find('"')
49 word=word+" "+str(data[:x]).lower()
50 return word,coordinates
51 conn.close()
52 except Exception as e:
53 print("[Errno {0}] {1}".format(e.errno, e.strerror))
54def detectLanguage(text):
55 headers = {
56 # Request headers
57 'Content-Type': 'application/json',
58 'Ocp-Apim-Subscription-Key': '299921e134524fae91de7cfe72d5d370',
59 }
60
61 params = urllib.urlencode({
62 # Request parameters
63 'numberOfLanguagesToDetect': '1',
64 })
65
66 try:
67 #text="Madame"
68 body="{\"documents\": [{\"id\": \"string\",\"text\": \""+text+"\"} ]}"
69 conn = httplib.HTTPSConnection('westus.api.cognitive.microsoft.com')
70 conn.request("POST", "/text/analytics/v2.0/languages?%s" % params, body, headers)
71 response = conn.getresponse()
72 data = response.read()
73 #print(data)
74 x=data.find("iso6391Name\"")
75 data= data[x+len("iso6391Name\""):]
76 data=data[data.find('"')+1:]
77 #print data
78 x=data[:data.find('"')]
79 conn.close()
80 return x
81 except Exception as e:
82 print("[Errno {0}] {1}".format(e.errno, e.strerror))
83
84def entityextraction(inputvalue,lang):
85 headers = {
86 # Request headers
87 'Content-Type': 'application/json',
88 'Ocp-Apim-Subscription-Key': 'afad113729f74919b1f2846a34d099da',
89 }
90
91 params = urllib.urlencode({
92 })
93
94 try:
95 conn = httplib.HTTPSConnection('api.projectoxford.ai')
96 #inputvalue="Please do not step on grass"
97 body="{\"language\" : \""+lang+"\",\"analyzerIds\" : [\"4fa79af1-f22c-408d-98bb-b7d7aeef7f04\"],\"text\" : \""+inputvalue+"\" }"
98 conn.request("POST", "/linguistics/v1.0/analyze?%s" % params, body, headers)
99 response = conn.getresponse()
100 data = response.read()
101 value=data.find("result");
102 value=data.find("result")+len("result")+4;
103 data = data[value:]
104 x=0
105 ind=[]
106 while (x!=-1):
107 x=data.find('"')
108 data=data[x+1:]
109 sub= data[:data.find('"')]
110 ind.append(sub)
111 x=data.find('"')
112 data=data[x+1:]
113 del ind[-1]
114 print ind
115 actualstring=inputvalue.split()
116 print actualstring
117 grammar=["VB","RB","NN","NNP","VBG","NNS","DT","JJ"]
118 count=0
119 result=[]
120 for i in ind:
121 for x in grammar:
122 if i==x:
123 result.append(actualstring[count])
124 count=count+1
125 #print result
126 conn.close()
127 return result
128 except Exception as e:
129 print("[Errno {0}] {1}".format(e.errno, e.strerror))
130def genImageLink(inputValue):
131 headers = {
132 # Request headers
133 'Ocp-Apim-Subscription-Key': '14f2ca99aac74c768b3166655becdc1f',
134 }
135
136 params = urllib.urlencode({
137 # Request parameters
138 'q': inputValue,
139 'count': '10',
140 'offset': '0',
141 'mkt': 'en-us',
142 'safeSearch': 'Moderate',
143 })
144
145 try:
146 conn = httplib.HTTPSConnection('api.cognitive.microsoft.com')
147 conn.request("GET", "/bing/v5.0/images/search?%s" % params, "{body}", headers)
148 response = conn.getresponse()
149 data = response.read()
150 #print(data)
151 x=data.find("contentUrl")
152 data=data[x+1:]
153 x=data.find('"')
154 data=data[x+1:]
155 #print data[0]
156 x=data.find('"')
157 #print data[x:]
158 data=data[data.find('"')+1:]
159 #print data
160 sub=data[x-2:data.find('"')]
161 #print sub
162 conn.close()
163 return sub
164 except Exception as e:
165 print("[Errno {0}] {1}".format(e.errno, e.strerror))
166
167#inputvalue="Please do not step on grass"
168#inputvalue="No food or drinks"
169#inputvalue="No running in library"
170#inputvalue="No trespassing"
171#inputvalue="No smoking"
172#inputvalue="Wet floor ahead"
173#inputvalue="Slow down kids playing"
174#inputvalue="Do not enter workers only"
175#url=sys.argv[1]
176def GetToken(): #Get the access token from ADM, token is good for 10 minutes
177 urlArgs = {
178 'client_id': 'imagetranslationapi',
179 'client_secret': 'WHbVzXbaQdWipvmfQ30rytDoP4TaK3PhC+ZiNWLr4WA=',
180 'scope': 'http://api.microsofttranslator.com',
181 'grant_type': 'client_credentials'
182 }
183
184 oauthUrl = 'https://datamarket.accesscontrol.windows.net/v2/OAuth2-13'
185
186 try:
187 oauthToken = json.loads(requests.post(oauthUrl, data = urllib.urlencode(urlArgs)).content) #make call to get ADM token and parse json
188 finalToken = "Bearer " + oauthToken['access_token'] #prepare the token
189 except OSError:
190 pass
191
192 return finalToken
193#End GetToken
194
195def GetTextAndTranslate(finalToken,fromLangCode,textToTranslate):
196
197 toLangCode = "en"
198
199 #Call to Microsoft Translator Service
200 headers = {"Authorization ": finalToken}
201 translateUrl = "http://api.microsofttranslator.com/v2/Http.svc/Translate?text={}&to={}".format(textToTranslate, toLangCode)
202
203 try:
204 translationData = requests.get(translateUrl, headers = headers) #make request
205 translation = ElementTree.fromstring(translationData.text.encode('utf-8')) # parse xml return values
206 return translation.text #display translation
207
208 except OSError:
209 pass
210
211 print " "
212
213#End GetTextAndTranslate()
214
215url="http://il3.picdn.net/shutterstock/videos/12627623/thumb/11.jpg"
216string,coordinates=imagetotext(url)
217lang=detectLanguage(string)
218#print string
219print coordinates
220#print string
221token=GetToken()
222string=GetTextAndTranslate(token,lang,string)
223listvalues=entityextraction(string,"en")
224for i in listvalues:
225 print genImageLink(i)