Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 07/04/2016, à 11:49

fralyon

Renommer un pdf en fonction de son contenu

Bonjour a tous,

Je vous fais part de mon problème, nous sommes 2 à la maison à ranger des papiers, c'est déjà assez chiant mais en plus puisque personne n'a le même système de classement c'est en plus compliqué.
Nom premier script m'a permis d'OCRiser tout mes PDF (ouf, on peut enfin retrouver un document "perdu")

Maintenant je veux allez plus loin en donnant automatiquement un nom significatif a chaque fichier (voir de le classer automatiquement)
l'idee serait donc la suivante :

For le premier i.pdf fichier trouvé dans le dossier, 
    Si Fichier i.pdf contient les mots Impots et habitation alors renomme le en TaxeHabitation_i.pdf
    Si Fichier i.pdf contient les mots EDF et facture alors renomme le en FactureEDF_i.pdf
    Si Fichier i.pdf contient les mots Orange et facture alors renomme le en FactureOrange_i.df
    ...
    ...
    Sinon renomme le en ARenommerManuellement.pdf
    Déplacer le fichier dans le repertoir FichierRenomme
Done

je penses qu'il faut lister manuelllement les cas de façon à "maitriser" le classement. Je ne vois pas bien comment faire pour rendre le script facilement modifiable (sans avoir une imbrication infernal de if). Si quelqu'un a déjà travaillé sur le sujet je suis preneur.

L'objectif final et d'avoir des fichiers bien classés pour maitirser ses archives dans les règles de l'art pour pouvoir les purger.

Hors ligne

#2 Le 07/04/2016, à 13:41

J5012

Re : Renommer un pdf en fonction de son contenu

boucle type :
select condition 1 2 3 4 etc
case renomme 1 2 3 4 etc

tu peux faire la detection avant creation du pdf , à la sortie de la conversion ocr dans le fichier temporaire cree par tesseract ...

Hors ligne

#3 Le 07/04/2016, à 13:48

serged

Re : Renommer un pdf en fonction de son contenu

- Pour extraire le texte du PDF, tu peux utiliser pdftotext. genre :

text=/tmp/document
pdftotext i.pdf>$text

- ensuite chercher les mots-clefs avec grep
- faire une suite de if / elif

if [ grep -i impots $text ] && [ grep -i habitation $text ] ; then
 mv i.pdf TaxeHabitation_i.pdf
elif  [ grep -i facture $text ] && [ grep -i edf $text ] ; then
...
fi

LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)

Hors ligne

#4 Le 07/04/2016, à 22:29

fralyon

Re : Renommer un pdf en fonction de son contenu

j'imagine maintenant une autre approche avec l'utilisation d'un filtre bayésien
https://pypi.python.org/pypi/simplebayes/1.5.8
qui pourrait permettre un apprentissage du contenu des dossiers afin de classer au plus juste

Initialisation du filtre bayesien avec cache
import simplebayes
bayes = simplebayes.SimpleBayes(cache_path='/Archive/cache/')
    # Cache file is '/my/cache/_simplebayes.pickle'
    # Default cache_path is '/tmp/'
if not bayes.cache_train():
    # pour chaque catégorie on initialise les principaux mots clefs attendus
    bayes.train('103010', 'Impots taxe habitation ...')
    bayes.train('301010', 'GMF Lyon .................')
    bayes.train('901030', 'ELIPSO RSI ...............')
    bayes.train('......', '..........................')
    ....
    On répète pour tous les répertoires dans lesquels on va classer des documents

On appose la catégorie attendue sur le fichier
    assert bayes.classify('... GMF ...Lyon...') == 301010

Je déplace le fichier catégorisé dans le dossier adhoc  /30_Assurance/10_Appartement/10_Attestation

La catégorie est un code qui correspond

/10 Logement/10 Consommations/10 Telephone
                                                       /20 Electricite
                                                      /30 Gaz
                                                      ..
                         /10 Travaux          ..
                          ..                          ..
/20 Banque         ..                         ..
/30 Assurances/10 Appartement/10 Attestation
/50 Impots         ..                          ..
..                        ..                          ..

Si vous avez des idées pour le code je suis preneur car je suis une grosse buse

Hors ligne