Извлечение информации из PDF научных статей [закрыто]

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

  •  06-07-2019
  •  | 
  •  

Вопрос

Мне нужен механизм для извлечения библиографических метаданных из PDF-документов, чтобы люди могли вводить их вручную или вырезать и вставлять.

По крайней мере, заголовок и аннотация. Список авторов и их принадлежности были бы хорошими. Извлечение ссылок было бы удивительно.

В идеале это будет решение с открытым исходным кодом.

Проблема в том, что не все PDF-файлы кодируют текст, и многие из них не сохраняют логический порядок текста, поэтому простое выполнение pdf2text дает вам строку 1 столбца 1, строку 1 столбца 2, строку 2 столбца 1 и т. Д.

Я знаю, что есть много библиотек. Это идентификация тезисов, титульных авторов и т. Д. В документе, которые мне нужно решить. Это никогда не будет возможно каждый раз, но 80% сэкономит много человеческих усилий.

Это было полезно?

Решение 2

Мы провели конкурс по решению этой проблемы на Dev8D в Лондоне, февраль 2010 года, и в результате мы получили симпатичный маленький инструмент GPL. Мы еще не интегрировали его в наши системы, но он есть в мире.

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

Другие советы

Мне разрешена только одна ссылка на публикацию, вот и все: страница руководства pdfinfo для Linux

Это может получить название и авторов. Посмотрите внизу страницы руководства, и там есть ссылка на www.foolabs.com/xpdf, где можно найти открытый исходный код программы, а также двоичные файлы для различных платформ.

Чтобы получить библиографические ссылки, посмотрите cb2bib :

  

cb2Bib - это бесплатное мультиплатформенное приложение с открытым исходным кодом для быстрого извлечения неформатированных или нестандартных библиографических ссылок из предупреждений по электронной почте, веб-страниц журнала и файлов PDF.

Возможно, вы также захотите посетить дискуссионные форумы на сайте www.zotero.org, где обсуждалась эта тема.

Возможно, это немного упрощенно, но поиск в Google "bibtex + paper title" ussualy получает отформатированную запись bibtex от ACM, Citeseer или других подобных сайтов отслеживания ссылок. Конечно, это предполагает, что статья не из некомпьютерного журнала: D

- РЕДАКТИРОВАТЬ -

У меня есть ощущение, что вы не найдете подходящего решения для этого, возможно, вы захотите написать трекерам цитирования, таким как citeseer, ACM и google scholar, чтобы получить идеи о том, что они сделали. Есть множество других, и вы можете обнаружить, что их реализации не являются закрытым исходным кодом, но не опубликованы. Существует множество исследовательских материалов на эту тему.

Исследовательская группа, частью которой я являюсь, рассмотрела такие проблемы, и мы пришли к выводу, что именно ручные алгоритмы извлечения или машинное обучение - это способ сделать это. Рукописные алгоритмы - это, вероятно, ваш лучший выбор.

Это довольно сложная проблема из-за возможного количества изменений. Я предлагаю нормализовать PDF к тексту (который вы получаете из любой из десятков программных библиотек PDF). Затем вам нужно реализовать собственные алгоритмы удаления текста.

Я бы начал с конца PDF-файла назад и посмотрел, какие существуют ключи цитирования - например, [1], [год-автора], (год-автора), а затем попытался разобрать следующее предложение. Вам, вероятно, придется написать код для нормализации текста, который вы получаете из библиотеки (удаление лишних пробелов и тому подобное). Я бы искал только ключи цитирования в качестве первого слова строки, и только для 10 страниц в документе - первое слово должно иметь разделители ключей - например, '[' или '('. Если ключи не могут быть найдены в Затем 10 страниц игнорируют PDF и помечают его как вмешательство человека.

Возможно, вам понадобится библиотека, с которой вы можете в дальнейшем программно обращаться для форматирования метаданных внутри цитат - например, курсив имеет особое значение.

Я думаю, что вы могли бы потратить довольно много времени на то, чтобы получить рабочее решение, а затем на непрерывный процесс настройки и добавления в алгоритм / механизм проверки.

В этом случае я бы порекомендовал TET от PDFLIB

Если вам нужно быстро понять, что он может сделать, взгляните на TET Cookbook

Это не решение с открытым исходным кодом, но в настоящее время это лучший вариант, на мой взгляд. Он не зависит от платформы и имеет богатый набор языковых привязок и коммерческую поддержку.

Я был бы рад, если бы кто-то указал мне на эквивалентную или лучшую альтернативу с открытым исходным кодом.

Для извлечения текста вы должны использовать функции TET_xxx () , а для запроса метаданных вы можете использовать функции pcos_xxx () .

Вы также можете использовать инструмент commanline для создания XML-файла, содержащего всю необходимую информацию.

tet --tetml word file.pdf

Есть примеры того, как обрабатывать TETML с помощью XSLT в поваренной книге TET

Что включено в TETML?

  

Вывод TETML кодируется в UTF-8 (на zSeries с USS или   MVS: EBCDIC-UTF-8, см. Www.unicode.org/reports/tr16) и включает следующую информацию:   общая информация о документе и метаданные   текстовое содержание каждой страницы (слова или абзац)   информация о глифе (имя шрифта, размер, координаты)   информация о структуре, например, таблицы   информация о размещенных изображениях на странице   информация о ресурсах, то есть шрифты, цветовые пространства и изображения   сообщения об ошибках, если во время обработки PDF возникла исключительная ситуация

