Extraction d'informations à partir de fichiers PDF de documents de recherche [fermé]

StackOverflow https://stackoverflow.com/questions/1813427

  •  06-07-2019
  •  | 
  •  

Question

J'ai besoin d'un mécanisme permettant d'extraire des métadonnées bibliographiques à partir de documents PDF afin d'éviter que les personnes qui les saisissent ne les saisissent à la main ou les copient et les collent.

À tout le moins, le titre et le résumé. La liste des auteurs et leurs affiliations serait bien. Extraire les références serait étonnant.

Idéalement, ce serait une solution open source.

Le problème est que tous les PDF ne codent pas le texte, et que beaucoup ne parviennent pas à conserver l'ordre logique du texte. Le simple fait de pdf2text vous donne la ligne 1 de la colonne 1, la ligne 1 de la colonne 2, la ligne 2 de la colonne 1 etc.

Je sais qu'il y a beaucoup de bibliothèques. Il s’agit d’identifier le résumé, les auteurs du titre, etc. sur le document que je dois résoudre. Cela ne sera jamais possible à chaque fois, mais 80% économiseraient beaucoup d'efforts humains.

Était-ce utile?

La solution 2

Nous avons organisé un concours pour résoudre ce problème au salon Dev8D de Londres, en février 2010, et nous avons créé un joli petit outil GPL. Nous ne l'avons pas encore intégré à nos systèmes, mais cela existe dans le monde.

https://code.google.com/p/pdfssa4met/

Autres conseils

Je n'ai droit qu'à un seul lien par publication, c'est donc ça: page de manuel Linux pdfinfo

Cela pourrait donner le titre et les auteurs. Regardez au bas de la page de manuel et un lien vers www.foolabs.com/xpdf où vous pouvez trouver le code source ouvert du programme, ainsi que des fichiers binaires pour différentes plates-formes.

Pour extraire des références bibliographiques, consultez cb2bib :

  

cb2Bib est une application gratuite, open source et multiplateforme pour l'extraction rapide de références bibliographiques non formatées ou non standardisées à partir d'alertes par courrier électronique, de pages Web de journaux et de fichiers PDF.

Vous pouvez également consulter les forums de discussion sur www.zotero.org où ce sujet a été abordé.

Peut-être un tantinet simpliste mais googler "bibtex + titre de papier" Habituellement, vous obtenez une entrée bibtex formatée auprès de ACM, Citeseer ou d'autres sites de suivi de référence. Bien sûr, cela suppose que le document ne provient pas d’un journal non informatique: D

- EDITER -

J'ai le sentiment que vous ne trouverez pas de solution personnalisée pour cela, vous pouvez écrire aux suiveurs de citations tels que Citeseer, ACM et Google Scholar pour avoir des idées sur ce qu'ils ont fait. Il y a des tonnes d'autres et vous pourriez trouver que leurs implémentations ne sont pas des sources fermées, mais pas sous une forme publiée Il existe des tonnes de matériel de recherche sur le sujet.

L’équipe de recherche dont je fais partie a examiné ces problèmes et nous sommes parvenus à la conclusion que des algorithmes d’extraction manuscrits ou l’apprentissage automatique étaient la solution. Les algorithmes écrits à la main sont probablement votre meilleur choix.

