【问题标题】:Using Microsoft OCR Library with JS/jQuery in VS 2013在 VS 2013 中使用带有 JS/jQuery 的 Microsoft OCR 库
【发布时间】:2015-06-21 11:59:26
【问题描述】:

我目前正在开发一个 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 行第 5 列的无法管理的异常

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 命令行在项目中安装了插件,所以我不知道为什么它无法识别并且无法初始化。

提前感谢您的帮助,如果我不够清楚,请随时询问更多详细信息。

【问题讨论】:

  • 顺便说一句,我手动添加了对WindowsPreview.Media.Ocr.winmd 的引用(来自包)并在OcrEngine 获得了The specified module could not be found.
  • 你好 Eonasdan!不,我还没有弄清楚,但我仍在努力,所以我希望我能找到解决方案。它也可能对其他人有所帮助,这样会很棒。但是,是的,正如你所看到的,我在 MSDN 上的帖子还没有走得太远。
  • 是的,我对位于 Projects\'Myappname'\packages\Microsoft.Windows.Ocr.1.0.0\lib\win81\x64\WindowsPreview.Media.Ocr 的 winmd 文件做了同样的事情。 winmd (加上 x86 以防万一),但它仍然无法处理与您收到的错误消息略有不同的错误消息。我的似乎找不到 WindowsPreview(与我之前描述的错误相同,这很奇怪,因为我添加了参考...)。
  • 只是好奇 - 你的平台是什么 - x86、x64 或 ARM?
  • 我使用的是 x64。没有通过 nuget 包添加引用。甚至 MS 的示例应用程序也不起作用(至少对我来说不起作用)

标签: javascript cordova visual-studio-2013 ocr visual-studio-cordova


【解决方案1】:

这看起来像是 VS Tools for Apache Cordova (TACO) 问题。
作为一种解决方法,您可以打开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 和 Cordova Tools upd.1 上对此进行了测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 2015-01-27
    • 2015-01-28
    相关资源
    最近更新 更多