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

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

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

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

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

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

13 ответов


мне разрешено только одна ссылка на публикацию, так что это все: pdfinfo в Linux Man-странице

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

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

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

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


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

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


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

-- EDIT --

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

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

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

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

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

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


в этом случае я бы рекомендовал ТЭТ С PDFLIB

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

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

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

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

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

tet --tetml word file.pdf

есть примеры того, как процесс TETML с XSLT на ТЭТ кулинарной книги

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

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


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


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


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

вы можете использовать пакет с открытым исходным кодом, как Стэнфорд Нер для начала работы над CRFs.

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

надеюсь, что это помогает.


вот что я делаю с помощью linux и cb2bib.

  1. откройте cb2bib и убедитесь, что соединение с буфером обмена включено и что ваша справочная база данных загружена
  2. найдите свою статью в google scholar
  3. нажмите "импорт в bibtex" под бумагой
  4. выбрать (выделить) все на следующей странице (т. е. код bibtex по)
  5. появится отформатирована в cb2bib
  6. дополнительно теперь нажмите network поиск (значок глобуса), чтобы добавить дополнительную информацию.
  7. нажмите Сохранить в cb2bib, чтобы добавить документ в базу данных ref.

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


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

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

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

  1. Render PDF в текст, так что вы можете извлечь: автор и название.
  2. вторая копия вставьте часть этой информации и запросите Google scholar. Чтобы автоматизировать это, я использую классный скрипт 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}
}

EDIT: будьте осторожны, вы можете столкнуться с captchas. Еще один отличный сценарий -bibfetch.


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

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

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

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

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

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

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


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


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

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

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