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.
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.
nXEnCours est un entier = SourisPosX() nYEnCours est un entier = SourisPosY()
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)
gvcSourisDépart.OK = Faux
dCopieImage(IMG_Message, IMG_SAUVEGARDE, copieSrcCopie)
SAI_Message = OCRExtraitTexte(IMG_Message,zone) IMG_Message = gImageATraiter
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 - En attente de modération 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 - En attente de modération 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 - En attente de modération 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 - En attente de modération 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 - En attente de modération L'OCR a oublié le "DE" contenu entre "LES COMBES" et "SAINT SAUVEUR :-) |
|
| |
| | Nico 05/12/2020 - 15:11 - Répondre - En attente de modération Ou tu fais le code? |
|
| |
| | joseph cvjetic 13/12/2020 - 10:35 - Répondre - En attente de modération ce code ne fonctionne pas !! |
|
| |
| | Guillaume BAYLE 14/12/2020 - 09:20 - Répondre - En attente de modération 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 - En attente de modération 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 |
|
| |
| |
|
| |
|