我正在尝试将 C# 中的 Google Vision API 用于包含多行文本的图像。我希望每一行都是一个单独的字符串,但 API 将它们全部放入 1 个字符串中。
我尝试在开头按大写进行过滤,但有些行在每个单词的开头都有大写,所以它并不总是在每行的开头。
我怎样才能改变它,以便它分别在每一行中?由于每次所有线条都在图像中的同一个位置,我可以使用 C# 裁剪它以单独获取每一行吗?
谢谢 :)
我正在尝试将 C# 中的 Google Vision API 用于包含多行文本的图像。我希望每一行都是一个单独的字符串,但 API 将它们全部放入 1 个字符串中。
我尝试在开头按大写进行过滤,但有些行在每个单词的开头都有大写,所以它并不总是在每行的开头。
我怎样才能改变它,以便它分别在每一行中?由于每次所有线条都在图像中的同一个位置,我可以使用 C# 裁剪它以单独获取每一行吗?
谢谢 :)
您似乎使用的是“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 如果您发布更新的代码,我可以提供更多帮助 :)