Actualmente estoy trabajando en una aplicación de Windows 8.1 y estoy usando lenguajes web y principalmente jQuery (proyecto de tipo Cordova) ya que podría usarse en otras plataformas. Necesito usar la biblioteca Microsoft OCR (no Tesseract ni ninguna otra, las conozco pero realmente necesito usar esta por ahora) para analizar la imagen y usar el texto extraído en mi aplicación.
Descargué la aplicación de muestra de JavaScript de MSDN y la inicié: funciona completamente (después de instalar el complemento OCR en VS 2013, por supuesto).
Ahora estoy tratando de integrar el motor OCR en mi aplicación (también instalé el complemento OCR en mi proyecto) pero no funciona en absoluto. De hecho, cuando intento iniciar mi aplicación en mi máquina, la ejecución falla y me devuelve este mensaje de error:
Excepción inmanejable en la línea 11, columna 5 en ms-appx://io.cordova.blankcordovaapp2/www/scripts/myscript.js
0x800a1391 - Error de ejecución de JavaScript: «WindowsPreview» no está definido"
Aquí está la parte del código con "errores" (está al principio de mi 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);Traté de inicializar el motor OCR de la misma manera que se hace en la muestra de Microsoft OCR. VS parece no encontrar WindowsPreview.Media.Ocr, que debería ser, según la documentación oficial:
La biblioteca Microsoft OCR para Windows Runtime contiene el espacio de nombres WindowsPreview.Media.Ocr. La biblioteca se distribuye como un paquete NuGet; no se incluye en el kit de desarrollo de software (SDK) de Windows.
Instalé el complemento en el proyecto usando la línea de comandos de NuGet, así que no sé por qué no se identifica y no se puede inicializar.
Gracias de antemano por su ayuda y no dude en pedir más detalles si no fue lo suficientemente claro.
Esto parece un problema de VS Tools para Apache Cordova (TACO).
Como solución, puede abrir platforms\windows\CordovaApp.sln , cambiar la arquitectura a x64, agregar el paquete Nuget a las referencias del proyecto CordovaApp.Windows, guardar (la compilación fallará debido a un problema en el evento 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>también puede intentar borrarlo temporalmente para permitir compilaciones de los proyectos subyacentes).
A continuación, abra el proyecto principal Cordova; debería funcionar ahora.
Sin embargo, esto funcionará solo para una arquitectura, por lo que para ARM y Windows Phone es posible que necesite otra copia (establezca CordovaApp.Phone como proyecto de inicio, agregue el paquete Nuget y cambie a ARM).
Nota: Estaba probando esto en VS 2015 y Cordova Tools upd.1.