Extracción de información de archivos PDF de trabajos de investigación [cerrado]

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

  •  06-07-2019
  •  | 
  •  

Pregunta

Necesito un mecanismo para extraer metadatos bibliográficos de documentos PDF, para evitar que las personas ingresen a mano o lo corten y peguen.

Como mínimo, el título y el resumen. La lista de autores y sus afiliaciones sería buena. Extraer las referencias sería increíble.

Idealmente, esta sería una solución de código abierto.

El problema es que no todos los PDF codifican el texto, y muchos de ellos no pueden preservar el orden lógico del texto, por lo que solo al hacer pdf2text se obtiene la línea 1 de la columna 1, la línea 1 de la columna 2, la línea 2 de la columna 1 etc.

Sé que hay muchas bibliotecas. Identifica el resumen, los autores del título, etc. en el documento que necesito resolver. Esto nunca será posible siempre, pero el 80% ahorraría mucho esfuerzo humano.

¿Fue útil?

Solución 2

Realizamos un concurso para resolver este problema en Dev8D en Londres, febrero de 2010 y como resultado obtuvimos una pequeña herramienta GPL. Todavía no lo hemos integrado en nuestros sistemas, pero está allí en el mundo.

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

Otros consejos

Solo se me permite un enlace por publicación, así que esto es todo: pdfinfo Linux página de manual

Esto podría obtener el título y los autores. Mire la parte inferior de la página del manual, y hay un enlace a www.foolabs.com/xpdf donde se puede encontrar el código abierto para el programa, así como binarios para varias plataformas.

Para extraer referencias bibliográficas, mire cb2bib :

  

cb2Bib es una aplicación gratuita, de código abierto y multiplataforma para extraer rápidamente referencias bibliográficas sin formato o no estandarizadas de alertas por correo electrónico, páginas web de revistas y archivos PDF.

También puede consultar los foros de discusión en www.zotero.org donde se ha discutido este tema.

Podría ser un poco simplista pero Google '' bibtex + paper title '' ussualy le ofrece una entrada bibtex formateada de ACM, Citeseer u otros sitios de seguimiento de referencia. Por supuesto, esto supone que el artículo no es de una revista que no sea informática: D

- EDITAR -

Tengo la sensación de que no encontrará una solución personalizada para esto, es posible que desee escribir en rastreadores de citas como citeseer, ACM y google scholar para obtener ideas sobre lo que han hecho. Hay muchos otros y es posible que sus implementaciones no sean de código cerrado, sino que no estén publicadas. Hay toneladas de material de investigación sobre el tema.

El equipo de investigación del que formo parte ha analizado estos problemas y hemos llegado a la conclusión de que los algoritmos de extracción escritos a mano o el aprendizaje automático son la forma de hacerlo. Los algoritmos escritos a mano son probablemente su mejor opción.

Este es un problema bastante difícil debido a la cantidad de variación posible. Sugiero normalizar los PDF a texto (que obtienes de cualquiera de las docenas de bibliotecas de PDF programáticas). A continuación, debe implementar algoritmos de eliminación de texto personalizados.

Comenzaría hacia atrás desde el final del PDF y vería qué tipo de claves de citas existen, por ejemplo, [1], [autor-año], (autor-año) y luego trataría de analizar la siguiente oración. Probablemente tendrá que escribir código para normalizar el texto que obtiene de una biblioteca (eliminando espacios en blanco adicionales y demás). Solo buscaría claves de citas como la primera palabra de una línea, y solo para 10 páginas por documento; la primera palabra debe tener delimitadores de clave, por ejemplo, '[' o '('. Si no se pueden encontrar claves en 10 páginas ignoran el PDF y lo marcan para intervención humana.

Es posible que desee una biblioteca que pueda consultar mediante programación para formatear metadatos dentro de citas, por ejemplo, los itálicos tienen un significado especial.

Creo que podría terminar pasando bastante tiempo para obtener una solución de trabajo, y luego un proceso continuo de ajuste y adición a los algoritmos / motor de desguace.

En este caso, recomendaría TET de PDFLIB

Si necesita tener una idea rápida de lo que puede hacer, eche un vistazo a TET Cookbook

Esta no es una solución de código abierto, pero actualmente es la mejor opción en mi opinión. No depende de la plataforma y tiene un rico conjunto de enlaces de idiomas y un respaldo comercial.

Sería feliz si alguien me señalara una alternativa de código abierto equivalente o mejor.

Para extraer texto, usaría las funciones TET_xxx () y para consultar los metadatos puede usar las funciones pcos_xxx () .

También puede usar la herramienta Commanline para generar un archivo XML que contenga toda la información que necesita.

tet --tetml word file.pdf

Hay ejemplos sobre cómo procesar TETML con XSLT en el TET Cookbook

¿Qué se incluye en TETML?

  

La salida TETML está codificada en UTF-8 (en zSeries con USS o   MVS: EBCDIC-UTF-8, ver www.unicode.org/reports/tr16), e incluye la siguiente información:   información general del documento y metadatos   contenido de texto de cada página (palabras o párrafo)   información de glifo (nombre de fuente, tamaño, coordenadas)   información de estructura, p. mesas   información sobre imágenes colocadas en la página   información de recursos, es decir, fuentes, espacios de colores e imágenes   mensajes de error si se produjo una excepción durante el procesamiento de PDF

