文字识别-Tesseract.js

想做一个星系的辅助工具,由于安卓不太熟悉,先尝试一下文字解析和核心的算法

开始

  • 目前基本的目标就是从图片中解析出每一行和每一列的数字,然后根据其计算出方块的位置


  • 两个思路,第一种是获取到当前游戏的截图,从截图中识别出数字。第二种是能否借助无障碍功能直接读取到屏幕文本。本质都是做成一个辅助工具。

解析文字

  • 借助这个工具: Tesseract.js, 先识别一下文字。官方已经提供了例子,改一下路径就可以了。
const { createWorker } = require('tesseract.js');

const worker = createWorker({
  logger: m => console.log(m), // Add logger here
});

(async () => {
  await worker.load();
  await worker.loadLanguage('eng');
  await worker.initialize('eng');
  const { data: { text } } = await worker.recognize('./game.png');
  console.log(text);
  await worker.terminate();
})();
  await worker.setParameters({
    "tessedit_char_whitelist": '0123456789'
  })
  • 修改后大部分数字识别准确,但是图中方框,三角这些有时会被识别为数字,指定识别的矩形区域,消除一下识别干扰

  • 试了行, 列划分,甚至将其划为单个数字块,精度还是不够,并且划分为单个字符后由于只计算并指定了位置,实际每次识别还是要读取整个图片

  • 数字识别准确,但数字之间没有空格,需要更精确的字符位置来分开粘在一起的数字