使用谷歌视觉OCR API从特定图像位置提取数据

我正在使用Google的Vision OCR API尝试从图像中提取2种类型的数据:1)从文本框中输入手写文本;下面用红色圆圈标记,并2)在复选框中打勾或“ x”;下面用绿色圆圈标记。我将把这些数据输入数据库,所以我需要为这两种类型的数据返回一个字符串

使用谷歌视觉OCR API从特定图像位置提取数据

当前,当我将此图像传递到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);


        }

所以我的问题:

  1. 如何从每个红色框中提取数据(即第一个文本框将返回“兄弟”,第二个文本框应返回“已学习的新技能”)?
  2. 如何从每个绿色问题中提取标记了哪个复选框(即问题13应该返回“是”,问题14应该返回“自选”等)?
PUXI3230 回答:使用谷歌视觉OCR API从特定图像位置提取数据

我只是使用了一些PHP脚本中的API,但我认为您的问题并不取决于编程语言。 您需要使用检测到的单词的坐标(精确到四个顶点的框)。然后,您可以找到与参与者写作有关的问卷调查元素。 这个脚本对我来说是一个很好的切入点:

https://www.leanx.eu/tutorials/use-google-cloud-vision-api-to-process-invoices-and-receipts

您可以在任何启用PHP的网站空间上按原样使用它,并且它为您提供了如何检索API返回的框的结构化概述。

具有这些框并知道调查表的文字,如果Google检测到它们,则可以很容易地找到参与者所做的复选标记。由于Google的OCR并不总是能找到单个“字符”,因此对选中标记的检测可能并不总是与谷歌视觉兼容。

本文链接:https://www.f2er.com/3149894.html

大家都在问