【发布时间】:2018-11-13 09:15:28
【问题描述】:
我已经扫描了银行对账单的 PDF(基于图像)。 谷歌视觉 API 能够非常准确地检测文本,但它返回文本块,我需要逐行文本(银行交易)。 知道该怎么做吗?
【问题讨论】:
-
块是否包含换行符,例如'\n'?
-
是的。另外,我有边界框的文字和坐标。
标签: python pdf ocr google-cloud-vision
我已经扫描了银行对账单的 PDF(基于图像)。 谷歌视觉 API 能够非常准确地检测文本,但它返回文本块,我需要逐行文本(银行交易)。 知道该怎么做吗?
【问题讨论】:
标签: python pdf ocr google-cloud-vision
我使用 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 坐标对它们进行排序。
如有任何其他疑问,请与我们联系。
【讨论】:
在 Google Vision API 中,有一个方法 fullTextAnnotation 返回一个全文字符串,\n 指定行尾,你可以试试。
【讨论】: