script pour comparer un pdf et une bdd

pioutar

Membre enregistré
22 Avril 2008
7
0
Vevey, suiiisse
Hello !

Dans le cadre d'un gestion de documents de patients dans un cabinet de pédiatrie, j'ai une base de données (4D mais peux l'exporter sous d'autres formats si besoins) avec id, nom, prénom.
D'un autre côté j'ai des pdf issus de scan reconnus par OCR (ces scans sont très variables, pas de garbarit fixe). Chaque scan possède quelque part dans le texte un nom et prénom.
Mon but est d'ajouter l'id du nom,prénom dans le nom du fichier pdf si ce nom, prénom apparaissent dans le texte.

En fait il faudrait qu'un script passe en revue le texte du pdf et compare chaque mot trouvé à la base de donnée, établisse un score et, le cas échéant, modifie le nom du fichier.

Est-ce que quelqu'un a une idée de la direction à prendre ? Acheter un soft qui le ferait, programmer quelque chose (quel langage ? est-ce que ce serait réalisable via un applescript utilisant spotlight ?), autre ?

Merci pour toute contribution, idée, proposition !

La bonne journée

pioutar
 
http://rfv.insa-lyon.fr/publi/publi.htm

http://fr.wikipedia.org/wiki/Reconnaissance_optique_de_caract%C3%A8res

http://code.google.com/p/tesseract-ocr/

on est loin du script, mais si t'as un algo revolutionaire de reconnaissance de forme / ecriture tu devrais penser a le deposer et puis tout simplement d'arreter de travailler, se que tu veux faire des mathenaticiens et autres chercheurs s'y cassent un peu les dents depuis plus de 15 ans meme si on commence a avoir des resultats pas trop mal, ce que tu veux faire c'est ce qu'ils aimeraient faire a lyon ou dans les labos a Google...

le meilleur, le moins chers, l'inegalé reste un humain, saisissant les documents scanés.

si tu avais des codes barres a reconnaitre ca marche enfi si c'est pas trop degueux, le reste tu peux attendre quelques années et quelques dizaines d'années pour un prix abordable.

comme tu vois c'est un probleme et un casse-tete mais si on devrait mettre quelques financement de recherche sur ce genre de chose, mais qu'es ce que tu veux dans ce monde on prefere construire des machines de guerre ultra sophistiquées qui te pratiquent des frappes chirurgicales dignes de Jack l'éventreur et on s'en sert pour aller balancer des bombes sur des pays en leur expliquant que c'est pour leur bien et que ca les aidera a instaurer un etat democratique.
 
Dernière édition:
Merci tatouille, en fait j'avais déjà quasiment lu toute la bibliographie que tu mentionnes (j'avais particulièrement aimé 'A Discriminant hybrid Neural Predictive System for improved On-Line Word Recognition'). Mais t'es hors sujet, le pdf a déjà été OCRisé. Dans environ 95% des cas les clés de recherche que je veux utiliser (nom, prénom) ont été reconnues sans erreur, pour les 5% ça me va d'utiliser l'humain dont tu causes.
 
ca veut dire que tu as un resultat sous une autre forme, le resultat extrait, texte.

tu as besoin de creer une autre DB rempli a partir de chaque document (raw document) then tu peux comparer les deux DB et pr exemple avoir un flag dans la DB des documents brutes quelque chose comme recognized, quand tu as trouvés une entree dans la premiere DB du firstname,lastname,ssn matched attention aux homonymes... le couple nom, prénom est trop faible.

peux importe la techno, mais tu devrais plutot utiliser un server/linux/php/mysql

'A Discriminant hybrid Neural Predictive System for improved On-Line Word Recognition' bof une fumisterie quelque peu c'est beau ca pete dans le nom mais les algos genetiquent sont tres gourmants donc une ferme de calcule est necessaire, deux pas tres fiables, ca commence a faire beaucoup pour du traitement automatique de document, ca papier prouve juste que le docteur Cinoque est toujours vivant.


 
Dernière édition:
Pour terminer ce post :

Suite au conseil de tatouille (merci) , je me suis effectivement dirigé vers php/mysql et ça fonctionne au poil; j'ai juste eu un souci pour extraire le texte du pdf mais m'en suis finalement tiré avec xpdf -> pdftotext (http://www.foolabs.com/xpdf/). php comporte quelques fonctions bien utiles pour comparer les mots extraits du pdf à la bdd : similar_text et levenshtein . Donc :

1) extraire le texte du pdf en php via xpdf
2) comparer les mots extraits aux entrées de la bdd et établir un score de similarité via levenshtein

C'est paraît adéquat pour moi, car les pdf ne sont pas trop grands (en général une page a4), la base non plus (qlq milliers d'entrées) et il n'y a qu'une dizaine de pdf à traiter par jour (ça tourne via MAMP sur un imac 2008). Faut que je teste encore un peu pour affiner le scoring.
 
tu devrais faire la comparaison en db beaucoup plus rapide,

parser,extraire ce qui t'interesse puis remplir DB1::Table_Document_async (ils n'ont pas tous toutes les proprietes)

puis faire ta comparaison en utilisant le server DB


DB0:: clean DB <-> DB1::Table_Document_async (voir procedure stockée)

a mon avis tu peux diviser par mille et plus le temps de traitement, e.g O(n + d^2) tu viens juste de reduire ta complexité.

de plus les algos de type Metaphone sont faits pour l'anglais donc peuvent te retourner des choses un peu etranges"""" en faite gros effet kisscool, une comparaison localisée*** a l'aide d'ICU avec un calcule de distance sur ton sort*** serait bien plus robuste et juste.

:zen:
 
Dernière édition: