我目前正在开发一个Windows 8.1应用程序,我正在使用Web语言,主要是jQuery(Cordova类型项目),因为它可能在其他平台上使用。 我需要使用Microsoft OCR库(不是Tesseract或任何其他的,我知道它们,但我现在真的需要使用它),以便分析图像并在我的应用程序中使用提取的文本。
我下载了JavaScript sample app from MSDN并启动了它:它完全正常工作(当然在VS 2013中安装OCR插件后)。
我现在正在尝试将OCR引擎集成到我的应用程序中(我也在我的项目中安装了OCR插件),但它根本不起作用。事实上,当我尝试在我的机器上启动我的应用程序时,执行失败并返回此错误消息:
ms-appx://io.cordova.blankcordovaapp2/www/scripts/myscript.js第11行第11行无法管理的异常
0x800a1391 - JavaScript执行错误:“WindowsPreview”未定义“
以下是代码的“错误”部分(它位于我的脚本的最开头):
$(document).ready(function () {
"use strict";
// Keep objects in-scope across the lifetime of the scenario.
var FileToken = "";
// Define namespace and API aliases.
var FutureAccess = Windows.Storage.AccessCache.StorageApplicationPermissions.futureAccessList;
// Should be initialising the OCR engine
var OCR = WindowsPreview.Media.Ocr;
var ocrEngine = new OCR.OcrEngine(OCR.OcrLanguage.french);
document.addEventListener("deviceready", onDeviceReady, false);
我尝试以与在Microsoft OCR示例中完成相同的方式初始化OCR引擎。根据官方文档,VS似乎找不到WindowsPreview.Media.Ocr:
适用于Windows运行时的Microsoft OCR库包含WindowsPreview.Media.Ocr命名空间。该库作为NuGet包分发 - 它不包含在Windows软件开发工具包(SDK)中。
我确实使用NuGet命令行在项目中安装了插件,因此我不知道为什么它没有被识别并且无法初始化。
提前感谢您的帮助,如果我不够清楚,请不要犹豫,询问更多细节。
答案 0 :(得分:3)
这看起来像是用于Apache Cordova(TACO)问题的VS工具
作为一种解决方法,您可以打开platforms\windows\CordovaApp.sln
,将架构切换到x64,将Nuget包添加到CordovaApp.Windows项目引用,保存(由于PreBuild事件中的问题,构建将失败:
<PreBuildEvent>
cd /d $(MSBuildThisFileDirectory)
node -e "require('C:\\Users\\{username}\\AppData\\Roaming\\npm\\node_modules\\vs-tac\\lib\\hooks.js').updateAppxManifest('C:\\ocrTest\\ocrTest\\platforms\\windows','C:\\ocrTest\\ocrTest\\platforms\\windows\\..\\..\\')"
</PreBuildEvent>
您也可以尝试暂时清除它以启用基础项目的构建。)
然后打开父Cordova项目 - 它现在应该工作。
这仅适用于一个体系结构,但对于ARM和Windows Phone,您可能需要另一个副本(将CordovaApp.Phone设置为启动项目,向其添加Nuget包并切换到ARM)。
注意:我在VS 2015&amp; Cordova Tools upd.1。