python-3.x - OpenCV - 图像文本增强 - OCR 预处理
问题描述
我的目标是预处理图像(从视频中提取)以进行 OCR 检测。文本始终为黑色,如下例所示:
我尝试使用年龄框架和 HVS 掩码:
cv2.accumulateWeighted(frame,avg2,0.005)
#res2 = cv2.convertScaleAbs(avg2)
# Convert BGR to HSV
hsv = cv2.cvtColor(imgray, cv2.COLOR_BGR2HSV)
# define range of black color in HSV
lower_val = np.array([0,0,0])
upper_val = np.array([179,255,127])
# Threshold the HSV image to get only black colors
mask = cv2.inRange(hsv, lower_val, upper_val)
# invert mask to get black symbols on white background
mask_inv = cv2.bitwise_not(mask)
cv2.imshow("Mask", mask)
但结果还不够好。寻找一些可能的解决方法。谢谢
解决方案
这些类型的图像,其中文本实例无法轻易分离,tesseract 不会提供良好的结果。如果您想从文本实例清晰的文档/纸张/pdf 等中提取文本,Tesseract 是一个不错的选择。
对于您的问题,我建议您分别遵循文本检测和文本识别模型。对于文本检测,您可以使用最先进的模型,例如东部文本检测器,它能够在困难的图像中定位文本。它将在图像中的文本周围生成边界框,然后可以将该框提供给另一个文本识别模型,该模型将执行实际的识别任务。
对于文本检测:East 或任何其他最新模型对于文本识别:基于 CRNN 的模型
请尝试实现上述模型,我相信它们的性能会比你从 Tesseract 得到的更好:)
BR!
推荐阅读
- php - 如何从完整的图像 url 检查图像是否存在于存储文件夹中或不存在于 laravel
- c++ - 解析两种格式的文件并解析行
- php - 混合 laravel 路由组
- javascript - 页面加载时图像的大小不正确 - 太小
- amazon-web-services - 如何在 Amazon Athena 中创建多个表
- javascript - 如何在浏览器上注销用户已关闭。即清除存储在localStorage中的JWT令牌(不在页面刷新时)
- php - PHP:使用 array_merge() 的替代方法在两个或多个范围内定义一个变量?
- sql - 如何在 SQL 查询中实现序列
- python - 如何安装保险丝
- java - 如何用我的主类修复我的 loadData 方法