如何限制向Google Vision发出TEXT_DETECTION调用返回的文字?

时间:2017-03-08 05:31:33

标签: ios google-cloud-platform ocr google-cloud-vision

我目前正在尝试使用针对OCR的Google Vision API。当我上传图像时,我看到返回给我的结果JSON有效负载相当大。我在响应中看到两个主要的桶: 1)" textAnnotations" 2)" fullTextAnnotation"

我只对" textAnnotations"返回的JSON感兴趣。我不关心fullTextAnnotation桶。基本上我只对单个单词及其相应的边界框感兴趣,我不需要任何更细粒度的OCR数据。响应似乎也解析了段落,符号和个别角色,但我不需要任何东西。

是否有通过在请求中发送一些标记或参数来过滤google vision的结果集?当然必须有,因为返回的JSON非常大。

1 个答案:

答案 0 :(得分:0)

据我所知,在进行请求调用时无法进行过滤。 但是,在您从Google Vision API请求中获得完整的JSON后,您需要让您的程序在“textAnnotations”对象上进行工作/处理

如果在Java上,你需要做类似下面的事情 - 我意识到你用'iOS'标记了这个,但我对Swift不太熟悉..但是伪代码几乎是一样的 -

1)使用JSON解析器解析JSON(例如-JSON.simple / GSON / Jackson / etc)

2)将'textAnnotations'转换为POJO(普通旧Java对象)

3)然后在你的代码中,使用嵌套的for循环循环遍历'textAnotations'块以提取'description'元素,这基本上是OCR的单词。嵌套循环的原因是因为“response”,“textAnnotations”是Google Vision API返回时的数组对象

for (int i = 0; i < size of 'responses' object ; i++) {
       for (int j = 0; j < size of 'textAnnotations' object; j++) {
              for (int k = 0; k < count of objects ; k++) { 
         System.out.println("OCR Word extracted from Google Vision API JSON - " + (k+1) + " : " + responses[i].textAnnotations[j].description[k])
                }
        }
}