Python 来自Google cloud vision API OCR的逐行数据

Python 来自Google cloud vision API OCR的逐行数据,python,pdf,ocr,google-cloud-vision,Python,Pdf,Ocr,Google Cloud Vision,我扫描了银行对账单的PDF(基于图像)。 Google vision API能够非常准确地检测文本,但它返回文本块,我需要逐行文本(银行交易)。 你知道怎么做吗?我使用谷歌视觉API-文档文本检测来获取逐行数据。 返回的数据具有以下结构: 对于不同的API,结构可能会发生变化 我使用的方法是计算所有单词的中点 { 'description': 'Some Text', 'center': { x: (P1.x + P2.x + P3.x + P4.x)/4,

我扫描了银行对账单的PDF(基于图像)。 Google vision API能够非常准确地检测文本,但它返回文本块,我需要逐行文本(银行交易)。
你知道怎么做吗?

我使用谷歌视觉API-文档文本检测来获取逐行数据。 返回的数据具有以下结构: 对于不同的API,结构可能会发生变化

我使用的方法是计算所有单词的中点

{
   '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)
在得到同一行中的单词列表之后。根据它们的X坐标对它们进行排序


如果有任何其他查询,请联系。

在Google Vision API中有一个方法
fullTextAnnotation
,它返回一个全文字符串,其中
\n
指定行的结尾,您可以尝试。

块是否包含换行符,例如“\n”?是。此外,我还有单词和边界框的坐标。聚类虽然繁琐,但可能是唯一的解决方案。一个更好的方法,而不是使用“Y公差”,是计算最小和最大Y点,并检查单词_2的范围是否在单词_1的范围内,反之亦然。如果是,则=>行合并。使用Y_公差,当图片不够水平时,您可能会遇到问题。Fair point@MarkusG。但问题是整个页面的字体大小可能不同。因此,Y点的最小值和最大值可能会在很大程度上波动。
word_1.center.y = 15
word_2.center.y = 18
word_3.center.y = 28
(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