【发布时间】:2021-05-04 20:55:04
【问题描述】:
我正在使用 discord.py 为视频游戏暗黑破坏神 2 构建一个不和谐机器人。其中一项功能需要机器人从暗黑破坏神 2 屏幕截图中提取项目的名称和属性。我目前正在为此使用 pytesseract,但我没有得到足够的结果。
我裁剪了项目的一部分(代码需要稍后自动执行此操作)并在预处理后得到它(参见下面的代码):
那是对手动裁剪的图像进行预处理和提取的代码:
def grayscale(image):
return cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
def threshold(image):
return cv2.threshold(image, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
def dilate(image):
kernel = np.ones((5,5),np.uint8)
return cv2.dilate(image, kernel, iterations = 1)
image = cv2.imread('item.png')
scale = 10
w = int(image.shape[1] * scale)
h = int(image.shape[0] * scale)
dim = (w, h)
image = cv2.resize(image, dim, interpolation = cv2.INTER_AREA)
image = grayscale(image)
image = threshold(image)
image = dilate(image)
custom_config = r'--oem 3 --psm 6 -c tessedit_char_whitelist=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ%+'
print(pytesseract.image_to_string(image, config=custom_config))
它给了我这些结果:
s灵性
病房
ITamLavar66 搜索
Daryusa4if Oe
有机会获得 BLece7a%
耐用性 Blep5
要求强度76
拉吉娜DLavat66
6%CHANCETSCASTLEVEL8FADEWHENSTRUCE
926%PFASTERBLeckRATE
增加 29% 的 BLeckiING2 机会
失去 t142%PNHANCEDDEFENSE a ALLRESISTANCES93i
哎呀眼科
ETHEREACANTBEREPAIRED
而且我不确定如何继续获得更好的结果。 OCR 的字体和分辨率肯定很难(您可以在结果中看到 OCR 尤其是 5 和 6 存在问题)。以下是有关该问题的一些进一步指示:
- 我确实有暗黑破坏神 2 字体 (Exocet),所以我可以训练自己的模型 (?)
- 我确实有所有可能的项目和属性的列表,以进一步将结果列入白名单(但是,我需要我的机器人功能的确切数字)
- 我还尝试了另一个库 (keras-ocr),但没有得到更好的结果
【问题讨论】:
标签: python opencv ocr screenshot python-tesseract