谷歌视觉文本检测响应逐行

Posted

技术标签:

【中文标题】谷歌视觉文本检测响应逐行【英文标题】:Google vision Text Detection response to be line by line 【发布时间】:2018-03-14 20:42:16 【问题描述】:

我正在使用 Google vision api 对收据图像执行文本识别。我返回了一些不错的结果,但返回的格式非常不可靠。如果文本之间的间隔很大,则读数将打印下面的行而不是旁边的行。

例如,使用以下Recipt Image 我得到以下响应:

    4x Löwenbräu Original a 3,00 12,00 1
    8x Weissbier dunkel a 3,30 26,401
    3x Hefe-Weissbier a 3,30 9,90 1
    1x Saft 0,25
    1x Grosses Wasser
    1x Vegetarische Varia
    1x Gyros
    1x Baby Kalamari Gefu
    2x Gyros Folie
    1x Schafskäse Ofen
    1x Bifteki Metaxa
    1x Schweinefilet Meta
    1x St ifado
    1x Tee
    2,50 1
    2,40 1
    9,90 1
    8,90 1
    12,90
    a 9,9019,80 1
    6,90 1
    11,90 1
    13,90 1
    14,90 1
    2,10 1

开始时如预期的那样良好,但在尝试将价格与文本等联系起来时变得相当无用。理想的响应如下:

    4x Löwenbräu Original a 3,00 12,00 1
    8x Weissbier dunkel    a 3,30 26,401
    3x Hefe-Weissbier      a 3,30 9,90 1
    1x Saft 0,25                  2,50 1
    1x Grosses Wasser             2,40 1
    1x Vegetarische Varia         9,90 1
    1x Gyros                      8,90 1
    1x Baby Kalamari Gefu        12,90 1
    2x Gyros Folie         a 9,9019,80 1
    1x Schafskäse Ofen            6,90 1
    1x Bifteki Metaxa            11,90 1
    1x Schweinefilet Meta        13,90 1
    1x St ifado                  14,90 1
    1x Tee                        2,10 1

或接近。

是否可以将格式请求添加到 api 以获得不同的响应?我在使用 tessereact 时取得了成功,您可以在其中更改输出格式以实现此结果,并且想知道视觉 api 是否有类似的东西。

我知道 api 返回可以使用的字母坐标,但我希望不必进入那种深度。

【问题讨论】:

【参考方案1】:

您可以在 JSON 请求中添加 feature 提示。对于这样的收据图像,DOCUMENT_TEXT_DETECTION 给出了很好的结果:


  "requests": [
    
      "image": 
        "source": 
          "imageUri": "https://i.stack.imgur.com/TRTXo.png"
        
      ,
      "features": [
        
          "type": "DOCUMENT_TEXT_DETECTION"
        
      ]
    
  ]

您可以复制上述 JSON 并将其粘贴到 documentation page 上 Try This API 窗格中的 Request Body 中。结果:

4x LOwenbräu Original a 3,00 12,00 1
8x Weissbier dunkel a 3, 3026, 40 1
3x Hefe-Weissbier a 3,30990 1
1x Saft 0,25 2, 50 1
1x Grosses Wasser 2, 40 1
1x Vegetarische Varia 9,90 1
1x Gyros 8,90 1
1x Baby Kalamari Gefu 12,90 !
2x Gyros Folie a 9,9019, 80 1
1x Schaf skäse Ofen 6,90 1
1x Bifteki Metaxa 11,90 1
1x Schweinefilet Meta 13,90 1
1x Stifado 14, 90 1
1x Tee 2, 10 1

目前,Googie Vision 的可配置性远低于 Tesseract。由于 Google 支持这两个项目,猜猜未来哪一个会获得更高的优先级?

【讨论】:

非常感谢您!我希望他们将 tesseract 制作为我可以调用的 api,因为它太大了,可以整合到应用程序中。【参考方案2】:

这可能是一个较晚的答案,但添加它以供将来参考。对于相距甚远的文本,DOCUMENT_TEXT_DETECTION 也不提供正确的行分割。

以下代码根据字符多边形坐标进行简单的线段分割。

https://github.com/sshniro/line-segmentation-algorithm-to-gcp-vision

【讨论】:

【参考方案3】:

Google Vision API 有一个方法fullTextAnnotation,它返回一个全文字符串,\n 指定行尾,你可以试试。希望它对你有用。

【讨论】:

以上是关于谷歌视觉文本检测响应逐行的主要内容,如果未能解决你的问题,请参考以下文章

如何使用带有水平线的谷歌视觉检测日语单词或使用 TEXT_DETECTION 检测文件中的文本 (PDF)

谷歌视觉 api 文本检测

如何使用 google vision api 从图像中进行文本检测?

检测换行符以在 iOS 上的 UITextView 上自动输入换行文本

限制谷歌视觉中的检测区域,文本识别

谷歌视觉 API 标签检测