python - 如何提高 python/tesseract 图像到文本的准确性?
问题描述
如何从某个区域抓取图像并正确使用 tesseract 转换为文本?我目前得到了这个:
img = ImageGrab.grab(bbox =(1341,182, 1778, 213))
tesstr = pytesseract.image_to_string(np.array(img), lang ='eng')
print (tesstr)
问题是它的翻译非常错误,因为它从中获取文本的区域是蓝色背景的红色,我该如何提高它的准确性?它试图从图像转换为文本的示例:
解决方案
- *问题是它翻译得非常错误,因为它从中获取文本的区域是蓝色背景的红色,我该如何提高它的准确性?*
您应该知道提高输出质量。您需要尝试列出的每种建议方法。如果仍然无法达到预期的效果,则应查看其他方法:
要获得所需的结果,您需要获取图像的二进制掩码。简单阈值和自适应阈值都不适用于输入图像。
获取二进制掩码
-
- 上采样并将输入图像转换为 HSV 颜色空间
-
- 设置较低和较高的颜色边界。
结果:
0.37 版本的 OCR 输出将是:
Day 20204, 16:03:12: Your ‘Metal Triangle Foundation’
was destroved!
代码:
import cv2
import numpy as np
import pytesseract
# Load the image
img = cv2.imread("b.png")
# Up-sample
img = cv2.resize(img, (0, 0), fx=2, fy=2)
# Convert to HSV color-space
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# Get the binary mask
msk = cv2.inRange(hsv, np.array([0, 0, 123]), np.array([179, 255, 255]))
# OCR
txt = pytesseract.image_to_string(msk)
print(txt)
# Display
cv2.imshow("msk", msk)
cv2.waitKey(0)
推荐阅读
- java - 反射方法调用缓存
- r - R中的MILP优化器
- flutter - 用手势调整和旋转小部件的大小
- c# - 自定义反序列化器以在属性中存储不同的对象
- python - 如何使用计数在样本中查找重复项并获得布尔输出
- wordpress - .htaccess 中的重定向冲突
- azure - 对 Azure Cosmos DB 中的 CreateItemAsync 和新 PartitionKey 感到困惑 - .NET Core
- c# - AvaloniaUI 如何从 TextBox 继承
- c++ - 如何将 std::map 构建到为派生类重载的函数
- android - 如何使用 ConsentSDK 正确设置 gdpr_consent?