TLDR
我相信你在正确的轨道上进行预处理。
但是您需要同时进行预处理和训练 Tesseract。
预处理
基本上,您想要获取标题文本,并且只有标题文本,以便 Tesseract 读取。我建议您按照以下步骤操作:
- 识别卡片的边界。
- 切出标题区域以进行进一步处理。
- 将图像转换为黑白。
- 使用轮廓来识别确切的文本区域,并将其裁剪掉。
- 将您获得的图像发送到 Tesseract。
YouTube 视频自动 MTG 卡片分类:第 2 部分 - 使用 OpenCV 进行自动透视校正显示了如何创建基本预处理。还可以查看该系列的第三部分。
话虽如此,您会遇到许多问题。如何处理拆分卡?您的算法会管理白色边框吗?如果卡片被旋转或倒置怎么办?仅举几个。
培训需求
但即使你设法创建了一个完美的预处理算法,你仍然需要训练 Tesseract。这是由于卡片上使用了特殊的文本字体(根据卡片的年龄,字体恰好是不同的!)。
考虑卡片“Kinjalli 的来电者”。
http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=435169&type=card
请注意“j”与“i”的相似程度。未经训练的 Tesseract 往往会混淆它们。
结论
考虑到所有这些,我对您的回答是,您需要对卡片图像进行预处理并训练 Tesseract。
如果你仍然感兴趣,我建议你看看 GitHub 上的这个 MTG 读卡项目。这样你就不必重新发明轮子了。
https://github.com/klanderfri/ReadMagicCard