检测特定文本的x y坐标

时间:2018-12-20 19:01:47

标签: android ocr tasker

我尝试使用Tasker和AutoTools插件为Android游戏编写自动化程序。到现在为止还可以,但是我需要捕获屏幕截图,并需要根据我的需要对其进行解释。

这正是我所需要的;

某些文本在游戏中很重要,我想在屏幕上的任何位置单击它。因此,我认为此任务需要OCR。我遵循一些解决方案,但每次都会失败或卡住。让我解释一下我尝试过的解决方案。

以下解决方案1:

  • 我尝试了AutoInput(Tasker插件)UIQuery方法,但失败了。因为我认为AutoInput的UIQuery只能在android UI上工作。无法从游戏等3D应用中获取任何信息。

以下解决方案2:

  • 我搜索OCR解决方案并找到AutoTools(Tasker插件)

  • 创建一个任务并截图并使用AutoTools OCR方法对其进行解释。没关系。 AutoTools OCR成功读取了图像文件中的文本。

  • 但是我再次陷入困境。因为我成功地从图像文件中读取了一个文本,但是我不知道重要文本的x y坐标。

这时有什么建议?

我应该学习android并编写自己的应用程序吗?

2 个答案:

答案 0 :(得分:2)

您应该检出ocr-reader Google示例。它运行起来很快,而获得所需的东西也不难。您需要做的是修改示例附带的OcrDetectorProcess,将文本分解成单个单词,然后可以轻松地计算每个单词的边界和中心点。这是一些入门的代码:

@Override
public void receiveDetections(Detector.Detections<TextBlock> detections) {
    mGraphicOverlay.clear();

    // Get all detected items.
    SparseArray<TextBlock> items = detections.getDetectedItems();
    for (int i = 0; i < items.size(); ++i) {
        TextBlock item = items.valueAt(i);

        // Get individual lines in each item.
        List<Line> lines = (List<Line>) item.getComponents();
        for (Line line : lines) {

            // Get individual "words" in each line.
            List<Element> elements = (List<Element>) line.getComponents();
            for (Element e : elements) {

                // Now get the position of each element.
                Rect rect = e.getBoundingBox();
                Point[] points = e.getCornerPoints();
                int centerX = (points[0].x + points[2].x) / 2;
                int centerY = (points[0].y + points[2].y) / 2;

                // DO STUFF

            }
        }
    }
}

答案 1 :(得分:0)

我与编写“ AutoTools” Tasker插件的开发人员联系。

他/她在插件中添加了一些功能并对其进行了解决。

插入,使用OCR授予的图像进行解释,现在返回单词和每个单词的xy中心。

如果有人使用Android和Tasker App的此功能进行搜索,请访问this forum topic链接。它非常有用。