Partage
  • Partager sur Facebook
  • Partager sur Twitter

capturer et déchiffrer une partie d'un écran

Sujet résolu
    27 octobre 2022 à 22:23:51

    Bonjour,

    Je m'explique, j'aimerai tenter de crée un petit projet qui a pour but principale de récupérer un chiffre sur l'écran d'un utilisateur (en permanence).

    En autre, imaginons l'utilisateur écrit 1080 dans google, je veux que mon programme comprenne qu'il y ait écrit 1080 et si cette personne change cette valeur par 1095, je veux aussi qu'il le comprenne. 

    Je me suis dis que je pourrai utiliser tkinter pour l'interface graphique, est-ce une bonne idée ? 

    Et je voulais savoir deux autres choses, si c'était pertinent de faire ce projet en python ?

    Puis en deuxième, si il existait bien une méthode pour pouvoir capturer l'écran d'un utilisateur et qu'une "IA" déchiffre ce qu'il y a sur cette écran (les nombres affichés).

    Je sais pas si mes questions sont censées et compréhensibles. ahah

    • Partager sur Facebook
    • Partager sur Twitter
      28 octobre 2022 à 13:03:27

      Bonjour,

      Ça doit pouvoir se faire, la question est sensée

      Dans le temps j'avais fait un programme avec Tkinter et une IA pour reconnaitre les chiffres dessinés sur la base des 7 segments

      avec un réseau de 10 neurones chacun connecté aux 7 segments:

      -
      Edité par Phil_1857 28 octobre 2022 à 13:07:08

      • Partager sur Facebook
      • Partager sur Twitter
        28 octobre 2022 à 20:06:59

        Merci de ta réponse, oh génial ce programme.

        Mais le problème ca serait comment en donnant seulement une capture d'écran, le programme puisse détecter malgré les différentes couleurs et écritures, ce qui est écrit. 

        Il existe pas des modules déjà existant pouvant le faire ? ou des IA peut être ? 

        Je réfléchis à plusieurs manières de le faire, mais le fait qu'il y ait plusieurs types d'écritures (des barres pas totalement droites, etc..) me pose problème.

        Tu aurais des idées ? :)

        • Partager sur Facebook
        • Partager sur Twitter
          29 octobre 2022 à 0:15:19

          Oui, ce que tu recherches cela s'appelle un OCR. Et il y en a de tout prêt que tu peux utiliser en Python.
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            29 octobre 2022 à 11:57:45

            Et capturer les touches pressées ?
            • Partager sur Facebook
            • Partager sur Twitter
              31 octobre 2022 à 14:47:58

              Merci Nephthys , j'avais pas nom ahah.

              Alors j'ai réussi à faire plusieurs test avec un keras_ocr et ça marche super bien, mais j'ai un problème de rapidité enfaite dans la base de mon idée, j'aimerai que si on écrit 501 par exemple puis qu'on change par 507, mon programme le comprenne. 

              Mais si on change ce chiffre toutes les secondes, j'aimerai que mon programme puisse le détecter, et à ce que j'ai vu il prend environ 2s pour analyser une image (qui n'a pas beaucoup de détail). Je ne l'ai pas précisé mais chaque image, sera une capture d'écran prise par le programme python (environ 4ips sera suffisant je pense). 

              J'ai un deuxième problème qui est la qualité de mes captures d'écran, car si elles ne sont pas de bonnes qualités alors je n'aurai pas un bon "déchiffrement", je veux utiliser l'ocr sur une partie de l'écran, environ (à la louche) 300x100px voir moins. Le problème c'est que je ne vois pas comment faire une capture d'écran d'une partie de mon écran en ayant une bonne qualité. Car en essayant, ma capture d'écran de 200x30px était de même qualité que si je prenais mon écran entier puis zoomé sur cette partie de 200x30px. Je voulais savoir si il y avait un moyen d'augmenter la qualité de la capture d'écran sur cette partie d'écran pour pouvoir y appliqué l'ocr. (J'espère n'avoir embrouillé personne)

              Je voulais donc savoir si il existait des OCR seulement pour les chiffres/nombres (non manuscrit) afin de baisser le temps d'exécution ? Car je peux tenter avec keras_ocr mais mon programme ne sera pas très rapide. Ou alors existe t-il un autre moyen de réduire le temps d'exécution ? 

              Merci en tout cas 

              -
              Edité par LoïsCoursaut1 31 octobre 2022 à 16:20:09

              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                31 octobre 2022 à 20:11:29

                Et du coup ma proposition ?
                Si tu veux capturer ce que quelqu'un tape, il suffit de coder un keylogger, ça sera moins gourmand qu'un OCR...
                C'est quoi ton projet in-fine ?
                • Partager sur Facebook
                • Partager sur Twitter
                  1 novembre 2022 à 0:05:38

                  À priori, ton OCR ne sait pas ce qu'il y a sur l'écran. Il doit parcourir au complet la grille que tu lui donne.
                  Pour la précision, tu ne peux pas être plus précis que les pixels.
                  Tu peux toujours regarder ceci:


                  https://www.easepdf.com/fr/topics/top-free-ocr-software.html

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Le Tout est souvent plus grand que la somme de ses parties.

                    1 novembre 2022 à 13:22:45

                    Ahh pardon ErispoeLeN, je pensais avoir répondu. Le but de mon projet, est de détecter dans un endroit spécifique de l'écran, un nombre. Et je veux que mon programme puisse détecter les variations de celui-ci, imaginons que ça soit la dette de la France en direct (je dis ça au hasard ahah), alors je veux que mon programme puisse calculer ses variations. Donc je veux pas pas capturer les touches de claviers même si c'était une bonne idée !

                    Mais pour ce faire, je dois faire en sorte que l'utilisateur puisse définir lui même l'endroit où ce chiffre est sur l'écran donc crée une zone, puis je ferai des captures d'écran de cette zone, et je les donnerai à un ocr qui me renverra le nombre capturé et un autre programme calculera les variations de celui-ci.

                    Merci PierrotLeFou pour les ocr, mais je peux les intégrer à mon programme python comme cela ? Ca ne serait pas plus efficace d'utiliser un module python d'ocr ? 

                    J'aimerai avoir votre avis sur le fait de, est-ce que mon projet est réalisable ? parce qu'en sachant que keras_ocr n'est pas assez rapide et précis, espérer qu'un ocr puisse reconnaitre un nombre 4 fois par seconde sans se tromper (4 fois car je vais faire 4 ips). Dans ma tête c'est faisable, mais peux être je m'y prends mal ? 

                    J'ai cherché des modules d'ocr dédier aux chiffres et nombres en python, mais j'ai rien trouvé, si jamais vous en connaissez, je suis preneur.

                    En tout cas merci pour vos réponses

                    • Partager sur Facebook
                    • Partager sur Twitter
                      1 novembre 2022 à 13:39:38

                      J'ai trouvé ceci mais je ne sais pas ce que ça vaut:


                      https://pypi.org/project/pytesseract/


                      Si tu sais exactement dans quel coin de ton image se trouve le texte à décoder, je suppose que ça n'est pas trop compliqué que de l'extraire.
                      Je pense qu'on pourrait trouver des algo d'OCR, mais ça risque d'être compliqué à coder.

                      L'avantage du fait que c'est sur un écran et non lu par un scanner est que le texte est bien aligné. On n'a pas besoin de rotation d'image pour décoder.

                      Si ton fond d'écran est uniforme et que tu connais la couleur, tu peux réduire le cadre.

                      Tu élimine les lignes pour lesquelles tous les pixels sont identiques (en haut et en bas).

                      Tu pourrais faire de même pour les colonnes avant et après le texte.

                      Ça te donnera une image plus petite et plus rapide à décoder.

                      Tu peux aller plus loin. Les chiffres sont monolitiques conttrairement aux lettres accentuées ou des signes comme '='

                      Tu pourrais séparer et isoler les chiffres, te donnant une suite d'images encore plus petites.

                      Tu pourrais déjà essayer de faire cette étape.

                      Si en plus la police des caractères est toujours la même ainsi que les dimensions, tu pourrais presque te passer d'un OCR.

                      Tu aurais une série de 10 chiffres en image et tu compares chaque image de l'écran avec ta série.

                      -
                      Edité par PierrotLeFou 1 novembre 2022 à 14:08:53

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Le Tout est souvent plus grand que la somme de ses parties.

                        1 novembre 2022 à 23:47:25

                        Je n'ai pas essayé pytesseract, je vais tenter, mais je sais pas si il sera plus efficace que keras. 

                        Hmm, de manière générale, le fond ne sera pas le même, ni la dimension et les chiffres peuvent être écrit avec une police différente, mais je me dis qu'un OCR que pour les chiffres doit être bien plus précis et efficace que si c'était un OCR dit générale.

                        Je suis pas contre le fait d'essayer de crée un OCR que pour les chiffres, mais je ne m'y connais pas dedans, et est-ce que ça existerai pas déjà ?

                        Parce que crée une IA et l'entrainer, je connais le concept mais le faire, c'est bien différent, non ? x) Mais pourquoi pas essayer en soit .

                        Mais à ce que je comprends, le domaine de la reconnaissance de chiffre sur une image est un sujet "résolu", il devrait forcément exister des bibliothèques python dessus.

                        Update:

                        J'ai testé avec tesseract et j'ai de super résultat. Pour le peu de test que j'ai fais, j'ai une meilleur précision, beaucoup plus de rapidité. Enfin pour l'instant ça part bien !

                        -
                        Edité par LoïsCoursaut1 2 novembre 2022 à 2:10:05

                        • Partager sur Facebook
                        • Partager sur Twitter
                          2 novembre 2022 à 5:41:25

                          Bonjour,

                          Ils proviennent d'où ses chiffres affichés sur l'écran? D'un site, d'une application?

                          Peut être que si tu exposais pleinement ton projet, nous trouverions d'autres pistes à explorer...

                          Note: J'imagine que tous les protocoles de serveur d'affichage, ne te permettront pas de 'lire' ce qu'il y a sur l'écran, comme ça doit être le cas avec wayland.

                          • Partager sur Facebook
                          • Partager sur Twitter
                          • J'aime les bananes, le python, le gnu, le pingouin.
                            • Vive le libre !
                            3 novembre 2022 à 22:08:27

                            Mon projet a pas vraiment de but précis pour l'instant, mais si on pouvait l'imager ca serait comme si on capturer le nombre d'abonné d'une chaine (en direct) et qu'en capturant ce nombre on pouvait en déduire des stats (plus d'abonnés le jour, moins le lundi etc) ou alors comme si on capturer le nombre d'un solde sur un jeu d'un casino et qu'on en déduisait des statistiques. Le problème que j'ai, c'est la précision.

                            Pytesseract est rapide mais pas assez précis (à des moments), ce qui me crée parfois des bugs (absence de donnée) . 

                            Donc soit je trouve un autre ocr. (keras_ocr n'était ni assez précis, ni assez rapide)

                            Ou alors je trouve une autre manière de le faire, mais dans mon idée, je veux pas passer par le code de la page (html qui contient peut-être les informations), mais je suis intrigué par ton idée fabien, à quoi sert wayland ?

                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              4 novembre 2022 à 8:02:25

                              Sinon créer ton propre OCR en analysant les chiffres sur plusieurs axes :

                              -
                              Edité par Anonyme 6 novembre 2022 à 9:23:13

                              • Partager sur Facebook
                              • Partager sur Twitter
                                4 novembre 2022 à 8:18:42

                                Salut,

                                LoïsCoursaut1 a écrit:

                                Ou alors je trouve une autre manière de le faire, mais dans mon idée, je veux pas passer par le code de la page (html qui contient peut-être les informations)


                                Et pourquoi tu ne veux pas passer par le scraping, ce serait surement beaucoup plus efficace.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  4 novembre 2022 à 11:24:18

                                  Pour les réseaux sociaux, ceux-ci disposent d'API qui permettent de récupérer en général de récupérer ces infos.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    5 novembre 2022 à 2:32:40

                                    En général, les caractères sont de la même couleur et le fond peut changer. (ou bien c'est l'inverse)
                                    Si les couleurs varient pour les deux, c'est presque impossible à décoder.
                                    Je te suggérais de découper ton image en rectangles pour une autre raison.
                                    En principe, tu connais mieux le texte que ton OCR. Tu seras plus à même de faire les bons tests pour le découpage.
                                    Autre problème, les textes écrits en blanc et noir, Il arrive souvent qu'on puisse avoir différents tons de gris plutôt que du blanc parfait et du noir parfait.
                                    Tu dois ajuster le seuil pour dire si un gris doit être considéré comme un blanc ou un noir.
                                    Que ce soit en tons de gris ou en couleurs, si tu normalises toi-même, tu auras plus de précision. Tu envoies à ton OCR une image en blanc parfait et noir parfait.
                                    Et tu peux réajuster ton seuil ou tes critères et essayer à nouveau.
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Le Tout est souvent plus grand que la somme de ses parties.

                                      5 novembre 2022 à 17:19:10

                                      Alors j'ai jamais tenter de crée un OCR mais je suppose qu'il y a un début à tout, je vais essayer ce que vous m'avez conseillé ! 

                                      Merci beaucoup Erispoe pour ton explication, je vais essayer ! 

                                      Je vois ce que tu veux dire Pierrot, donc couleurs clair -> blanc, couleurs foncé -> noir, puis j'applique l'ocr.

                                      J'y ai pensé Garkam de passer par du scrapping web mais le problème est que les informations/ les nombres que je veux récupérer ne sont pas toujours forcément dans le code de la page, de plus si la personne est sur un site connecté à un compte, alors le scrapping ne pourra pas aboutir ou alors si faudra se connecter (si je dis pas n'importe quoi), mais ca serait crée des cas particuliers .

                                      Euh je sais pas spécialement comment utiliser une API dans ce projet umfred, est-ce que pourrai développer ?

                                      En tout cas merci de votre aide, et je vais tenter de créer l'ocr dès que je peux !

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Anonyme
                                        5 novembre 2022 à 20:12:32

                                        Petit OCR fait maison :

                                        https://github.com/LeNarvalo/OCR---Digits/blob/main/script.py

                                        Le script semble fonctionner +/- correctement... Il y aurait des ajustements à faire.

                                        Par contre je suis assez embêté pour gérer une zone de chiffres qui puisse grandir (ex : passer de 5 à 999999) et le logiciel va essayer d'interpréter les lettres comme des chiffres s'il y en a dans la zone de recherche.

                                        Bref, c'était une idée pas si dure à mettre en place finalement... Question rapidité, avec mon PC je peux avoir une 20aine de lectures par seconde en moyenne (plus la zone de recherche est petite plus c'est rapide, obviously).

                                        -
                                        Edité par Anonyme 6 novembre 2022 à 22:12:10

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Anonyme
                                          9 novembre 2022 à 15:30:31

                                          L'OCR de Google semble très efficace :

                                          Exemple impressionnant 

                                          Voici un lien vers un OCR de google : 

                                          https://cloud.google.com/vision/docs/ocr#vision_text_detection-python je ne sais pas s'il s'agit du même utilisé dans l'exemple que j'ai déniché mais si c'est le cas, il devrait pouvoir faire le taf !

                                          -
                                          Edité par Anonyme 9 novembre 2022 à 15:31:18

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            12 novembre 2022 à 18:37:50

                                            Merciii beaucoup Erispoe, j'ai utilisé des bouts de ton code, et je trouve ça impressionnant ce que tu as fais ! Et effectivement leur OCR sont pas mal, je crois que l'ocr de google marche que sur images d'un cloud ou d'une url non? 

                                            Ohh je savais pas qu'une API pouvait faire ça, ça m'a l'air vachement pratique :o .

                                            Je vais essayer de voir si tout cela peut me servir et encore merci pour votre aide !

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            Anonyme
                                              12 novembre 2022 à 20:31:23

                                              Non je ne pense pas, par contre, c'est payant.

                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              capturer et déchiffrer une partie d'un écran

                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                              • Editeur
                                              • Markdown