unilm LayoutReader:如何从OCR结果(如Tesseract)获取从左到右和从上到下的bboxes?

t8e9dugd  于 5个月前  发布在  其他
关注(0)|答案(6)|浏览(78)

描述

我正在使用的模型(LayoutReader):感谢您的工作,我尝试使用您预训练的模型和Tesseract的OCR结果进行推理,但遇到了一些问题:

  • 输入的bboxes应该是从左到右、从上到下,如何使用bboxes坐标实现这一点?
  • 我尝试使用左上角坐标(x,y)对bboxes进行排序,例如 bboxes = sorted(bboxes, lambda x: [x[0], x[1]]) ,但发现结果比直接使用Tesseract提供的bboxes顺序要差得多。
63lcw9qa

63lcw9qa1#

你正在使用哪个数据集?

8fq7wneg

8fq7wneg2#

你使用的是哪个数据集?
我并没有使用任何数据集,我只是使用Tesseract从图像中获取OCR结果,并尝试使用提供的预训练模型进行推理。

fcg9iug3

fcg9iug33#

@animebing,LayoutReader是为使用您自己的数据集或ReadingBank进行模型训练而设计的。最好为您的领域提供标记数据并为应用程序训练一个模型。

6mzjoqzu

6mzjoqzu4#

你的意思是每个数据集都需要自定义左-右-上-下吗?但是如果我想使用Tesseract获取OCR结果来评估预训练模型在真实世界图像中的表现,我应该如何组织bboxes以满足预训练模型的左-右-上-下?

hwamh0ep

hwamh0ep5#

LayoutReader是按照从左到右、从上到下的顺序进行训练的,因此在实际应用中建议采用类似的设置。我猜想你提到的差异可能是因为在实际应用中bboxes没有很好地对齐,这意味着即使两个词在同一行,y轴上的差异也可能非常小。

我假设bboxes表示为[x0, y0, x1, y1],所以如果你使用bboxes = sorted(bboxes, lambda x: [x[0], x[1]])对单词进行排序,实际上你是按照列优先的顺序对单词进行排序的。

所以请仔细检查你的代码,并在对bboxes进行排序时尝试一些软排序机制。然后查看结果。

gjmwrych

gjmwrych6#

LayoutReader是按照从左到右、从上到下的顺序进行训练的,因此建议在实际应用中也采用类似的设置。我猜想您提到的差异可能是因为在实际应用中bboxes没有很好地对齐,这意味着即使两个单词在同一行,y轴上也可能存在非常小的差异。
此外,我假设bboxes表示为[x0, y0, x1, y1],因此如果您使用bboxes = sorted(bboxes, lambda x: [x[0], x[1]])对单词进行排序,实际上是在按列优先的顺序对单词进行排序。
所以请仔细检查您的代码,并在对bboxes进行排序时尝试一些软排序机制。然后查看结果。

相关问题