XL 2016 texte d'images vers excel

  • Initiateur de la discussion Initiateur de la discussion psgm76
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

psgm76

XLDnaute Nouveau
Bonjour,

j'ai plusieurs images dans un dossier sur mon pc ou je souhaiterai récupérer le texte de ces .png et les mettre dans un fichier excel.
après recherche je suis tombé sur ce script:

Sub Image_into_Excel()
On Error Resume Next
Dim myshell As Shell32.Shell, ReadCommand, CaptchaCode, i
Set myshell = New Shell32.Shell
For i = 1 To 3 ' Change it
ReadCommand = "C:\Program Files\Tesseract-OCR\tesseract.exe " & "'C:\Users\Downloads\All Images " & i & ".png'" & " " & "'C:\Users\Downloads\All Images\READ\Image " & i & "'" & " ' -l eng'"
myshell.ShellExecute "powershell", vArgs:=ReadCommand, vShow:=0

Application.Wait (Now + TimeValue("00:00:01"))

Open "C:\Users\Downloads\All Images\READ\Image " & i & ".txt" For Input As #1
Line Input #1, CaptchaCode
Close #1

Application.Wait (Now + TimeValue("00:00:02"))
MyCaptchaCode = Application.WorksheetFunction.Substitute(CaptchaCode, Chr(10), "")
Cells(i + 1, 2).Value = Trim(Application.WorksheetFunction.Clean(MyCaptchaCode))
Cells(i + 1, 1).Value = "Sr. " & i
Next i
End Sub


il faut telecharger au prealable tesseract, mettre des images.png dans le bon dossier et je suis les instructeurs du tuto mais je n'obtiens pas ce que je souhaite.

quelqu'un peut-il m'aider ou trouver une autre solution pour faire ca.

merci d'avance
 
Hello,
la reconnaissance de caractères n'est pas si facile que cela surtout si les caractères que l'on doit reconnaître sont variables en police et taille. Le texte que tu dois extraire est-il toujours écrit avec la même police et la même taille. As-tu une image test (sans personnage ou données personnelles) à nous fournir ?
Ami calmant, J.P
 
Hello,
la reconnaissance de caractères n'est pas si facile que cela surtout si les caractères que l'on doit reconnaître sont variables en police et taille. Le texte que tu dois extraire est-il toujours écrit avec la même police et la même taille. As-tu une image test (sans personnage ou données personnelles) à nous fournir ?
Ami calmant, J.P
voila les images que je souhaites recuperer le texte et plus precisement juste DevEUI et AppEUI, toujours la meme taille, la meme police et les memes caracteres (chiffres et lettres en majuscule)
 

Pièces jointes

  • Image 1.png
    Image 1.png
    245.6 KB · Affichages: 12
Je vais regarder si c'est facile à récupérer. D'après ce que je crois deviner ce sont des données qui proviennent de capteurs distants par liaison radio. Il n'y a pas moyen de récupérer les données sous forme textuelle. Ce que tu affiches provient-il d'un serveur web ?
 
Je vais regarder si c'est facile à récupérer. D'après ce que je crois deviner ce sont des données qui proviennent de capteurs distants par liaison radio. Il n'y a pas moyen de récupérer les données sous forme textuelle. Ce que tu affiches provient-il d'un serveur web ?
c'est bien ca !!
et non c'est pas possible, je récupère ces données en me connectant aux capteurs et je fais une capture d'écran de ce que j'obtiens.
c'est des capteurs qui ne sont pas en place et donc pas connecté
 
Avec ce code :
VB:
Sub TestOCR()
 Dim commande As Object, cmd As String, Resultat As String
 Dim RegEx As Object, Matches As Object, Match As Object
 Set RegEx = CreateObject("vbscript.regexp")
 RegEx.Pattern = "DevEUI\s+(\w+)\s+AppEUI\s+(\w+)\s+"
 RegEx.Global = True
 cmd = "D:\Logiciels\Tesseract-OCR\tesseract.exe " + "d:\temp\imageOCR.png " + "stdout"
 Set commande = CreateObject("XlDnaLibJP.Processus")
 Resultat = commande.Run(cmd)
 Set Matches = RegEx.Execute(Resultat)
 Load UsfTB
 UsfTB.TextBox1.Text = "DevEUI : " + Matches(0).SubMatches(0) + vbCrLf + _
                       "AppEUI : " + Matches(0).SubMatches(1)
 UsfTB.Show
