Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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 如何从OCR图像中过滤纹理_Opencv_Image Processing_Ocr_Scikit Image_Leptonica - Fatal编程技术网

Opencv 如何从OCR图像中过滤纹理

Opencv 如何从OCR图像中过滤纹理,opencv,image-processing,ocr,scikit-image,leptonica,Opencv,Image Processing,Ocr,Scikit Image,Leptonica,我正在尝试对一些具有如下纹理的表单进行OCR: 该纹理会导致OCR程序忽略它,并将其标记为图像区域 我考虑使用形态学。带有星形的关闭操作结束时如下所示: 对于OCR来说,这个结果仍然不够好 当我手动擦除“pepper”并对图像进行自适应阈值处理时,如下所示在OCR上获得了良好的结果: 你对这个问题还有别的想法吗 感谢对于给定的图像,5x5中值滤波器的效果略好于闭合滤波器。从那里,具有自适应阈值的二值化可以去除更多的背景 无论如何,结果的质量将在很大程度上取决于图像,而完美的结果是无法实现的

我正在尝试对一些具有如下纹理的表单进行OCR:

该纹理会导致OCR程序忽略它,并将其标记为图像区域

我考虑使用形态学。带有星形的关闭操作结束时如下所示:

对于OCR来说,这个结果仍然不够好

当我手动擦除“pepper”并对图像进行自适应阈值处理时,如下所示在OCR上获得了良好的结果:

你对这个问题还有别的想法吗


感谢

对于给定的图像,5x5中值滤波器的效果略好于闭合滤波器。从那里,具有自适应阈值的二值化可以去除更多的背景

无论如何,结果的质量将在很大程度上取决于图像,而完美的结果是无法实现的


也许可以看看这个:(请参见ocr文档清理)。

背景模式非常规则且有方向性,因此傅里叶域中的过滤必须在这里做得很好。试试这个例子


使用GIMP的这种过滤的具体例子可以找到

考虑到您知道字体大小,您也可以考虑使用连接组件过滤,也许结合形态学操作。为了能够保留逗号,如果较小的连接组件靠近与您试图读取的字符大小相似的组件,请小心。

您可以控制哪些变量?例如,字体是否总是相同的,你是否总是在寻找数值,等等,什么是你可以接受的结果?我更喜欢通过尽可能消除纹理来解决它。原则上,字体总是相同的,在某些情况下会有字母或数字。我在OCR上将字符列为白名单,以避免在图像上进行模式匹配。谢谢你只有一个二进制输入吗?不仅如此,在这里你可以找到一个原始的区域。最终的目的是让它结构化。这很有帮助,谢谢。也许像大津的阈值那样的全局阈值效果更好。不幸的是,纹理水平在边缘上仍然很重要,而恒定的阈值并不是最好的选择。也许你可以在角色的第一个粗略位置后遮住不需要的区域。这就是我在正方形(5)中间带后得到的全局大津。也许现在我可以按照建议做一些连接组件过滤(尽管我不是很熟悉),因为canny边缘看起来很有希望。谢谢欢迎任何反馈。您可以根据blob大小进行筛选,但请注意,您将丢失点和逗号,并且在处理碎片字符时会遇到问题。我认为二值化图像上的精明边缘不会有任何帮助。