From 06b56a10bd51fd3c7ca8acb178e7778ac1eb51a6 Mon Sep 17 00:00:00 2001 From: cryolithic Date: Thu, 24 Apr 2025 19:45:11 -0700 Subject: [PATCH] 37405 Advanced Paste: Image To Text doesn't work with English (Canada) (#37806) * [AdvancedPaste] [Fix Bug] Create ocrEngine from user profile language GetOCRLanguage may fail based on language tag not matching (en-CA does not match en-GB or en-US), however user profile language may be valid. * Update exception message. Signed-off-by: Shawn Yuan * update Signed-off-by: Shawn Yuan --------- Signed-off-by: Shawn Yuan Co-authored-by: Shawn Yuan --- .../AdvancedPaste/Helpers/OcrHelpers.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/modules/AdvancedPaste/AdvancedPaste/Helpers/OcrHelpers.cs b/src/modules/AdvancedPaste/AdvancedPaste/Helpers/OcrHelpers.cs index b56868ece8..218349b32b 100644 --- a/src/modules/AdvancedPaste/AdvancedPaste/Helpers/OcrHelpers.cs +++ b/src/modules/AdvancedPaste/AdvancedPaste/Helpers/OcrHelpers.cs @@ -18,10 +18,19 @@ public static class OcrHelpers { public static async Task ExtractTextAsync(SoftwareBitmap bitmap, CancellationToken cancellationToken) { - var ocrLanguage = GetOCRLanguage() ?? throw new InvalidOperationException("Unable to determine OCR language"); + var ocrLanguage = GetOCRLanguage(); cancellationToken.ThrowIfCancellationRequested(); - var ocrEngine = OcrEngine.TryCreateFromLanguage(ocrLanguage) ?? throw new InvalidOperationException("Unable to create OCR engine"); + OcrEngine ocrEngine; + if (ocrLanguage is not null) + { + ocrEngine = OcrEngine.TryCreateFromLanguage(ocrLanguage) ?? throw new InvalidOperationException("Unable to create OCR engine from specified language"); + } + else + { + ocrEngine = OcrEngine.TryCreateFromUserProfileLanguages() ?? throw new InvalidOperationException("Unable to create OCR engine from user profile language"); + } + cancellationToken.ThrowIfCancellationRequested(); var ocrResult = await ocrEngine.RecognizeAsync(bitmap);