示例#1
0
        private static IEnumerator RecognitionCoroutine(CharacterRecognitionModeBase recognitionMode)
        {
            string url = string.Format("{0}?access_token={1}", recognitionMode.API, TOKEN);

            WWWForm form = new WWWForm();

            form.AddField("image", recognitionMode.GetImageSourceByBase64());
            form.AddField("recognize_granularity", recognitionMode.Granularity == CharacterRecognitionModeBase.RecognizeGranularity.Big ? "big" : "small");
            form.AddField("language_type", recognitionMode.Language.ToString());
            form.AddField("detect_direction", recognitionMode.IsDetectDirection ? "true" : "false");
            form.AddField("detect_language", recognitionMode.IsDetectLanguage ? "true" : "false");

            using (UnityWebRequest request = UnityWebRequest.Post(url, form))
            {
                request.SetRequestHeader("Content-Type", recognitionMode.ContentType);
                yield return(request.SendWebRequest());

                if (!request.isNetworkError && !request.isHttpError)
                {
                    JsonData jsonData = GlobalTools.StringToJson(request.downloadHandler.text);
                    if (jsonData.Keys.Contains("error_code"))
                    {
                        GlobalTools.LogError("文字识别失败:" + jsonData["error_code"].ToString() + " " + jsonData["error_msg"].ToString());

                        recognitionMode.FailHandler?.Invoke();
                    }
                    else
                    {
                        recognitionMode.SuccessHandler?.Invoke(new OCRResponse(jsonData));
                    }
                }
                else
                {
                    GlobalTools.LogError("文字识别失败:" + request.responseCode + " " + request.error);

                    recognitionMode.FailHandler?.Invoke();
                }
            }
        }