[PHP/MySQL] Je sers la Science (moteur cataloguage recherche pdf)

Je sers la Science (moteur cataloguage recherche pdf) [PHP/MySQL] - PHP - Programmation

Marsh Posté le 28-12-2006 à 04:52:17    

Bonjour les gensses  [:hotshot]

 

Je prépare un système un peu... particulier... a priori assez simple : un système d'indexation-recherche-download de publis scientifiques pdf. Ci-dessous, j'expose les grandes lignes. Tout conseil, exemple, idée, suggestion, "bonne pratique" sera le bienvenu. Pour info : je me débrouille avec le web (html/apache) ; j'ai un bagage minimum en prog (je sais ce que c'est une variable, une expression régulière ou un if-then-else, quoi) ; je ne suis pas un gros newb en PHP/MySQL... mais pas loin [:joce]

 

J'ai déjà longuement fait le tour de tout un tas de CMS, DMS, gestionnaires de bibliothèques et/ou téléchargements...
En vain : soit systèmes très lourds et bourrés de fonctions inutiles (user rating, recherche textuelle intrafichier, miniatures, compteur de d/l...), soit trop exigeants niveau hardware/software (cf. ci-dessous). Mais ça m'a donné une petite idée de ce que je veux, et ne veux pas - c'est déjà ça =)

 

 

Le matos :

 

- quelques milliers de fichiers pdf (des scans) dans des répertoires, grosso merdo 10~100 fichiers (=700 Mo) par rép ;
- une infrastructure limitée : Linux basique, Apache 1.3/PHP 5/MySQL 4, 32 Mo de RAM... et c'est tout (gasp!), pas de perl java python, rien.
- .htaccess/.htpasswd autorisés

 

 

Le but :

 

1/ permettre dans un premier temps de cataloguer en local ces fichiers .pdf :
- accès limité à un admin (n.b. l'upload se fait sur place par ftp donc pas besoin de gestion d'upload)
- alimenter "à la mimine" une bdd avec qq métadonnées, pour chaque fichier (auteurs, année, titre, chemin du pdf)

 

2/ ultérieurement, mettre en place un moteur de recherche au sein ce catalogue :
- moteur de recherche basique sur tout ou partie des métadonnées (avant ou après identification utilisateur, peu importe)
- en sus, accès au pdf par http pour une petite liste d'utilisateurs (n.b. pas besoin d'une gestion des users)

 

 

Idées quant au fonctionnement :

 

- une page de recherche toute simple : comme c'est une "bibliographie scientifique" les utilisateurs feront des recherches assez précises - par nom(s) d'auteur(s) + date (Dupont et Dupond, 2004) et éventuellement par mots présents dans le titre (parthénogénèse poulpes). Rien de plus.

 

- une page d'alimentation de la bdd en métadonnées. Fonctionne par sélection d'un répertoire, puis remplissage des divers champs pour chaque fichier de ce rép. Idéalement: le tout réalisable sur une même page pour gagner du temps (pas besoin de sélectionner chaque fichier). Le catalogage étant effectué une fois pour toutes, il n'y a pas à gérer de modif ultérieure des champs d'un fichier.

 

 

--
Bon, voilà, maintenant je me plonge dans le cambouis...
Si vous avez qqch à en dire, lachez vos com' ( :sweat: ) En plus ça sera ptêtre instructif pour d'autres... allez savoir.
Message aux flicaillous zélés, il n'y a rien d'illégal dans ce projet : autorisation des auteurs et/ou oeuvres publiques. Je suis pas payé, je m'autoforme, et je rends service.
La binouze est gratos sur ce tomic, mais abusez pas du hs sinon gare au Harkozy [:sarko]

Message cité 1 fois
Message édité par Profil supprimé le 28-12-2006 à 04:57:16
Reply

Marsh Posté le 28-12-2006 à 04:52:17   

Reply

Marsh Posté le 28-12-2006 à 04:54:52    

( )

Reply

Marsh Posté le 28-12-2006 à 13:19:10    

