Tôi nhận ra đây không phải là một giải pháp hoàn chỉnh nhưng tôi nghĩ rằng nó là đủ để giúp bạn bắt đầu.
API tầm nhìn máy tính trả lại một JSON result với thuộc tính lines
chỉ là một mảng đối tượng có thuộc tính boundingBox
.
Đây là các tọa độ X, Y của tọa độ trên cùng bên trái và dưới cùng bên phải của "hình vuông" của từng cụm từ.
Về cơ bản, bạn cần xử lý mảng này và "sắp xếp" các mục dựa trên thuộc tính này.
Trong số này JSFiddle bạn sẽ thấy rằng tôi đang sắp xếp các đường theo Y phối hợp và sau đó nhóm chúng lại.
Việc cần làm là "thông minh hơn" về nhóm - nếu tọa độ Y là 201 và 202, bạn có thể giả định rằng chúng nằm trên cùng một dòng và chỉ thêm chúng vào cùng một dòng, được sắp xếp theo tọa độ X tăng dần.
Code:
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);
}
Kết quả:
Nguồn
2017-05-03 03:04:28