eug*_*ekv 3 .net google-vision google-cloud-vision
从.Net代码和演示应用程序获取不同的文本检测结果,以获得相同的图像google vision api结果和.net结果
这是我的代码:
var response = vision.Images.Annotate(
new BatchAnnotateImagesRequest()
{
Requests = new[]
{
new AnnotateImageRequest()
{
Features = new[]
{
new Feature()
{
Type =
"TEXT_DETECTION"
}
},
Image = image
}
}
}).Execute();
Run Code Online (Sandbox Code Playgroud)
正如埃米尔的回答所指出的,你想要的是这个DOCUMENT_TEXT_DETECTION特征而不是TEXT_DETECTION.但是,您可以比使用当前代码更简单地完成所有操作.
我建议使用Google.Cloud.Vision.V1(它使用gRPC端点,而不是使用Google.Apis.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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这会丢失符号之间的空格,但会显示正在检测所有文本 - 并且执行实际检测的方法调用非常简单:
var client = ImageAnnotatorClient.Create();
var image = Image.FromUri("https://i.stack.imgur.com/H21rL.png");
var annotations = client.DetectDocumentText(image);
Run Code Online (Sandbox Code Playgroud)
上面的大多数代码都是处理响应.
| 归档时间: |
|
| 查看次数: |
1624 次 |
| 最近记录: |