phreak87
Goto Top

Suche Objekterkennung mit Aussage über Koordinaten

Hallo,

ich bin auf der Suche nach einem ki-Modell für meine rpa (Automatisierungsanwendung).
Jetzt ist es so dass z.b. llava oder phi Vision ein Bild super beschreiben können, aber nicht in der Lage sind Koordinaten auszugeben - also exakte Pixelkoordinaten oder Bereiche.
Yolo hingegen kann nicht mit Sprache umgehen. Ich suche nach einem Weg, bei dem ich z.B. sagen kann "Gib in das Benutzername-Feld abc ein". Die Bilderkennung müsste dann die Koordinaten eines Feldes, dass wir eine eingabe für Benutzerdaten aussieht die Koordinaten ermitteln, bei denen dann weitere Aktionen wie Eingabe erfolgen können.
Kennt ihr ein Modell das auf Consumer pcs (bevorzugt opencv - also onnx) lauffähig ist und etwas in der Art und Weise erreichen kann? Bzw. Habt ihr eine ganz andere Idee wie man soetwas lösen könnte?

Vielen Dank schonmal!

Content-ID: 668732

Url: https://administrator.de/contentid/668732

Ausgedruckt am: 16.10.2024 um 00:10 Uhr

MirkoKR
MirkoKR 12.10.2024 um 22:16:12 Uhr
Goto Top
Hi.

Ich versthe den Sinn nicht, weil - egal pb Webseite, PDF-Dokument oder Programm ...

In der Regel sind die Eingabefelder im Code benannt, da sie ja auf die ein oder andere Weise weiterverarbeitet werden müssen ...

Vielleicht etwas genauer den Anwendungszweck beschreiben, warum genannte Methoden nicht greifen ... 🤔
Phreak87
Phreak87 13.10.2024 um 00:21:58 Uhr
Goto Top
Hi,

Vielen Dank für deine Nachricht!
Da hast du sicher Recht dass jedes Element in irgendeiner Art und Weise eine id hat. Es ist nur so dass ich in einer externen Anwendung nicht jede id wissen kann. So kann das Eingabefeld für Kennwörter auch txt1 heißen . Schlechtester fall wäre remote desktop. Da weiß ich gleich gar nichts mehr ... Rpa (Robot Process automation) geht hier sehr oft den optischen Ansatz - also "Element sieht so aus". Dieses "sieht so aus" muss aber auch immer mit einem bild definiert werden. Idee und Ziel ist zu sagen "Suche das Chrome Logo /pwd-Eingabe feld/..." Welches sich ja in Größe, position, Hintergrund und allgemein aussehen ändern kann. Der Standardansatz würde hier versagen.
Der Gedanke ist - wenn ich weiß dass da eine Passworteingabe im Prozess auf den Desktop ist - weil eine vorherige Aktion das ausgelöst hat - diese pauschal per Text anstatt Bild definieren zu können. Der gesamte Prozess mit klicken,... Geht dann nicht mehr über ki sondern über andere bausteine...
Wenn ich z B. Ein Bild meines Desktops am openai schicke und Frage ob es hier ein Feld zur Kennworteingabe sieht würde es vermutlich richtig Antworten - man müsste nur die Position an Pixel genau ausfindig machen können. Und auch eben lokal und nicht über openai.

Ganz überspitzt wäre dann eine Desktopautomatisierung mit nur Texteingaben möglich oder denkbar und auch dass große Ziel dahinter.

Bsp. Starte Chrome (Prozess)
Suche Adressliste (optisch) und klicke an.
Gib url ... Ein und drücke enter.
Suche feld Benutzername.(Optisch) Und Gib xyz ein (tastatureingabe).
Suche Passwort (optisch) und Gib pwd ein,
...
Suche abmelden knopf (optisch) und klicke darauf (maus)

Grüße
Phreak87
MirkoKR
MirkoKR 13.10.2024 um 00:30:47 Uhr
Goto Top
OK.

Das ist wirklich sehr spezifisch, weil dieselbe Anwendung in der Regel die Eingabefelder mit denselben Namen codiert ...

... ansonsten wäre das Feedback auszuwerten extrem aufwändig ...

🤔
MirkoKR
MirkoKR 13.10.2024 um 00:37:57 Uhr
Goto Top
Wenn dein Ziel zudem 2FA nutzt, funktionierts eh nicht mehr 🤔
Crusher79
Crusher79 13.10.2024 um 00:41:34 Uhr
Goto Top
Hallo,