Ceci est un problème assez difficile en raison de la quantité de variation possible. Je suggère de normaliser les PDF en texte (que vous pouvez vous procurer dans l'une des douzaines de bibliothèques PDF programmatiques). Vous devez ensuite implémenter des algorithmes de déchirure de texte personnalisés.

Je commencerais par revenir en arrière à partir de la fin du fichier PDF pour rechercher le type de clés de citation existant, par exemple [1], [année-auteur], (auteur-année), puis essayer d'analyser la phrase suivante. Vous devrez probablement écrire du code pour normaliser le texte obtenu dans une bibliothèque (en supprimant les espaces supplémentaires, par exemple). Je chercherais seulement les clés de citation comme premier mot d'une ligne, et seulement 10 pages par document - le premier mot doit avoir des délimiteurs de clé - par exemple, '[' ou '('. Si aucune clé ne peut être trouvée dans 10 pages ignorent le PDF et le signalent pour une intervention humaine.

Vous voudrez peut-être une bibliothèque que vous pourrez consulter par programme pour formater les métadonnées dans les citations - par exemple, les italiques ont une signification particulière.

Je pense que vous risquez de perdre du temps à trouver une solution efficace, puis à mettre au point un processus continu d’ajustement et d’ajout aux algorithmes / au moteur de démolition.

Dans ce cas, je recommanderais TET à partir de PDFLIB

Si vous avez besoin de savoir rapidement ce qu’il peut faire, consultez le Livre de recettes TET

Ce n’est pas une solution open source, mais c’est actuellement la meilleure option à mon avis. Il ne dépend pas de la plate-forme et dispose d'un riche ensemble de liaisons de langage et d'un support commercial.

Je serais heureux si quelqu'un m'indiquait une alternative open source équivalente ou meilleure.

Pour extraire le texte, vous utiliseriez les fonctions TET_xxx () et pour interroger les métadonnées, vous pouvez utiliser les fonctions pcos_xxx () .

Vous pouvez également utiliser l'outil commanline pour générer un fichier XML contenant toutes les informations nécessaires.

tet --tetml word file.pdf

Il existe des exemples de traitement de TETML avec XSLT . dans le livre de recettes TET

Qu'est-ce que & 8217; est-il inclus dans TETML?

  

La sortie TETML est codée en UTF-8 (sur zSeries avec USS ou   MVS: EBCDIC-UTF-8, voir www.unicode.org/reports/tr16), et inclut les informations suivantes:   informations générales sur les documents et métadonnées   contenu textuel de chaque page (mots ou paragraphe)   informations sur les glyphes (nom de la police, taille, coordonnées)   informations de structure, par exemple les tables   informations sur les images placées sur la page   informations sur les ressources, c'est-à-dire les polices, les espaces de couleurs et les images   messages d'erreur si une exception s'est produite lors du traitement du PDF

Consultez iText . C'est une bibliothèque Java qui vous permettra de lire des PDF. Vous aurez toujours du mal à trouver les bonnes données, mais la bibliothèque fournira des informations de mise en forme et de présentation pouvant être utilisées à des fins infératives.

Une autre bibliothèque Java à essayer serait PDFBox . Les PDF sont vraiment conçus pour être visualisés et imprimés, vous voulez donc certainement qu'une bibliothèque se charge du gros du travail. Même dans ce cas, vous devrez peut-être un peu recoller des morceaux de texte pour obtenir les données que vous voulez extraire. Bonne chance!

Consultez ce document de recherche - Extraction précise d'informations à partir de documents de recherche utilisant Champs aléatoires conditionnels

Vous pouvez utiliser un package open source tel que Stanford NER . pour démarrer sur les CRF.

Vous pouvez également essayer de les importer (les documents de recherche) au format Mendeley . Apparemment, il devrait extraire les informations nécessaires pour vous.

J'espère que cela vous aidera.

Voici ce que je fais avec linux et cb2bib .

  1. Ouvrez cb2bib et assurez-vous que la connexion au Presse-papiers est activée et que votre base de référence est chargée
  2. Trouvez votre article sur Google Scholar
  3. Cliquez sur "Importer en bibtex" sous le papier
  4. Sélectionnez (mettez en surbrillance) tout ce qui se trouve sur la page suivante (c'est-à-dire le code bibtex)
  5. Il devrait maintenant apparaître sous le format cb2bib
  6. Vous pouvez maintenant appuyer sur la recherche sur le réseau (l'icône de globe) pour ajouter des informations supplémentaires.
  7. Appuyez sur save dans cb2bib pour ajouter le papier à votre base de données de références.

Répétez cette opération pour tous les papiers. Je pense qu'en l'absence d'une méthode permettant d'extraire de manière fiable les métadonnées des fichiers PDF, c'est la solution la plus simple que j'ai trouvée.

Je recommande gscholar en combinaison avec pdftotext .

Bien que PDF fournisse des métadonnées, il est rarement rempli avec le contenu correct. Souvent " None " ou " Adobe-Photoshop " ou d'autres chaînes muettes sont à la place du champ titre, par exemple. C'est pourquoi aucun des outils ci-dessus ne peut générer des informations correctes à partir de fichiers PDF car le titre peut figurer n'importe où dans le document. Autre exemple: de nombreux articles de conférence peuvent également porter le titre de la conférence ou le nom des éditeurs, ce qui confond les outils d’extraction automatique. Les résultats sont alors complètement faux quand vous vous intéressez aux vrais auteurs du papier.

Je suggère donc une approche semi-automatique impliquant Google Scholar.

  1. Convertissez le PDF en texte afin que vous puissiez extraire: auteur et titre.
  2. La deuxième copie colle certaines de ces informations et interroge Google Scholar. Pour automatiser cela, j'utilise le script python cool gscholar.py.

Dans la vraie vie, voici ce que je fais:

me@box> pdftotext 10.1.1.90.711.pdf - | head
Computational Geometry 23 (2002) 183–194
www.elsevier.com/locate/comgeo

Voronoi diagrams on the sphere ✩
Hyeon-Suk Na a , Chung-Nim Lee a , Otfried Cheong b,∗
a Department of Mathematics, Pohang University of Science and Technology, South Korea
b Institute of Information and Computing Sciences, Utrecht University, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands

Received 28 June 2001; received in revised form 6 September 2001; accepted 12 February 2002
Communicated by J.-R. Sack
me@box> gscholar.py "Voronoi diagrams on the sphere Hyeon-Suk" 
@article{na2002voronoi,
  title={Voronoi diagrams on the sphere},
  author={Na, Hyeon-Suk and Lee, Chung-Nim and Cheong, Otfried},
  journal={Computational Geometry},
  volume={23},
  number={2},
  pages={183--194},
  year={2002},
  publisher={Elsevier}
}

EDIT: Faites attention, vous pourriez rencontrer des captchas. bibfetch est un autre excellent script.

Vient de trouver pdftk ... c'est étonnant, vient dans une distribution binaire pour Win / Lin / Mac ainsi que la source.

En fait, j’ai résolu mon autre problème (regardez mon profil, j’ai posé la question, puis vous avez répondu à une autre question en pdf. Impossible de créer un lien en raison de la limitation d’un lien).

Il peut effectuer une extraction de métadonnées au format PDF, par exemple, la ligne contenant le titre:

 pdftk test.pdf dump_data output test.txt | grep -A 1 "InfoKey: Title" | grep "InfoValue"

Il peut afficher le titre, l'auteur, la date de modification et même les signets et les numéros de page (le test pdf comportait des signets) ... il faudra évidemment un peu de travail pour afficher correctement le résultat, mais je pense que cela devrait convenir à votre besoins.

Si vos fichiers PDF ne contiennent pas de métadonnées (c.-à-d. pas de métadonnées "abstraites"), vous pouvez modifier le texte en utilisant un outil différent, tel que pdf2text, et utiliser les astuces de grep décrites ci-dessus. Si vos fichiers PDF ne sont pas traités par OCR, vous avez un problème beaucoup plus important et les requêtes ad-hoc sur le (s) fichier (s) pdf seront extrêmement lentes (mieux pour OCR).

Quoi qu'il en soit, je vous recommanderais de créer un index de vos documents au lieu de demander à chaque requête d'analyser les métadonnées / texte du fichier.

PyPDF pourrait être utile. Il fournit une API complète pour la lecture et l'écriture du contenu d'un fichier PDF (non chiffré), et son écriture dans un langage simple Python.

Essayez citeyoulike . C'est un site Web qui vous permet de constituer une bibliothèque de documents, de leur attribuer des balises, de les rechercher et de joindre des commentaires. Il vous permet également d’ajouter un bouton à votre navigateur Web pour essayer d’extraire automatiquement les informations souhaitées, y compris le résumé. Cela ne tire pas grand-chose d'un pdf cependant. Toutefois, si vous citez un article sur un article sur IEEE Explorer, Citeseer ou sur de nombreux sites de journaux, il est généralement en mesure d’obtenir toutes les informations sur bibtex.

Le problème, c’est que souvent les fichiers PDF ne disposent pas de toutes les informations de citation. Vous devriez normalement avoir le titre et les auteurs, mais pas nécessairement le nom de la conférence ou l'année de publication. Il est logique de commencer par trouver une citation du document sur siteseer, PubMed ou un autre lieu, puis d’en extraire les informations.

En général, j’ai trouvé que citeyoulike était extrêmement utile pour organiser des documents. C'est également utile pour collaborer avec d'autres personnes. Vous pouvez créer des groupes, partager des documents, créer des forums, etc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top