Comparaison de variables avec un pdf OCRisés - PHP - Programmation
Marsh Posté le 09-05-2017 à 14:45:11
Salut,
C'est sympa comme problématique. Ça s'approche pas mal du domaine de Named-entity recognition. Je prends comme hypothèse que ton texte est en français.
Concernant ta solution:
- Je suis perplexe concernant les métriques que tu souhaites utiliser. Tu iras bien plus vite en regardant la similarité totale des caractères (==) au lieu de calculer une distance syntaxique.
- Il faut nettoyer le textes un maximum si tu veux comparer ta liste et les documents. Donc bags of words sur les "le, de, ..." (à voir si tu as des noms "de la haute maison" ...) et nettoyage des verbes (Wolf ? le wordnet français).
- Pour la comparaison, ca me semble un bon cas d'usage du Map Reduce d'hadoop #forfun
- J'ai pas pigé le score de certitude ? C'est savoir à combien de pourcentage tu es sur d'avoir un Alain Durand plutôt qu'un Alain Dupond à chaque fois que tu trouves un alain dans un texte ?
Tu as des besoins de perf ? de temps max ? d'une solution reproductible ?
Je suis curieux de savoir l'usage tiens moi au courant.
Tor
Marsh Posté le 10-05-2017 à 22:38:38
levenshtein(), c'est pas idiot d'utiliser ça pour être tolérant aux erreurs dues à l'OCR. En effet, avec une comparaison stricte, il risque de passer à côté de noms/prénoms présents dans sa BD et ses PDF mais parce qu'il y aura une lettre mal reconnues, la comparaison matchera pas. Au passage, Mysql dispose de la fonction MATCH AGAINST pour faire de la comparaison de textes.
Une idée en passant : pour détecter les erreurs de lettres mal reconnues, pourquoi pas pré-traiter les PDF et voir li la probabilité d'occurrence d'une lettre après une autre est conforme aux stats. En effet, dans une langue, la proba d'apparition d'une lettre après la lettre précédente ou les 2 lettres précédentes est très caractéristique. Ca vaut aussi pour les noms.
La BD en fr dispos sur lexique.org pourra peut-être t'aider
Marsh Posté le 11-05-2017 à 13:48:52
rufo a écrit : En effet, dans une langue, la proba d'apparition d'une lettre après la lettre précédente ou les 2 lettres précédentes est très caractéristique. Ca vaut aussi pour les noms. |
Tu voudrais nous laisser croire que Rajaonarimampianina-łęśźćźyński pourrait poser problème?
A+,
Marsh Posté le 11-05-2017 à 14:30:34
On va espérer qu'il n'a pas trop de longs étrangers...
Bien entendu, les propositions de correction seront mises dans une liste qu'il validera avant que les corrections soient effectives.
Marsh Posté le 09-05-2017 à 07:49:14
Bonjour !
Je cherche de l’aide pour le problème suivant :
J’ai une base de données avec notamment ‘nom’ et ‘prénom’ (env 7000 lignes). J’ai plein de document pdf ocrisés (assez bonne fidélité, à la louche performance de la reconnaissance aux alentours de 95% peut-être un peu moins pour les noms propres, qui m’intéressent en l’occurence). Je souhaite pour chaque document (entre 1 et 5 pages a4) trouver si un nom ET prénom apparait une fois ou plus dans le document avec un score de certitude (genre : Alain ET Durand apparaissent chacun 7x dans le document, aucun autre couple nom/prenom n’y est détecté —> score de 100%).
J’ai déjà vaguement des idées avec l’utilisation de similar_text() et levenshtein(). D'instinct j'enlèverais les caractères spéciaux des mots ocrisés, les mettrais dans un tableau et en comparerais chaque cellule avec les nom/prénoms de la base et générerai un tableau de variable avec nomBase, prenomBase, score. Mais je sens que c'est pas très élégant, un peu bourrin et que le diable va se cacher dans des détails auxquels je n'ai pas encore pensé.
Est-ce que quelqu’un aurait une idée de la direction à prendre ? Y a-t-il quelque chose d’existant ?
Merci d’avance, la bonne journée !