我正在使用Google的Vision OCR API尝试从图像中提取2种类型的数据:1)从文本框中输入手写文本;下面用红色圆圈标记,并2)在复选框中打勾或“ x”;下面用绿色圆圈标记。我将把这些数据输入数据库,所以我需要为这两种类型的数据返回一个字符串
当前,当我将此图像传递到API时,我得到了包含所有数据的字符串:
中学学习学生对计算机的认识LO 13。您的家人有没有在计算机/ IT领域工作?如果是这样,是什么家庭成员(如父母,监护人,兄弟,姐妹等)兄弟14。您是否有过任何计算经验(甚至参加过一天)?选择>一个或多个领域:U CODER DOJO在学校中VSELF TAUGHT JOTHER如果您从Q14中选择了一个,则是>一般经验:很好,很好或不好不好,为什么(简短回答,少于4个字)>学习了新技能待营后完成。新闻LRY 1。我现在将考虑从事>计算/ IT工作。强烈同意同意无意见强烈反对2。该训练营向我展示了>计算机/ IT的真正职业。 ?强烈同意同意无意见强烈反对3>。营地显示/强调我不擅长编程或计算。强烈同意同意>无意见强烈反对4。请给您提供有关计算/编程之前尚不了解的两件事? Java语言eclipse IDE va 5。在编程/计算方面,我比我最初想的要好(>在阵营之前)。 ?同意无意见强烈不同意? O>完全同意6。关于营地的任何反馈/评论(好还是坏)?好阵营,学到了很多。 >感谢您参加这项调查。第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应该返回“是”,问题14应该返回“自选”等)?