leider auch keinen heßen Tip.

https://www.macrocreator.com/screenshots/

Ähnlicher Ansatz. Quellcode ist vorhanden. Hier wird aber OCR ausgewertet oder mit Bild geprüft, ob ein Fenster vorhanden ist Wenn es immer die gleichen Größe ist könnte man es darüber probieren.

Ist nur alles AHK und weit von AI entfernt.

Wenn man fixe Bilder vergleicht müsste man dann bei der Aktion das als Ankerpunkt nehmen und von da aus weitergehen. Auch nicht gerade schön.

Wie viele GUI hast du denn? Immer die gleiche Auflösung? Wenn nicht dynamisch so könnte man es über einen statischen Abgleich probieren.

Bei AHK verwendet man meist ganz einfache Logik. Wenn ich ein Fenster aktivieren bin ich schon an Position X. Immer. Drücke ich TAB oder Shift+TAB wandere ich auf und nieder, von links nach rechts.

Bei Bekannten Masken noch aktzeptabel. Da reicht es ja wenn der "Cursor" einen festen Pfad folgt.

mstsc.exe:
- Startet immer eingeklappt bei Computername
- Alt + O öffnet Anmeldedialog
- TAB führt zum Bentzernamen
- ENTER im beliebigen Feld startet Verbindung.

Automation muss ja auch reliable sein. Das erreicht man aber ohne KI durch geeignete Maßnahmen. Focussierung, Reihenfolge einhalten, fertig.

Problem ist meist doch noch, dass es teils keine modalen Masken sind. Irgendwas "spricht" mit rein. Overlay durch anders Fenster, Verschiebungen, etc.

Die Probleme hat man bei Pixel Auswertung doch auch. Die TAB Reihenfolge steht aber meist fest. Da man ja auch GUI so programmiert dass Feld 1, 2, 3, 4 der Reihe nach angesteuert werden.

AI ist schön und gut. Aber wäre es nicht sinnvoller zu schauen ob ein Großteil via Keystrokes erreicht werden kann? Image Auswertungen max. als Zwischenergebis, ob man noch richtig "steht".

https://www.automa.site/

Automa nutze ich für Google Chrome. Auch HTTP Request lassen sich auswerten.

Je nachdem was du vorhast wäre eine Kombination ggf. sinnvoller.

Hab es mal auf die Spitze getrieben und mit Automa Ricoh Drucker GUI umgestellt. Ist ja wie eine Handy Oberfläche. Icons in Mülleimer verschieben oder neue aus dem Store holen.


Gerade wenn es um Automatisierung geht würd ich versuchen das Interface zu erreichen, dass der Programmierer mal vorgesehen hat. Oftmals auch immer noch die gute, alte Tastatur. Cursor Tasten und Tab sowie Shortcuts.

Sonst müsste die AI so trainiert sein, dass sie auch mit versch. Masken, Aufösungen, Sprachen etc. zurecht kommt.

Sind es immer wiederkehrende Vorgänge würde ich etwa tiefer Stapeln. Image Vergleich oder HTTP Request als Ergenbis-Prüfung sind völlig ok. Die komplette Steuerung wäre nur durch einen massiven AI Einsatz zu schaffen. Musst du das, oder reichen ein paar Pattern die auf die 5 Maschinenversionen mit untersch. Eingabemasken zugeschnitten sind nicht auch aus?


Ein Bsp. oben wäre auch ohen AI mit folgenden Denkbar:
- Automa mit Logik versehen
- Pulover Macro mit Bildschirm abgleich.


Schleifen, Wait-Unti etc. lassen sich mit beiden Systemen so schon ausstatten.

Pulover Macro führt auch Befehle aus. Du kannst also th. sogar Bild machen und an eine AI zur 2. Prüfung schicken.

Normal reihcen aber Ankerpunkte: Login/ Logout? Was steht dort? OCR Vergleich oder Image Suche wie mit Pulover Makro.


Schau dir mal die beiden an und nimm mal auf wie die Arbeiten! Ggf. kommst du mit weniger AI und externer Datenverarbeitung aus!

https://www.automa.site/
https://www.macrocreator.com/screenshots/
Crusher79
Crusher79 13.10.2024 um 00:50:44 Uhr
Goto Top
PS:
Wenn du was sendest, so kannst du es auch direkt senden!

Ohne GUI mit API Abfrage oder normalen Webrequest. Statt Felder auszuwerten schick die Infos als z.B. JSON kondierten Payload mit hin.

