【问题标题】:Nativescript Js OCR with Firebase ML kit带有 Firebase ML 套件的 Nativescript Js OCR
【发布时间】:2018-11-13 15:52:52
【问题描述】:

我正在尝试使用 NativeScript JS 和 firebase ML 套件(在设备上)开发 OCR 应用程序。我没有问题地完成了以下页面的步骤:

插件文档: https://market.nativescript.org/plugins/nativescript-plugin-firebase#start-up-wiring

但是当我寻找文本识别部分的 javascript 文档时,我只找到了所有的打字稿版本(我不知道如何添加。

ML 套件文档: https://github.com/EddyVerbruggen/nativescript-plugin-firebase/blob/master/docs/ML_KIT.md

我的 home-page.xml 上有以下代码:

<Page 
navigatingTo="onNavigatingTo" 
xmlns:FirebaseMLKitTextRecognition="nativescript-plugin-firebase/mlkit/textrecognition">

  <FirebaseMLKitTextRecognition:MLKitTextRecognition
      class="my-class"
      width="260"
      height="380"
      processEveryNthFrame="3"
      preferFrontCamera="false"
      pause="{{ pause }}"
      scanResult="onTextRecognitionResult" />

</Page>

它似乎有效。在这种情况下,我可以看到我的设备上的摄像头被这个 home-page.js 代码激活:

const HomeViewModel = require("./home-view-model");

function onNavigatingTo(args) {
    const page = args.object;

    //TODO

    page.bindingContext = new HomeViewModel();
}

exports.onNavigatingTo = onNavigatingTo;

我在 MLkit 文档中找到了这段代码:

import { MLKitRecognizeTextResult } from "nativescript-plugin-firebase/mlkit/textrecognition";
const firebase = require("nativescript-plugin-firebase");

firebase.mlkit.textrecognition.recognizeTextOnDevice({
  image: imageSource // a NativeScript Image or ImageSource, see the demo for examples
}).then((result: MLKitRecognizeTextResult) => { // just look at this type to see what else is returned
  console.log(result.text ? result.text : "");
}).catch(errorMessage => console.log("ML Kit error: " + errorMessage));

但该代码是打字稿,我有错误:

Successfully synced application org.nativescript.gocr on device ECPBBCF741803200.
ActivityManager: Start proc 16965:org.nativescript.gocr/u0a149 for activity org.nativescript.gocr/com.tns.NativeScriptActivity
ActivityManager: ActivityManagerService,attachApplication,callingPid = 16965
ActivityManager: New app record ProcessRecord{f7395dd 16965:org.nativescript.gocr/u0a149} thread=android.os.BinderProxy@11ce5552 pid=16965
ActivityManager: getContentProviderImpl: from caller=android.app.ApplicationThreadProxy@22b46920 (pid=16965, userId=0) to get content provider settings cpr=ContentProviderRecord{35d191e9 u0 com.android.providers.settings/.SettingsProvider}
D/ActivityThread(16965): hoder:android.app.IActivityManager$ContentProviderHolder@23a23c91,provider,holder.Provider:android.content.ContentProviderProxy@3ae27f6
ActivityManager: getContentProviderImpl: from caller=android.app.ApplicationThreadProxy@dece411 (pid=16965, userId=0) to get content provider com.google.android.gms.phenotype cpr=ContentProviderRecord{16a60ce8 u0 com.google.android.gms/.phenotype.provider.ConfigurationProvider}
D/ActivityThread(16965): hoder:android.app.IActivityManager$ContentProviderHolder@2b62a1df,provider,holder.Provider:android.content.ContentProviderProxy@17cb0e2c
ActivityManager: publishContentProviders: from caller=android.app.ApplicationThreadProxy@11807976 (pid=16965)
JS: firebase.init done
System.err: java.lang.RuntimeException: Unable to start activity ComponentInfo{org.nativescript.gocr/com.tns.NativeScriptActivity}: com.tns.NativeScriptException:
System.err: Calling js method onCreate failed
System.err: Error: Building UI from XML. @file:///app/app-root.xml:1:1
System.err:  > Unexpected token {
System.err: File: "file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/ui/builder/builder.js, line: 244, column: 20
System.err: StackTrace:
System.err:     Frame: function:'ScopeError', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/utils/debug.js', line: 63, column: 24
System.err:     Frame: function:'SourceError', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/utils/debug.js', line: 74, column: 23
System.err:     Frame: function:'', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/ui/builder/builder.js', line: 263, column: 17
System.err:     Frame: function:'', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/ui/builder/builder.js', line: 244, column: 33
System.err:     Frame: function:'', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/xml/xml.js', line: 148, column: 13
System.err:     Frame: function:'EasySAXParser.parse', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/js-libs/easysax/easysax.js', line: 751, column: 23
System.err:     Frame: function:'XmlParser.parse', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/xml/xml.js', line: 195, column: 22
System.err:     Frame: function:'XmlStringParser.parse', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/ui/builder/builder.js', line: 250, column: 27
System.err:     Frame: function:'parseInternal', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/ui/builder/builder.js', line: 212, column: 11
System.err:     Frame: function:'loadInternal', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/ui/builder/builder.js', line: 117, column: 27
System.err:     Frame: function:'loadPage', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/ui/builder/builder.js', line: 53, column: 27
System.err:     Frame: function:'', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/ui/builder/builder.js', line: 72, column: 12
System.err:     Frame: function:'', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/ui/builder/builder.js', line: 86, column: 20
System.err:     Frame: function:'ActivityCallbacksImplementation.setActivityContent', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/ui/frame/frame.js', line: 899, column: 50
System.err:     Frame: function:'ActivityCallbacksImplementation.onCreate', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/ui/frame/frame.js', line: 751, column: 14
System.err:     Frame: function:'NativeScriptActivity.onCreate', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/ui/frame/activity.js', line: 20, column: 25
System.err:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2641)
System.err:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2721)
System.err:     at android.app.ActivityThread.access$1200(ActivityThread.java:186)
System.err:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1532)
System.err:     at android.os.Handler.dispatchMessage(Handler.java:111)
System.err:     at android.os.Looper.loop(Looper.java:194)
System.err:     at android.app.ActivityThread.main(ActivityThread.java:5931)
System.err:     at java.lang.reflect.Method.invoke(Native Method)
System.err:     at java.lang.reflect.Method.invoke(Method.java:372)
System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:987)
System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:782)
System.err: Caused by: com.tns.NativeScriptException:
System.err: Calling js method onCreate failed
System.err: Error: Building UI from XML. @file:///app/app-root.xml:1:1
System.err:  > Unexpected token {
System.err: File: "file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/ui/builder/builder.js, line: 244, column: 20
System.err: StackTrace:
System.err:     Frame: function:'ScopeError', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/utils/debug.js', line: 63, column: 24
System.err:     Frame: function:'SourceError', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/utils/debug.js', line: 74, column: 23
System.err:     Frame: function:'', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/ui/builder/builder.js', line: 263, column: 17
System.err:     Frame: function:'', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/ui/builder/builder.js', line: 244, column: 33
System.err:     Frame: function:'', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/xml/xml.js', line: 148, column: 13
System.err:     Frame: function:'EasySAXParser.parse', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/js-libs/easysax/easysax.js', line: 751, column: 23
System.err:     Frame: function:'XmlParser.parse', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/xml/xml.js', line: 195, column: 22
System.err:     Frame: function:'XmlStringParser.parse', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/ui/builder/builder.js', line: 250, column: 27
System.err:     Frame: function:'parseInternal', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/ui/builder/builder.js', line: 212, column: 11
System.err:     Frame: function:'loadInternal', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/ui/builder/builder.js', line: 117, column: 27
System.err:     Frame: function:'loadPage', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/ui/builder/builder.js', line: 53, column: 27
System.err:     Frame: function:'', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/ui/builder/builder.js', line: 72, column: 12
System.err:     Frame: function:'', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/ui/builder/builder.js', line: 86, column: 20
System.err:     Frame: function:'ActivityCallbacksImplementation.setActivityContent', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/ui/frame/frame.js', line: 899, column: 50
System.err:     Frame: function:'ActivityCallbacksImplementation.onCreate', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/ui/frame/frame.js', line: 751, column: 14
System.err:     Frame: function:'NativeScriptActivity.onCreate', file:'file:///data/data/org.nativescript.gocr/files/app/tns_modules/tns-core-modules/ui/frame/activity.js', line: 20, column: 25
System.err:     at com.tns.Runtime.callJSMethodNative(Native Method)
System.err:     at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1116)
System.err:     at com.tns.Runtime.callJSMethodImpl(Runtime.java:996)
System.err:     at com.tns.Runtime.callJSMethod(Runtime.java:983)
System.err:     at com.tns.Runtime.callJSMethod(Runtime.java:967)
System.err:     at com.tns.Runtime.callJSMethod(Runtime.java:959)
System.err:     at com.tns.NativeScriptActivity.onCreate(NativeScriptActivity.java:18)
System.err:     at android.app.Activity.performCreate(Activity.java:6151)
System.err:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1112)
System.err:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2588)
System.err:     ... 10 more
ActivityManager: Process org.nativescript.gocr (pid 16965) has died
ActivityManager: SVC-handleAppDiedLocked: app = ProcessRecord{f7395dd 16965:org.nativescript.gocr/u0a149}, app.pid = 16965
ActivityManager: cleanUpApplicationRecord -- 16965

