Contenu | Rechercher | Menus

Annonce

Ubuntu-fr.org recrute toujours de nouveaux modérateurs, avec de l'expérience.

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

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

nombre réponses : 8

#0 -1 »  Renommer un pdf en fonction de son contenu » Le 07/04/2016, à 11:49

fralyon
Réponses : 3

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.

#1 Re : -1 »  Renommer un pdf en fonction de son contenu » Le 07/04/2016, à 22:29

fralyon
Réponses : 3

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

#2 -1 »  [OCR] - Gestion des documents familliaux » Le 31/03/2016, à 15:26

fralyon
Réponses : 5

Je souhaiterais mettre en place pour un usage famillial un système d'OCR qui puisse permettre de faciliter la gestion de la paprasse
l'idée serait donc :

Je scan mes fichiers (PNG / JPG / PDF) et les poses dans un dossier
Ensuite l'OCR prends le relais, il detect les nouveaux fichier et créé un PDF OCRisé
Enfin il sauve cela dans un dossier.

Comme cela je peux faire des recheches dans les fichier et classer mes papiers sans me faire C#¤^*$é

Pensez vous que cela soit possible ?

#3 Re : -1 »  [OCR] - Gestion des documents familliaux » Le 01/04/2016, à 20:58

fralyon
Réponses : 5

Je penses que la proposition du "tout OCR" serait la plus adaptée
paperwork est une solution séduisante, par contre, elle demande un PC connecté au serveur. Dans mon cas, le scanner se trouve dans un placard a côté de mon serveur (un vieux mac mini transformé en serveur).

Je vais donc explorer la proposition de LeoMajor, par contre si je suis assez dégourdi pour faire tourner mon serveur en assemblant des briques, je n'ai aucune expérience de script alors si vous avez des ressources je suis preneur.

dans tous les cas si j'ai bien compris :
1 - J'installe tesseract pour l'OCR
2 - J'installe pandoc pour la conversion de fichier
3 - J'installe incron pour batcher l'ensemble ...

Enfin j'apprends a faire un script ... Je sais pas pourquoi j'ai l'impression que mes prochaines vacances pluvieuses vont être studieuses .... smile

#4 Re : -1 »  [OCR] - Gestion des documents familliaux » Le 03/04/2016, à 19:34

fralyon
Réponses : 5

bon

j'ai un peu travailler et j'en suis  ici, le script permet d'OCRiser un pdf existant, je m'appuis sur :
  - ImageMagick pour transformer un pdf existant en image (pour améliorer le résultat de tesseract) et décomposer le pdf
  - tesseract pour l'OCR converti l'image en pdf
  - pdftk pour assembler les pdf unitaires afin de recomposer le fichier initial
  - pdfwrite pour réduire la taille du pdf

le résultat est plutôt bon par contre le code surement un peu cra cra si vous avez des suggestions pour l'améliorer le voici

#!/bin/bash
cd /media/cerisier/OCR/DocumentsATraiter
var=$(ls -a . | sed -e "/\.$/d" | wc -l)
while [ $var != 0 ]
do
	echo traitement fichier
	mkdir temp/
	cd /media/cerisier/OCR/DocumentsATraiter
	shopt -s extglob
	mv $(ls -tr1 | awk 'FNR==1') temp/
	cd /media/cerisier/OCR/DocumentsATraiter/temp/
	for i in  *.PDF ; do 
		nomcomplet=$(basename $i)
		nom=${nomcomplet%.*}
		convert -density 1200 -resize 25% "$i" -quality 100 "$nom".jpg ;
		done
	for i in *.jpg ; do
		nomcomplet=$(basename $i)
		nom=${nomcomplet%.*}
		tesseract -l fra "$i" "$nom".pdf pdf; 
		done
	nomcomplet=$(basename $i)
	nom=${nomcomplet%.*} 
	pdftk *.pdf cat output "$nom"-OC.pdf
	gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile="$nom"-OCR.pdf "$nom"-OC.pdf
	mv "$nom"-OC.pdf /media/cerisier/OCR/DocumentsTraite/ ;
	cd /media/cerisier/OCR/DocumentsATraiter
	rm -Rf /media/cerisier/OCR/DocumentsATraiter/temp
	echo document traité et deplacé dans dossier DocumentsTraité
	sleep 5
	var=$(ls -a . | sed -e "/\.$/d" | wc -l)
done
echo tous les documents ont été traités

#5 Re : -1 »  [OCR] - Gestion des documents familliaux » Le 07/04/2016, à 11:53

fralyon
Réponses : 5

Je poursuis la réflexions dans le sous forum "Terminal, scripts et ligne de commande"

1er fil - Renommer un fichier pdf en fonction de son contenu fil de discussion

#6 Re : -1 »  Open Office, Reconnaissance de caractères, Xsane, Kooka et Cie... » Le 30/08/2011, à 09:22

fralyon
Réponses : 516

Si l'OCR sous linux est si complexe
existe t il la possibilité d'avoir depuis un fichier image,
un fichier pdf avec le texte issu de l'OCR masqué ?

#7 -1 »  Scanner a defilement brother sur imprimante multifonction » Le 25/09/2011, à 22:08

fralyon
Réponses : 1

Je n'arrive pas a faire fonctionner mon scanner avec le chargeur de document (DCP-6690cw)

j'arrive bien a faire fonctionner le scanner,
la fonction de scan vers une clef USB permet bien de scanner avec le chageur de document ( scan 25 pages dans 1 pdf)

par contre, la fonction scan vers fichier ne le permet pas ... enfin, c'est plutot que je ne sais pas comment décrire ce principe dans le script


#! /bin/sh
set +o noclobber
#
#   $1 = scanner device
#   $2 = friendly name
#

#   
#       100,200,300,400,600
#
resolution=100
device=$1
mkdir -p ~/brscan
if [ "`which usleep`" != '' ];then
    usleep 10000
else
    sleep  0.01
fi
output_file=`mktemp ~/brscan/brscan.XXXXXX`
chmod 644 $output_file
echo "scan from $2($device) to $output_file"
scanimage --device-name "$device" --resolution $resolution> $output_file
convert $output_file "$output_file.pdf"
rm -f $output_file