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