我在哪里可以找到这个的 javascript 版本?或者我怎样才能将该代码转换为 javascript?可能我做错了什么?

【问题讨论】:

  • 我不熟悉 Firebase ML 套件,但我相信可以使用 JS 代码中的 firebase.mlkit.textrecognition.recognizeTextOnDevice 函数。 cmets 说要查看演示以供使用:github.com/EddyVerbruggen/nativescript-plugin-firebase/blob/…。只要您的参数是 NativeScript Image 或 ImageSource 对象,它也可以在普通 JS 代码中工作。
  • 首先感谢。我不明白 typescript intax jet。我认为这类似于json。那么可能是这样的吗? MLKitRecognizeTextResult = firebase.mlkit.textrecognition.recognizeTextOnDevice({ imageSourcePreviousDefined });如果是,我如何将视图相机与该 imageSourcePreviousDefined 链接?我对 Nativescript JS 的文档有点困惑。

标签: javascript firebase ocr nativescript firebase-mlkit


【解决方案1】:

TypeScript 只是 JavaScript 的超集,如果您消除了应该主要为您提供 JavaScript 语法的类型。

firebase.mlkit.textrecognition.recognizeTextOnDevice({
  image: imageSource 
}).then((result) => { 
  console.log(result.text ? result.text : "");
}).catch(errorMessage => console.log("ML Kit error: " + errorMessage));

利用 eslint 插件,以便您的 IDE 可以指导您使用语法。

【讨论】:

  • 好像没问题,但是怎么把相机和scanResult="onTextRecognitionResult"联系起来呢?我认为这将是自动然后启动。非常感谢您的帮助。
  • 我认为您对两个选项感到困惑,XML 一个用于实时摄像头馈送,而 scanResult 事件在通过摄像头中的实时图像完成 OCR 时触发。当您想对现有图像文件执行 OCR 时,请使用 recognizeTextOnDevice
  • 哦,太好了。我很困惑,但非常感谢。因此,如果我将 xml 方法与 scanResult 事件一起使用,它必须识别文本吗?我尝试了,但我有一个错误:ML Kit error: TypeError: Cannot read property 'android' of undefined
  • 很好用,我忘了删除一个参数。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-17
  • 2019-04-19
  • 1970-01-01
  • 1970-01-01
  • 2019-09-23
  • 2020-03-15
  • 1970-01-01
相关资源
最近更新 更多