Определить координаты XY конкретного текста - PullRequest
0 голосов
/ 20 декабря 2018

Я пытался написать автоматизацию для своих игр в Android с помощью плагинов Tasker и AutoTools.Что-то хорошо на этом этапе, но мне нужно сделать снимок экрана и интерпретировать его для своих нужд.

Это именно то, что мне нужно;

Некоторые тексты важны в играх иЯ хочу нажать на нее, где бы они ни находились на экране.Поэтому мне нужно OCR для этой задачи, я думаю.Я следую некоторым решениям, но терплю неудачу или застреваю каждый разПозвольте мне объяснить, какие решения я пробовал.

Следующее решение 1:

  • Я пробовал метод AutoIput (Tasker plugin) UIQuery, но не смог.Потому что UIQuery из AutoInput просто работает на Android-интерфейсе, я думаю.Не могу получить любую информацию из 3D-приложения, например игры.

Следующее решение 2:

  • Я ищу решение OCR и нахожу AutoTools (Taskerплагин)

  • Создайте задачу, сделайте снимок экрана и интерпретируйте его с помощью метода распознавания AutoTools.Это нормально.AutoTools OCR успешно прочитал текст из файла изображения.

  • Но я снова застрял.Потому что я успешно прочитал текст из файла изображения, но я не знаю xy координаты важного текста.

Что вы предлагаете на этом этапе?

Должен ли я изучать android и написать собственныйприложение?

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Я связываюсь с разработчиком, который пишет плагин Tasker "AutoTools".

Он / она добавляет некоторую функцию в плагин и решает ее.

Плагин, интерпретирует с предоставленным OCR изображение и возвращаетслова и центр xy позиций каждого слова сейчас.

Если кто-то ищет такую ​​функцию для Android и Tasker App, посетите эту тему форума ссылку.Это очень полезно.

0 голосов
/ 20 декабря 2018

Вы должны оформить 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

            }
        }
    }
}
...