public async Task <DetectionResult> DetectAsync(DetectionRequest request) { var image = Image.FromUri(request.ImageUri); var annotation = await _client.DetectDocumentTextAsync(image); return(new DetectionResult(annotation.Text)); }
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)); } }