Использование библиотеки Microsoft OCR с JS/jQuery в VS 2013
В настоящее время я работаю над приложением Windows 8.1, и я использую веб-языки и в основном jQuery (проект типа Cordova), поскольку он может использоваться на других платформах.
Мне нужно использовать библиотеку Microsoft OCR (а не Tesseract или любые другие, я их знаю, но мне действительно нужно использовать эту на данный момент), чтобы анализировать изображение и использовать извлеченный текст в моем приложении.
Я загрузил пример приложения JavaScript из MSDN, и я запустил его: он полностью работает (после установки плагина OCR в VS 2013, конечно).
Теперь я пытаюсь интегрировать движок OCR в мое приложение (я также установил плагин OCR в свой проект), но он вообще не работает. Фактически, когда я пытаюсь запустить приложение на своей машине, выполнение не выполняется и возвращает мне это сообщение об ошибке:
Неустранимое исключение в строке 11, столбец 5 в ms-appx://io.cordova.blankcordovaapp2/www/scripts/myscript.js
0x800a1391 - Ошибка выполнения JavaScript: "WindowsPreview" - undefined "
Вот фрагмент кода с ошибкой (он находится в самом начале моего script):
$(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);
Я попытался инициализировать движок OCR так же, как и в примере OCR microsoft. VS, похоже, не находит WindowsPreview.Media.Ocr, который должен быть, согласно официальной документации:
Библиотека Microsoft OCR для Windows Runtime содержит пространство имен WindowsPreview.Media.Ocr. Библиотека распространяется как пакет NuGet - он не входит в комплект разработки программного обеспечения Windows (SDK).
Я установил плагин в проект с помощью командной строки NuGet, поэтому я не знаю, почему он не идентифицирован и не может быть инициализирован.
Заранее благодарим за помощь и не стесняйтесь спрашивать подробности, если я не был достаточно ясен.
Ответы
Ответ 1
Это похоже на VS Tools для 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>
вы также можете попытаться временно очистить его, чтобы включить сборку базовых проектов).
Затем откройте родительский проект Кордовы - он должен работать сейчас.
Это будет работать только для одной архитектуры, хотя для ARM и Windows Phone вам может понадобиться другая копия (установите CordovaApp.Phone в качестве запуска, добавьте пакет Nuget к нему и переключитесь на ARM).
Примечание. Я тестировал это на VS 2015 и Cordova Tools upd.1.