2017-02-22 5 views
1

Я использую API Google Vision, в первую очередь для извлечения текстов. Я отлично работаю, но для конкретных случаев, когда мне понадобится API для сканирования строки ввода, выплевывает текст перед переходом на следующую строку. Тем не менее, похоже, что API использует какую-то логику, которая позволяет сканировать сверху вниз с левой стороны и перемещаться вправо и делать сканирование сверху вниз. Мне бы понравилось, если бы API читал влево-вправо, двигался вниз и так далее.Извлечение текста - строка за строкой

Для примера рассмотрим изображение:

John Doe - Profile

API-интерфейс возвращает текст, как это:

“ Name DOB Gender: Lives In John Doe 01-Jan-1970 LA ” 

В то время как я ожидал бы что-то вроде этого:

“ Name: John Doe DOB: 01-Jan-1970 Gender: M Lives In: LA ” 

Я предполагаю, что существует способ определить размер блока или ma rgin (?) для чтения изображения/сканирования по строкам?

Благодарим за помощь. Alex

ответ

0

Вы можете извлечь текст, основанный на границах каждой линии тоже, вы можете использовать boundyPoly и сцепить текст в той же строке

"boundingPoly": { 
     "vertices": [ 
      { 
      "x": 87, 
      "y": 148 
      }, 
      { 
      "x": 411, 
      "y": 148 
      }, 
      { 
      "x": 411, 
      "y": 206 
      }, 
      { 
      "x": 87, 
      "y": 206 
      } 
     ] 

, например, это 2 слова находятся в одной и той же «линии»

"description": "you", 
     "boundingPoly": { 
     "vertices": [ 
      { 
      "x": 362, 
      "y": 1406 
      }, 
      { 
      "x": 433, 
      "y": 1406 
      }, 
      { 
      "x": 433, 
      "y": 1448 
      }, 
      { 
      "x": 362, 
      "y": 1448 
      } 
     ] 
     } 
    }, 
    { 
     "description": "start", 
     "boundingPoly": { 
     "vertices": [ 
      { 
      "x": 446, 
      "y": 1406 
      }, 
      { 
      "x": 540, 
      "y": 1406 
      }, 
      { 
      "x": 540, 
      "y": 1448 
      }, 
      { 
      "x": 446, 
      "y": 1448 
      } 
     ] 
     } 
    } 
+0

Спасибо, что одна возможность. –

0

Это может быть поздний ответ, но добавление его для дальнейшего использования. Вы можете добавить подсказки функций к вашему запросу JSON, чтобы получить желаемые результаты.

{ 
    "requests": [ 
    { 
     "image": { 
     "source": { 
      "imageUri": "https://i.stack.imgur.com/TRTXo.png" 
     } 
     }, 
     "features": [ 
     { 
      "type": "DOCUMENT_TEXT_DETECTION" 
     } 
     ] 
    } 
    ] 
} 

для текста, очень далеко друг от друга в DOCUMENT_TEXT_DETECTION также не обеспечивает надлежащую сегментацию линии.

code Простая сегментация линии на основе координат полигона символа.

enter image description here

https://github.com/sshniro/line-segmentation-algorithm-to-gcp-vision

+0

Я видел этот код, и он очень короткий, чтобы читать, но я хочу использовать его в Java, как его скрывать? –

+0

Синтаксис более или менее одинаковый. Алгоритм использует полигональную вычислительную библиотеку, поэтому аналогичную библиотеку следует использовать, чтобы выяснить, находится ли точка внутри многоугольника в Java. –

+1

спасибо, я сказал, что в java с: пробелом пространства двух прямоугольников –