// 画像データを与えるとGoogleCloudVisionでラベル検知したやつを返す。 public static responseBody RequestVisionAPI(string base64String) { // 参考:https://qiita.com/jyuko/items/e6115a5dfc959f52591d string apiKey = "AIzaSyALq6mj-H1c2HKrXubWzhsPtUCxni_Z5_I"; string url = "https://vision.googleapis.com/v1/images:annotate?key=" + apiKey; // 送信用データを作成 // 1.requestBodyを作成 var requests = new requestBody(); requests.requests = new List <AnnotateImageRequest>(); // 2.requestBody > requestを作成 var request = new AnnotateImageRequest(); request.image = new Image(); request.image.content = base64String; // 3.requestBody > request > featureを作成 request.features = new List <Feature>(); var feature = new Feature(); feature.type = FeatureType.LABEL_DETECTION.ToString(); feature.maxResults = 10; request.features.Add(feature); requests.requests.Add(request); // JSONに変換 string jsonRequestBody = JsonUtility.ToJson(requests); return(JsonUtility.FromJson <responseBody>(Communication(url, jsonRequestBody))); }
/// <summary> /// Takes in the parameters necessary to create a valid Session Model /// Converts the array contaning the position of appearances in the search to a strin g /// calls the corresponding repo to save the session to the database /// </summary> /// <returns></returns> public Session saveSession(requestBody request, string requestedUrl, int[] appearances) { string appearancesString = ""; for (int i = 0; i < appearances.Length; i++) { if (i + 1 != appearances.Length) { appearancesString += appearances[i].ToString() + ","; } else { appearancesString += appearances[i].ToString(); } } Session session = new Session() { requestTime = DateTime.Now, keyWords = request.keyWords, requestedUrl = requestedUrl, query = request.query, appearedList = appearancesString, numberOfResults = request.numOfResults }; sessionRepo.saveSession(session); return(session); }
/// <summary> /// 画像データを与えるとGoogleCloudVisionでラベル検知したやつを返す。 /// </summary> /// <param name="imageData"></param> /// <returns></returns> public static EntityAnnotation[] RequestVisionAPI(string base64String) { // 参考:https://qiita.com/jyuko/items/e6115a5dfc959f52591d string apiKey = "AIzaSyAQe-ZtCVwWx0xIco4b9U3dpbk83MoLv_c"; string url = "https://vision.googleapis.com/v1/images:annotate?key=" + apiKey; // 送信用データを作成 // 1.requestBodyを作成 var requests = new requestBody(); requests.requests = new List <AnnotateImageRequest>(); // 2.requestBody > requestを作成 var request = new AnnotateImageRequest(); request.image = new Image(); request.image.content = base64String; // 3.requestBody > request > featureを作成 request.features = new List <Feature>(); var feature = new Feature(); feature.type = FeatureType.LABEL_DETECTION.ToString(); feature.maxResults = 10; request.features.Add(feature); requests.requests.Add(request); // JSONに変換 string jsonRequestBody = JsonUtility.ToJson(requests); // ヘッダを"application/json"にして投げる var webRequest = new UnityWebRequest(url, "POST"); byte[] postData = Encoding.UTF8.GetBytes(jsonRequestBody); webRequest.uploadHandler = new UploadHandlerRaw(postData); webRequest.downloadHandler = new DownloadHandlerBuffer(); webRequest.SetRequestHeader("Content-Type", "application/json"); webRequest.SendWebRequest(); // 受信するまで待機 while (!webRequest.isDone) { } var buff = JsonUtility.FromJson <responseBody>(webRequest.downloadHandler.text); return(CheckFunction.removeAnnotation(buff.responses[0].labelAnnotations.ToArray())); }
/// <summary> ///Entry point to deal with the check request for the controller. /// This method takes in the request body from the controller creates the URL for the corresponding google /// Processes the response then returns a Dictionary containing: /// The key words for the google search and the query/ URl from the body /// The google search URL /// An array indicating where the key words appeared in the search /// </summary> /// <param name="request"></param> /// <returns></returns> public Dictionary <string, object> check(requestBody request) { List <int> appearancesInSearch = new List <int>(); List <string> urlList = new List <string>(); List <string> rawResultsList; string requestURL = createURL(request.keyWords, request.numOfResults); String rawhtml = getPage(requestURL); string formattedhtml = formatPage(rawhtml); rawResultsList = seperateResult(formattedhtml, request.numOfResults); for (int i = 0; i < request.numOfResults; i++) { string resultUrl = getURL(rawResultsList[i]); urlList.Add(resultUrl); if (resultUrl.Trim().Contains(request.query.Trim()) || resultUrl.Trim() == request.query.Trim()) { appearancesInSearch.Add(i + 1); } } Session session = saveSession(request, requestURL, appearancesInSearch.ToArray()); saveResults(session, urlList.ToArray()); Dictionary <string, object> response = new Dictionary <string, object>(); response.Add("appeared", appearancesInSearch); response.Add("requestedURL", requestURL); response.Add("query", request.query); response.Add("keyWords", request.keyWords); return(response); }
=> Initialize(requestBody, responseBody, request, response);
static public IEnumerator GetCharOfImage(string base64Image, Action <string> callback) { // requestBodyを作成 var requests = new requestBody { requests = new List <AnnotateImageRequest>() }; var request = new AnnotateImageRequest { image = new Image { content = base64Image }, imageContext = new ImageContext { languageHints = "ja-JP" }, features = new List <Feature>() }; var feature = new Feature { //type = FeatureType.TEXT_DETECTION.ToString(), type = "TEXT_DETECTION", maxResults = 10 }; request.features.Add(feature); requests.requests.Add(request); // JSONに変換 string jsonRequestBody = JsonUtility.ToJson(requests); // ヘッダを"application/json"にして投げる var webRequest = new UnityWebRequest(url, "POST"); byte[] postData = Encoding.UTF8.GetBytes(jsonRequestBody); webRequest.uploadHandler = new UploadHandlerRaw(postData); webRequest.downloadHandler = new DownloadHandlerBuffer(); webRequest.SetRequestHeader("Content-Type", "application/json"); yield return(webRequest.Send()); if (webRequest.isError) { // エラー時の処理 Debug.Log(webRequest.error); } else { // 成功時の処理 Debug.Log(webRequest.downloadHandler.text); var responses = JsonUtility.FromJson <ResponseBody>(webRequest.downloadHandler.text); if (responses.responses[0].textAnnotations.Count == 0) //読み込み失敗などレスポンスが帰ってこなかった時 { callback("認識失敗"); } else { Debug.Log(responses.responses[0].textAnnotations[0].description); callback(responses.responses[0].textAnnotations[0].description); } } }
public IEnumerator request(string base64Image) { if (uploading) { yield break; } uploading = true; // requestBodyを作成 var requests = new requestBody(); requests.requests = new List <AnnotateImageRequest>(); var request = new AnnotateImageRequest(); request.image = new Image(); request.image.content = base64Image; request.features = new List <Feature>(); var feature = new Feature(); feature.type = FeatureType.LABEL_DETECTION.ToString(); feature.maxResults = 10; request.features.Add(feature); requests.requests.Add(request); // JSONに変換 string jsonRequestBody = JsonUtility.ToJson(requests); // ヘッダを"application/json"にして投げる UnityWebRequest www = UnityWebRequest.Post(url, "POST"); byte[] postData = Encoding.UTF8.GetBytes(jsonRequestBody); www.uploadHandler = (UploadHandler) new UploadHandlerRaw(postData); www.downloadHandler = (DownloadHandler) new DownloadHandlerBuffer(); www.SetRequestHeader("Content-Type", "application/json"); yield return(www.SendWebRequest()); if (www.isNetworkError || www.isHttpError) { Debug.Log(www.error); response = www.error; } else { Debug.Log("Form upload complete!"); if (www.responseCode == 200) { //Debug.Log(www.downloadHandler.text); response = www.downloadHandler.text; } else { Debug.Log("failed"); response = "Request failed. HTTP Response code: " + www.responseCode; } } uploading = false; yield break; }
public Object scrape([FromBody] requestBody request) { Dictionary <string, Object> response = scraperService.check(request); return(response); }
private IEnumerator requestVisionAPI(string base64Image) { string apiKey = "your key"; string url = "https://vision.googleapis.com/v1/images:annotate?key=" + apiKey; // requestBodyを作成 var requests = new requestBody(); requests.requests = new List <AnnotateImageRequest>(); var request = new AnnotateImageRequest(); request.image = new Image(); request.image.content = base64Image; request.features = new List <Feature>(); var feature = new Feature(); feature.type = FeatureType.TEXT_DETECTION.ToString(); feature.maxResults = 10; request.features.Add(feature); requests.requests.Add(request); // JSON string jsonRequestBody = JsonUtility.ToJson(requests); // "application/json" var webRequest = new UnityWebRequest(url, "POST"); byte[] postData = Encoding.UTF8.GetBytes(jsonRequestBody); webRequest.uploadHandler = (UploadHandler) new UploadHandlerRaw(postData); webRequest.downloadHandler = (DownloadHandler) new DownloadHandlerBuffer(); webRequest.SetRequestHeader("Content-Type", "application/json"); yield return(webRequest.SendWebRequest()); // when google cloud vision responds if (webRequest.isNetworkError) { Debug.Log("Error: " + webRequest.error); } else { var responses = JsonUtility.FromJson <responseOCR>(webRequest.downloadHandler.text); string data = System.Text.Encoding.UTF8.GetString(webRequest.downloadHandler.data); Debug.Log("Response: " + data); String textInImage = string.Empty; if (responses.responses.Count() == 1) { if (responses.responses.First().fullTextAnnotation.text != null) { textInImage = responses.responses.First().fullTextAnnotation.text; } } textOCR.text = textInImage; } }