Я понимаю, что это не полное решение, но я думаю, что это достаточно, чтобы вы начали.
API компьютерного зрения возвращает JSON result с свойством lines
, которое представляет собой всего лишь массив объектов с собственностью boundingBox
.
Эти boundingBox
es - это координаты X, Y в левом и нижнем правых координатах «квадрата» каждой фразы.
Вам необходимо обработать этот массив и «отсортировать» элементы на основе этого свойства.
В этом JSFiddle вы увидите, что я сортирую строки по координате Y, а затем группирую их.
Осталось сделать «умнее» о группировке - если координаты Y равны 201 и 202, вы можете предположить, что они находятся на одной линии и просто добавляют их к одной линии, отсортированные по возрастающей координате X.
Код:
if (jsonResponse.status == 'Succeeded') {
var result = '';
// Sort lines by Y coordinate
jsonResponse.recognitionResult.lines.sort(function(a, b) {
var topLeftYCoordA = a.boundingBox[1];
var topLeftYCoordB = b.boundingBox[1];
if (topLeftYCoordA > topLeftYCoordB) {
return 1;
}
if (topLeftYCoordA < topLeftYCoordB) {
return -1;
}
return 0;
})
// group lines by Y coordinate
var grouped = {};
jsonResponse.recognitionResult.lines.map(function(line) {
var topLeftYcoordinate = line.boundingBox[1];
if (!grouped[topLeftYcoordinate]) {
grouped[topLeftYcoordinate] = line;
} else {
grouped[topLeftYcoordinate] += line;
}
});
Object.keys(grouped).forEach(function(yCoordinate) {
result += yCoordinate + ' - ' + grouped[yCoordinate].text + '</br>';
})
$(".right").html(result);
}
Результат: