从同一图片{。3}}和google vision api result
的.Net代码和演示应用中获取不同的文本检测结果这是我的代码:
var response = vision.Images.Annotate(
new BatchAnnotateImagesRequest()
{
Requests = new[]
{
new AnnotateImageRequest()
{
Features = new[]
{
new Feature()
{
Type =
"TEXT_DETECTION"
}
},
Image = image
}
}
}).Execute();
答案 0 :(得分:7)
正如Emil的回答所述,您需要DOCUMENT_TEXT_DETECTION
功能而不是TEXT_DETECTION
。但是,您可以比使用当前代码更简单地完成所有操作。
我建议使用Google.Apis.Vision.V1(使用gRPC端点,而不是使用Google.Cloud.Vision.V1(它看起来像你正在做,并使用REST端点)。希望更容易使用。免责声明:我在后一个库上工作)。 可以大部分时间使用REST端点,请注意。
这是使用后一个库的完整示例。
using Google.Cloud.Vision.V1;
using System;
using System.Linq;
class Program
{
static void Main(string[] args)
{
var client = ImageAnnotatorClient.Create();
var image = Image.FromUri("https://i.stack.imgur.com/H21rL.png");
var annotations = client.DetectDocumentText(image);
var paragraphs = annotations.Pages
.SelectMany(page => page.Blocks)
.SelectMany(block => block.Paragraphs);
foreach (var para in paragraphs)
{
var box = para.BoundingBox;
Console.WriteLine($"Bounding box: {string.Join(" / ", box.Vertices.Select(v => $"({v.X}, {v.Y})"))}");
var symbols = string.Join("", para.Words.SelectMany(w => w.Symbols).SelectMany(s => s.Text));
Console.WriteLine($"Paragraph: {symbols}");
Console.WriteLine();
}
}
}
丢失符号之间的空格,但显示正在检测所有文本 - 并且执行实际检测的方法调用非常简单:
var client = ImageAnnotatorClient.Create();
var image = Image.FromUri("https://i.stack.imgur.com/H21rL.png");
var annotations = client.DetectDocumentText(image);
上面的大部分代码都是处理响应。
答案 1 :(得分:1)
根据documentation发现问题时,使用Vision API我们应该使用DOCUMENT_TEXT_DETECTION
+-------------------------+-----------------------------------------------------------------------------------------------------------------+
| TEXT_DETECTION | Run OCR. |
+-------------------------+-----------------------------------------------------------------------------------------------------------------+
| DOCUMENT_TEXT_DETECTION | Run dense text document OCR. Takes precedence when both DOCUMENT_TEXT_DETECTION and TEXT_DETECTION are present. |
+-------------------------+-----------------------------------------------------------------------------------------------------------------+
因此代码应如下所示:
var response = vision.Images.Annotate(
new BatchAnnotateImagesRequest()
{
Requests = new[]
{
new AnnotateImageRequest()
{
Features = new[]
{
new Feature()
{
Type =
"DOCUMENT_TEXT_DETECTION"
}
},
Image = image
}
}
}).Execute();