Example #1
0
        public async Task <DetectionResult> DetectAsync(DetectionRequest request)
        {
            var image      = Image.FromUri(request.ImageUri);
            var annotation = await _client.DetectDocumentTextAsync(image);

            return(new DetectionResult(annotation.Text));
        }
Example #2
0
        public static async Task <FeatureRequest <Response.Translation, Error.Translation> > Translate(string[] args, TranslationClient translationClient,
                                                                                                       ImageAnnotatorClient visionClient, Dictionary <string, List <string> > allLanguages)
        {
            if (translationClient == null)
            {
                return(new FeatureRequest <Response.Translation, Error.Translation>(null, Error.Translation.InvalidApiKey));
            }
            if (args.Length < 2)
            {
                return(new FeatureRequest <Response.Translation, Error.Translation>(null, Error.Translation.Help));
            }
            string language;

            if (args[0].Length == 2)
            {
                language = args[0];
            }
            else
            {
                language = Utilities.GetLanguage(args[0], allLanguages);
            }
            if (language == null)
            {
                return(new FeatureRequest <Response.Translation, Error.Translation>(null, Error.Translation.InvalidLanguage));
            }
            List <string> newWords = args.ToList();

            newWords.RemoveAt(0);
            try
            {
                string toTranslate = Utilities.AddArgs(newWords.ToArray());
                if (newWords.Count == 1 && Utilities.IsLinkValid(newWords[0]))
                {
                    if (visionClient == null)
                    {
                        return(new FeatureRequest <Response.Translation, Error.Translation>(null, Error.Translation.InvalidApiKey));
                    }
                    Image image = await Image.FetchFromUriAsync(newWords[0]);

                    TextAnnotation response;
                    try
                    {
                        response = await visionClient.DetectDocumentTextAsync(image);
                    }
                    catch (AnnotateImageException)
                    {
                        return(new FeatureRequest <Response.Translation, Error.Translation>(null, Error.Translation.NotAnImage));
                    }
                    if (response == null)
                    {
                        return(new FeatureRequest <Response.Translation, Error.Translation>(null, Error.Translation.NoTextOnImage));
                    }
                    toTranslate = response.Text;
                }
                TranslationResult translation = await translationClient.TranslateTextAsync(toTranslate, language);

                return(new FeatureRequest <Response.Translation, Error.Translation>(new Response.Translation()
                {
                    sentence = translation.TranslatedText,
                    sourceLanguage = Utilities.GetFullLanguage(translation.DetectedSourceLanguage, allLanguages)
                }, Error.Translation.None));
            }
            catch (GoogleApiException)
            {
                return(new FeatureRequest <Response.Translation, Error.Translation>(null, Error.Translation.InvalidLanguage));
            }
        }