Exemplo n.º 1
0
        public async Task TranslateScreen()
        {
            var recognizedTextboxes = (await OcrScreenInternal()).ToList();

            var textBoxesCount = recognizedTextboxes.Count;

            _log.LogInformation("Found {Count} textboxes", textBoxesCount);

            _internalOverlay.Add(recognizedTextboxes.ToArray());

            if (textBoxesCount >= 60)
            {
                _log.LogWarning("More text boxes than expected: {textBoxesCount}, aborting translation. Probably means that the OCR implementation is bonkers", textBoxesCount);
                return;
            }

            _log.LogInformation("Translating the textboxes");
            var originalTexts = recognizedTextboxes.Select(x => x.Text);
            var translations  = (await _translate.Translate(originalTexts, _ocrTranslateOverlayConfiguration.TargetLanguage, _ocrTranslateOverlayConfiguration.SourceLanguage)).ToList();

            var asSpatialText = ToSpatialTexts(recognizedTextboxes, translations);

            var correctedForCaptureArea = asSpatialText.Select(CorrectForCaptureArea).ToList();

            _internalOverlay.ClearAll();

            _log.LogInformation("Passing translated texts to overlay");
            _internalOverlay.Add(correctedForCaptureArea.ToArray());

            ShowOverlay();
            _log.LogInformation("Showing the complete translation");
        }