извлечение данных из определенных местоположений изображений с помощью Google OCR API OCR - PullRequest
0 голосов
/ 06 ноября 2019

Я использую Googles Vision OCR API, чтобы попытаться извлечь 2 типа данных из изображения 1) рукописный текст из текстовых полей;помечены красными кружками внизу и 2) галочками или 'x' из флажков;отмечены зелеными кружками ниже. Я буду вводить эти данные в базу данных, поэтому мне потребуется строка, возвращенная для обоих типов данных

text

В настоящее время, когда я передаю это изображение в API, я получаю строкусо всеми данными:

Обучение в средней школе Восприятие компьютеров учащимся LO 13. Кто-нибудь из членов вашей семьи работает в области компьютерных технологий? Если да, то что это за член семьи (например, родитель, опекун, брат, сестра> и т. Д.) Брат 14. Был ли у вас какой-либо опыт работы на компьютере (даже в течение одного дня)? Выберите> одну или несколько областей: U CODER DOJO В ШКОЛЬНОМ ЛАГЕРЬЕ САМОГО ДРУГОГО Если вы выбрали любую из Q14, был> общий опыт: ХОРОШО, НЕТ ХОРОШО, ХОРОШО ИЛИ ПЛОХО ПЛОХО ПЛОХО И почему (краткий ответ, под 4 словами)> выучил новые навыкиБудет завершено после лагеря. NewsLRY 1. Я бы сейчас рассмотрел карьеру в> вычислительной технике / IT. Полностью согласен Согласен Нет мнения не согласен Полностью не согласен 2. Лагерь показал мне, какой была карьера в области компьютерных технологий. ? Полностью согласен Согласен Нет мнения не согласен Полностью не согласен 3>. Лагерь показал / подчеркнул, что я не был хорош в программировании или вычислительной технике. Абсолютно согласен Согласен> Нет мнения не согласен Абсолютно не согласен 4. Дайте две вещи, которые вы не знали о компьютерном /> программировании до окончания лагеря? Язык Java Eclipse IDE ва 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. должен возвращать «САМОСТОЯТЕЛЬНАЯ НАУЧНОСТЬ» и т. Д.)?

1 Ответ

0 голосов
/ 10 ноября 2019

Я только что использовал API из некоторых PHP-скриптов, но я думаю, что ваша проблема не зависит от языка программирования. Вам нужно использовать координаты (точнее, прямоугольники с четырьмя вершинами) обнаруженных слов. Затем вы можете найти элементы вашей анкеты относительно написания участника. Хорошей отправной точкой для меня был этот скрипт:

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

Вы можете использовать его «как есть» на любом веб-пространстве с поддержкой PHP, и он дает вам хорошо структурированный обзор того, как выможет извлекать поля, которые возвращает API.

Имея эти поля и зная текст вашего вопросника, будет довольно легко найти отметки, которые ваши участники сделали, если их обнаружит Google. Обнаружение галочки может не всегда работать с Google Vision, так как OCR не всегда находит один «символ».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...