Google Vision API - 将OCR结果拆分为不同的行?

时间:2018-02-07 18:24:51

标签: c# api google-vision vision-api

我正在尝试在C#中使用Google Vision API,以获得包含多行文字的图片。我希望每一行都是一个单独的字符串,但API将它全部放入1个字符串中。

我在开头尝试按大写过滤,但有些行在每个单词的开头都有大写字母,因此并不总是只在每行的开头。

如何更改它以便分别占用每一行?由于每次所有线条都在图像中的相同位置,我可以使用C#来裁剪每条线条吗?

谢谢:)

1 个答案:

答案 0 :(得分:0)

看起来你正在使用" TEXT_DETECTION"模式而不是" DOCUMENT_TEXT_DETECTION" Google Vision API的模式。

https://cloud.google.com/vision/docs/ocr 这指定了两者之间的差异。

来自https://cloud.google.com/vision/docs/detecting-fulltext

如果您使用" DOCUMENT_TEXT_DETECTION"这就是您的代码应该是什么样子API。

var image = Image.FromFile(filePath);
var client = ImageAnnotatorClient.Create();
var response = client.DetectDocumentText(image);
foreach (var page in response.Pages)
{
    foreach (var block in page.Blocks)
    {
        foreach (var paragraph in block.Paragraphs)
        {
            Console.WriteLine(string.Join("\n", paragraph.Words));
        }
    }
}

希望有所帮助!

修改

我使用正文

进行了https://vision.googleapis.com/v1/images:annotate?key=[API_KEY]发布
{
  "requests": [
    {
      "image": {
        "source": {
          "imageUri": "https://i.imgur.com/5t34img.png"
        }
      },
      "features": [
        {
          "type": "DOCUMENT_TEXT_DETECTION"
        }
      ]
    }
  ]
}

并收到此回复有效回复。 https://gist.github.com/kle622/02d4d573c2c8bc08beac25a26b81096e 如果您发布更新的代码,我可以提供更多帮助:)