Dans la version 26, des fonctions d'OCR font leur apparition. Ces nouvelles fonctions permettent d'extraire les textes d'une image ou d'un PDF.

 

Ici, j'ai demandé à WINDEV d'extraire le texte contenu sous le rectangle rouge.


Il y a plusieurs fonctions permettant de récupérer le texte contenu dans une image, de récupérer des zones de texte, de choisir la langue du texte.

 

J'ai eu la chance de tester les premières versions de ces fonctions et c'est vraiment facile et performant.

 

// On récupére la position de la souris
nXEnCours est un entier = SourisPosX()
nYEnCours est un entier = SourisPosY()

// Rectangle déssiné ç l'écran
zone est un Rectangle
SI nXEnCours > gvcSourisDépart.X ALORS zone.X = gvcSourisDépart.X SINON zone.X = nXEnCours
SI nYEnCours > gvcSourisDépart.Y ALORS zone.Y = gvcSourisDépart.Y SINON zone.Y = nYEnCours
zone.Largeur=Abs(SourisPosX()-gvcSourisDépart.X)
zone.Hauteur=Abs(SourisPosY()-gvcSourisDépart.y)

// On doit re-cliquer pour continuer

gvcSourisDépart.OK = Faux

// Sauvegarde l'image
dCopieImage(IMG_Message, IMG_SAUVEGARDE, copieSrcCopie)

//OCR Sur l'image
SAI_Message = OCRExtraitTexte(IMG_Message,zone)
IMG_Message = gImageATraiter

//Trace la zone utilisée.
dRectangle(IMG_Message,zone,iTransparent,iRougeClair)


Cette nouveauté sera disponible sous WINDEV et WEBDEV, pour Linux et Windows ainsi que sou WINDEV Mobile pour Android, iOS et même MacOS avec Catalyst.

 

< Retour

9 commentaires

RAMADIER
02/11/2020 - 15:51 - Répondre
Bonjour est ce que l'ocr native permettra de récupérer les coordonnées des mots récupérés MErci

Loic HAMEL
02/11/2020 - 16:22 - Répondre
Bonjour, Oui il y a une fonction qui permet d'obtenir un type ocrBlocTexte qui contient le polygone dans lequel le texte a été lu.

RAMADIER
03/11/2020 - 11:40 - Répondre
Bonjour merci pour réponse. Et donc obtenant ce polygone, je pourrais déterminer les coordonnées x/y du mot. merci encore!

Vincent ROY
09/11/2020 - 10:55 - Répondre
Bonjour, - Si l'image océrisée est de "biais", y aura t-il comme fonctionnalité une rotation automatique de l'image ? Merci.

Moi
29/11/2020 - 19:56 - Répondre
L'OCR a oublié le "DE" contenu entre "LES COMBES" et "SAINT SAUVEUR :-)

Nico
05/12/2020 - 15:11 - Répondre
Ou tu fais le code?

joseph cvjetic
13/12/2020 - 10:35 - Répondre
ce code ne fonctionne pas !!

Guillaume BAYLE
14/12/2020 - 09:20 - Répondre
Bonjour, le principe de l'exemple est valide. Vous pouvez dans un premier temps omettre la récupération d'une portion d'image pour prendre en main l'OCR. N'hésitez pas à contacter notre support si la moindre difficulté subsiste, bons développements ! https://www.pcsoft.fr/st/ecrst.htm

Pascal Rosay
12/04/2023 - 18:36 - Répondre
Bonjour, Voici mon retour d'expérience qui peut aider certains. J'ai découvert la fonction CoordonnéeChampImageVersImage J'ai utilisé l'exemple unitaire "Les fonctions de dessin" pour Windows (FEN_dessin) pour dessiner le rectangle sur l'image et remplir les manques du code de Loîc. On retrouve l'usage de gvcSourisDépart et on comprend pourquoi l'image est sauvegardée : pour simuler le tracer du rectangle à la volée. Première remarque, la fonction dCopieImage est récemment remplacée par dCopie. Mais j'ai préféré copier l'image dans une variable image, car l'image devenait floue à chaque copie dans le champ Image IMG_SAUVEGARDE. Deuxième remarque et la plus importante, les coordonnées du rectangle utilisées à partir du tracé sur l'image (ici la variable zone) sont décalées dans l'utilisation de la fonction OCRExtraitTexte. J'ai remarqué que le texte extrait était décalé par rapport au rectangle ou vide. J'ai utilisé la fonction CoordonnéeChampImageVersImage pour convertir les coordonnées d'un rectangle exprimées par rapport au champ Image vers les coordonnées correspondantes exprimées par rapport à l'image affichée dans le champ. Cette fonction permet de faire la correspondance entre les coordonnées dans le champ Image et les coordonnées dans l'image source. Voici mon bout de code qui remplace SAI_Message = OCRExtraitTexte(IMG_Message,zone) : // Sauvegarde l'image ou utiliser l'image source dans une variable image IMG_pour_OCR est une Image IMG_pour_OCR.Hauteur = IMG_Message.Hauteur IMG_pour_OCR.Largeur = IMG_Message.Largeur IMG_pour_OCR = IMG_Message // Conversion des coordonnées sélectionnées en coordonnées dans l'image source soit SélectionImage = CoordonnéeChampImageVersImage(IMG_Message, zone) // Fait l'OCR sur l'image source (= sans perte de qualité) avec ce rectangle SAI_Message = OCRExtraitTexte(IMG_pour_OCR, SélectionImage) Bien à vous, Pascal

Publier un commentaire : 
Votre adresse email ne sera pas publiée