Nutze sowas bei unify Telefonen. Mitunter haben Webseiten ein Secret. Versteckter String der mit übergeben werden muss. ABER auch den kann man auslesen und via Variable einen POST mitgeben!

GET und POST kennst du ja? Wenn es um Webseiten geht wäre der erste Ansatz zur Automation doch der bestehende Prozesse OHNE GUI abzubilden.

Das geht mitunter sehr viel einfacher und schneller. Es reicht im Firefox oder Chrome mit F12 sich mal die Felder anzuschauen. Das Secret verbirgt sich mitunter als hidden Text schon in den Masken.

Für Webseiten ist immer die erste Device möglichst alles via Invoke-Webrequest (oder curl) abzubilden! Ladezeiten, Timeout, Ergebnis, Variablen.... Alles super schnell gemacht und weil wir uns ans System halten auch sehr, sehr zuverlässig!
Crusher79
Crusher79 13.10.2024 aktualisiert um 00:56:35 Uhr
Goto Top
Zitat von @MirkoKR:

Wenn dein Ziel zudem 2FA nutzt, funktionierts eh nicht mehr 🤔

Nicht ganz. Kommt drauf an. Viele haben ein Secret drin und der Token muss dann auch mitgegeben werden.

Im einfaschsten Fall kann ein GET den für die Session besorgen und anschließend kann man den für Login verwenden. Alles andere läuft normal in PowerShell z.B. unter der Sitzung dann ab.

2FA mit Handy Nummer etc. ist klar viel schwieriger. Drucker oder Telefone haben meist noch einfache GUI. Secret verbirgt sich als hidden in den Masken: unify Telefone z.B.

Einmal drin geht es "normal" weiter: Reboot ausführen, Uhrzeit setzen, etc. etc.

Man muss nur wissen wonach man suchen muss und den Request "nachbauen". Dann hat man schon gewonnen.

Https befehl in Batch einbauen

Hier mal page_ident ausgelesen und dann benutzt.

Function RestartPhone ($PhoneIP) {
# Phone Anmeldung
[string]$Phoneuser = "admin"    
[string]$Phonepwd = "123456"    
[string]$Phoneurl = "https://$PhoneIP/page.cmd"    
[string]$LoginPOST = "page_submit=WEBMp_Admin_Login&lang=en&page_ident=abcdefij12345678&AdminPassword=123456"    
[string]$RestartPhone = "lang=en&user=Admin&menu=00000100000000000001_99&highlighted=WEBM_Admin_Restart&page=WEBM_Admin_Restart"    
[string]$RestartPhoneSet1 = "page_submit=WEBM_Admin_Restart&lang=en&page_ident="    

$LoginXML = Invoke-WebRequest $Phoneurl -Method Post -Body $LoginPOST -SessionVariable session -TimeoutSec 2
if ($LoginXML) {
$LoginXML = Invoke-WebRequest $Phoneurl -Method Post -Body $($RestartPhone) -WebSession $session 
$LoginXML = Invoke-WebRequest $Phoneurl -Method Post -Body "$RestartPhoneSet1$(($LoginXML.Forms).Fields['page_ident'])" -WebSession $session     
}
}
MirkoKR
MirkoKR 13.10.2024 um 01:05:36 Uhr
Goto Top
Ich bin bewusst meine ersten Antworten zurückhaltend angegangen ...

... die Anfrage an sich könnte auch gegen Forums-Regeln verstößen !
Phreak87
Phreak87 13.10.2024 um 01:51:52 Uhr
Goto Top
Hey!,

Bei 2FA ist man sowieso raus wenn es was anderes (z.B. Handy) dazu braucht. Die gleiche Anwendung z.B. der Taschenrechner hat jeden Button immer an der gleichen stelle - das stimmt. aber die RPA ist so gemacht dass es jeder mit jeder App verwenden kann. Es gibt zwar schon schnelle Lösungen, die den Button unter der Maus erkennen aber das funktioniert bei Microsoft auch nur solala weils da anscheinend in den Store Apps anders funktioniert ... - und im Browser ist nochmal ne härtere Nummer da was zu finden.
Libreautomate hat sowas mit drin wo man es als Source nachlesen kann wie creepy das ist.
Außerdem kann man es eben nicht einfach so wegschreiben in eine Textbox was man tun will ...

