使用UWPDesktop nuget包从WPF应用程序调用UWP OCR样本

时间:2017-07-05 13:56:57

标签: c# wpf xaml uwp

我从WPF应用程序调用Windows 10 API。我已经安装了" UWPDesktop" Nuget包也。 我从WPF应用程序调用了UWP OCR API,运行代码后,我得到了一个 异常。

  

System.InvalidOperationException:'该进程没有包标识。   (HRESULT的例外情况:0x80073D54)'

我刚刚在我的wpf应用程序中编写了这段代码。 并且还添加了UWPDesktop nugget包来访问UWP API。

var ocrEngine = Windows.Media.Ocr.OcrEngine.TryCreateFromLanguage(new Windows.Globalization.Language(" en"));

        var file = await Package.Current.InstalledLocation.GetFileAsync(@"Assets\test.png");

        using (var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read))
        {
            // Create image decoder.
            var decoder = await Windows.Graphics.Imaging.BitmapDecoder.CreateAsync(stream);

            // Load bitmap.
            var bitmap = await decoder.GetSoftwareBitmapAsync();

            // Extract text from image.
            OcrResult result = await ocrEngine.RecognizeAsync(bitmap);

            // Return recognized text.
            Trace.WriteLine(result);
        }

我在第一行遇到异常。

这个例外是什么以及为什么会发生?

2 个答案:

答案 0 :(得分:1)

该错误表明OcrEngine.TryCreateFromLanguage只能从UWP应用程序(在应用程序容器中运行)调用,而不能在桌面应用程序(不在容器中运行)中调用。如果查看上帝API文档,您将在Windows运行时方法API上找到DualApiPartition attribute,可以在UWP和桌面上下文中调用。 OcrEngine方法没有此属性,因此无法从桌面应用程序调用。

您的选择是使用不同的OCR包或从应用程序上下文中调用它。对于后者,请考虑将WPF应用程序打包为具有Windows Desktop Bridge

的UWP应用程序

答案 1 :(得分:-1)

以下是使用OCR SDK的另一个示例应用程序:

https://github.com/A9T9/Free-OCR-Software

Windows应用商店的免费开源OCR应用程序 - Microsoft OCR库的现代GUI前端。该应用程序还包括对阅读和OCR的PDF文件的支持。