Eche un vistazo a iText . Es una biblioteca de Java que le permitirá leer archivos PDF. Aún enfrentará el problema de encontrar los datos correctos, pero la biblioteca proporcionará información de formato y diseño que podría ser útil para inferir el propósito.

Otra biblioteca de Java para probar sería PDFBox . Los archivos PDF están realmente diseñados para ser vistos e impresos, por lo que definitivamente desea que una biblioteca haga algo del trabajo pesado por usted. Aun así, es posible que deba volver a pegar un poco las piezas de texto para obtener los datos que desea extraer. ¡Buena suerte!

Eche un vistazo a este trabajo de investigación: Extracción precisa de información de los documentos de investigación utilizando Campos aleatorios condicionales

Es posible que desee utilizar un paquete de código abierto como Stanford NER para comenzar con los CRF.

O tal vez, podría intentar importarlos (los documentos de investigación) a Mendeley . Aparentemente, debería extraer la información necesaria para usted.

Espero que esto ayude.

Esto es lo que hago usando Linux y cb2bib .

  1. Abra cb2bib y asegúrese de que la conexión del portapapeles esté activada y que su base de datos de referencia esté cargada
  2. Encuentra tu trabajo en Google Académico
  3. Haga clic en 'importar a bibtex' debajo del papel
  4. Seleccione (resalte) todo en la página siguiente (es decir, el código bibtex)
  5. Ahora debería aparecer formateado en cb2bib
  6. Opcionalmente, ahora presione búsqueda de red (el icono de globo) para agregar información adicional.
  7. Presione guardar en cb2bib para agregar el papel a su base de datos de referencia.

Repita esto para todos los papeles. Creo que, en ausencia de un método que extraiga de manera confiable los metadatos de los archivos PDF, esta es la solución más fácil que encontré.

Recomiendo gscholar en combinación con pdftotext .

Aunque el PDF proporciona metadatos, rara vez se rellena con el contenido correcto. A menudo " Ninguno " o "Adobe-Photoshop" u otras cadenas tontas están en lugar del campo de título, por ejemplo. Es por eso que ninguna de las herramientas anteriores puede derivar información correcta de los archivos PDF ya que el título puede estar en cualquier parte del documento. Otro ejemplo: muchos documentos de las actas de la conferencia también pueden tener el título de la conferencia o el nombre de los editores, lo que confunde las herramientas de extracción automática. Los resultados son totalmente erróneos cuando le interesan los verdaderos autores del artículo.

Entonces sugiero un enfoque semiautomático que involucre a Google Scholar.

  1. Procese el PDF en texto, para que pueda extraer: autor y título.
  2. Segunda copia, pega parte de esta información y consulta a Google Scholar. Para automatizar esto, utilizo el genial script de Python gscholar.py.

Entonces, en la vida real, esto es lo que hago:

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}
}

EDITAR: Tenga cuidado, puede encontrar captchas. Otro gran script es bibfetch .

Acabo de encontrar pdftk ... es increíble, viene en una distribución binaria para Win / Lin / Mac, así como la fuente.

De hecho, resolví mi otro problema (mira mi perfil, pregunté y luego respondí otra pregunta en pdf ... no puedo vincular debido a la limitación de 1 enlace).

Puede hacer una extracción de metadatos en pdf, por ejemplo, esto devolverá la línea que contiene el título:

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

Puede volcar el título, el autor, la fecha de modificación e incluso los marcadores y los números de página (el PDF de prueba tenía marcadores) ... obviamente, se necesitará un poco de trabajo para ajustar correctamente la salida, pero creo que esto debería ajustarse a su necesidades.

Si sus archivos PDF no tienen metadatos (es decir, sin metadatos "Resumen"), puede capturar el texto usando una herramienta diferente como pdf2text, y usar algunos trucos grep como los anteriores. Si sus archivos PDF no son OCR, tiene un problema mucho mayor y las consultas ad-hoc de los archivos PDF serán muy lentas (lo mejor para OCR).

Independientemente, le recomendaría que cree un índice de sus documentos en lugar de que cada consulta escanee los metadatos / texto del archivo.

PyPDF podría ser de ayuda. Proporciona una amplia API para leer y escribir el contenido de un archivo PDF (sin cifrar), y está escrito en un lenguaje fácil de Python.

Pruebe citeyoulike . Es un sitio web que le permite armar una biblioteca de documentos, asignarles etiquetas, buscarlos y adjuntar comentarios. También le permite agregar un botón a su navegador web, que trataría de extraer automáticamente la información que desea, incluido el resumen. Sin embargo, en realidad no obtiene mucho de un pdf. Sin embargo, si lo señala a una cita para un documento sobre el explorador IEEE, citeseer o muchos sitios de revistas, generalmente puede obtener toda la información bibtex.

La cuestión es que los archivos PDF a menudo no tienen toda la información de citas para empezar. Normalmente tendría el título y los autores, pero no necesariamente el nombre de la conferencia o el año de publicación. Tiene sentido encontrar primero una cita para el trabajo en sitios web, PubMed u otro lugar, y extraer la información de allí.

En general, he encontrado que citeyoulike es extremadamente útil para organizar documentos. También es útil para colaborar con otras personas. Puede crear grupos, compartir documentos, configurar foros, etc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top