Tu veux indexer le contenus des PDF ? Si oui je le sent mal en php :D. T'as vraiment pas le droit à du Python ?
Sous linux il y'a pdf2txt qui te permet de ressorti du jolie texte à partir d'un pdf, donc pour l'indexation c'est plutot easy :D
Un pauvre script Python qui s'occupe de parcourir toutes les X minutes les dossiers (lancé à l'aide d'un cron quoi :p) si nouveau fichier, hop il indexe le boozin:
Lance et recupere le résultat de pdf2text et envoie le paté dans une BDD style SQLite, qui comme sont nom l'indique est très lite :p. C'est un fichier simple en fait.
Il existe des modules en Python pour manipuler se genre de base (ASPW par exemple).

 

Apres tu fais une petite interface en Php, lui aussi peux acceder à des base SQLite (c'est implémenté de base dans php5 il me semble pour la V2 de SQLite, sinon il faut utiliser les PDO jcrois) et voila :)

 

Après si tu veux vraiment faire de l'indexation à la maniere moteur de recherche (Google par ex :D), il va falloir user de Lémmatisation.

 

Si tu veux d'autres info :D, j'ai un peu taffé sur un projet du même genre.

 

edit: je viens de voir que les PDF sont en fait des SCAN :D, tout ce que je viens de dire ne marche plus du tout alors :D.


Message édité par Kyfun le 28-12-2006 à 13:23:48

---------------
Comme dirait quelqu'un de beaucoup plus avisé que moi, quelquefois c'est toi qui cognes le bar mais d'autres fois, et ben, c'est le bar qui te cogne.
Reply

Marsh Posté le 28-12-2006 à 15:59:42    

1/ Python pas possible, SQlite non plus, pas possible de modif l'install. Cool non ? :D
2/ Effectivement, ce sont des scans, et donc la recherche intrafichier c'est pas trop utile :D
 
Mais merci :jap:

Reply

Marsh Posté le 28-12-2006 à 16:29:11    

2/ Si tu te sens capable de faire une classe OCR en php, tu serviras la science
 
:spamafote:

Reply

Marsh Posté le 28-12-2006 à 16:46:19    

-ThX- a écrit :

2/ Si tu te sens capable de faire une classe OCR en php, tu serviras la science

 

:spamafote:

 

Whééééé let's go [:yaisse]

 

(Ca n'a aucun intérêt pour le projet, vu que si j'ai une liste de biblio, la recherche par auteur+année suffit dans 9 cas sur 10, et le titre porte ça à 10 sur 10 [:joce])


Message édité par Profil supprimé le 28-12-2006 à 16:46:45
Reply

Marsh Posté le 28-12-2006 à 17:03:32    


 
Une simple page d'ajout de ces métadonnées suffira sûrement.
Un système de mots-clefs peut être pas mal aussi.
 
Pour indexer des pdf massivement comme ça, j'avais fait un système d'indexation par descripteurs (un descripteur auteur, un titre, un sujet, un mots-clefs, etc). Si ça t'interesse, je développerais un peu plus ce que j'ai fait :)
 
 
 
Pour les titres, ils sont en plus inclus dans les pdf (enfin tout dépend de la version), donc en lisant le pdf comme un fichier texte avec php, tu peux récupérer le titre, et faire une recherche dessus pourquoi pas.
 
Projet intéressant. Et je bosse pas mal sur la gestion documentaire en ce moment, donc développe un peu plus si t'as d'autres idées, et je verrais si j'ai d'autres idées au passage.
 
Le gros hic de ton projet c'est quand même le matos...
 
Enfin, drapal :)

Reply

Marsh Posté le 28-12-2006 à 19:39:56    

:jap: backdafuckup. Pour l'instant j'en suis encore à réfléchir au système comme tu as vu.
 
Qu'appelles-tu "descripteurs" exactement ? :??:
 
