训练 Tesseract 来标记图标

Train Tesseract to label icons

我正在尝试为 Tesseract 4.0 创建训练数据以识别屏幕截图中的图标(例如、评论、分享、保存)。这是示例屏幕截图:

我想微调 Tesseract 以实现如下输出:
喜欢 147
评论 29
保存 5
操作
58
操作
配置文件访问 24
关注 2

我已按照 https://pretius.com/how-to-prepare-training-files-for-tesseract-ocr-and-improve-characters-recognition/

中所述的步骤进行操作

我修改了盒子文件如下:
- 心:喜欢
- 对话泡泡:评论
- 书签:已保存
- 箭头:分享

但是,最终的训练数据未能如我所愿的读取图标。我遇到的错误示例是 'Like is not in unicharset'。在为图标创建 unicharset 时我必须做一些不同的事情吗?

我已经弄明白了。框编辑器需要单个 letter/number 而不是完整的单词。我使用 Unicode 字符来解释我的图标。步骤如下:

  1. 裁剪所有您希望 Tesseract 检测的目标图标并将其保存在一个名为(在我的例子中)own.std.exp0.png
  2. 的文件中
  3. 使用命令 'tesseract own.std.exp0.png own.std.exp0 makebox'
  4. 创建盒子文件
  5. 打开jTessBoxEditor,在char栏输入unicode。支持的 unicode 列表可以在程序字符映射 (https://sites.psu.edu/symbolcodes/windows/charmap/) 下找到。示例:对于心形符号,我使用了 U+2665。请注意,不支持某些 unicode。它显示为空白方块。因此,请继续尝试,直到找到有效的方法。我最终编辑的框文件如下所示。
  6. 创建最终的训练文件 own.trainneddata(可以按照此处 https://medium.com/apegroup-texts/training-tesseract-for-labels-receipts-and-such-690f452e8f79 或使用 jTessBoxEditor 进行训练)。
  7. 使用 lang='own+eng' 将 own.traineddata 复制到目录 Tesseract/tessdata 和 运行 Tesseract。我使用了 pytesseract,输出如下: