我正在尝试从扫描的技术图纸中提取文本。出于保密的原因,我不能发布实际的绘图,但它看起来与this相似,但在形状中有更多的文本。这个问题相当复杂,因为字母彼此接触,以及它周围的边框/符号。
我发现了一篇有趣的论文,名为“从数字工程图纸中检测文本区域”,作者是赵阳。它在付费墙后面,所以你可能无法访问它,但本质上它试图通过两个主要步骤从图像中删除除文本以外的所有内容:
1)删除线性组件,包括长和短的隔离线
2)通过分析笔画的连通部分来删除非文本笔画
哪种OpenCV函数可以帮助执行这些操作?我宁愿不从头开始写一些东西来做这些事情,但我怀疑我可能不得不这样做。
我曾尝试使用基于模板的方法来隔离文本,但由于文本位置在图形之间并不完全标准化(即使在同一项目中),因此它无法检测第一个扫描图形之后的文本。
发布于 2019-03-24 08:55:21
我正在解决一个类似的问题。技术图纸是一个问题,因为OCR软件大多试图找到文本基线,而绘图工件(线条等)会阻碍这种方法。在您指定的图形中,相互接触的字符不多。因此,我建议将图像分解为连续的(黑色)像素,然后分别扫描这些像素。连续区域的高度还应指示连续区域是文本还是图形的一部分。要将图像分解为连续的像素,请使用泛洪填充算法,对于扫描的Tesseract来说,这项工作做得很好。
发布于 2017-08-11 02:52:47
显然,我从来没有尝试过这个特定的任务,但是,如果图像真的像你展示给我的那样,我会从删除所有的垂直线和水平线开始。这很容易做到,只需为强度大于某个N值的所有像素设置一个宽度阈值,然后查看垂直于假设线方向的像素阈值数量。如果它看起来像一条线,就把它擦掉。
更优雅,也许更好的方法是对直线和圆进行hough变换,并以这种方式删除这些元素。
你也可以尝试一些基于FFT的过滤,但我不是很确定。
我从来没有用过OpenCV,但我猜它可以做我提到的事情。
https://stackoverflow.com/questions/45621066
复制相似问题