Sinon, les pdf n'ont aucune annotation/métadonnée inside (c'est vraiment issu d'une numérisation "brut de décoffrage", et les fichiers ne sont ensuite plus modifiés ni modifiables). En gros, ce seraient des .bmp ou .xyz que ce serait pareil. :D Ca simplifie le boulot du php (pas à parser les fichiers), pas celui de l'admin (qui doit tout se farcir "en externe" à la main)
 
C'est effectivement le côté hardware qui me fait un peu peur ; d'un autre côté, il n'y aura jamais plus de 2 ou 3 utilisateurs connectés en même temps, et vu le type de recherches effectuées il doit y avoir moyen de ne pas trop bouffer en ressources (Select etc.)

Reply

Marsh Posté le 28-12-2006 à 19:53:54    

Pourquoi ne pas uploader tes papiers sur http://arxiv.org ?

Reply

Marsh Posté le 28-12-2006 à 20:09:28    

nyrk a écrit :

Pourquoi ne pas uploader tes papiers sur http://arxiv.org ?

 

Parce que l'accès doit être restreint, parce que ça n'entre pas dans les thématiques d'Arxiv, parce qu'uploader 150 Go ça va me prendre un peu du temps, parce que l'autorisation des auteurs n'a été accordée que pour un usage intra-équipe... :whistle:

 

Mais effectivement j'avais zieuté diverses soluces de stockage "collaboratif" (y a un autre truc du même style qqpart [:klemton])


Message édité par Profil supprimé le 28-12-2006 à 20:26:31
Reply

Marsh Posté le 28-12-2006 à 20:09:28   

Reply

Marsh Posté le 29-12-2006 à 08:56:21    


 
Bon, je vais essayer de schématiser mon idée de descripteurs.
 
Dans la bdd, on a une table avec comme structure :  
 
Numero                 int
NomDescripteur      varchar
ValeurDescripteur   varchar
 
Ainsi pour un fichier (le numéro 2 par exemple) on aura dans la base :  
 
9       Auteur           Tartambouille
9       Titre              Bonjour les lampions
9       Sujet             L'anatomie des cucurbitacés
9       Mots-Clefs      anatomie
9       Mots-Clefs      cucurbitacés
9       Mots-Clefs      lampions
 
Et ainsi de suite pour chaque fichier.
 
L'avantage de cette technique est que l'on peut ajouter des descripteurs personnalisés au besoin.
Le truc c'est qu'il faut avoir des descripteurs dit "obligatoires" genre Auteur, Titre, Sujet par exemple, et laisser la possibilité d'ajouter des descripteurs dits facultatifs.
 
Ca donne un plus à la gestion de documents.
 
Et un simple "select * from descripteurs where Numero = X" donne facilement la liste complete des descripteurs...
 
On peut même en tirer des vues intéressantes (ah oui mais t'as mysql, et je sais plus trop ce qui est géré dessus).
 
Enfin voilà ce que j'ai fait quoi...
 
PS: Pour les pdf, essaie tout de même de les ouvrir avec un éditeur de texte, et regarde si ya pas une balise xml <pdf:Title>, ça nous a pas mal servi dans le parcours de repertoire pour trouver le titre interne d'un pdf...

Reply

Marsh Posté le 29-12-2006 à 15:07:41    

OK, got the point :jap: Effectivement c'est un fonctionnement approprié.
 
Et, non, y a que dalle comme métadonnées dans (la plupart de) ces PDF :/ sans compter qu'ils sont super disparates...

Reply

Marsh Posté le 05-01-2007 à 11:36:35    

Moi j'utilise le script php/mysql OScommerce (gpl) modifié http://www.oscommerce.com/
sur l'intranet...j'ai fais un catalogue interne à l'entreprise qui contient des "produits" (des images, description et fichiers .pdf attachés)
 
donc quand je fais une recherche je retrouve les .pdf que j'ai référencés...
 
(le plus long c'est de copier coller le sommaire des .pdf dans la description et d'uploader chaque fichier)
http://img147.imageshack.us/img147/223/oscommercege2.th.jpg


Message édité par Jembi00 le 05-01-2007 à 11:45:44
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed