【发布时间】:2020-01-27 17:17:57
【问题描述】:
我在 DataFrame 中有来自 Tesseract OCR 的数据。此输出中的一列表示作为 Tesseract 输出的单个文本单词的 OCR 结果中的置信度分数。但是,默认情况下,Tesseract 难以识别手写字符。我想采取一种方法,我使用 Tesseract 提供的 也是 的边界框信息来捕获低置信度单词周围的框,检查它们是否是手写的,并使用不同的模型来分类什么手写文字说明。所以我的 OCR 的 DataFrame "Hello world, I am Zac!" 其中 "I am Zac!" 是手写的可能看起来像:
conf top left width height text
1 90.0 100 50 67 14 Hello
2 92.0 100 60 67 14 world,
3 54.0 100 65 21 13 l
4 32.0 100 67 29 12 @n;
5 0.0 100 71 37 14 2ao!
6 90.0 100 77 36 12 text
...
现在我的实际数据有很多行(每张图片很容易超过一千,有几十张图片),所以使用.iterrows() 可能效率低下,我不确定。我需要选择的是带有conf < 60 的所有连续 行,只要连续多行。我还需要分别选择所有这些连续的低置信行组,因为我需要使用top、left、width 和height 值来查找所有单词的边界框,将这些框加在一起以捕获一个大框中的所有单个框,并将该新框传递给模型以预测笔迹。因此,从示例中,我想选择:
conf top left width height text
3 54.0 100 65 21 13 l
4 32.0 100 67 29 12 @n;
5 0.0 100 71 37 14 2ao!
我可以选择conf 低于我的阈值的所有行,但我想知道是否有更有效的方法来选择符合此条件的连续数据行,因为如果我选择所有值低置信度,然后我必须迭代以找到至少有 2 个(多个)连续低置信度值的所有行组,然后我必须遍历所有这些选择以获取它们的框信息,并做对于每个文档的每一页,这似乎在计算上很费力。
任何与问题相关的建议或建议(即使建议是做我想做的事情的更好方法)将不胜感激。
【问题讨论】:
标签: python pandas dataframe ocr tesseract