Zu Crushers Nachricht: Danke für deine Ideen!
Macrocreator ist genau das was ich auch gebaut habe nur noch dynamischer ...
Das mit den Fenstern habe ich genau so gelöst wie du es beschrieben hast - über dem Screenshot kann ich eine Anwendung definieren, der klickpunkt ist dann relativ zur Anwendung ... Die Auflösung muss bei mir gleich sein - weil eben statischer Abgleich. wenn sich der Zoom in Chrome verändert kann ich Glück oder Pech haben ... weil ich selbst auch bis 0.9 und 1.1 beim suchen mit OpenCV skaliere ... (meistens hab ich trotzdem Pech weil ein kleiner schatten um ein Feld schon reicht dass bei kleinen Bildern die Abweichung dann schon zu hoch ist).

Anwendungen also verschiedene GUIs sind beliebig - kann alles sein ... von Notepad bis Chrome ... oder Excel.
Das mit "Tab-Tab-Tab-Eingabe-Enter" ist auch oft in Verwendung - klappt auch echt gut ... Das Remotedesktop war als Negativbeispiel gedacht weil ich z.B. beim Taschenrechner im Remotesystem keine Button-IDs mehr habe - das ist meines Wissens nur Bild, Ton, Tastatur und Mausübertragung ... (Also auch nur ein Screenshot plump gesagt).
Automatisierung an sich läuft bereits zu 100% mit Tastatur, Maus und auch (statisch-optisch, sogar mit Texterkennung).

Automa.Site kannte ich noch nicht! Klingt echt spannend! Ich nehme für solche Sachen einen internen embedded-Chrome um solche Sachen zu machen - reicht aber nicht so weit wie Automa.Site. Da wirds dann bei mir schon echt komplex weil man dann extern die XPath-Pfade bestimmen muss ... welcher User/Admin weiß das schon ...

Ich hab unten mal einen Screenshot von meinem Tool eingehängt mit einem Beispiel und ein Chat mit ChatGPT was mit Positionen passiert ... Bei der erneuten Abfrage dass ChatGPT mir die Koordinaten geben soll kamen sogar koordinaten (leider komplett daneben - aber er hats versucht) ... theoretisch ist es genau das was ich brauche/suche - nur lokal eben über ollama oder openCV KI (ONNX) und eben genauer / besser optimiert auf sowas - mit den koordinaten würde er irgendwo wild rumklicken face-smile

Mein Problem war nie die Automatisierung selbst- sondern die Weiterentwicklung des Tools um es dem User noch einfacher zu machen eine Automatisierung zu bauen.
unbenannt
unbenannt3
Phreak87
Phreak87 13.10.2024 um 02:00:16 Uhr
Goto Top
Get und Post sind auch im Einsatz wie beschrieben für z.B. A1111 und wenn es nicht zu komplex ist die api nachzubilden. Trotzdem dürfte es einfacher sein auf ein Textfeld zu klicken und zu tippen. 2FA sobald einmalig authentifiziert würde dann bei neuen gehen.
Phreak87
Phreak87 13.10.2024 um 02:02:57 Uhr
Goto Top
Puh - weiß nicht. Hab ich? Welche Regel genau? Hab die nie so genau gelesen 🫣.
Phreak87
Phreak87 16.10.2024 um 00:54:20 Uhr
Goto Top
ausgehend von den Beiträgen zu anderen Automatisierungslösungen, die ich noch nicht kannte,
bin ich auf eine komplette Automatisierungslösung namens RoboFlow gestoßen: roboflow.com/models. Hier kann man eine Library durchsuchen, welche mich dann schlussendlich auf die zwei "Zero shot object detection"- modelle "OWL/OWL2" und "Grounding DINO" gebracht hat.
Diese Modelle werden hauptsächlich für Auto-Annotation verwendet und können anhand einer Texteingabe z.B. "die Tasse in der rechten Hand" die Koordinaten auf dem Bild ermitteln, wo die Abfrage zutreffend ist ...
Glücklicherweise gibt es auf Huggingface einen Space, in dem man OWL und Grounding Dino mit eigenen
daten testen kann: huggingface.co/spaces/merve/GroundingDINO_OWL.
Auch wenn die Erwartungen an diesem Punkt sehr hoch waren - weil es genau das ist, was ich suche
wurde ich dennoch enttäuscht weil die Ergebnisse für Buttons, Eingabefelder, ... grauenhaft sind.
Diese zwei Modelle sind (theoretisch) genau das was ich mir vorstelle. Wenn irgendwer ein Feingetuntes Modell
- dass mehr mit interfaces, programmen, logos, ... trainiert wurde und hier wesentlich bessere ergebnisse liefert - kennt wäre es cool wenn er es mit mir teilen könnte.