Amazon Rekognition for text dertection text in image



我在使用Amazon Rekognition服务获取图像中的文本时出错

Process: com.example.myapplication, PID: 32656
java.lang.NoSuchFieldError: org.apache.http.conn.ssl.AllowAllHostnameVerifier.INSTANCE
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:146)
at com.amazonaws.http.apache.client.impl.ApacheConnectionManagerFactory.getPreferredSocketFactory(ApacheConnectionManagerFactory.java:86)
at com.amazonaws.http.apache.client.impl.ApacheConnectionManagerFactory.create(ApacheConnectionManagerFactory.java:63)
at com.amazonaws.http.apache.client.impl.ApacheConnectionManagerFactory.create(ApacheConnectionManagerFactory.java:56)
at com.amazonaws.http.apache.client.impl.ApacheHttpClientFactory.create(ApacheHttpClientFactory.java:50)
at com.amazonaws.http.apache.client.impl.ApacheHttpClientFactory.create(ApacheHttpClientFactory.java:38)
at com.amazonaws.http.AmazonHttpClient.<init>(AmazonHttpClient.java:317)
at com.amazonaws.http.AmazonHttpClient.<init>(AmazonHttpClient.java:301)
at com.amazonaws.AmazonWebServiceClient.<init>(AmazonWebServiceClient.java:194)
at com.amazonaws.services.rekognition.AmazonRekognitionClient.<init>(AmazonRekognitionClient.java:290)
at com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder.build(AmazonRekognitionClientBuilder.java:61)
at com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder.build(AmazonRekognitionClientBuilder.java:27)
at com.amazonaws.client.builder.AwsSyncClientBuilder.build(AwsSyncClientBuilder.java:46)
at com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder.defaultClient(AmazonRekognitionClientBuilder.java:45)
at com.example.myapplication.MainActivity.onCreate(MainActivity.java:59)
at android.app.Activity.performCreate(Activity.java:5343)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2340)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2438)
at android.app.ActivityThread.access$800(ActivityThread.java:160)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1351)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5368)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:828)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644)
at dalvik.system.NativeStart.main(Native Method)

这是我的代码

String photo = Environment.getExternalStorageDirectory().getAbsolutePath()+"/test/testImage.png";
ByteBuffer imageBytes;
try  {
InputStream inputStream = new FileInputStream(new File(photo));
imageBytes = ByteBuffer.wrap(IOUtils.toByteArray(inputStream));
Logger.getLogger("org.apache.http").setLevel(Level.FINEST);
Logger.getLogger("com.amazonaws").setLevel(Level.FINEST);
ImageView imageView = findViewById(R.id.image);
Glide.with(this)
.load(photo)
.into(imageView);
AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();

DetectTextRequest  request = new DetectTextRequest ()
.withImage(new Image()
.withBytes(imageBytes));

DetectTextResult  result = rekognitionClient.detectText(request);
List<TextDetection> textDetections = result.getTextDetections();
Log.i(TAG,"Detected lines and words for " + photo);
for (TextDetection  text: textDetections) {
Log.i(TAG,"Detected: " + text.getDetectedText());
Log.i(TAG,"Confidence: " + text.getConfidence().toString());

}
}
catch (Exception e)
{
Log.e(TAG,e.toString());
}

我尝试使用库'org.apache.httpcomponents:httpmime:4.3.6'和'org.apache.httpcomponents:httpclient-android:4.3.6',但对于httpclient,'gradle'无法解析其依赖关系。

我写错了什么吗? 我也可以使用图像中的文本从本地存储中获取图像吗? 它是否支持阿拉伯语?

如文档中所述,当前算法只能识别,

https://en.wikipedia.org/wiki/ISO_basic_Latin_alphabet

大写和小写英文字符。

文本检测:

https://docs.aws.amazon.com/rekognition/latest/dg/text-detection.html

单词是一个或多个不是 ISO 基本拉丁字母的字符 用空格分隔。检测文本最多可以检测图像中的 50 个单词。

在撰写本文时,尚不支持阿拉伯语。

希望对您有所帮助。

最新更新