我使用Google Vision API从任何对象(如报纸或墙上的文字)中读取文字。我尝试过来自Google开发者网站的相同示例,但我的Text Recognizer始终在IsOperational
函数上返回false。我在Blackberry keyone上进行了测试,并在Moto x上测试过它的工作正常。
Gradle文件:
compile 'com.google.android.gms:play-services-vision:11.0.4'
任何人都可以帮助我。在此先感谢
TextRecognizer textRecognizer = new TextRecognizer.Builder(context).build();
textRecognizer.setProcessor(new OcrDetectorProcessor(mGraphicOverlay, OcrCaptureActivity.this));
if(!textRecognizer.isOperational()) {
Log.e("TextRecog","Not Operational"); IntentFilter lowstorageFilter = new
IntentFilter(Intent.ACTION_DEVICE_STORAGE_LOW); boolean hasLowStorage = registerReceiver(null, lowstorageFilter) != null;
}
答案 0 :(得分:0)
[TextRecognizer](https://developers.google.com/android/reference/com/google/android/gms/vision/text/TextRecognizer)中的isOperational方法继承自Detector类。设置后,该方法不会立即返回true。
来自docs
“表示检测器是否具有本地可用的所有依赖关系以进行检测。
首次安装应用时,可能需要下载所需的文件。如果返回false,则这些文件尚不可用。通常这个下载在应用程序安装时处理,但不保证这一点。在某些情况下,下载可能已被延迟。“
基本上,如果它返回false,则将其编码为等待并重试。我假设您正在手机上运行测试,在该方法返回true之前,您需要花些时间下载所有必需的库。
答案 1 :(得分:0)
您必须将此添加到AndroidManifest.xml
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.gms.vision.DEPENDENCIES"
android:value="ocr"/>
答案 2 :(得分:0)
在应用清单中添加视觉API的元数据
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.gms.vision.DEPENDENCIES"
android:value="ocr"/>