Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用OpenCV检测表_Opencv_Computer Vision_Vision - Fatal编程技术网

用OpenCV检测表

用OpenCV检测表,opencv,computer-vision,vision,Opencv,Computer Vision,Vision,我经常处理扫描过的文件。这些论文包含一些表格(类似于Excel表格),我需要手动将它们输入计算机。为了使任务更糟,表可以有不同的列数。至少可以说,手动将它们输入Excel是很平常的 我想如果我能把一个程序放到OCR上,我可以节省一周的工作。是否有可能用OpenCV和OCR检测标题文本区域检测到检测到的图像坐标后面的文本 我可以借助OpenCV实现这一点,还是需要完全不同的方法 编辑:示例表实际上只是一个标准表,类似于您在Excel和其他电子表格应用程序中看到的,请参见下文 这个问题似乎有点老,但

我经常处理扫描过的文件。这些论文包含一些表格(类似于Excel表格),我需要手动将它们输入计算机。为了使任务更糟,表可以有不同的列数。至少可以说,手动将它们输入Excel是很平常的

我想如果我能把一个程序放到OCR上,我可以节省一周的工作。是否有可能用OpenCV和OCR检测标题文本区域检测到检测到的图像坐标后面的文本

我可以借助OpenCV实现这一点,还是需要完全不同的方法

编辑:示例表实际上只是一个标准表,类似于您在Excel和其他电子表格应用程序中看到的,请参见下文


这个问题似乎有点老,但我也在研究一个类似的问题,并得到了我自己的解决方案,我在这里解释

对于使用任何OCR引擎阅读文本,要获得良好的准确性有许多挑战,其中包括以下主要情况:

  • 由于图像质量差/背景区域中不需要的元素/斑点而存在噪音。这将需要一些预处理,如噪声去除,这可以很容易地使用高斯滤波器或正常中值滤波器方法完成。这些也可以在中找到

  • 图像方向错误:由于方向错误,OCR引擎无法正确分割图像中的线条和文字,从而导致精度最差

  • 行的存在:在进行单词或行分割时,OCR引擎有时还试图将单词和行合并在一起,从而处理错误的内容,从而给出错误的结果。 还有其他问题,但这些是基本问题
  • 在这种情况下,我认为扫描图像质量是相当好和简单的,下面的步骤可以用来解决问题

  • 简单的图像二值化将删除背景内容,只留下必要的内容,如图所示。
  • 现在我们必须删除在这种情况下是表格网格的线。这也可以通过使用连接的组件和移除大型连接组件来识别。因此,我们需要将最终图像输入到OCR引擎中,它将如下所示

  • 对于OCR,我们可以使用开源OCR引擎。我从OCR中得到以下结果:

    标题

    头球!校长2校长3

    行1单元格1行1单元格2行1单元格3

    行2单元格1行2单元格2行2单元格3

  • 正如我们在这里看到的,这个结果是相当准确的,但也存在一些问题,比如 头球应该是标题1,这是因为OCR引擎被误解了!和1。这个问题可以通过使用基于正则表达式的操作进一步处理结果来解决

  • 在对OCR结果进行后处理后,可以对其进行解析以读取行和列值


    在此情况下,还可以使用其字体信息对图纸标题、标题和正常单元格值进行分类

    是的,你可以。但是,除非有明确的约束条件,否则很难得到100%完美的结果。你能展示一下你扫描过的表格吗?@Miki谢谢,我加了一个例子。你能提供一两份扫描过的文件吗?扫描质量对最终结果有很大影响。问题有两个部分:1。识别和提取表2。OCR第一部分相对容易,你可以找到像这样的教程:OCR相对更难。根据我的经验,它工作可靠,仅在高质量扫描或打印字体图像的情况下,几乎不需要人工干预。使OCR引擎在许多方面成为可能。。从支持向量机到深度学习。你可以找到适合你的专业知识的教程。@Datageek,我也在做类似的东西。当每个单元格都有更多的单词时,如果您成功地将行转换为数据,您能否分享您的经验?感谢@flamelite提供的详细答案。你知道有什么开源代码可以做到这一点吗?您是否发布了您的解决方案?我不确定是否有任何特定的开源应用程序完成了上述所有步骤。我没有开发任何应用程序,只需单击一个按钮即可完成上述所有操作。您能否解释一下如何执行删除表格的第二步?您可以按此处所述获取连接组件中所有像素的列表,然后将这些像素的颜色转换为背景色。@flamelite,感谢您分享您的经验。我也在做类似的事情。您是否也处理过这样的场景:每个单元格都会有更多的单词,这会使计算单元格内容变得不可能,例如,当一行有8列有10个单词时?如果是的话,你能分享一下你是如何解决的吗?