【问题标题】:Google Vision API - Split OCR Results to Different Lines?Google Vision API - 将 OCR 结果拆分为不同的行?
【发布时间】:2018-02-07 18:24:50
【问题描述】:

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

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

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

谢谢:)

【问题讨论】:

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


【解决方案1】:

您似乎使用的是“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 如果您发布更新的代码,我可以提供更多帮助:)

【讨论】:

  • 所以我得到了每个字母,但是我如何得到单独的字符串?例如,在我拥有的测试图像上,我得到了这个:hastebin.com/citesovuwa.pl 我可以在其中看到文本元素,但是如何将 4 个语句分开? (多行顶部的 1,然后是下面的 3 个选项)如果我在这里遗漏了一些明显的东西,我很抱歉哈哈。 @KevinLe
  • 用我对 API 的准确调用和响应更新了答案。你得到那个真的很奇怪,我似乎在我的回复中得到了你想要的。也许将您的代码更新为您现在拥有的代码? @NateDev
猜你喜欢
  • 2019-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-22
  • 2018-06-01
  • 2023-03-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多