首页 > 解决方案 > 在预处理图像后检测白色文本以使用 OCR + tesseract 4 (python) 提取它

问题描述

我正在尝试使用 tesseract OCR 从图像(例如在线美容产品图像)中提取文本,但大多数情况下无法检测到白色文本。挑战在于文本是混合的(一些文本是白底黑字,另一些是黑底白字)有没有办法克服这个问题并提高 OCR 检测白色文本的能力?

请在预处理后找到附加的图像(OCR 作为输入的图像)

OCR 输入图像

文本提取的结果是这样的:

a : 如果 3 é ue a。. ' 坐了一个如果 | 啊啊啊

湿疹手修复霜。BRe ie ccm Sec mease gern

pe COR EgencuCes De Uae ene ai Ml.

TS Qiocoar 4" : 3 唉, : e

Risted-&recoiniendeda | 一个PEC Ry j 。

还有一种方法可以提取圆圈中的文本(弯曲文本)吗?

标签: python-3.xocrtesseract

解决方案


对于白色文本,您需要对图像进行预处理。以稳健的方式做到这一点非常困难,因为人类擅长检测文本。您的黑白相间可能仍然很容易 - 只需估计本地背景并对其进行异或。当您使用空心字体或本地背景为渐变的字母时,事情会变得更加困难。没有简单的答案;可能有必要尝试一些转换并查看哪些转换提供合理的输出。

“湿疹”前面的垃圾输入很可能不是由白色文字引起的,而是由于它是一个带有高度弯曲文字的标志。大多数普通文本是从左到右以直线书写的。因此,OCR 引擎合理地期望下一个字符立即在右侧,并且处于相同的方向。对于“o”,这当然无关紧要,但“p”和“d”只是方向不同。所以有必要告诉 Tesseract。幸运的是,圆圈是一个很常见的例子。Tesseract 有一个 Page Segmentation Mode 9,正好用于圆圈中的单词。


推荐阅读