【问题标题】:OpenCV Text Block DetectionOpenCV 文本块检测
【发布时间】:2014-02-05 06:26:44
【问题描述】:

我需要使用 OpenCV 来检测图像中的所有文本块,以准备将它们发送到 OCR。 根据我对 OpenCV 的有限知识,这是我可能的解决方案之一,但我不确定如何将其变成真正的解决方案。

  1. 使用 findContours 检测字符的轮廓
  2. 使用层次结构过滤字符
  3. 在过滤区域上放置边界矩形
  4. 组边界矩形以包含文本块

这行得通吗?如果是这样,我该如何“执行”这个?扫描可能有多个文本块,我在 iOS 上这样做。

这适用于名片之类的东西吗?那可能每个角落都有文字块?我只需要扫描文本并将组/块一起扫描。

【问题讨论】:

    标签: objective-c opencv text


    【解决方案1】:

    我最近使用以下方法提取文本 blob:

    1. 使用 MSER 算法检测关键点。我发现它很适合找字母。
    2. (可选)过滤掉“小”和“非常大”的(size 属性)。
    3. 将关键点分组为相邻字母的组 - 相邻性由启发式定义,即两个关键点必须具有相似的大小并且彼此靠近(相对于其大小的距离)。
    4. 取每个组的边界框,这是一个候选词或字符块。
    5. 将其发送到 OCR(我使用 Tesseract OCR 库获得了很好的结果)。

    上述方法对于干净背景上的文本效果很好,但是如果还有很多非文本艺术品,它确实会检测到非文本斑点,因为唯一的预 OCR 过滤是“相似大小和附近”指标.

    如果您正在扫描名片,它可能就足够了。

    您需要为您的域校准“附近”和类似大小的启发式方法。

    对于“相似大小”,我使用了 3/5 和 5/3 之间的关键点大小比率,“附近”定义为关键点之间的距离小于两者中最小关键点大小的 7/4 倍。

    在自然图像中,您需要一种更稳健的方法。为此,我可以推荐以下论文:

    Robust Text Detection in Natural Images with MSER

    【讨论】:

    • 谢谢,您有不介意与我分享的项目或示例吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 2017-01-02
    • 2014-02-21
    • 1970-01-01
    • 2011-08-17
    • 2017-02-25
    • 1970-01-01
    相关资源
    最近更新 更多