【发布时间】:2020-03-03 06:53:15
【问题描述】:
我正在使用 Google 的 Vision OCR API 尝试从图像中提取 2 种类型的数据 1)文本框中的手写文本;下方标有红色圆圈和 2) 勾选框或复选框中的“x”;下面用绿色圆圈标记。我将把这些数据输入数据库,所以我需要为两种类型的数据返回一个字符串
目前,当我将此图像传递给 API 时,我会得到一个包含所有数据的字符串:
中学学习学生对计算机的看法 LO 13。您的家庭成员中是否有 > 在计算/IT 领域工作?如果是,那是哪个家庭成员(例如,父母、监护人、兄弟、姐妹>等) 兄弟 14.您以前是否有任何计算经验(甚至只参加了一天)?选择 >一个或多个领域:U CODER DOJO IN SCHOOL CAMP VSELF TAUGHT JOTHER 如果您从 Q14 中选择任何一个,是 >一般经验:GOOD NEITHER GOOD OR BAD BAD BAD 以及为什么(简短回答,4 个字以下)>学到了新技能待完成营后。新闻LRY 1 .我现在会考虑从事 >computing / IT 的职业。非常同意 同意 没有意见 不同意 非常不同意 2.夏令营向我展示了计算/IT 职业的真正含义。 ?非常同意 同意 没有意见 不同意 非常不同意 3 >。训练营表明/强调我不擅长编程或计算。非常同意 同意 >没有意见 不同意 非常不同意 4.提供两件你在训练营之后才知道的关于计算/编程的事情? java 语言 Eclipse IDE va 5 。我在编程/计算方面比我最初想象的要好(>训练营之前)。 ?同意 没有意见 不同意 非常不同意 ? O > 非常同意 6。关于营地的任何反馈/cmets(好或坏)?好营地,学到了很多。 >感谢您参加本次调查。第 2 页,共 2 页
我的代码:
public static void Main(string[] args)
{
string credential_path = @"C:\Users\35385\nodal.json";
System.Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", credential_path);
// Instantiates a client
var client = ImageAnnotatorClient.Create();
// Load the image file into memory
var image = Image.FromFile("stack.jpg");
// Performs text detection on the image file
var response = client.DetectDocumentText(image);
string words = "";
foreach (var page in response.Pages)
{
foreach (var block in page.Blocks)
{
string box = string.Join(" - ", block.BoundingBox.Vertices.Select(v => $"({v.X}, {v.Y})"));
foreach (var paragraph in block.Paragraphs)
{
box = string.Join(" - ", paragraph.BoundingBox.Vertices.Select(v => $"({v.X}, {v.Y})"));
foreach (var word in paragraph.Words)
{
words += $" {string.Join("", word.Symbols.Select(s => s.Text))}";
}
}
}
}
Console.WriteLine(words);
}
所以我的问题:
- 如何从每个红色框中提取数据(即第一个文本框将返回“兄弟”,第二个文本框应返回“学习的新技能”)?
- 如何从每个绿色问题中提取标记了哪个复选框(即问题 13 应返回“YES”,问题 14。应返回“SELF TAUGHT”等)?
【问题讨论】:
-
有一些关于我需要的谷歌文档,虽然它是在 python 中,但不幸的是我没有 python 经验:cloud.google.com/vision/docs/fulltext-annotations
-
嗨,我在 python 中使用谷歌 OCR。我收到错误,因为打开的文件太多。有没有办法关闭客户端?
标签: c# api google-api ocr google-vision