Domanda

Ho bisogno di un meccanismo per estrarre metadati bibliografici da documenti PDF, per salvare le persone che vi entrano manualmente o per tagliarlo e incollarlo.

Per lo meno, il titolo e l'abstract. L'elenco degli autori e le loro affiliazioni sarebbe buono. Estrarre i riferimenti sarebbe sorprendente.

Idealmente questa sarebbe una soluzione open source.

Il problema è che non tutti i PDF codificano il testo, e molti che non riescono a preservare l'ordine logico del testo, quindi semplicemente fare pdf2text ti dà la riga 1 della colonna 1, la riga 1 della colonna 2, la riga 2 della colonna 1 ecc.

So che ci sono molte librerie. Sta identificando l'abstract, gli autori del titolo ecc. Sul documento che devo risolvere. Questo non sarà mai possibile ogni volta, ma l'80% risparmierebbe molto sforzo umano.

È stato utile?

Soluzione 2

Abbiamo lanciato un concorso per risolvere questo problema a Dev8D a Londra, febbraio 2010 e di conseguenza abbiamo creato un piccolo strumento GPL. Non l'abbiamo ancora integrato nei nostri sistemi ma è presente nel mondo.

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

Altri suggerimenti

Ho solo un link per post, quindi è questo: pagina del manuale di pdfinfo Linux

Questo potrebbe ottenere il titolo e gli autori. Guarda in fondo alla pagina del manuale e c'è un link a www.foolabs.com/xpdf dove è possibile trovare l'open source per il programma, così come i file binari per varie piattaforme.

Per estrarre i riferimenti bibliografici, guarda cb2bib :

  

cb2Bib è un'applicazione gratuita, open source e multipiattaforma per l'estrazione rapida di riferimenti bibliografici non formattati o non standardizzati da avvisi e-mail, pagine Web di riviste e file PDF.

Potresti anche voler controllare i forum di discussione su www.zotero.org in cui è stato discusso questo argomento.

Potrebbe essere un po 'semplicistico ma Googling " bibtex + titolo della carta " ussualy ti dà una voce bibtex formattata da ACM, Citeseer o altri siti di tracciamento di riferimento. Naturalmente questo presuppone che il documento non provenga da un giornale non informatico: D

- EDIT -

Ho la sensazione che non troverai una soluzione personalizzata per questo, potresti scrivere a tracker citazioni come citeseer, ACM e google scholar per avere idee su ciò che hanno fatto. Ce ne sono molti altri e potresti scoprire che le loro implementazioni non sono a codice chiuso ma non in forma pubblicata. Ci sono tonnellate di materiale di ricerca sull'argomento.

Il team di ricerca di cui faccio parte ha esaminato tali problemi e siamo giunti alla conclusione che gli algoritmi di estrazione scritti a mano o l'apprendimento automatico sono il modo per farlo. Gli algoritmi scritti a mano sono probabilmente la soluzione migliore.

Questo è un problema piuttosto difficile a causa della quantità di variazione possibile. Suggerisco di normalizzare i PDF in testo (che si ottiene da una qualsiasi delle decine di librerie PDF programmatiche). È quindi necessario implementare algoritmi di eliminazione del testo personalizzati.

Vorrei tornare indietro dalla fine del PDF e guardare che tipo di chiavi di citazione esistono - ad es. [1], [autore-anno], (autore-anno) e quindi provare ad analizzare la frase seguente. Probabilmente dovrai scrivere codice per normalizzare il testo che ottieni da una libreria (rimuovendo spazi bianchi extra e simili). Vorrei solo cercare le chiavi di citazione come prima parola di una riga e solo per 10 pagine per documento - la prima parola deve avere delimitatori di chiave - ad esempio, '[' o '('. Se non è possibile trovare chiavi in 10 pagine quindi ignorano il PDF e lo contrassegnano per l'intervento umano.

Potresti desiderare una libreria che puoi consultare ulteriormente a livello di programmazione per la formattazione dei metadati all'interno di citazioni - ad esempio, gli itallici hanno un significato speciale.

Penso che potresti finire per spendere un po 'di tempo per ottenere una soluzione funzionante, e quindi un processo continuo di ottimizzazione e aggiunta agli algoritmi / motore di scraping.

In questo caso, consiglierei TET da PDFLIB

Se hai bisogno di avere un'idea di cosa può fare, dai un'occhiata a TET Ricettario

Questa non è una soluzione open source, ma al momento è la migliore opzione secondo me. Non dipende dalla piattaforma e ha un ricco set di associazioni linguistiche e un supporto commerciale.

Sarei felice se qualcuno mi indicasse un'alternativa open source equivalente o migliore.

Per estrarre il testo dovresti usare le funzioni TET_xxx () e per interrogare i metadati puoi usare le funzioni pcos_xxx () .

Puoi anche usare lo strumento commanline per generare un file XML contenente tutte le informazioni di cui hai bisogno.

tet --tetml word file.pdf

Ci sono esempi su come elaborare TETML con XSLT nel Ricettario TET

Che cosa è incluso in TETML?

  

L'output TETML è codificato in UTF-8 (su zSeries con USS o   MVS: EBCDIC-UTF-8, vedere www.unicode.org/reports/tr16) e include le seguenti informazioni:   informazioni generali sul documento e metadati   contenuto del testo di ogni pagina (parole o paragrafo)   informazioni glifo (nome del carattere, dimensione, coordinate)   informazioni sulla struttura, ad es. tavoli   informazioni sulle immagini inserite nella pagina   informazioni sulle risorse, ad esempio caratteri, spazi colore e immagini   messaggi di errore se si è verificata un'eccezione durante l'elaborazione PDF

