Zud*_*io8 6 c# ocr service microsoft-cognitive
我一直在使用微软计算机视觉阅读收据,试图寻找替代艾比的OCR,因为价格差异很大.
我得到的结果总是按地区分组.这显然使得用它们的金额识别相应的字段变得更加困难.
有没有办法通过Microsoft Vision或者无论如何我可以实现与Abby相同的对齐输出?
这是包含结果和收据的图像
Ocr结果
我意识到这不是一个完整的解决方案,但我认为这足以让您开始。
计算机视觉 API 返回带有属性的JSON 结果lines,该结果只是带有boundingBox属性的对象数组。
这些boundingBoxes 是每个短语的“方块”的左上角和右下角坐标的 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);
}
Run Code Online (Sandbox Code Playgroud)
结果:
| 归档时间: |
|
| 查看次数: |
791 次 |
| 最近记录: |