Я использовал Google Vision API - DOCUMENT_TEXT_DETECTION для получения построчных данных.Возвращаемые данные имеют следующую структуру: Структура может измениться для разных API.
{
'description': 'Some Text',
'coordinates': [ P1, P2, P3, P4]
}
Подход, который я использовал, вычислял среднюю точку всех слов.
{
'description': 'Some Text',
'center': { x: (P1.x + P2.x + P3.x + P4.x)/4,
y: (P1.y + P2.y + P3.y + P4.y)/4 }
}
Теперь я отсортировал эти слова по координатам их центров.По оси X и Y.Но для сортировки по Y-координатам вам понадобится некоторая переменная допуска Y.
Например,
word_1.center.y = 15
word_2.center.y = 18
word_3.center.y = 28
Теперь вам нужно решить, какая разница в значении Y-координаты необходимаизменить строки (зависит от размера шрифта, используемого в документе).
(word_2.center.y - word_1.center.y) < Y-Tolerance # True ~ In same line
(word_3.center.y - word_2.center.y) < Y-Tolerance # False ~ In different line
После того, как вы получите список слов в той же строке.Сортируйте их в соответствии с их координатами X.
Пожалуйста, обращайтесь в случае любого другого запроса.