Dai un'occhiata a iText . È una libreria Java che ti permetterà di leggere PDF. Dovrai ancora affrontare il problema di trovare i dati giusti, ma la libreria fornirà informazioni sulla formattazione e sul layout che potrebbero essere utilizzabili per dedurne lo scopo.

Un'altra libreria Java da provare sarebbe PDFBox . I PDF sono davvero progettati per essere visualizzati e stampati, quindi sicuramente vuoi che una libreria faccia il lavoro pesante per te. Anche così, potresti dover incollare un po 'di pezzi di testo per ottenere i dati che vuoi estrarre. Buona fortuna!

Dai un'occhiata a questo documento di ricerca - Estrazione accurata delle informazioni dai documenti di ricerca utilizzando Campi casuali condizionali

Potresti voler utilizzare un pacchetto open source come Stanford NER per iniziare con i CRF.

O forse, potresti provare a importarli (i documenti di ricerca) in Mendeley . Apparentemente, dovrebbe estrarre le informazioni necessarie per te.

Spero che questo aiuti.

Ecco cosa faccio usando linux e cb2bib .

  1. Apri cb2bib e assicurati che la connessione degli appunti sia attiva e che il tuo database di riferimento sia caricato
  2. Trova il tuo documento su google scholar
  3. Fai clic su "importa in bibtex" sotto il foglio
  4. Seleziona (evidenzia) tutto nella pagina successiva (es., il codice bibtex)
  5. Ora dovrebbe apparire formattato in cb2bib
  6. Opzionalmente ora premi la ricerca di rete (l'icona del globo) per aggiungere ulteriori informazioni.
  7. Premere salva in cb2bib per aggiungere il documento al database di riferimento.

Ripeti questo per tutti i documenti. Penso che in assenza di un metodo che estrae in modo affidabile metadati dai PDF, questa è la soluzione più semplice che ho trovato.

Raccomando gscholar in combinazione con pdftotext .

Sebbene il PDF fornisca metadati, raramente viene popolato con contenuti corretti. Spesso "Nessuno". o " Adobe-Photoshop " o altre stringhe stupide sono al posto del campo del titolo, per esempio. Questo è il motivo per cui nessuno degli strumenti di cui sopra potrebbe derivare informazioni corrette dai PDF poiché il titolo potrebbe trovarsi ovunque nel documento. Un altro esempio: molti documenti degli atti della conferenza potrebbero anche avere il titolo della conferenza o il nome dei redattori che confondono gli strumenti di estrazione automatica. I risultati sono quindi completamente sbagliati quando sei interessato ai veri autori dell'articolo.

Quindi suggerisco un approccio semi-automatico che coinvolga google scholar.

  1. Rendi il PDF in testo, quindi puoi estrarre: autore e titolo.
  2. La seconda copia incolla alcune di queste informazioni e richiede google scholar. Per automatizzare questo, utilizzo il fantastico script python gscholar.py.

Quindi nella vita reale questo è quello che faccio:

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: fai attenzione, potresti incontrare captchas. Un altro ottimo script è bibfetch .

Appena trovato pdftk ... è incredibile, è disponibile in una distribuzione binaria per Win / Lin / Mac e sorgente.

In effetti, ho risolto il mio altro problema (guarda il mio profilo, ho chiesto quindi ho risposto a un'altra domanda in pdf .. impossibile collegarmi a causa della limitazione di 1 collegamento).

Può eseguire l'estrazione di metadati pdf, ad esempio, questo restituirà la riga contenente il titolo:

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

Può scaricare titolo, autore, mod-date e persino segnalibri e numeri di pagina (il pdf di prova aveva segnalibri) ... ovviamente sarà necessario un po 'di lavoro per greppare correttamente l'output, ma penso che questo dovrebbe adattarsi al tuo ha bisogno.

Se i tuoi pdf non hanno metadati (ovvero nessun metadata "astratto"), puoi utilizzare il cat utilizzando un altro strumento come pdf2text e usare alcuni trucchi grep come sopra. Se i tuoi PDF non sono OCR, hai un problema molto più grande e l'interrogazione ad hoc dei pdf sarà dolorosamente lenta (meglio per OCR).

Indipendentemente da ciò, ti consiglio di creare un indice dei tuoi documenti invece di fare in modo che ogni query esegua la scansione del file metadata / testo.

PyPDF potrebbe essere di aiuto. Fornisce una vasta API per la lettura e la scrittura del contenuto di un file PDF (non crittografato) e la sua scrittura in un linguaggio Python semplice.

Prova citeyoulike . È un sito Web che consente di mettere insieme una libreria di documenti, assegnare tag a loro, cercarli e allegare commenti. Inoltre, consente di aggiungere un pulsante al browser Web, che tenterebbe di estrarre automaticamente le informazioni desiderate, incluso l'abstract. Tuttavia, non si ottiene molto da un pdf. Tuttavia, se lo indichi a una citazione per un documento su IEEE explorer, citeseer o molti siti di riviste, di solito è in grado di ottenere tutte le informazioni bibtex.

Il fatto è che i pdf spesso non hanno tutte le informazioni sulle citazioni per cominciare. Normalmente avresti il ??titolo e gli autori, ma non necessariamente il nome della conferenza o l'anno di pubblicazione. Ha senso prima trovare una citazione per l'articolo su siteseer, PubMed o in qualche altro posto ed estrarre le informazioni da lì.

In generale, ho trovato il citeyoulike estremamente utile per l'organizzazione delle carte. È anche utile per collaborare con altre persone. Puoi creare gruppi, condividere documenti, creare forum, ecc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top