Взгляните на iText . Это библиотека Java, которая позволит вам читать PDF-файлы. Вы по-прежнему столкнетесь с проблемой поиска нужных данных, но библиотека предоставит информацию о форматировании и компоновке, которая может быть полезна для определения цели.

Еще одной библиотекой Java, которую можно попробовать, будет PDFBox . PDF-файлы действительно предназначены для просмотра и печати, поэтому вы определенно хотите, чтобы библиотека сделала для вас часть тяжелой работы. Тем не менее, вам, возможно, придется немного склеить части текста, чтобы получить данные, которые вы хотите извлечь. Удачи!

Посмотрите на этот исследовательский документ - Точное извлечение информации из научных статей с использованием Условные случайные поля

Возможно, вы захотите использовать пакет с открытым исходным кодом, например Stanford NER начать работу с CRF.

Или, возможно, вы можете попробовать импортировать их (исследовательские статьи) в Mendeley . Видимо, он должен извлечь необходимую для вас информацию.

Надеюсь, это поможет.

Вот что я делаю, используя linux и cb2bib .

<Ол>
  • Откройте cb2bib и убедитесь, что соединение с буфером обмена включено, и что ваша справочная база данных загружена
  • Найдите свою статью в Google Golopar
  • Нажмите "импортировать в bibtex" под бумагой
  • Выберите (выделите) все на следующей странице (т. е. код bibtex)
  • Теперь он должен отображаться в формате cb2bib
  • При желании теперь нажмите поиск в сети (значок глобуса), чтобы добавить дополнительную информацию.
  • Нажмите сохранить в cb2bib, чтобы добавить статью в вашу базу данных.
  • Повторите это для всех бумаг. Я думаю, что в отсутствие метода, который надежно извлекает метаданные из PDF-файлов, это самое простое решение, которое я нашел.

    Я рекомендую gscholar в сочетании с pdftotext .

    Хотя PDF предоставляет метаданные, он редко заполняется правильным содержимым. Часто "Нет" или " Adobe-Photoshop " или другие тупые строки вместо поля заголовка, например. Вот почему ни один из вышеперечисленных инструментов не может получить правильную информацию из PDF-файлов, поскольку заголовок может находиться в любом месте документа. Другой пример: во многих статьях материалов конференций также может быть название конференции или имя редактора, что приводит в замешательство инструменты автоматического извлечения. В этом случае результаты совершенно неверны, если вас интересуют настоящие авторы статьи.

    Поэтому я предлагаю полуавтоматический подход с участием Google Golopar.

    <Ол>
  • Отобразите PDF в текст, чтобы вы могли извлечь: автора и заголовок.
  • Вторая копия, вставьте часть этой информации и запросите Google Golopar. Чтобы автоматизировать это, я использую классный скрипт на python gscholar.py.
  • Так что в реальной жизни это то, что я делаю:

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

    РЕДАКТИРОВАТЬ: будьте осторожны, вы можете столкнуться с капчей. Еще один замечательный сценарий - bibfetch .

    Только что нашел pdftk ... это потрясающе, поставляется в бинарном выпуске для Win / Lin / Mac, а также источник.

    На самом деле, я решил другую проблему (посмотрите на мой профиль, я спросил, а затем ответил на другой вопрос в формате pdf. Невозможно создать ссылку из-за ограничения 1 ссылки).

    Может выполнять извлечение метаданных pdf, например, будет возвращена строка, содержащая заголовок:

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

    Может выводить заголовок, автора, дату модификации и даже закладки и номера страниц (тестовый pdf имел закладки) ... очевидно, потребуется немного работы, чтобы правильно отобразить вывод, но я думаю, что это должно соответствовать вашему необходимо.

    Если в ваших pdf-файлах нет метаданных (т. е. нет метаданных «Абстрактного»), вы можете отследить текст с помощью другого инструмента, такого как pdf2text, и использовать некоторые приемы grep, как описано выше. Если ваши PDF-файлы не OCR, у вас есть гораздо большая проблема, и специальные запросы PDF-файлов будут мучительно медленными (лучше всего для OCR).

    В любом случае, я бы порекомендовал вам создать индекс ваших документов, а не каждый запрос сканировать метаданные / текст файла.

    PyPDF может помочь. Он предоставляет обширный API для чтения и записи содержимого файла PDF (незашифрованного) и написанного на простом языке Python.

    Попробуйте citeyoulike . Это веб-сайт, который позволяет вам собирать библиотеку бумаг, присваивать им метки, искать их и прикреплять комментарии. Это также позволяет вам добавить кнопку в ваш веб-браузер, которая будет пытаться автоматически извлечь нужную информацию, включая реферат. Хотя на самом деле это мало что дает из PDF. Однако, если вы укажете на ссылку на статью о проводнике IEEE, citeseer или многих сайтах журналов, он обычно может получить всю информацию о bibtex.

    Дело в том, что PDF-файлы часто не содержат всей информации о цитировании. У вас обычно есть название и авторы, но не обязательно название конференции или год публикации. Имеет смысл сначала найти цитату для статьи на сайте seseer, в PubMed или в каком-либо другом месте и извлечь из нее информацию.

    В целом я считаю, что вы очень любите организовывать газеты. Это также полезно для сотрудничества с другими людьми. Вы можете создавать группы, обмениваться документами, создавать форумы и т. Д.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top