tesseract 可以针对非字体符号进行训练吗?

Can tesseract be trained for non-font symbols?

我很好奇如何才能更可靠地识别纸牌图像的价值和花色。这里有两个例子:

图像中可能有一些噪音,但我有一个大型图像数据集可用于训练(大约 10k png,包括所有值和花色)。

我可以可靠地识别我手动分类的图像,如果我有一个已知的使用哈希方法的精确匹配。但是由于我是根据图像的内容对图像进行哈希处理,所以最轻微的噪音都会改变哈希值并导致图像被视为未知。这就是我希望通过进一步的自动化可靠地解决的问题。

我一直在查看关于训练 tesseract 的 3.05 文档: https://github.com/tesseract-ocr/tesseract/wiki/Training-Tesseract#automated-method

tesseract 只能用字体中的图像进行训练吗?或者我可以用它来识别这些牌的花色吗?

我希望我可以说此文件夹中的所有图像都对应于 4c(例如上面的示例图像),并且 tesseract 会在该图像的任何未来实例中看到相似性(无论噪声如何)并且读作 4c。这可能吗?这里有人有这方面的经验吗?

这一直是我对此的非超正方体解决方案,直到有人证明有更好的方法。我已经设置:

将这些送到 运行ning 是最困难的部分。接下来,我使用我的数据集来训练一个新的 caffe 网络。我将我的数据集准备成一个单一的深度文件夹结构:

./card
./card/2c
./card/2d
./card/2h
./card/2s
./card/3c
./card/3d
./card/3h
./card/3s
./card/4c
./card/4d
./card/4h
./card/4s
./card/5c
./card/5d
./card/5h
./card/5s
./card/6c
./card/6d
./card/6h
./card/6s
./card/7c
./card/7d
./card/7h
./card/7s
./card/8c
./card/8d
./card/8h
./card/8s
./card/9c
./card/9d
./card/9h
./card/9s
./card/_noise
./card/_table
./card/Ac
./card/Ad
./card/Ah
./card/As
./card/Jc
./card/Jd
./card/Jh
./card/Js
./card/Kc
./card/Kd
./card/Kh
./card/Ks
./card/Qc
./card/Qd
./card/Qh
./card/Qs
./card/Tc
./card/Td
./card/Th
./card/Ts

在Digits中,我选择了:

  1. 数据集选项卡
  2. 新数据集图像
  3. 分类
  4. 我把它指向我的卡片文件夹,例如:/path/to/card
  5. 我根据此处的讨论将验证百分比设置为 13.0%:
  6. 创建数据集后,我打开了模型选项卡
  7. 选择我的新数据集。
  8. 选择 Standard Networks 下的 GoogLeNet,让它继续训练。

我这样做了好几次,每次我在数据集中都有新图像。每个学习课程需要 6-10 个小时,但在这个阶段,我可以使用我的 caffemodel 以编程方式估计每张图像的预期内容,使用以下逻辑: https://github.com/BVLC/caffe/blob/master/examples/cpp_classification/classification.cpp

结果是卡片(2c、7h 等)、噪音或 table。任何准确度大于 90% 的估计都极有可能是正确的。最新的 运行 正确识别了 400 张图像中的 300 张,只有 3 个错误。我正在向数据集添加新图像并重新训练现有模型,进一步调整结果准确性。希望这对其他人有价值!

虽然我想要这里的高级步骤,但感谢 David Humphrey 和他的 github post,我真的建议您阅读并尝试一下,如果您是有兴趣了解更多:https://github.com/humphd/have-fun-with-machine-learning