End Sub
Voici ce que j'obtiens :

OCRexcel.png

L'option stdout de Tesseract permet de sortir le résultat en affichage dans la console et comme avec la commande Run de la classe Processus de mon complément XlDnaLibJP je récupère ce qui est affiché , j'ai le résultat directement dans une chaîne. Ensuite j'utilise les expressions régulières pour extraire les données voulues.
 

Pièces jointes

Bonjour, c'est super merci beaucoup !

juste comment faire pour qu'il le fasse avec plusieurs images en même temps ( j'en ai une centaines) ?

de plus j'ai un problème au moment de le lancer:
1736928052882.png

au niveau de cette ligne là: Set commande = CreateObject("XlDnaLibJP.Processus")
 
de plus j'ai un problème au moment de le lancer:
Regarde la pièce jointe 1211022
au niveau de cette ligne là: Set commande = CreateObject("XlDnaLibJP.Processus")
C'est normal si tu n'as pas installé mon complément. Sinon tu peux utiliser le wshell mais c'est plus lent et plus compliqué :
VB:
Dim wsh As Object, wshOut As Object, sShellOutLine As String
Set wsh = CreateObject("WScript.Shell")
 cmd = "D:\Logiciels\Tesseract-OCR\tesseract.exe " + "d:\temp\imageOCR.png " + "stdout"
 Set wshOut = wsh.Exec(cmd).StdOut
While Not wshOut.AtEndOfStream
    sShellOutLine = wshOut.ReadLine
       If sShellOutLine <> "" Then
            Resultat = Resultat & sShellOutLine & vbCrLf
       End If
 Wend
Pour le cas de multiple images il faudrait les mettre dans un même dossier et balayer les fichiers du dossier.

Ami calmant, J.P
 
C'est normal si tu n'as pas installé mon complément. Sinon tu peux utiliser le wshell mais c'est plus lent et plus compliqué :
VB:
Dim wsh As Object, wshOut As Object, sShellOutLine As String
Set wsh = CreateObject("WScript.Shell")
 cmd = "D:\Logiciels\Tesseract-OCR\tesseract.exe " + "d:\temp\imageOCR.png " + "stdout"
 Set wshOut = wsh.Exec(cmd).StdOut
While Not wshOut.AtEndOfStream
    sShellOutLine = wshOut.ReadLine
       If sShellOutLine <> "" Then
            Resultat = Resultat & sShellOutLine & vbCrLf
       End If
 Wend
Pour le cas de multiple images il faudrait les mettre dans un même dossier et balayer les fichiers du dossier.

Ami calmant, J.P
pour balayer les fichiers du dossier il suffit d'indiquer le chemin du dossier a la place de: "d:\temp\imageOCR.png " ??
 
Hello,
voici un exemple de boucle :
VB:
Sub TestOCR()
 Dim commande As Object, cmd As String, Resultat As String
 Dim RegEx As Object, Matches As Object
 Dim Chemin$, Fichier$
 Set commande = CreateObject("XlDnaLibJP.Processus")
 Set RegEx = CreateObject("vbscript.regexp")
 RegEx.Pattern = "DevEUI\s+(\w+)\s+AppEUI\s+(\w+)\s+"
 RegEx.Global = True
 Chemin = "D:\temp\ImagesOCR\"
 Fichier = Dir(Chemin & "*.png")                                    'Boucle sur tous les fichiers png du répertoire.
 Do While Len(Fichier) > 0
    cmd = "D:\Logiciels\Tesseract-OCR\tesseract.exe " & Chemin & Fichier & " stdout"
    Resultat = commande.Run(cmd)
    Set Matches = RegEx.Execute(Resultat)
    Debug.Print "=========  " & Fichier & "  ========="
    Debug.Print "DevEUI : " + Matches(0).SubMatches(0) + vbCrLf + _
                       "AppEUI : " + Matches(0).SubMatches(1)
    Fichier = Dir()                                                 ' Fichier suivant
 Loop
 Set Matches = Nothing:  Set RegEx = Nothing
End Sub
Ami calmant, J.P
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
758
Réponses
4
Affichages
1 K
Réponses
1
Affichages
1 K
Compte Supprimé 979
C
Retour