编辑:包括MTG卡的图片以供参考。http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=175263&type=card
答案 0 :(得分:1)
好的,在询问reddit编程论坛后,我想我找到了一个我要追求的答案:
tesseract的训练功能确实用于提高不寻常字体的速率,但这可能不是你成功率低的原因。 文本所处的环境控制得不好 - 卡片背景可以是五种颜色中的一种纹理加上工件和土地。 Tesseract在处理之前对图像进行灰度级处理,因此文本和背景之间的对比度不足。 您可以将卡片放入预处理器,将彩色区域静音为白色并增强单调。这应该会增加对比度,因此tesseract可以识别角色。
如果有人仍然认为上述路径是错误的开始,请说出来。
答案 1 :(得分:0)
我相信你在正确的轨道上进行预处理。
但是你需要同时进行预处理和训练Tesseract。
基本上,您想要获取标题文本,只有标题文本,以便Tesseract阅读。我建议你按照以下步骤操作:
如何创建基本的预处理功能,请参见YouTube视频Automatic MTG card sorting: Part 2 - Automatic perspective correction with OpenCV。另请参阅该系列的第三部分。
说到这里,你会遇到很多问题。如何处理拆分卡?你的算法会管理白色边框吗?如果卡片被旋转或倒置怎么办?仅举几例。
但即使你设法创建一个完美的预处理算法,你仍然需要训练Tesseract。这是因为卡上使用了特殊的文字字体(根据卡的年龄,这种字体恰好是不同的字体!)。
考虑卡“Kinjalli的来电者”。
http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=435169&type=card
注意“j”与“i”的相似程度。未经训练的Tesseract倾向于将它们混合起来。
考虑到这一切,我对你的回答是你需要对卡片图像进行预处理并训练Tesseract 。
如果您仍然感兴趣,我想建议您查看GitHub上的这个MTG卡阅读项目。这样你就不必重新发明轮子了。