python-3.x - 在预处理图像后检测白色文本以使用 OCR + tesseract 4 (python) 提取它
问题描述
我正在尝试使用 tesseract 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 。
还有一种方法可以提取圆圈中的文本(弯曲文本)吗?
解决方案
对于白色文本,您需要对图像进行预处理。以稳健的方式做到这一点非常困难,因为人类擅长检测文本。您的黑白相间可能仍然很容易 - 只需估计本地背景并对其进行异或。当您使用空心字体或本地背景为渐变的字母时,事情会变得更加困难。没有简单的答案;可能有必要尝试一些转换并查看哪些转换提供合理的输出。
“湿疹”前面的垃圾输入很可能不是由白色文字引起的,而是由于它是一个带有高度弯曲文字的标志。大多数普通文本是从左到右以直线书写的。因此,OCR 引擎合理地期望下一个字符立即在右侧,并且处于相同的方向。对于“o”,这当然无关紧要,但“p”和“d”只是方向不同。所以有必要告诉 Tesseract。幸运的是,圆圈是一个很常见的例子。Tesseract 有一个 Page Segmentation Mode 9,正好用于圆圈中的单词。
推荐阅读
- asp.net-core - ASP.NET Core 将 Web 应用程序部署到 aws ubuntu 服务器 18。除了没有 css、js、jquery 或引导程序之外,一切正常
- asp.net-mvc - 调试模式下的 ASP.NET 针对本地 SQL Server 2019 数据库获取随机超时
- python - 如何在python中更改按钮颜色
- python - 如何根据 Python Pandas 中的其他列在 DataFrame 中创建新列?
- python-3.x - Jupyter Notebook 如何为 datepicker 分配默认值并对所选日期内的时间进行排序?
- python - 通过脚本或终端运行时的scrapy模块路径差异
- php - Laravel 8重定向回来,消息在刀片模板中不起作用
- wordpress - 检索并放置在表单字段中的自定义维度
- wso2 - 为什么我的 WSO2 APIM APIKeyValidator 以 Erro 响应?
- android - Google ArCore Sceenform - 在运行时加载时使用 glTF 或 GLB 的 ModelRenderable 会导致应用程序崩溃