【问题标题】:Extracting text from scanned engineering drawings从扫描的工程图纸中提取文本
【发布时间】:2018-01-19 03:17:24
【问题描述】:

我正在尝试从扫描的技术图纸中提取文本。出于保密原因,我无法发布实际的绘图,但它看起来与this 相似,但形状中的文本更忙。由于字母相互接触以及周围的边框/符号存在问题,因此问题非常复杂。

我发现了一篇有趣的论文,它正是这样做的,名为“Detection of Text Regions From Digital Engineering Drawings”,作者是 Zhaoyang Lu。它位于付费墙后面,因此您可能无法访问它,但本质上它主要通过两个步骤尝试从图像中删除所有非文本内容:

1) 擦除线性组件,包括长和短的孤立线

2) 根据笔画连通分量的分析擦除非文本笔画

什么样的 OpenCV 函数有助于执行这些操作?我宁愿不从头开始写一些东西来做这些,但我怀疑我可能不得不这样做。

我尝试使用基于模板的方法来尝试隔离文本,但由于图形之间的文本位置未完全规范化(即使在同一个项目中),它无法检测到超过第一个扫描图形的文本.

【问题讨论】:

  • 请问您是否找到了可以轻松应用的可行解决方案?谢谢
  • 现在面临着类似的情况。上述问题有解决办法吗?

标签: python opencv image-processing ocr tesseract


【解决方案1】:

我正在解决类似的问题。技术绘图是一个问题,因为 OCR 软件主要尝试查找文本基线,而绘图工件(线条等)阻碍了该方法。在您指定的图中,没有多少字符相互接触。所以我建议将图像分解成连续的(黑色)像素,然后单独扫描它们。连续区域的高度还应指示连续区域是文本还是图形的一部分。要将图像分解成连续的像素,请使用洪水填充算法,并且对于扫描 Tesseract 做得很好。

【讨论】:

    【解决方案2】:

    显然我从来没有尝试过这个特定的任务,但是如果图像真的看起来像你给我看的那张,我会从删除所有垂直和水平线开始。这可以很容易地完成,只需为所有强度大于某个 N 值的像素设置宽度阈值,然后查看垂直于假设线方向的像素阈值数量。如果它看起来像一条线,请删除它。

    更优雅,也许更好的是对线条和圆圈进行霍夫变换并以这种方式删除这些元素。

    您也可以尝试一些基于 FFT 的过滤,但我不太确定。

    我从未使用过 OpenCV,但我猜它可以做我提到的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多