0

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

我尝试在开头按大写进行过滤,但有些行在每个单词的开头都有大写,所以它并不总是在每行的开头。

我怎样才能改变它,以便它分别在每一行中?由于每次所有线条都在图像中的同一个位置,我可以使用 C# 裁剪它以单独获取每一行吗?

谢谢 :)

4

1 回答 1

0

您似乎使用的是“TEXT_DETECTION”模式,而不是 Google Vision API 的“DOCUMENT_TEXT_DETECTION”模式。

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));
        }
    }
}

希望有帮助!

编辑

我用正文做了一个 POST 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 如果您发布更新的代码,我可以提供更多帮助 :)

于 2018-02-07T21:28:22.860 回答