Java - Orientación sobre como hacer realidad una idea

 
Vista:

Orientación sobre como hacer realidad una idea

Publicado por Ivan (3 intervenciones) el 31/10/2020 14:11:05
Hola,
Necesito un programa que haga lo siguiente, alguien podría orientarme en como hacerlo?. Podría hacerse Java o mejor en otro lenguaje? Hay ya algun programa comercial que haga esto?.
Muchas gracias.

Necesito un programa que capture una zona del escritorio y que lea las palabras que apareceran alli.
Dependiendo de la palabra que salga tendra que ir a otro punto de la pantalla y clicar o hacer doble click automaticamente.
Me gustaría que las palabras y el sitio donde clicar fueran configurables por mi. Tambien me gustaría poder abrir variar copias del programa a la vez para capturar distintas partes del escritorio.

Seguro que me dejo muchas cosas que necesitas saber, preguntame lo que necesites.
Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 166
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Orientación sobre como hacer realidad una idea

Publicado por Cesar (52 intervenciones) el 31/10/2020 14:39:42
Hola.

Que capture la pantalla (o una zona), y de click, si existen varios (yo maneje uno en un empleo, pero no recuerdo el nombre).

Como hacer un programa que realice eso, no se hacerlo, pero podrías basarte en el fuente de algun programa de captura de video, que permita grabar la pantalla (yo empleo OBS Studio, es Open Source).

Ya capturando la pantalla, solo debes enviar el evento click, a las coordenadas de la misma.

Lo que quieres hacer, es lo que hacen básicamente los bots (robots).

Es algo relativamente parecido al web scraping.

Para que lea la pantalla, tendrás que aplicar OCR a la imagen de la misma. Esta parte es fácil.

Resumen, lo único complicado que veo, es la captura de la pantalla.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Orientación sobre como hacer realidad una idea

Publicado por Ivan (3 intervenciones) el 31/10/2020 17:10:40
Gracias por el consejo.
Una pena que no te acuerdes de los nombres, yo he estado buscando pero no encuentro ninguno que lo haga.
Haber si alguien más me anima y me puede decir alguno.
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Orientación sobre como hacer realidad una idea

Publicado por Costero (148 intervenciones) el 01/11/2020 04:12:05
Si es posible de hacerlo.
Puedes configurar todos las coordinadas de abajo. Lo hice asi para simplificar.

Tienes que bajar la libreria Tess4J que hace el OCR desde aqui https://sourceforge.net/projects/tess4j/

o aqui: https://search.maven.org/search?q=g:net.sourceforge.tess4j%20a:tess4j

Tienes que bajar de aqui la data entrenada para tu lenguaje. En tu caso seria Espan~ol. => spa.traineddata

aqui el enlance: https://github.com/tesseract-ocr/tessdata

Y ponerlo en src/main/resources/tessdata, como el codigo de abajo. En el ejemplo yo uso Ingles. eng.traineddata

En ejemplo de abajo toma un area de las coordinadas pasadas.
Toma una imagen del area y lo salva en un file.
Lee el file OCR, busca si encontro la palabra "waterfox" que es mi browser. Si lo encuentra una coordinada es pasada para que mouse double click.

Ya eso es todo.

Suerte.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
 
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.event.InputEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
 
public class ScreenCapture {
    public static void main(String[] args) throws IOException, AWTException, TesseractException {
        // An area of the screen ...
        Rectangle rectangle = new Rectangle(100, 100, 500, 500);
        String path = "/temp/capture/screenCapture.bmp";
        capture(path, rectangle);
        String result = ocrImage(path);
        System.out.println("==> \n" + result);
 
        if (result.contains("waterfox")) {
            System.out.println("Go to next place");
            clickArea(265, 505);
        }
 
    }
 
    private static void capture(String path, Rectangle rectangle) throws AWTException, IOException {
        // Full screen ...
        // Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
 
        BufferedImage capture = new Robot().createScreenCapture(rectangle);
        createDir(path);
        ImageIO.write(capture, "bmp", new File(path));
    }
 
    private static String ocrImage(String path) throws TesseractException {
        File image = new File(path);
        Tesseract tesseract = new Tesseract();
        tesseract.setDatapath("src/main/resources/tessdata");
        tesseract.setLanguage("eng");
        tesseract.setPageSegMode(1);
        tesseract.setOcrEngineMode(1);
        String result = tesseract.doOCR(image);
        return result;
    }
 
    private static void clickArea(int x, int y) throws AWTException {
        Robot robot = new Robot();
        robot.setAutoDelay(100);
        robot.mouseMove(x, y);
        // first click
        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
        robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
        // second click
        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
        robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
    }
 
    private static boolean createDir(String path) {
        String dir = path.substring(0, path.lastIndexOf("/"));
        File file = new File(dir);
        return file.mkdirs();
    }
}o
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Orientación sobre como hacer realidad una idea

Publicado por Ivan (3 intervenciones) el 01/11/2020 07:31:31
Muy interesante. Podrías programármelo con una interfaz gráfica y que pudiera apuntar al sitio con un puntero y no tener que meter las coordenadar a mano? y te hago una donación de 30€ por las molestias?
The income language would be in english. Maybe we can talk in english if you like.
Thanks.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar

Orientación sobre como hacer realidad una idea

Publicado por Costero (148 intervenciones) el 03/11/2020 19:45:34
No, no hace falta donacion.

Spanglish seria mejor.

Puedes bajar el zip file de aqui: https://1drv.ms/u/s!AHSw-Q6V4zPQhE8

1-) Unzip
2-) Open command prompt en change directory a AutoScreenCapture
3-) Corres:
1
set_config_coordinates.bat
. Cuando abre la grafica.
4-) Click a button "Load Properties"
5-) Apuntas a el file: AutoScreenCapture/screenCapture.properties. Que deberias de llenar las configuraciones en el graphico
6-) Haces cambios que deseas y "Save" al mismo file o a otro.

7-) Ahora corres
1
screen_capture.bat <path to el property file que salvaste en el step 6>
Por ejemplo:
Si el file esta en "/home/costero/config.properties"

Entonces correrias:
1
screen_capture.bat /home/costero/config.properties


Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar